Arduino_Serial_4

Arduino with WF8266R 透過 Serial 上傳資料到 ThingSpeak.com

Posted on Posted in APP, ARDUINO, IoT, IoT, Product, WF8266R, 技術

這篇我們要和大家介紹,如何使用 Arduino 透過 Serial 將資料送到 WF8266R 上傳資料到 ThingSpeak.com。 

 

今天的二位主角,左手邊是 Arduin UNO,而右手邊的是 WF8266R。 雖然 WF8266R 本身可以編寫程式,也就是原本燒寫在 Arduino 的程式,可以完全不用改寫的燒在 WF8266R。 今天,假設左手邊換成了 ARM 8051 或 PI 等等裝置,我們還是可以透過 SERIAL 傳送資料到雲端。

DSC00918

配線

直接由 Arduino 5V 供電給 WF8266R。 請將 5V 接到 WF8266R VCC 腳,GND 接 WF8266R GND。如下圖所示:DSC00921

這個範例會使用 Software Serial 來連接,因此 Arduino PIN7(Rx) PIN8(Tx) 反接到 WF8266R 的 Tx 和 Rx 腳位。

DSC00922

 

確定速率 9600

Arduino software serial 最大速率是 38400,所以我們要先決定使用哪個速率,這個範例我們決定使用 9600。所以要做以下二件事:

  • Arduino 速率指定為 9600
  • WF8266R 速率指定為 9600

Arduino 我們只要在程式裡指定即可,但是 WF8266R 需要透過 WEB API 切換速率。以下介紹如何切換 WF8266R 速率。

更改 WF8266R 速率

 

確定 WF8266R 指示燈沒有亮,表示正常連線到 AP。請在網址例打上 http://wf8266r.local 這個只有在區網才能連線哦。在畫面中找到 Baud 預設都是 115200。

Web_Serial_1

 

使用 Web API 方式修改,請在網址打上 http://wf8266r.local/serial?baud=9600。

Web_Serial_2

按下 Enter 後 WF8266R 會重新啟動。

Web_Serial_3

再回到 http://wf8266r.local 查看 Baud 是否已設置為 9600。

Web_Serial_4

Serial 測試

開啟 Arduino IDE 宣告 mySerial 用來和 WF8266R 傳輸,而且 PIN7 定義為 Rx, PIN8 則是 Tx。在 Setup 方法中宣告二個 Serial 都是用 9600。

所以,這個範例一執行就會透過 mySerial 傳送 Hello, WF8266R? 到 WF8266R,並且會在本機的 Serial 同時印出 Ready。

Arduino_Serial_1

WF8266R 讀取 Serial 資料

我們有二種方式可以讀取,第一是使用 Web API 在網址打上 http://wf8266r.local/serial/read 即可讀到 JSON 格式的資料。另一種是打開手機的 物聯雲 APP,切到序列功能,按下讀取,如下圖所示,如果有看到相同的文字就表示和 Arduino 溝通沒有問題。

接下來,我們回送 Hi, I am WF8266R 給 Arduino,這時在 Serial 畫面應該會看到相同的文字。

準備上傳到 ThingSpeak.com

首先你需要註冊一個帳號,並且建立一個 Channel 取得 API KEY。

網址 : https://thingspeak.com/

thingspeak

在 thingspeak 中,每個 channel 可以指定 8 個欄位,分別是 Field 1 ~ Field 8。這個範例我們以 Field 1 為主要上傳欄位。另外在API Keys 分頁中可以取得 寫入用的 KEY。

 

WF8266R 上傳設定

Web API 設定 上傳行為

同樣的你可以透過 Web API 和 手機 APP 設定。如果使用 WEB API 請在網圵填上 :

http://wf8266r.local/when/listen?eventType=3&eventValue=255:1:0^9&trigerType=2&trigerValue=api.thingspeak.com:80,update?key=填上你的KEY%26field1={1}&timer=1000

這個表示讓 WF8266R 收到 IoT+ 開頭的命令時,1秒內呼叫 api.thingspeak.com 的 update 服務,而且你要填上 KEY 和資料寫在欄位1。其中 field1 是指寫到 Field 1,而 {1} 是指收到的資料 {1} 位置的資料。 命令如下:

WF82266R 命令

IoT+{1:value},{2:value}…,{8:value}

如果要直覺些可透過 APP 設定

APP 設定 上傳行為

請點選 元件 功能

 

再選擇序列

App_Serial_12

 

在這裡填入 thingspeak 的 API KEY,並指定 {1} ~ {8} 要寫到哪個欄位。這裡示範 {1} 資料寫到 Field 1

App_Serial_14

記得按下確定,如果手機畫面較小,請往上拉動。

 

APP 會自動幫你填寫欄位設定值,你只需要決定監聽的頻率。這裡請輸入 1 秒,因為我們希望一收到 IoT+ 的命令就立即上傳到 thingspeak.com。

App_Serial_15

 

最後,按下 加入排程 即可指定到 WF8266R 的事件系統。可到手機的 事件 功能查看,確定沒問題請按下 寫入 ROM,確保斷電後資料還會在,如果你只是臨時測試,可以不寫入。

App_Serial_17

 

Arduino 透過 Serial 傳送 IoT+

最後,打開範例程式 執行。Arduino 會每隔 20 秒傳送 一次資料到 thingspeak.com,建議時間最好在 20 秒以上。

https://github.com/UNUMobile/wf8266r/blob/master/Sample/ArduinoSerial/ArduinoSerial.ino

Arduino_Serial_2

以上便是 每隔 20 秒上傳一次 i 的累加值

Arduino_Serial_3 Arduino_Serial_4