本文旨在補充《超圖解物聯網IoT實作入門》第5章「使用Socket.io建立即時連線」一節,書本的範例採用Node.js的Socket.io套件,搭配瀏覽器建立即時、雙向連線程式。本文將使用Arduino控制板加上W5100乙太網路擴展板,直接和Node.js的Socket.io即時通訊。
安裝Arduino的Socket.io程式庫
本文採用的Arduino程式庫是Socket.io-v1.x-Library,這個程式庫支援W5100或ENC28J60乙太網路晶片,以及ESP8266控制板。
下載之後將它解壓縮,筆者將它命名成SocketIOClient,存入libraries路徑:
此程式庫的examples資料夾包含適用於Arduino和ESP8266的範例程式,然而,直接在Arduino IDE主功能表的「檔案→範例」選單,找不到此程式庫的範例,因為程式作者忘了要把Arduino的.ino原始檔存放在同名的資料夾裡面,請自行在examples裡面新增資料夾,再移入範例原始檔:
重新開啟Arduino IDE,就能在「檔案→範例」選單底下看見“SocketIOClient”的範例程式了。
修改SocketIOClient程式庫參數
SocketIOClient程式庫預設的編譯目標是ESP8266控制板,筆者要將它改成Arduino的W5100乙太網路擴展板,請使用程式編輯器(如:Notepad++, Atom, Sublime Text,…)開啟SocketIOClient資料夾裡的SocketIOClient.cpp檔,把第26行的:
#define ESP8266
改成:
#define W5100
我們的自訂程式將使用這個程式檔,第31~34行定義的變數,在此先不管它們。
接著開啟SocketIOClient.h檔,刪除第70行的註解,然後替第71行加上註解:
準備工作告一段落,可以開始寫程式了…下文待續。