Quantcast
Channel: CAVEDU教育團隊技術部落格
Viewing all articles
Browse latest Browse all 673

[Wio Terminal ]透過microSD卡或PuTTy 儲存感測器數值

$
0
0

前言

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卡的函式庫,更多資訊請點我

Wio Terminal 發展板

本程式的流程為按下按鈕A (Wio Terminal 上緣的中間按鈕)後,便會讀取光感測器的數值並寫入 SD 卡中的 .csv 檔。.csv是相當常見的結構化資料儲存方式,後續用 python pandas 函式庫來處理非常方便。

請將以下程式碼透過 Arduino IDE 燒錄到Wio Terminal。註解為程式碼的簡單介紹。注意:此程式需要於Wio Terminal側邊安裝SD卡 (當然啦!) 才可正常執行

#include <SPI.h>
#include <Seeed_FS.h>
#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 卡找到一個 test.csv 檔,使用 Excel 或合適的文字編輯器開啟後就會看到剛剛所紀錄的資料了!

方法二:藉由PuTTY與Arduino IDE將資料直接儲存於電腦中

Wio Terminal 可藉由PuTTY 與電腦進行溝通,我們便可利用此功能將資料儲存於電腦中。請由本連結來下載對應版本的PuTTY

請將以下程式碼透過 Arduino IDE 燒錄到Wio Terminal。註解為程式碼的簡單介紹:

#include <SPI.h>

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檔,當然一樣開起來看看囉!

 

本文介紹了兩種資料儲存方式,請根據您的實際情境選一種吧。取得資料後要進行分析處理就容易許多了。希望這次的分享對大家在做作品時有所幫助,如果有其他的資料儲存方式也歡迎分享!

 

[Wio Terminal ]透過microSD卡或PuTTy 儲存感測器數值〉這篇文章最早發佈於《CAVEDU教育團隊技術部落格》。


Viewing all articles
Browse latest Browse all 673

Trending Articles