マイコンを接続しファームウェアをインストールした前回からの続きです。
部品が足りない
購入したマイコン(ESP32)と温度センサーですが、温度センサーにマイコンを取り付けるには部品が足りないようです。
左:温度センサー
右:マイコン
温度センサーの先端がプローブ形式になっており、そのままではハンダ付けを除き、マイコンに繋げないようです。
これをマイコンにつなぐには、ジャンパーワイヤーにセンサーをつなぎ、それをブレッドボードにつないぐ必要があります。
またプログラムが反応したか試すのにLEDをつないで点灯させてみようと思いますが、抵抗なしで接続するとショートする可能性があるので抵抗も必要です。
温度の計測ができた!
LEDを飛ばして温度センサーを接続して温度の計測をしてみようと思いました。
不格好ですが、本来ハンダ付けするところをブレッドボードに差し込み、端子を以下のように接続しました。
- ESP32のGNDピン:温度センサー(DS18B20)のGND
- ESP32のGPIO25ピン:温度センサー(DS18B20)のData
- ESP32の3.3Vピン:温度センサー(DS18B20)のVCC
これで以下のMicorePythonのコードを実行します。
import machine
import onewire
import ds18x20
# ESP32のデータピンを設定(例:GPIO 25)
dat_pin = machine.Pin(25)
# 1-Wireバスを初期化
ds_sensor = ds18x20.DS18X20(onewire.OneWire(dat_pin))
# センサーのロムコードを取得
roms = ds_sensor.scan()
print('Found DS18B20 sensors:', roms)
# 温度を計測
def read_temperature():
ds_sensor.convert_temp()
for rom in roms:
print(rom)
print(ds_sensor.read_temp(rom))
# 温度を読み取る
read_temperature()
ここで問題発生というか勘違いがありました。
$ screen /dev/tty.usbserial-0001 115200
このコマンドで対話モードになるのですが、対話モード以外でプログラムを実行させるにはampyなどのツールが必要とのことでした。
ampyをインストールし、作成したpythonファイルを指定して実行します。
pip3 install adafruit-ampy
ampy --port /dev/tty.usbserial-0001 run d_temperature.py
Found DS18B20 sensors: [bytearray(b'(\xf5\tC\xd4\xe1<7')]
bytearray(b'(\xf5\tC\xd4\xe1<7')
25.0
そしてようやく温度の計測ができました!
すでに電子工作をやっている方には簡単なことですが、初めてやって動くのは嬉しいものです。
ここからLEDの点灯やインターネットを介した温度データの送信、サーバーで受信しデータベースに記述などをしていきます。