作者:CAVEDU 教育團隊
前言
Wio Terminal 開發板支援自家的 Grove 接頭感測器,要讀取各種數值是很方便的,還能把結果直接呈現在本體上的彩色 LCD 小螢幕上,但別忘了 Wio 還有一個 SD 卡插槽,方便您定期寫入資料後進行後續應用 (data logger)。本文章將會介紹兩種方法供讀者選擇。
撰寫/攝影 | 邱柏憲 | ||
時間 | 30分鐘 | 材料表 |
|
難度 | 1(滿分5) |
本文
本文將分別介紹如何使用 micro SD 記憶卡來儲存資料,以及透過 pyTTY 小軟體直接把資料丟回電腦,請根據您的需求來選擇喜歡的做法喔!如果您才剛取得 Wio Terminal 的話,請參考相關文章以及阿吉老師錄製的 tinyML 小教室喔!
方法一:利用microSD儲存數值
Wio Terminal 的 micro SD 卡插槽位於側面 (開關下方)。安裝microSD卡時須注意方向,切記不可硬塞否則可能造成損壞。Seeed 原廠提供了 microSD卡的函式庫,更多資訊請點我。
本程式的流程為按下按鈕A (Wio Terminal 上緣的中間按鈕)後,便會讀取光感測器的數值並寫入 SD 卡中的 .csv 檔。.csv是相當常見的結構化資料儲存方式,後續用 python pandas 函式庫來處理非常方便。
請將以下程式碼透過 Arduino IDE 燒錄到Wio Terminal。註解為程式碼的簡單介紹。注意:此程式需要於Wio Terminal側邊安裝SD卡 (當然啦!) 才可正常執行
#include
#include
#include "SD/Seeed_SD.h"
File myFile;
char str[4];
//設定檔案名稱
const char* data_file = "test.csv";
void setup() {
pinMode(WIO_KEY_A, INPUT_PULLUP);
pinMode(WIO_LIGHT, INPUT);
Serial.begin(9600);
Serial.print("Initializing SD card...");
//設定SD卡的連接設定
if (!SD.begin(SDCARD_SS_PIN, SDCARD_SPI)) {
Serial.println("initialization failed!");
}
}
void loop() {
int light = analogRead(WIO_LIGHT);
//按下按鈕A後才會儲存
if (digitalRead(WIO_KEY_A) == LOW) save_data_to_SD_Card(String(light));
}
void save_data_to_SD_Card(String light) {
//開啟SD卡中的test.csv,如未有此檔案則會新增,如有則會由資料末端接續
myFile = SD.open(data_file, FILE_APPEND);
if (myFile)
{
//將紀錄規格設計成.csv的格式,前面的light為光感應器的數值,後面的1是為了示範格式,兩個數值間則用逗號隔開。這邊須注意輸入的類別需要為String(字串)
String data_record = light + "," + "1";
myFile.println(data_record);
//關閉檔案
myFile.close();
Serial.println(data_record);
Serial.println("Data saved successfully!\n");
}
delay(1000);
}
執行時,可在 Serial mointor 看到相關訊息:
接著將 SD 卡退出並用電腦讀取。此時會發現 SD 卡找到一個
檔,使用 Excel 或合適的文字編輯器開啟後就會看到剛剛所紀錄的資料了!
方法二:藉由PuTTY與Arduino IDE將資料直接儲存於電腦中
Wio Terminal 可藉由PuTTY 與電腦進行溝通,我們便可利用此功能將資料儲存於電腦中。請由本連結來下載對應版本的PuTTY
請將以下程式碼透過 Arduino IDE 燒錄到Wio Terminal。註解為程式碼的簡單介紹:
#include
void setup() {
pinMode(WIO_KEY_A, INPUT_PULLUP);
pinMode(WIO_LIGHT, INPUT);
Serial.begin(9600);
}
void loop() {
//讀取光感應器的數值
int light = analogRead(WIO_LIGHT);
//按下按鈕A執行
if (digitalRead(WIO_KEY_A) == LOW) putty_read(String(light));
}
void putty_read(String light)
{
//前面的light為光感應器的數值,後面的1是為了示範格式,兩個數值間則用逗號隔開。這邊
須注意輸入的類別需要為String(字串)
String data_record = light + "," + "1";
Serial.println(data_record);
delay(1000);
}
PuTTY 軟體端也要進行一些設定。開啟PuTTY後於左側點擊 Session->Logging (下圖紅框),將Session logging 模式選為 Printable output,之後點擊Browse選擇存檔的位置與檔案名稱,並將副檔名設定為.csv (下圖藍框)。完成後回到Session頁面。(此步驟需注意,操作時需關閉Arduino IDE中的Serial Monitor視窗頁面,否則 com port 會被佔住而無法操作)
如下圖,將連線方式改為 Serial (下圖紅框),接著輸入Wio Terminal的COM Port 與鮑率9600 (下圖藍框)。設定完成後按下最下方的 Save 按鈕儲存,之後再次開啟便可以不用再次設定。確認前面步驟已完成後,按下底下的Open按鈕,即可開始蒐集資料。
按下 Wio Terminal 的按鈕A後,就會把讀取的光感測器數值顯示於PuTTY中,如下圖:
也可以在您所指定的路徑找到 .csv檔,當然一樣開起來看看囉!
本文介紹了兩種資料儲存方式,請根據您的實際情境選一種吧。取得資料後要進行分析處理就容易許多了。希望這次的分享對大家在做作品時有所幫助,如果有其他的資料儲存方式也歡迎分享!
(本文為vMaker之【CAVEDU講堂】文章,原文連結)
- 【CAVEDU講堂】NVIDIA Jetson AI Lab 大解密!範例與系統需求介紹 - 2024/10/08
- 【CAVEDU講堂】Google DeepMind使用大語言模型LLM提示詞來產生你的機器人操作程式碼 - 2024/07/30
- 【CAVEDU講堂】《Arduino首次接觸就上手》新手村教學:LED燈閃爍 - 2024/04/18