日常生活の物理|身近で体験できる科学のブログ

日常に関すること、何でもつぶやきます。物理的な視点を加えることが多いかも。

温湿度計作り (4) : Raspberry PiでのBluetooth接続

Raspberry Piに無線で入れるようになったし、センサデータをいい感じに無線で出力できるようなものを作りたいなと思い、Bluetooth接続にトライしてみました。

 

参考にしたのは下記ページです。
https://qiita.com/oko1977/items/9f53f3b11a1b033219ea

 

こちらを参考にBluetoothの初期設定を行い、センサデータをBluetoothで出力しました。

*****************

[Raspberry Pi]

import Adafruit_DHT as DHT

import subprocess

import time

 

SENSOR_TYPE = DHT.DHT22

DHT_GPIO = 22

h,t = DHT.read_retry(SENSOR_TYPE, DHT_GPIO)

print("Temp= {0:0.1f} deg C" . format(t))

print("Humidity= {0:0.1f} %" . format(h))

num = 100

for i in range (num):

        h,t = DHT.read_retry(SENSOR_TYPE, DHT_GPIO)

        print("Count",i+1,sep=":")

        cmd = "sudo echo " + str(t) + "> /dev/rfcomm0"

        subprocess.run(cmd,shell=True)

        cmd = "sudo echo " + str(h) + "> /dev/rfcomm0"

        subprocess.run(cmd,shell=True)

*****************

 

こちらでシリアル通信をして、Teratermで受信した信号を出力したところ、想定どおりのデータが得られました。

Teratermでは見るのもいまいちなので、受信するPC側のPythonコードも用意しました。

 

*****************

[PC]

import serial

import platform

ser = serial.Serial('COM4', 9600)

print(ser.name)

   

for i in range(20):

    line = ser.readline()

    temp = float(line.strip().decode('utf-8'))

    line = ser.readline()

    humidity = float(line.strip().decode('utf-8'))

    print(temp,humidity,sep=" --- ")

ser.close()

*****************

 

出力結果も以下のとおりに得られました。

f:id:dailyphysics:20201130234204p:plain

 

…っと、ここまで着手したのですが、いまいち使い勝手のよいシステムがイメージできず。ここでBluetoothの実装を止めてしまいました。

携帯やPCから簡単にセンサデータを確認できるようなものを作りたかったのですが、Bluetooth接続の設定自体が簡単には扱いづらく。。パソコンとRaspberry Piの接続が何故か切れたりすることがあり、設定しなおしが面倒で、ここで手を止めることになりました。(良い実装方法があればアイデア募集です)