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 ------------------------------