這次使用的是DFrobot之DHT11溫濕度感測器-連結
ThingSpeak雲服務與設定ThingSpeak是另一個好用的雲服務,可以接收來自各種開發板或單一程式傳上去的資料,在網站上可以找到很多熱門開發板的現成範例,包含Arduino、ESP8266與Raspberry Pi等。請開啟ThingSpeak網站(https://thingspeak.com/)註冊一個帳號之後登入,登入之後主畫面如下圖:
17.jpg ThingSpeak端設定登入ThingSpeak網站之後點選「Channels」來建立新的Channel,並如下圖填入相關資訊,我們要把DHT11溫濕度感測器的溫度與濕度執分別傳上去,因此請將Field1填入temperature,Field 2則填入humidity。
18.jpg建立Channel之後,點選API Keys 標籤,請把上圖中的Channel ID與Write API Key記下來,後續要把這兩筆資料填入Visual Studio程式中。
19.jpg
於Visual Studio中讀取溫濕度感測器資料糗確認在LattePanda上是否安裝Microsoft Visual Studio 2015(或以上)。Arduino端
- 在Arduino IDE中匯入Adafruit DHT11函式庫,請由函式庫管理員中搜尋「DHT11」後點選Install按鈕即可。
20.jpg
- 接著下載Arduino程式碼-連結,找到DHT_Firmata.ino後上傳到LattePanda Arduino上即可。
本範例主要是如何透過Visual Studio取得Arduino的資料之上傳到ThingSpeak雲服務。架構與上一個範例使用Python是一樣的,看各位在PC端喜歡用什麼樣的程式語言。當然在ThingSpeak網站上也可以找到Python結合Arduino的範例,這樣做法就與上一個專題差不多了。請開啟一個新的Visual Studio C#專案,並於Program.cs中貼入以下程式碼:program.cs範例
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Net;using System.Threading;using LattePanda.Firmata;namespace DHT{ class Program { const string WRITEKEY = "THINGSPEAK_KEY_HERE"; //ThingSpeak Key const int DELAY = 20; //Delay time for send packet to ThingSpeak const int GET_TEMPERATURE = 0x47; const int GET_FAHRENHEIT = 0x48; const int GET_HUMIDITY = 0x49; static void Main(string[] args) { Arduino arduino = new Arduino(); while (true) { Console.WriteLine("Receiving sensor data..."); arduino.DHT(GET_TEMPERATURE); //For Fahrenheit : GET_FAHRENHEIT Thread.Sleep(2000); string temp = arduino.STRING_DHT; // arduino.DHT(GET_HUMIDITY); Thread.Sleep(2000); string hum = arduino.STRING_DHT; try { string rec = ""; string strUpdateBase = "http://api.ThingSpeak.com/update"; string strUpdateURI = strUpdateBase + "?key=" + WRITEKEY; strUpdateURI += "&field1=" + temp; strUpdateURI += "&field2=" + hum; HttpWebRequest request = WebRequest.Create(strUpdateURI) as HttpWebRequest; request.Timeout = 5000; request.Proxy = null; //request.Accept = "application/xrds+xml"; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); WebHeaderCollection header = response.Headers; var encoding = ASCIIEncoding.ASCII; using (var reader = new System.IO.StreamReader(response.GetResponseStream(), encoding)) { rec = reader.ReadToEnd(); Console.WriteLine("The data was successfully sent. Node Number: " + rec); Console.WriteLine(DateTime.Now.ToString("dd/MM/yyyy - HH:mm:ss") + " Temperature: " + temp + " °C" + " Humidity: " + hum+" %"); } } catch (Exception ex) { Console.WriteLine("Error: " + ex.Message); } Thread.Sleep(1000); for (int i = 0; i <= DELAY; i++) { Console.Write("."); Thread.Sleep(1000); } Console.WriteLine(); } } }}
實際執行存檔之後點選 Start 按鈕,會看到Visual Studio執行畫面:
21.jpg這時請開啟ThingSpeak網站,進入剛剛設定好的Channel,應該會看到類似下方的畫面,試著對感測器呵氣來改變溫度與溼度吧!於ThingSpeak網站檢視溫度與濕度資料變化
22.jpg 這次介紹兩種雲服務:MCS與ThingSpeak,雖然功能上比Microsoft Azure來得少多了,但使用流程也因此簡化許多,功能上大致上還是可以滿足我們從雲端控制板子腳位或顯示板子資料等兩大訴求。請根據大家的使用需求來選用合適的雲服務。未完
Comments