在物聯(lián)網(wǎng)世界中,各種電子設(shè)備通過無線電通信。比如基于802.11 b/g/n的WiFi協(xié)議和BLE(低功耗藍(lán)牙)允許這些電子設(shè)備使用其通信方案共享數(shù)據(jù)。像ESP8266和ESP32這樣的無線芯片使得廠商和工程師能夠輕松進(jìn)行物聯(lián)網(wǎng)產(chǎn)品開發(fā)和試驗。在本項目系列中,你將使用無線平臺監(jiān)控和控制各種電子電路以及配件,借此你將加深對 IoT 概念的理解。
作為該系列的啟動項目,首先你將構(gòu)建一個 IoT 通知設(shè)備,當(dāng)被外部設(shè)備觸發(fā)時,它會發(fā)送郵件到你的桌面電腦、筆記本電腦或者移動設(shè)備(手機(jī)或者平板)。為了構(gòu)建這套系統(tǒng),你需要一個Arduino Uno開發(fā)板、 littleBits cloudBit、物聯(lián)網(wǎng)移動設(shè)備應(yīng)用程序以及一些常用的電子元器件。
零件清單
觸覺按鈕開關(guān)
Arduino UNO 開發(fā)板
LED 燈
330歐、1/4瓦電阻
1千歐、1/4瓦電阻,
littleBits cloudBit
littleBits proto-modules,2個
littleBits USB電源(參見 littleBits cloudBit 鏈接)
littleBits 安裝板(參見 littleBits proto-modules 鏈接)
無焊面包板
littleBits電源適配器(參見 littleBits cloudBit 鏈接)
跳線帽
IFTTT (IF This Then That) Applet
圖1物聯(lián)網(wǎng)通知設(shè)備系統(tǒng)框圖 littleBits cloudBit 模塊介紹
在正式構(gòu)建項目之前,你需要先了解一下 littleBits 這個很有意思的 WiFi 模塊。cloudBit模塊使得各種電子設(shè)備和器件能夠輕松連接到家庭WiFi網(wǎng)絡(luò)。這個模塊非常小巧,依靠它 PCB 板上的 IC 技術(shù)可輕松實現(xiàn)聯(lián)網(wǎng),從而監(jiān)控和控制其他的 littleBits 模塊。
此外,硬件開發(fā)套件(HDK)也為 littleBits 以外的模塊提供電路接口。cloudBit模塊的系統(tǒng)架構(gòu)由9個子電路組成。
圖2 littleBits cloudBit:用于IoT原型開發(fā)的WiFi模塊
littleBits 系統(tǒng)架構(gòu)包含如下內(nèi)容:
電源
Setup 按鍵
WiFi無線網(wǎng)卡(USB HOST)
模擬輸入
模擬輸出
micro SD 卡(用于安裝Linux軟件)
RGB LED
512M DDR
i.MX23 處理器
圖3 9個子電路構(gòu)成了 cloudBit 系統(tǒng)架構(gòu)
cloudBit 模塊的 WiFi 無線收發(fā)器封裝在一個 USB 適配器中,生產(chǎn)廠商是 Dynamode,其部件號為 WL-700N-XS, 它是符合802.11n / g標(biāo)準(zhǔn)的 WiFi 設(shè)備。其工作頻率范圍從2.4到2.4835GHz, 該范圍使得這款模塊能夠運(yùn)用于ISM(工業(yè)、科技和醫(yī)療)領(lǐng)域。此外,這款由 Dynamode 打造的 USB 接口的WiFi適配器僅需5V DC電源即可供電,非常方便,同時它的功耗極低,只有0.6W。
圖4 cloudBit WiFi 芯片組高度封裝在一個 USB 適配器中
基于 Linux 的 WiFi 軟件存儲在 microSD 卡中,其接口在 cloudBit PCB 板的右下角。RGB LED 燈用來指示 cloudBit 處于運(yùn)行還是設(shè)置狀態(tài)。cloudBit 的 Setup 按鍵是一個非常小巧的瞬時開關(guān),cloudBit 通過它開啟對家庭網(wǎng)絡(luò)的檢測和連接。cloudBit 模塊中最核心的部件是 NXP 的 i.MX23 處理器。
除了處理外部 IO 信號以外,i.MX23 處理器的內(nèi)部電路提供無線(WiFi)控制功能。cloudBit 模塊通過外擴(kuò)一個512M DDR SDRAM 芯片,來幫助 i.MX23處理器更好地處理大量的 WiFi 數(shù)據(jù)。DDR SDRAM 的 WiFi 數(shù)據(jù)傳輸速率需要 16條地址線、15條數(shù)據(jù)線和13條控制線的支持。 cloudBit模塊通過模擬 IO 口和其他 littleBit 模塊以及開發(fā)者自研的電路建立連接,從而實現(xiàn)信號傳輸和調(diào)制。
圖5 cloudBit WiFi 模塊的組件
如你所見,cloudBit 模塊尺寸小巧,提供的無線功能卻不失強(qiáng)大。通過上文你應(yīng)當(dāng)已經(jīng)大致了解了 cloudBit 的架構(gòu),那么接下來就可以開始動手構(gòu)建 IoT 硬件了。
構(gòu)建 IoT 通知設(shè)備
我們將使用 Arduino 搭配簡單的外圍電路來實現(xiàn)一個激活 cloudBit 的觸發(fā)器。對觸覺開關(guān)進(jìn)行編程,可以使其觸發(fā) cloudBit 發(fā)送郵件、短信或者執(zhí)行其他更加豐富的動作。當(dāng) cloudBit 接收到觸發(fā)信號時,它將通過你的家庭網(wǎng)絡(luò)執(zhí)行發(fā)送郵件的動作。
因此,該項目的第一步就是搭建觸發(fā)電路(很簡單,你可以使用面包板,如下圖所示)。
圖6 Arduino觸發(fā)電路連線圖。需要注意加入 切換開關(guān)
這是 Arduino 觸發(fā)電路的原理圖:
圖7 Arduino 觸發(fā)電路原理圖
Arduino 觸發(fā)電路搭建完畢,就可以添加 cloudBit 模塊了。使用 littleBits 組件提供連接 Arduino 觸發(fā)電路和 cloudBit 模塊的電氣接口。proto-module 是主要使用的組件,它有三個引腳:接地(gnd)、信號(sig)和Vcc。
圖8 proto-module 的信號引腳圖
下圖展示了構(gòu)建 IoT 通知設(shè)備所需的所有連線情況。
圖9 IoT 通知設(shè)備的完整電氣連線圖
基于這個原型可以搭建出多種連接方式的系統(tǒng)。我通過給這個原型附加一個智能邏輯探針,搭建了下圖所示的系統(tǒng),用于測試整套 IoT 通知設(shè)備的運(yùn)轉(zhuǎn),其中 cloudBit 由littleBits 電源適配器供電。
至此,你已經(jīng)完成了 IoT 通知設(shè)備的電路搭建,下一步需要通過添加 Arduino 代碼以實現(xiàn)觸發(fā)功能。
添加 Arduino 代碼
在本小節(jié)中,你需要將代碼上傳到 Arudino 以使 IoT 通知設(shè)備能夠運(yùn)轉(zhuǎn)。代碼主要修改了 Arduino IDE 中的“Button” 部分,添加了一個數(shù)字電平輸出用于觸發(fā) cloudBit。按下按鈕將打開 LED 并將 D6 引腳設(shè)置為高電平。
修改的代碼片段如下:
// constants won't change. They're used here to // set pin numbers: const int buttonPin = 5; // the number of the pushbutton pin const int ledPin = 13; // the number of the LED pin const int trig_out = 6; // output pin to trigger cloudBit // variables will change: int buttonState = 0; // variable for reading the pushbutton status void setup() { // initialize the LED pin as an output: pinMode(ledPin, OUTPUT); // initialize the pushbutton pin as an input: pinMode(buttonPin, INPUT); // initialize the cloudBit trigger pin as an output: pinMode(trig_out, OUTPUT); } void loop() { // read the state of the pushbutton value: buttonState = digitalRead(buttonPin); // check if the pushbutton is pressed. // if it is, the buttonState is HIGH: if (buttonState == HIGH) { // turn LED on and trigger outpin: digitalWrite(ledPin, HIGH); digitalWrite(trig_out, HIGH); } else { // turn LED off and trigger outpin: digitalWrite(ledPin, LOW); digitalWrite(trig_out,LOW); } }
把代碼上傳到 Arduino 后,你需要把 IFTTT applet 添加到你的 IoT 通知設(shè)備原型中來。
添加 IFTTT Applet
借助Facebook、Gmail、Instagram和Twitter網(wǎng)絡(luò)服務(wù),搭配必要的物理設(shè)備(如微控制器),可以預(yù)先為 cloudBit 構(gòu)建 IFTTT applets 的觸發(fā)器。IFTTT applets 是免費(fèi)的,它使用條件語句作為目標(biāo)服務(wù)的操作基礎(chǔ)。比如在項目中,當(dāng) Arduino 觸發(fā) cloudBit 時,littleBit applet 得到觸發(fā)的條件語句將執(zhí)行發(fā)送郵件的操作。
圖11 Arduino 觸發(fā) cloudBit 發(fā)送郵件
只有正確地設(shè)置 cloudBit ,它才能被你的家庭無線網(wǎng)絡(luò)檢測到。關(guān)于 cloudBit 的設(shè)置方法, littleBits website 提供了詳細(xì)說明。此外,你需要在 IFTTT applet service website 創(chuàng)建一個免費(fèi)的賬戶,以便使用 littleBits 觸發(fā)你的 cloud 模塊發(fā)送電子郵件。在注冊帳戶時,務(wù)必提供你要用于該項目的郵件地址。注冊之后,你可以使用設(shè)置功能修改 applet。在本例中,我修改了 applet 中 cloudBit 無線傳輸事件,我把我的別名 MrD 添加在了郵件正文中。
圖12 通過 cloudBit applet 提供的設(shè)置方法,很方便就把郵件正文中設(shè)備名稱改為”MrD”
applet 配置正確之后,就可以測試你的 IoT 通知設(shè)備了。
最終測試
按下面包板上的按鈕將促使你的 IoT 通知設(shè)備向你發(fā)送電子郵件,郵件內(nèi)容將由主題和你在 applet 中設(shè)置的正文組成。
圖13 IoT 通知設(shè)備原型測試
以下是 cloudBit 發(fā)送到我郵箱的消息內(nèi)容:
圖14 cloudBit 發(fā)送的郵件
至此,你擁有了一個帶有通知功能的 IoT 設(shè)備?;叵胍幌?,這個項目通過使用一個Arduino、littleBits cloudBit 、其他的littleBits 模塊以及一些現(xiàn)成的電子元器件,實現(xiàn)了一個 IoT 應(yīng)用。你還可以嘗試設(shè)置 applet 來顯示新的郵件信息,同時把新的觀察結(jié)果記錄下來。在下一個項目中,你將構(gòu)建一個能夠控制各種電路和外設(shè)的 WiFi 設(shè)備。同時介紹 littleBits 云平臺的使用,它可以幫助你監(jiān)控和控制你的 IoT 原型設(shè)備。