玩 Excel + micro:bit (透過USB port讀取acceleration、light level、compass、temperature數據)

動機:可否在 Excel 動態圖表展示 micro:bit 的各項感測數據(acceleration、light level、compass、temperature)...

準備環境
1.Windows 10筆電
2.Microsoft Excel 2016
3.BBC micro:bit(需插USB數據線)

實作步驟
業經Google搜尋後找到 Yigal Edery ( https://techcommunity.microsoft.com/t5/Excel-Blog/Excel-and-Micro-Bit-Hacking-for-fun-and-creativity/ba-p/63603 )分享一則作法,並看了其 Data Flow,如下圖
圖摘自: https://techcommunity.microsoft.com/t5/Excel-Blog/Excel-and-Micro-Bit-Hacking-for-fun-and-creativity/ba-p/63603
發現這就是我要的效果!!
  • 先將 micro:bit 插上筆電,並查詢其COM port位置,如下圖

  • 並按下 [Download] 產生 .hex 檔案,再 傳送到 MICROBIT磁碟(N:)...micro:bit 會顯示 draw a circle 畫個圈圈會變成 smiley face...





確認了接收數據正常...
再下載Yigal Edery提供的範例 Excel 檔案 ( https://techcommunity.microsoft.com/gxcuf89792/attachments/gxcuf89792/ExcelBlog/48.6/1/SensorVisualizer_BlogVersion.zip )
並改寫其 巨集VBA程式儲存格公式,如下:
  • 先開啟 Excel 中的 開發人員/巨集 修改 VBA 的程式碼,如下圖

  • 程式如下:


  • 有關 Excel 內容說明如下:
    • D欄:顯示目前讀取micro:bit數據的 raw data 在那一行
    • E欄:利用VBA讀取 USB COM port 的數據並去除前面的 "D:" 二個字元
    • F欄:利用公式 =FIND(",",En,1) 找出E欄字串的第一個comma(,逗號) 位置
    • G欄:利用公式 =FIND(",",En,Fn+1) 找出E欄字串的第二個comma(,逗號) 位置
    • H欄:利用公式 =FIND(",",En,Gn+1) 找出E欄字串的第三個comma(,逗號) 位置
    • I欄:流水編號
    • J欄:利用公式 =NUMBERVALUE(LEFT(En,Fn-1)) 取出E欄字串的 acceleration數據並轉換成 Number
    • K欄:利用公式 =NUMBERVALUE(MID(En,Fn+1,Gn-Fn)) 取出E欄字串的 light level數據並轉換成 Number
    • L欄:利用公式 =NUMBERVALUE(MID(En,Gn+1,Hn-Gn)) 取出E欄字串的 compass數據並轉換成 Number
    • M欄:利用公式 =NUMBERVALUE(RIGHT(En,LEN(En)-Hn)) 取出E欄字串的 temperature數據並轉換成 Number
    • 四個圖表類型:依數據表示方式,選擇折線圖、XY散佈圖、區域圖...等,並以顏色對應儲存格資料
    • 二個按鈕( Start、Stop )分別對應VBA的 StartBtn_Click()StopBtn_Click() 事件
  • 有關 VBA程式碼 編修環境,我習慣展開如下圖,並使用 偵錯工具(F8) 來逐行debug...

問題&解決
當我一切就序後,卻一直無法在 Excel 按下 [Start] 接收 micro:bit 的數據,且 Excel檔案會當掉,搜尋了Google很久也未獲解決方法,只好自己土法亂搞,因此,我刪除了所有的 COM port只剩下一個COM3,如下圖




就可以正常運作了...( 之前的 mbed Serial Port 是安裝micro:bit的官方驅動程式 https://os.mbed.com/media/downloads/drivers/mbedWinSerial_16466.exe 產生的,至於無法由VBA讀取的原因就有待查證了?!)

提供Excel分享連結:https://drive.google.com/file/d/0B_4eUrknq7N1RWpMUHB6d3hsYkk/view?usp=sharing

提供.hex分享連結:https://drive.google.com/file/d/0B_4eUrknq7N1M2NkR2VCSmxBaVE/view?usp=sharing

影片展示


後記:其實,也可以運用Google Apps Script 與 Spreadsheet 來做...蒐集了raw data數據後就可以做後續統計分析及應用了~~~


感謝
Yigal Edery, Principal Program Manager in the Excel Team, https://techcommunity.microsoft.com/t5/Excel-Blog/Excel-and-Micro-Bit-Hacking-for-fun-and-creativity/ba-p/63603

留言