資料日誌(data log)實作

Ted Lee
Jun 16, 2024

--

Ted Lee 的土饅頭(To Mentor)工坊

Line:ted2016.kpvs
Email:Lct4246@gmail.com
FB:http://gg.gg/TedLeeFB/
Blog:http://gg.gg/TedLeeBlog/

June 17, 2024

從小彼特的官網上,我們可以看到原設計者在板子上已經內建了圖 1 的六種感測元件(sensor)來偵測我們環境中的各種訊號(signals)。一般而言,這些訊號們的物理量都會轉換成電壓(voltage)、電流(current)與電阻(resistor)三種電的訊號以具體的量化數值(quantization value)呈現(如圖 2 所示)。

圖 1:小彼特內建了六種感測器來量測大自然中各種訊號
圖 2:電腦系統量對環境訊號們的量測

其中,環境光線(ambient light)和溫度(temperature)使用了板子正面的 25 顆 LED 來偵測。

觸碰的功能則做在板載的商標(logo)上。註:商標上的觸碰感測為電容式(capacitive)。然而,承襲著 V1 的電路設計,V2 版上的 P0、P1、P2 金手指(golden finger)電阻式(resistive)觸控依舊保留使用。前者是利用觸碰時電磁場(electric field)電容量的變化來偵測;後者是依據電阻值的不同來設計各種應用。

小彼特使用 LSM303AGR 這顆動作感測器(motion sensor)來量測主板運動時 XYZ 三軸的加速度(acceleration)值。另一方面,這顆 IC 也提供磁場強度檢測的功能。

關於環境音量的偵測,小彼特主板的電路上配有 Knowles SPU0410LR5H-QB-7 麥克風(microphone)做為聲音監控的元件。

小彼特來搜集感測資料(sensor data)的方式

小彼特的處理器(processor)由 V1(Nordic nRF51822,256 KB 快取記憶體,16 KB SRAM)升級到 V2(Nordic nRF52833,512 KB 快取記憶體,128 KB SRAM)後,因記憶體容量增加的原故,可以擺放較多的資料、寫更大的程式了。因此,MakeCode 增加了一包「Data Logger」擴充積木(extension block)來實現(implement)以一片板子就能當作資料記錄器使用(模式一)。當然,傳統使用電腦序列埠(serial port)做為感測資料傳輸通道的模式依舊保留著(模式二)。倘若配合小彼特 SoC(System on Chip)的 2.4GHz 無線廣播通信的功能,我們也能以多機的模式(模式三)來多方搜集到更多不同的感測資料。

模式一:單機模式(V2)

小彼特 V2 版加大了記憶體的容量,我們就可以使用圖 3 的擴充積木來撰寫程式將圖 1 所採集到的各種感測值儲存在小彼特內部以供後續的分析。

圖 3:小彼特 V2 專用支援 Data Logger 功能的摜充積木

我們先設置好計步器(step counter)的測試情境,並以電池盒或電池背板供給小彼特外部電源(external power)。然後,我們依據以下方式來啟動計步日誌記錄(圖 4):

A:開始計步、B:停止計步、A+B:顯示步數。每 0.1 秒記錄加速度感測器的 XYZ 測值。

其中,我們用了一 logging 這個變數來切換日誌的啟動狀態。

圖 4:計步測值記錄參考程式

當計步日誌記錄好了之後,我們將小彼特接到電腦上。在檔案總管中查看小彼特內部的「MY_DATA.HTM」檔,就能看到日誌裡頭的數值了。

模式二:單機模式(V1/V2)

模式一直接將資料存在小彼特內部固然方便,但它小小的「腦容量」能儲存的測資仍是有限的。相對的,如果能將這些資料都送往電腦處理(或者往雲端資料庫送),這樣要存到幾 GB、幾 TB 就都不是問題了啊!

我們將小彼特板載的加速度感測器測值每 0.1 秒都經由序列埠(小彼特─USB 傳輸線─電腦)將之送到連接的電腦上(圖 5)。

圖 5:使用序列通訊來傳送測值的參考程式

按下 MakeCode 左側,模擬器下方的「Show data Device」按鈕(圖 6)後,就能看到即時取得的監控資料。當然,我們也可以將之匯出成 .csv,並以試算表程式進行深入的資料處理與分析。

圖 6:測值即時監看切換按鈕

模式三:多機模式(V1/V2)

模式一適合需要移動式量測的場景,但只能儲存的短時間的資料量。另一方面,模式二適合定點量測的應用(例如:環境溫溼度監控)。然而,若需要結合移動性與較長的記錄時間的話,模式三以無線電廣播通信的方式結合多塊小彼特來實現「Client/Server」的傳輸架構。在此,我們僅以簡化的雙機(dual machine)傳送(transmit) Tx 與接收(receive) Rx 方式來詳細解說其控制的方法。

Tx:傳送端的小彼特每 0.1 秒將加速度感測器的 XYZ 測值傳送出(圖 7)。

圖 7:多機模式的傳送端 Tx

Rx:接收端的小彼特如果收到傳送端送來 XYZ 任何一軸的測值就往連接電腦的序列埠送(圖 8)。

圖 8:多機模式的接收端 Rx

有實驗數據了,然後呢?

我們使用上一節的任何一種模式取得感測器的測資之後才正是專案的第一步而已──我們要拿裝設在鞋子上的小彼特測資做什麼呢?如果讀者有用過 手機 app、Apple Watch、健康手環之類的計步器功能,應該就會發現:走 10 步之後,這些儀器是否真的測到了實際的步數了呢?

本文就在此打住並賣個關子,等待下一篇再來說說這個答案(心急的讀者就……請先參考這個影片研究、研究要怎麼解決囉!)。

--

--