8
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Arduinoでセンサから取得したデータをVSCode上でCSV形式で保存してみた

Last updated at Posted at 2021-02-17

今回の趣旨

Arduinoで工作してるとログを取ってみたくなったのですが、Arduino開発環境にVScode拡張機能をつかっており、せっかくならVScode内で完結したいなぁという事でやってみました。

VSCodeでArduino開発環境

こちらのサイトを参考に構築しました。
また、VSCodeでPythonを利用する場合、拡張機能を導入する必要があります。
こちらの記事を参考に、Pythonの拡張機能を導入しています。

実現したい(できた)こと

CSV形式で気圧センサのログを保存!
プロジェクトフォルダに直で出力してくれるので楽ちん&すっきり!
test.csv - pressurOled - Visual Studio Code 2021_02_17 21_26_49.png

スプレッドシートで開いてみた!おおお、なんかそれっぽい!

test.png

いざ実装

今回はPythonを使って実現しました。
ラズパイやってる方には馴染みの深い言語ですね。
かくいう私もラズパイのおかげで多少読み書き出来る程度の知識です。
Pythonの導入方法はGoogle先生に聞けば素晴らしい記事を紹介してくれます。

では早速pyserialというシリアル通信を行う為のライブラリを導入します。
私の環境はWindowsなのでコマンドプロンプトから。

pip3 install pyserial

ライブラリのインストールが完了したら、作業中のディレクトリにlog_test.pyを新規作成します(名前は何でもOK、拡張子は.pyで宜しく!)

log_test.py
import serial
import datetime
import csv

com = serial.Serial("COM7", 9600)

while True:
    val = str(com.readline().decode("utf-8").rstrip("\n"))
    date = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    with open("test.csv", "a") as f:
        print("{},{}".format(date, val), file=f)

com = serial.Serial("COM7", 9600)の第一引数にArduinoを接続しているポートを記述、第二引数にシリアル通信のボーレートを指定します。
このプログラムを実行する前に予めシリアルモニターの接続は切っておいて下さい。

com.readline()Arduino上に書き込んだSerial.print()から文字列を取得します。そのままだと改行コード\r\nが最後にくっついてくるので、
.rstrip("\n")で対応しています。

val = str(com.readline().decode("utf-8").rstrip("\n"))今回は以前作った気圧センサのソースからデータ取ってるので、ここで文字列として扱っていますがグラフ化したりするなら生の値取った方がいいかもです。
データ型についてはまだまだ知識不足なので、この辺りは追って学習したいと思います。

終わりに

今回は初めてPythonを使ってログの取得と保存に挑戦してみました。
気温や気圧の変化を実際の天候と照らし合わせて、セルフ天気予報なんてできたら面白そうです。

8
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?