使用IoT:kit透過ThingSpeak和IFTTT發出光線強度警報 使用IoT和Excel讓日期視覺化 我們的目標是使用micro:bit從感測器收集基本數據,並使數據在Excel中視覺化。
為此,將執行以下三個步驟:
- 對控制器編碼,收集感測器數據,並透過其內建的串行通訊端口傳送數據。
- 把micro:bit連接到PC的串行端口。
- 我們將在Excel中編寫一小段程序,從串行端口讀取數據到網格中。
從micro:bit到Excel步驟一:對micro:bit進行編程
對micro:bit編碼是其中最簡單的事情。Microsoft實際上已經準備了一個以Web為基礎的開發環境(Microsoft是micro:bit的創始合作夥伴之一)。
您要做的就是瀏覽www.makecode.com,選用micro:bit作為開發設備,使用視覺化的「積木程式」編寫一段小程序。
為此實驗編寫的程式會從兩個可輕鬆使用的感測器(加速度計和光照水平)中收集數據,藉由串行通訊端口以每100毫秒的時間傳送一次感測器採樣。
示範編碼:
步驟二:將程式下載到micro:bit
現在要做的是將程序下載到Micro:Bit中。因此,請使用USB將micro:bit連接到個人電腦,會出現類似外接硬碟的圖示。接著從MakeCode環境中下載HEX文件,並保存到設備中。幾秒鐘後程式會開始運行。也可以從這裡下載:https://makecode.microbit.org/_cjvC4RU1CVUD步驟三:與個人電腦連接
現在控制器已開始運作並發送數據,在嘗試匯入Excel之前,最好驗證一下個人電腦是否可確實看到傳入的數據流。因此您需要按照https://www.microbit.co.uk/td/serial-library上的說明操作。
基本上您需要做下列兩件事:- 安裝驅動程序,使micro:bit作為串行端口「出現」在您的個人電腦上,可以在此處下載驅動程式:
- 串連通訊終端模擬器必須用於測試。您需要配置正確的COM端口。在此環境中配置為COM3。我們假設Excel中的範例編碼是這樣,因此如果您的編碼不同,稍後則需要修改Excel編碼配置正確的端口。
完成此操作後,在模擬器中的數據流看起來像這樣: 如果數據來自終端模擬器,請至「設備管理器」選擇「端口」,找到「USB串行設備」。
單點右鍵查尋屬性,選擇端口設置,將第一個數據更改為「115200」。
點選「高級設置」,將「COM端口號」設定為「1」或「2」,點選確定。
輸入的數據流-光照水平和加速度
步驟四:在Excel中編程
現在已輸入了數據流,將其匯入Excel吧。電子表格包含兩個部分
- 用於與微控制器通訊的VBA代碼
- 基本的網格數據操作功能,用於分拆數據點並繪製成圖表。
在此可找到電子表格的副本:https : //techcommunity.microsoft.com,或在此處下載
當打開Excel副本時,會提示「The macro is forbidden」,點選「start macro」是很重要的步驟。
數據流無窮無盡,為了方便本實驗,我們將過濾收集到的最後30個數據樣本。
還有一點:從VBA中的串連通訊端口讀取數據時,最可靠的方法是逐字節讀取而不是整行讀取。還有其它可能會漏掉數據的情況(取決於通訊速度、VBA執行的速度等),這就是為什麼每行開頭都要寫入「D:」的原因。如果讀取的行不是以該行開頭,則該行將被視為垃圾數據而被忽略。事不宜遲,以下是從VBA編碼中節錄的主循環:
此編碼段中有幾件事需要注意:
- 打開COM3:使用115,200 baud(Micro:Bit發送數據的速度)端口。
- 一次讀取一個字節,直到檢測到行尾(char(13))。
- 每當讀取一行時,它將被推入網格到固定列中的下一行。行號固定在2-31之間,簡化範例。
- 有個用於停止讀取的標誌,由停止鈕(來自另一個Macro)控制。
理解此編碼的最佳方法是在除錯模式下執行並逐步檢查,因此繼續下載範例並進行實驗吧!
現在我們已經可將數據匯入到Execel網格中並繪製了圖表。是時候使用正在收集的數據了!
為了保持通用性,VBA腳本按原始樣本將數據讀取到網格中,因此「E」列包含實際數據,而這些數據都是透過電線傳輸的。在我們的例子中,它是兩個數字,以逗號分隔。
因此,我們要做的第一件事是將其分成每行兩個不同的值:燈光水平和加速度值。我特意以這種方便閱讀的方式操作–使用FIND公式查找匯入數據中的「,」位置,接著使用NUMERVALUE和LEFT and RIGHT公式將字符串分開並將其轉換為兩個數值。
以下是的訊息是有關我用來分拆輸入數據字符串中的值的公式:
- =FIND(",",E2,1):查找表格E2中第一個逗號的位置(其中包含逗號分隔值的原始字符串)。
- =NUMBERVALUE(LEFT(E2,F2-1)):將字符串的左側移到逗號位置,將其轉換為數值,這個代表光線感測器的數值。Micro:Bit中的光線數值範圍為0到255。
- =NUMBERVALUE(RIGHT(E2,LEN(E2)-F2)):與前面的公式類似,這裡僅使用右側數字,即加速度值。值可以在X、Y或Z軸上,也可以組合在一起。詳細說明在此。
我另外還增加了1~30的固定「列」,因此圖表將會有X軸。
最後一部分為根據數值建立兩張圖表。在這兩個參數中,X軸是行號、Y軸是從感測器匯入的數據(光線或加速度)。看起來像下圖這樣:
步驟五:修改VBA代碼
- 為先前的端口值修改「COM」數值,此處的範例編碼為「2」。
最終成果-匯入的數據可即時視覺化!
- 您現在所要做的就是點選「Start」,查看數據匯入並即時繪製圖表!