(上圖是在網路上找的)先前在WiFi版簡單的物聯網架構這一篇文章中,使用cc3000 WiFi Shield連結AP,進行雙向的資料傳輸與設備控制,這一塊無線網卡是採用TI原裝CC3000 WiFi晶片組,它使用的是SimpleLink Wi-Fi技術,可大大減少主機微控制器 (MCU) 軟體需求,使其成為使用任何低成本和低功耗MCU的嵌入式應用的理想解決方案。

WiFi Shield在使用上並沒有什麼特別的問題,不過它的價錢太高貴了(我記得這一塊好像是買大約一千五百元左右),買一塊來做各種測試應該還好,若是要用來實作多個節點的話,錢包君應該一下子就失血而亡!

前一些日子在網路上買了幾片便宜的Wifi 晶片(ESP8266),它單片的價格只要WiFi Shield的1/7到1/8,非常適合於佈置物聯網的節點之用。

今天要做的這個範例是假設一個應用情境,利用一個光遮斷器偵測居家是否有被入侵,偵測到的資訊直接透過WiFi,經AP,上傳到雲端伺服器中。

所使用的穿透式光遮斷器應用很簡單,從發光元件到受光元件之間,有一空氣的間隙。若此間隙中沒有物體阻止,則發光元件所射出的光,將直接照射到受光元件。反之,若間隙中有物體阻擋光線,則受光元件將無光線照射而改變輸出狀態。

所使用的Wifi 晶片是ESP8266

在與Aeduino的接線上,穿透式光遮斷器是接GND,5V與Pin 4。ESP8266的接線如下圖

在Arduino端的程式碼,這裡比較要注意的是ESP8266這個Wifi 晶片是一款UART轉WiFi的SoC,所以它需要使用Arduino的TX、RX來傳送與接收,但因為我需要使用USB連接電腦以便上傳程式與監控程式的執行狀況,而這個動作一樣需要用到Arduino的TX、RX,因此我沒有照上圖的方式來連接ESP8266,而是採用SoftwareSerial,將ESP8266的TX、RX連結到Pin3與Pin2上

若ESP8266在Arduino上要使用SoftwareSerial,要記得做下圖中的事情

在使用SoftwareSerial來連結ESP8266間,我卡關了,因為不知道它的baud rate是多少,為什麼我每次都卡在這不該是問題的問題上呢!


在連上AP後使用wifi.getLocalIP抓取本身IP,但似乎沒辦法正確擷取,到AP上去查看,發現ESP8266有正確分配到IP,所以就不去理這個問題了。分配到IP後,我是設定每五秒檢查一次光遮斷器的狀況,並且透過ESP8266將資料送至雲端伺服器上

在伺服器端,主要是有兩個程式,一個是用以接收ESP8266傳來的資訊並寫入SQL Server資料庫中。一個是簡單的使用者界面,讓使用者可以觀看感測器上傳的資訊,由於光遮斷器只有兩種狀況,所以看到的圖只有一條一條的長條

做完了