at_yukari.hara
2021年2月1日 10時37分
Armadillo-640でUSB-RS485変換を使って、RS485(Modbus通信)で温湿度センサーからデータを取得してみました。
使用したもの
- Armadillo-640
- 温度湿度センサ:KKmoonRS485温度湿度 トランスミッタ
- USB-RS485変換:DSD TECH SH-U11G
- 温湿度センサ用電源
手順
1.接続方法
Armadillo-640にUSB-RS485変換を挿し、USB-RS485変換と温度湿度センサを以下のように接続を行う。
温度湿度センサ | 接続先 |
---|---|
VCC+ | 電源 |
GND | GND(USB-RS485変換)/電源 |
485A | A+(USB-RS485変換) |
485B | B-(USB-RS485変換) |
2.必要なパッケージ、ライブラリのインストール
以下のコマンドを実行し、必要なパッケージをインストールします。
root@armadillo:~# apt-get update
root@armadillo:~# apt-get upgrade
root@armadillo:~# apt-get install python3
root@armadillo:~# apt-get install python3-pip
root@armadillo:~# pip3 install pymodbus
3.Pythonプログラムの作成
下記の内容のファイルを作成します。
(後述の説明上、このファイル名を"rs485.py"とします。)
import time
from pymodbus.client.sync import ModbusSerialClient
client = ModbusSerialClient(baudrate=9600, port="/dev/ttyUSB0", method="rtu")
if client.connect():
res = client.read_holding_registers(address=0, count=2, unit=1)
print("-" * 30)
temperature = res.registers[0]/10
print("temp:{}".format(temperature))
humidity = res.registers[1]/10
print("humidity:{}".format(humidity))
print("-" * 30)
client.close()
4.実行
作成した"rs485.py"を下記のようにpython3で実行すると、温度と湿度がコンソールに表示されます。
root@armadillo:~# python3 485.py
------------------------------
temp:28.4
humidity:25.1
------------------------------