【Python/Arduino】気温データをパソコンで表示②

この記事では、Arduinoで測定した温度をパソコンで表示する方法をソースコード付きで解説します。

スポンサーリンク

気温を表示

Arduinoマイコンと温度センサ(LM35DZ)を用いて気温(温度)を計測し、その結果をシリアル通信でPCに転送してPythonでリアルタイム表示してみました。

スポンサーリンク

回路構成(配線図)

Arduinoと電子部品の構成・配線は下記の通りです。

電子部品

・Arduino UNO (1個)
・温度センサ(LM35DZ)
・ジャンプワイヤー(数本)

スポンサーリンク

ソースコード

サンプルプログラムのソースコードです。

Arduino側

float a_in;          // アナログ入力値(0〜203)
float temp_c = 0;  // 摂氏値( ℃ )

void setup(){
  Serial.begin(9600);  // シリアル通信速度
}

void loop(){
  // アナログピンから計測値を取得(0〜203)
  a_in = analogRead(0);
  // 入力値を摂氏に換算
  temp_c = ((5 * a_in) / 1024) * 100;
  // 改行しながら出力
  Serial.println( temp_c );
  // 1000ms待機
  delay(1000);
}

Python(パソコン側)

# -*- coding: utf-8 -*-
import numpy as np
import serial
import datetime

def queue(src, a):
    dst = np.roll(src, -1)
    dst[-1] = a
    return dst

def main():
    # 1次元配列の生成
    temps = np.zeros(10)
    i = 0
    ser = serial.Serial("COM5")  # Arduinoが接続されているコムポートを指定

    while(i != 100):
        todaydetail = datetime.datetime.today()
        line = ser.readline()   # 行終端まで読み込む
        temp = line.rstrip()    # 行終端コード削除
        # キュー操作
        temps = queue(temps, temp)
        print('--------------------------------')
        print(todaydetail.strftime("%Y/%m/%d %H:%M:%S"))
        print("Temp:", temp)
        print("Average:", np.average(temps))
        print("Std:", np.std(temps))
        i+=1

    ser.close()
    print("End")

if __name__ == '__main__':
    main()
スポンサーリンク

実行結果

サンプルプログラムの実行結果です。

おすすめ記事

Arduino入門 サンプル集
Python入門 サンプル集

Arduino
スポンサーリンク

コメント