網頁最後修改時間:2017/10/07
在本篇網頁中,將會介紹 Cayenne 的專案建立與使用 ESP8266 與其連線的方法,並且在最後以 DHT11 為範例,說明如何上傳溫溼度值到 Cayenne 上,建立可供觀看操作的 Dashboard。
從安裝在 Arduino IDE 的 Cayenne 函式庫目錄中,可以發現到 Blynk 資料夾;而開始撰寫程式碼後會發現,其實 Cayenne 函式與 Blynk 相似度很高,可以說 Cayenne 是 Blynk 的二次開發。
前一段時間所撰寫關於 nRF24L01+ 一系列的文章,最終的目的是要建立一個多節點的 nRF24L01+ 溫溼度感測網路。建置的過程中,原本的設定是要使用 Blynk 來做,但是因為每個感測器至少有兩個數據點,加上整個網路包含主節點有 11 個,所以至少需要 4400 點的 Blynk Energy 才能在 Blynk APP 建構介面。因此,基於不花錢的考量,以及之前已經了解過 Blynk 的情況之下,經過一番搜尋與確認之後,選擇以 Blynk 二次開發並加強其功能的 Cayenne 作為最終無線溫溼度感測網路的 IoT 平台再適合不過。
要完成上面所說的事情,有三件事是要先做的:
- 硬體接線完成
- 申請 Cayenne 帳號
- 安裝 Cayenne Arduino 函式庫
新建立之後的裝置,在未與實際裝置連線成功之前都是處於等待連線的狀態。也就是,只有真正連線成功之後才能在離線的情況之下建置 Dashboard,建置好的 Dashboard 就能同步顯示在手機以及 PC 上。
電路圖:
同樣的程式適用於 ESP8266 模組與開發板,因此正確燒錄之後就直接可以使用。
若使用 ESP-01S 線路,就依下面線路圖接線。
/*-/--*-*/*/*/*/***//-*-*-**-*/*-*-/*/*/*-*-/-////--/**/**--**/--///--//**----**//--**//**----***//*-**//*
ESP-01 與 ESP-01S 的不同之處可以看這篇網頁:
有一點要注意,部落格上的 ESP-01 的接線圖可以完全適用於 ESP-01S;但相反就不行!
ESP8266 使用 Arduino IDE 上傳程式方法與說明可參考下面這兩篇部落格網頁:
- ESP8266 入門學習套件支援 Arduino IDE 開發環境之安裝、使用說明與範例
- 自行更新 ESP8266 無線模組韌體至 Ai-Mod, AT v1.2.0.0 based on SDK v1.5.4.1
ESP-01S 接線圖 |
ESP-01S, 實際接線圖 |
這邊說的 <GPIO2> 就是下面電路圖中的 <D4>,而電路圖中所使用的開發板 (也可說現在大多數的 ESP8266 開發板),大多遵循 NodeMCU 的硬體接腳規劃,所以照著接就可以;否則就是使用 ESP8266 晶片的接腳對照下去接就對了!
ESP8266 開發板接線圖 |
ESP8266 開發板接線圖 |
需要的料件可至下面購買:
*********************************************************************************
/*-/--*-*/*/*/*/***//-*-*-**-*/*-*-/*/*/*-*-/-////--/**/**--**/--///--//**----**//--**//**----***//*-**//*
如果不懂 ESP8266、ESP8266 模組與 ESP8266 開發板的界定,可看下面這篇網頁中的說明:
/*-/--*-*/*/*/*/***//-*-*-**-*/*-*-/*/*/*-*-/-////--/**/**--**/--///--//**----**//--**//**----***//*-**//*
電路準備好之後,接著來看看怎麼與 Cayenne 連線!
建立 ESP8266 與 Cayenne 的連線
/*--*//**---/*///**---*-*////***--*/*///***----*///--*/*///**--*/*//**--**/*//
* 申請 Cayenne 帳號:
進入 Cayenne 的帳號申請網址,輸入申請帳號所需要的資料在欄位中,勾選 I AGREE TO MYDEVICES TERMS 後按下 "NEXT" 按鈕
Cayenne 帳號申請頁面 |
選擇專案使用的裝置 -01 |
選擇專案使用的裝置 -01 |
裝置連線資料 |
/*--*//**---/*///**---*-*////***--*/*///***----*///--*/*///**--*/*//**--**/*//
* 安裝 Cayenne 連線所需的函式庫:
使用 Arduino IDE 撰寫 ESP8266 與 Cayenne 連線的程式,需要先安裝幾個函式庫。
首先,先到 Cayenne 的 Arduino 設定網頁,照著裡面的說明,安裝所需要的兩個 Arduino 函式庫。
/*-/--*-*/*/*/*/***//-*-*-**-*/*-*-/*/*/*-*-/-////--/**/**--**/--///--//**----**//--**//**----***//*-**//*
注意,動作只有使用 Library Manager 安裝 Cayenne 和 CayenneMQTT 這兩個函式庫的小節要看,其他的部分就不用了。
/*-/--*-*/*/*/*/***//-*-*-**-*/*-*-/*/*/*-*-/-////--/**/**--**/--///--//**----**//--**//**----***//*-**//*
接著,下載 Cayenne 的 ESP8266 函式庫,然後安裝。
/*-/--*-*/*/*/*/***//-*-*-**-*/*-*-/*/*/*-*-/-////--/**/**--**/--///--//**----**//--**//**----***//*-**//*
注意,ESP8266 與 Cayenne 的連線方式是使用 MQTT。
/*-/--*-*/*/*/*/***//-*-*-**-*/*-*-/*/*/*-*-/-////--/**/**--**/--///--//**----**//--**//**----***//*-**//*
最後,若要使用與網頁相同的感測器,則下載這個函式庫進行安裝。
/*--*//**---/*///**---*-*////***--*/*///***----*///--*/*///**--*/*//**--**/*//
* 完成 Cayenne 專案的啟用:
專案檔啟用之前還不能設定任何東西。而啟用很容易,就是直接使用實際的裝置與其連線就能啟用;簡單說,就是一定要實際使用裝置連線到 Cayenne 之後,這個專案檔才能開始加入一些顯示數值與趨勢圖的 widget 顯示元件。
如果已經對於 Blynk 有點熟悉的話,那麼撰寫 Cayenne 傳送資料的程式碼那就不困難,大多類似!不熟悉的話,看一下這篇網頁前面提供的連結。
首次啟用的同時,由於專案並未設定任何的 widget 元件,因此若是沒有上傳任何數據的話,Dashboard 上現時候是不會有任何東西的;當然,因為是分解步驟的關係,所以下面的啟用程式碼沒有加上任何要上傳的數據。
開啟 Arduino IDE,載入 "File/Examples/Cayenne-MQTT-ESP8266/ESP8266",移除掉不需要的部分以及補上 line8 ~ line15 上所需要的資料,就可以上傳程式到 ESP8266
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | // This example shows how to connect to Cayenne using an ESP8266 and send/receive sample data. // Make sure you install the ESP8266 Board Package via the Arduino IDE Board Manager and select the correct ESP8266 board before compiling. #define CAYENNE_DEBUG #define CAYENNE_PRINT Serial #include <CayenneMQTTESP8266.h> // WiFi network info. char ssid[] = "ssid"; char wifiPassword[] = "wifiPassword"; // Cayenne authentication info. This should be obtained from the Cayenne Dashboard. char username[] = "MQTT_USERNAME"; char password[] = "MQTT_PASSWORD"; char clientID[] = "CLIENT_ID"; void setup() { Serial.begin(9600); Cayenne.begin(username, password, clientID, ssid, wifiPassword); } void loop() { Cayenne.loop(); } |
若設定正確,一但 ESP8266 與 Cayenne 連線之後,之前等待連線的畫面就會切換到下一個網頁;也就是 Dashboard,只不過現在沒有任何東西在裡面。
Dashboard 畫面 - online |
Dashboard 畫面 - offline |
* 添加 widget 元件:
添加 widget 元件進 Dashboard 有兩個方法:
- 手動填加
- 程式自動添加
下面分別以自動與手動添加 widget 元件做個展示。
首先,在一個空白的 Dashboard,上傳 DHT11 溫濕度資料到 Cayenne 上去,再把 Cayenne 暫時新增的 widgets 變更為實際的 Dashboard 元件
自動添加 widget 元件 |
手動添加 widget 元件 - Line Chart |
/*-/--*-*/*/*/*/***//-*-*-**-*/*-*-/*/*/*-*-/-////--/**/**--**/--///--//**----**//--**//**----***//*-**//*
要從頭看 GIF 動畫,最簡單的方法就是在圖片上方點擊滑鼠右鍵開新視窗。
/*-/--*-*/*/*/*/***//-*-*-**-*/*-*-/*/*/*-*-/-////--/**/**--**/--///--//**----**//--**//**----***//*-**//*
/*--*//**---/*///**---*-*////***--*/*///***----*///--*/*///**--*/*//**--**/*//
* 安裝 Cayenne 手機程式:
如果想在手機看到或是手動建立與 PC 端相同的 Dashboard,可以由下面的連結安裝手機端的 APP 程式
手機上的 widget 元件會與 PC 上面的一樣,但排列不一定一樣;也可以直接在手機端新增或是移除 widget 元件,動作之後也會在 PC 端同步。
範例在手機的畫面 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | // This example shows how to connect to Cayenne using an ESP8266 and send/receive sample data. // Make sure you install the ESP8266 Board Package via the Arduino IDE Board Manager and select the correct ESP8266 board before compiling. #define CAYENNE_DEBUG #define CAYENNE_PRINT Serial #include <CayenneMQTTESP8266.h> // DHT11 #include <DHT.h> // by Mark Ruys const uint8_t DHTPIN = 2; // ESP8266, GPIO2 DHT dht11; // WiFi network info. char ssid[] = "ssid"; char wifiPassword[] = "wifipassword"; // Cayenne authentication info. This should be obtained from the Cayenne Dashboard. char username[] = "MQTT_USERNAME"; char password[] = "MQTT_PASSWORD"; char clientID[] = "CLIENT_ID"; unsigned long lastMillis = 0; void setup() { Serial.begin(9600); Cayenne.begin(username, password, clientID, ssid, wifiPassword); // DHT11 dht11.setup( DHTPIN ); } void loop() { Cayenne.loop(); //Publish data every 10 seconds (10000 milliseconds). Change this value to publish at a different interval. if (millis() - lastMillis > 10000) { lastMillis = millis(); //** Write data to Cayenne here. ----------*- float T, RH; RH = dht11.getHumidity(); T = dht11.getTemperature(); // check if the data are valid ? if( strcmp( dht11.getStatusString(), "OK" ) == 0 ) { Serial.print( "Temp: "); Serial.println( T ); Serial.print( " C, RH: "); Serial.print( RH ); Serial.println( " %" ); Cayenne.virtualWrite( 0, dht11.getTemperature() ); Cayenne.virtualWrite( 1, dht11.getHumidity() ); } //-----------------------------------------*- } } |
上面的程式碼,執行的結果都在前面展示過了。
整個程式碼很簡短,為了適用於其他 ESP8266 模組或開發板,line 9 選擇了 DHT11 通訊接腳為 <GPIO2>。取得無線網路連線的帳號與密碼,修改 line 13 和 line 14 的 ssid 和 wifipassword;最後將剛剛專案裡的 MQTT_USERNAME、MQTT_PASSWORD 和 CLIENTID 取代程式碼中的 line 17 ~ line 19;其他的就不需要再做任何修改。
程式執行時會先與 Cayenne Cloud 連線。成功連線之後,每隔 10 秒鐘取得一次溫溼度值。溫度值傳送到 Cannnel 0,濕度值傳送到 Channel 1。第一次傳送溫溼度值到 Cayenne 上後,會暫時出現兩個顯示數值的 widget 元件,可以新增或是移除它再自行新增其他 widget 元件;這在上面小節已經有提及過。
如下,新增兩個 Line Chart 和兩個 Value 的 widget 元件。名稱 Channel 0 和 Temperature 的 widget 元件都連接到 Channel 0,名稱 Channel 1 和 Humidity 的 widget 元件都連接到 Channel 1,完成之後如下所示
Started Cayenne IoT with ESP8266 Dashboard 畫面 |
運行一段時間之後,正常執行的 Dashboard 就如下面所示
Started Cayenne IoT with ESP8266 Dashboard 運作畫面 |
結論:
經過前面一番的講解,想必對於使用 ESP8266 與 Cayenne 連線已有了初步的了解。ESP8266 與 Cayenne 使用 MQTT 方式連接 (這部分由 Cayenne 的函式庫自己搞定),而使用的時候只需要處理好要上傳的資料以及這些資料要怎麼在 Dashboard 上呈現即可,構建上相當方便也很容易!
接下來,將利用這一篇所學的來建立nRF24L01+ 系列文章要建置的多節點溫濕度感測器網路,將各子節點發送過來的無線數據,全部匯集到主節點再經 (無線) 寬頻網路傳至 Cayenne 進行監控,如下所示為其 Dashboard,敬請期待 !
nRF24 Sensor Network - Cayenne Dashboard |
<< 部落格相關網頁 >>
沒有留言:
張貼留言
留言屬名為"Unknown"或"不明"的用戶,大多這樣的留言都會直接被刪除掉,不會得到任何回覆!
發問問題,請描述清楚你(妳)的問題,別人回答前不會想去 "猜" 問題是什麼?
不知道怎麼發問,請看 [公告] 部落格提問須知 - 如何問問題 !