這篇文章來源于DevicePlus.com英語網(wǎng)站的翻譯稿。
我們利用此套件中的接近傳感器完成了一個(gè)非常好玩的項(xiàng)目,具體內(nèi)容請(qǐng)點(diǎn)擊閃光萬圣節(jié)面具項(xiàng)目。
ROHM Sensor Shield(ROHM傳感器開發(fā)板)是一種兼容Arduino的擴(kuò)展板,旨在幫助用戶快速將各種傳感器添加到自己的開發(fā)項(xiàng)目中。憑借其直觀的布局和緊湊性,該開發(fā)板成為初學(xué)者和高級(jí)Arduino愛好者的絕佳原型制作工具。
Sensor Evaluation Kit(傳感器評(píng)估套件)配備了ROHM傳感器開發(fā)板和8種不同的ROHM傳感器:加速度傳感器、氣壓傳感器、地磁傳感器、環(huán)境光/接近傳感器、顏色傳感器、霍爾傳感器、溫度傳感器和 紫外線傳感器。
有關(guān)傳感器開發(fā)板和每個(gè)傳感器的詳細(xì)文檔,請(qǐng)參閱https://www.rohm.com/web/global/sensor-shield-support,該網(wǎng)頁(yè)還為您提供了各個(gè)傳感器所需的Arduino庫(kù)的下載鏈接。評(píng)估套件包裝中的用戶手冊(cè)對(duì)傳感器開發(fā)板與傳感器的配合使用進(jìn)行了說明,該用戶手冊(cè)的電子版也可在該網(wǎng)站上找到。
在本文中,我們將概述一下傳感器開發(fā)板的設(shè)置和首次使用情況,然后利用開發(fā)板和其他器件展示一個(gè)簡(jiǎn)單的物聯(lián)網(wǎng)項(xiàng)目。
圖1 ROHM傳感器開發(fā)板(右上方)以及8種不同傳感器/@CoreStaff
該開發(fā)板有兩個(gè)功能特別突出。首先,開發(fā)板允許用戶同時(shí)處理多個(gè)傳感器。對(duì)于涉及兩種獨(dú)立傳感形式的項(xiàng)目,用戶可以一次性對(duì)系統(tǒng)進(jìn)行整體原型設(shè)計(jì),而不必分多個(gè)步驟進(jìn)行。很方便,是吧?
圖2 多個(gè)傳感器同時(shí)插到傳感器開發(fā)板上
(圖中連接了溫度傳感器和接近傳感器/環(huán)境光傳感器)
其次,不同的傳感器可以直接插入開發(fā)板。這使原型制作更加緊湊,并使大型項(xiàng)目更易于管理。由于Analog(模擬)、GPIO和I2C通信連接都是在開發(fā)板PCB內(nèi)部實(shí)現(xiàn)的,因此無需連接多個(gè)跳線。
我們以I2C協(xié)議為例進(jìn)行說明。一個(gè)獨(dú)立的I2C傳感器與Arduino通信至少需要四根單獨(dú)的連線(SDA、SCL、電源和地)以及SDA和SCL線上的2個(gè)上拉電阻。而使用傳感器開發(fā)板,用戶僅需將等效的ROHM傳感器插到開發(fā)板上的一個(gè)I2C接口即可。
傳感器開發(fā)板的長(zhǎng)邊處有一排公插針。大多數(shù)針腳可以用來配置各種硬件中斷。作為初學(xué)者,我們將僅關(guān)注板子邊緣標(biāo)有1.8V、3V和5V的前三行。這三個(gè)引腳表示所連接傳感器的電壓設(shè)置。某些傳感器需要特定的工作電壓,因此需要選擇不同的電壓設(shè)置。要選擇相應(yīng)電壓,用戶必須用跳線跨接相應(yīng)電壓電平的那對(duì)針腳。圖3展示了用跳線選擇3V電壓的示例。
圖3 用跳線選擇3V電壓
在開發(fā)板上兩條Arduino連接排母之間,有八組不同的母排針接口(虛線框內(nèi))。這八組母排針用來連接不同的傳感器。
需要注意的是,使用某個(gè)傳感器時(shí),必須將其插入與傳感器通信方式相符的母排針中,這一點(diǎn)很重要。比如,溫度傳感器的輸出是模擬值,因此,它只能連至標(biāo)有模擬連接的兩組接口中的任何一組。手冊(cè)用鮮明的顏色描述了母排針接口與通信協(xié)議的對(duì)應(yīng)關(guān)系,請(qǐng)參見下圖。
藍(lán):Analog;紅:數(shù)字GPIO;綠:I2C
測(cè)試溫度傳感器
輸出為模擬值的兩個(gè)傳感器是溫度傳感器和紫外線傳感器。以溫度傳感器為例,要使用這個(gè)傳感器,我們首先必須下載相應(yīng)的名為BD1020HFV(溫度傳感器模塊的名稱)的Arduino庫(kù)。
請(qǐng)打開庫(kù)隨附的示例程序。請(qǐng)?jiān)趲?kù)include語句下方的程序頂部,將變量 tempout_pin 設(shè)置為值 A2。在void setup()中,BD1020對(duì)象(溫度傳感器對(duì)象)將使用該值進(jìn)行初始化,表示系統(tǒng)會(huì)從模擬引腳2讀取傳感器的輸出值。這意味著我們必須將溫度傳感器模塊連至傳感器開發(fā)板上的 Analog_2 排針連接器。
圖4 溫度傳感器連至Analog 2連接器(板右下方)
將示例程序上傳到Arduino并打開Serial Monitor(串行監(jiān)視器)。此軟件界面上應(yīng)該會(huì)不斷出現(xiàn)消息,顯示所測(cè)量的當(dāng)前溫度。要測(cè)試傳感器是否按預(yù)期工作,請(qǐng)將手指按到傳感器的金屬觸點(diǎn)上。此時(shí),監(jiān)視器界面上的消息應(yīng)該會(huì)顯示溫度已經(jīng)升高!
圖5 溫度傳感器金屬觸點(diǎn)的標(biāo)記為“PAD1”
輸出示例如下:“BD1020HFV Temp=23.59 [degrees Celsius], ADC=277”。
“ADC”表示傳感器輸出模擬值(電壓)的整數(shù)轉(zhuǎn)換。
測(cè)試加速度計(jì)
接下來,我們來研究一下使用I2C協(xié)議通信的傳感器。此類傳感器包括加速度計(jì)、壓力傳感器、地磁傳感器、環(huán)境光/接近傳感器和顏色傳感器。以加速度計(jì)為例,要使用這個(gè)傳感器,我們首先必須下載名為KX022的相應(yīng)Arduino庫(kù)。
請(qǐng)打開這個(gè)庫(kù)提供的示例程序。將加速度計(jì)模塊插到傳感器開發(fā)板的任意一個(gè)I2C接口上,并上傳示例程序。您可能需要在程序的第一行(#include語句上方)輸入“#define byte uint8_t”,因?yàn)锳rduino編譯器可能無法將“byte”識(shí)別為有效數(shù)據(jù)類型。
圖6 加速度計(jì)模塊連至開發(fā)板的I2C接口
打開Serial Monitor(串行監(jiān)視器)。監(jiān)視器應(yīng)該不斷顯示消息,指示X、Y和Z軸的加速度。三個(gè)軸在加速度計(jì)上用小圖表示。
圖7 加速度計(jì)模塊以及三個(gè)軸向
要測(cè)試加速度計(jì),請(qǐng)?jiān)谄渲幸粋€(gè)軸向上突然移動(dòng)該模塊。這時(shí),該方向上的加速度分量會(huì)發(fā)生變化。
輸出示例如下:
“KX022 (X) = -0.02 [g]
KX022 (Y) = -0.00 [g]
KX022 (Z) = 1.00 [g]”
測(cè)試霍爾傳感器
最后,我們來看一下唯一一種通過GPIO連接通信的傳感器,即霍爾傳感器。霍爾傳感器僅檢測(cè)磁場(chǎng)的存在或不存在。因此,它的輸出是數(shù)字信號(hào):“l(fā)ow(低電平)”表示磁場(chǎng)存在;“high(高電平)”表示沒有磁場(chǎng)。
在Arduino上,數(shù)字信號(hào)輸入和輸出(簡(jiǎn)稱IO)的工作范圍為5V電平,因此我們必須將跳線移至5V設(shè)置。
圖8.選擇5V電源
要使用這個(gè)傳感器,我們首先必須下載名為BD7411的相應(yīng)Arduino庫(kù)。請(qǐng)打開庫(kù)隨附的示例程序。傳感器開發(fā)板上標(biāo)有GPIO的數(shù)字輸出傳感器(比如霍爾傳感器)插槽只有一個(gè)。將示例程序上傳到Arduino并打開Serial Monitor。如果存在磁場(chǎng),那么串行監(jiān)視器會(huì)顯示“BD7411G Magnet field Detect!”(BD7411G檢測(cè)到磁場(chǎng))。
如果您想在自己的項(xiàng)目中使用該傳感器開發(fā)板,只需下載并在程序包含所需的傳感器庫(kù),然后用這些庫(kù)中的不同方法與傳感器進(jìn)行通信即可。您可以參考每個(gè)庫(kù)附帶的示例程序以及該庫(kù)的.cpp和.h源文件,以確切了解如何使用這些方法。
我用不同傳感器及其庫(kù)實(shí)現(xiàn)了多個(gè)簡(jiǎn)單項(xiàng)目:
1. 當(dāng)霍爾傳感器附近存在磁場(chǎng)時(shí),點(diǎn)亮LED
圖9 完成的霍爾傳感器項(xiàng)目
元器件:
LED
220? 電阻(限制LED的電流)
跳線
面包板
ROHM 傳感器開發(fā)板與霍爾傳感器模塊
Arduino Uno
裝有Arduino IDE的電腦
連接電腦與Arduino Uno的USB電纜
在該項(xiàng)目中,每當(dāng)霍爾傳感器附近存在磁場(chǎng)時(shí),LED燈亮起。
將傳感器開發(fā)板安裝到Arduino的母排針上
將霍爾傳感器模塊插到開發(fā)板的GPIO接口上
通過220Ω電阻將LED的負(fù)極引線連至傳感器開發(fā)板的地
將LED的正極引線連到傳感器屏蔽板上的數(shù)字引腳12上
將以下代碼上傳到Arduino:
#include int led_pin = 12; int hallout_pin = 0; // use D0 pin BD7411 bd7411; void setup() { bd7411.init(hallout_pin); pinMode(led_pin, OUTPUT); } void loop() { int hallout; hallout = bd7411.readoutpin(); if (hallout == 0) { digitalWrite(led_pin, HIGH); } else { digitalWrite(led_pin, LOW); } delay(500); }
2. 利用Processing畫出溫度隨時(shí)間變化的曲線
圖10 裝到傳感器開發(fā)板的Analog_2接口上的溫度傳感器(右下方)
元器件:
ROHM 傳感器開發(fā)板與溫度傳感器模塊
Arduino Uno
裝有Arduino和Processing(https://processing.org/download/)IDE的電腦
連接電腦與Arduino Uno的USB電纜
該項(xiàng)目通過Processing Sketch繪制一段時(shí)間內(nèi)的溫度曲線。
將傳感器開發(fā)板安裝到Arduino的母排針上
將溫度傳感器模塊插到開發(fā)板的Analog_2接口上
在Processing中運(yùn)行以下程序:
import processing.serial.*; Serial arduinoPort; // The serial port int currentX = 0; // horizontal position of the graph float data = 0; void setup () { size(1000, 300); arduinoPort = new Serial(this, Serial.list()[1], 9600); //"intercept" serial print messages arduinoPort.bufferUntil('n'); background(0); } float oldData =0; void draw () { stroke(0, 255, 0); if (currentX++ >= width) //start at the left of the window with a blank screen when the screen has been filled { currentX=0; background(0); } if (Math.abs(data-oldData) < 30) //prevent the program from drawing noise spikes { line(currentX, height - oldData, currentX++, height - data); } else { stroke(0, 0, 0); line(currentX, height - oldData, currentX++, height - data); } oldData = data; } void serialEvent (Serial arduinoPort) { String serialInput = arduinoPort.readStringUntil('n'); if (serialInput != null) { serialInput = trim(serialInput); data = int(serialInput); println(data); data = map(data, 0, 1023, 0, height); } }
將以下程序上傳至Arduino:
#include int tempout_pin = A2; BD1020 bd1020; void setup() { Serial.begin(9600); while (!Serial); bd1020.init(tempout_pin); } void loop() { float temp; bd1020.get_val(&temp); Serial.println(bd1020.temp_adc); delay(500); }
我們利用此套件中的接近傳感器完成了一個(gè)非常好玩的項(xiàng)目,具體內(nèi)容請(qǐng)點(diǎn)擊閃光萬圣節(jié)面具項(xiàng)目。
Rahul Iyer
Rahul是加州大學(xué)洛杉磯分校電氣工程學(xué)院的學(xué)生,愛好電子和機(jī)器人項(xiàng)目,尤其熱衷于電動(dòng)汽車技術(shù)和輔助機(jī)器人技術(shù)。
審核編輯黃宇
-
傳感器
+關(guān)注
關(guān)注
2560文章
52099瀏覽量
761148 -
Arduino
+關(guān)注
關(guān)注
188文章
6484瀏覽量
189569
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
Arduino兼容傳感器擴(kuò)展板SensorShield-EVK-001
【羅姆傳感器評(píng)估板試用體驗(yàn)連載】一、產(chǎn)品開箱
【羅姆傳感器評(píng)估板試用體驗(yàn)連載】1.開箱+資料準(zhǔn)備+環(huán)境搭建+拓展板
【羅姆傳感器評(píng)估板試用體驗(yàn)連載】-02-傳感器篇- 溫度傳感器評(píng)估板BH1900NUX-EVK-001
【羅姆傳感器評(píng)估板試用體驗(yàn)連載】-03-傳感器篇- 氣壓傳感器評(píng)估板BM1390GLV-EVK-001 顏色傳感器評(píng)估板BH1749NUC-EVK-001
【羅姆傳感器評(píng)估板試用體驗(yàn)連載】開箱展示
ROHM 地磁傳感器介紹與應(yīng)用
ROHM 加速度傳感器的介紹與使用
利用Arduino Create和ROHM傳感器評(píng)估套件制作智能花園系統(tǒng)

用ROHM Arduino傳感器套件打造DIY萬圣節(jié)僵尸面具

采用ROHM傳感器套件的DIY Arduino家庭安防系統(tǒng) 第1部分 機(jī)制

ROHM傳感器評(píng)估套件的3D外殼以及RohmMultiSensor庫(kù)更新

適用于羅姆傳感器評(píng)估套件的輕量級(jí) Arduino庫(kù)

評(píng)論