JUGEMテーマ:電子工作
■CO2センサーMH-Z19Cの使い方
■配線
USBuart MH-Z19C
5V-------Vin
TX-------RX
RX-------TX
GND------GND
■ソース(パソコン側)
import serial
import time
ser = serial.Serial("COM10", 9600, timeout=1)
while True :
b = bytearray([0xFF, 0x01, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79])
ser.write(b)
time.sleep(0.1)
result = ser.read(9)
print(str(result[2])+" - "+str(result[3]))
ppm = result[2]*256+result[3]
print("ppm="+str(ppm))
time.sleep(5)
■ESP32と接続
ESP32が3.3V動作なのでMH-Z19Cからの戻りのTXは分圧しています。
# ESP32 MH-Z19C
# 5V-----------------Vin
# 33(TX)-------------RX
# 32(RX)----+--2KΩ--TX
# |
# 3.3KΩ※
# |
# GND-------+--------GND
■ソース
#
# Co2センサー MH-Z19C
#
#接続
#
# ESP32 MH-Z19C
# 5V-----------------Vin
# 33(TX)-------------RX
# 32(RX)----+--2KΩ--TX
# |
# 3.3KΩ※
# |
# GND-------+--------GND
#
# ※ MH-Z19CのTXが5Vなので、
# 分圧してESP32が破壊されないようにする
# RXは3.3Vぐらいで出ると思われるがMH-Z19Cで
# きちんと読み取ってくれるので問題ない
#
from machine import UART
import time
uart = UART(2, baudrate=9600, tx=33, rx=32)
while True:
b = bytearray([0xFF, 0x01, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79])
uart.write(b)
time.sleep(0.1) #少し待たないと後ろの処理がエラーになる
result = uart.read(9)
#print(str(result[2])+" - "+str(result[3]))
ppm = ( result[2] * 256 ) + result[3]
print("ppm="+str(ppm))
time.sleep(5)