マイコン温度通知システムの製作2 温度センサーによる温度計測

マイコンを接続しファームウェアをインストールした前回からの続きです。

部品が足りない

購入したマイコン(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の点灯やインターネットを介した温度データの送信、サーバーで受信しデータベースに記述などをしていきます。

タイトルとURLをコピーしました