PyModbus를 사용하여 USB-RS485 변환 어댑터를 통해 Modbus 호환 온습도 센서의 값을 얻습니다.
6864 단어 RaspberryPi파이썬modbusIoT
사용중인 장비
Raspberry Pi
사용하는 것은 라즈파이 4입니다.
온습도 센서
KKmoonRS485 온도 습도 송신기 RS485 Modbus-RTU 데이터 로거 무선 온도 센서 온도 습도 모니터
「RS485 Modbus」로 Amazon에서 검색하면 맨 위에 나오는 이쪽의 센서 사용하고 있습니다.
htps //w w. 아마존. 이. jp/dp/B07KS3WJRM/
사양도 인용해 둡니다.
품목
내용
전원 범위
DC8V ~ 48V (양과 음의 극성을 구별하지 않고 극성을 반대로 할 수 있습니다)
온도 측정 범위
-40°C~125°C
습도 측정 범위
0~100%RH
측정 정확도와 분해능
온도: ±0.3°C, 0.1°C 습도: ±3.0%, 0.1RH
응답 시간
2초
시리얼 전송 속도
1200,2400,4800,9600(2자리 다이얼 스위치), 기본 9600
바이트 형식
8데이터 비트, 1스톱 비트, 체크 불필요
통신 주소
1~63(6자리 다이얼 스위치), 기본 1
변환 어댑터
이 변환 어댑터를 사용하여 USB-RS485를 변환합니다.
WINGONEER USB 2.0 to RS485 직렬 컨버터 어댑터 CP2104 SN75176 FUSE + TVS, FT232보다 안정적인 이중 보호
사용중인 라이브러리 "PyModbus"
아래에서 쉽게 설치할 수 있습니다.
pip install pymodbus
배선
USB 어댑터를 사용한 구성이므로 매우 간단합니다.
전원이 DC8V ~ 48V로 크기이므로 조심하십시오. 위 사진에서 센서가 붉게 빛나고 있다고 생각합니다만 전원 부족하지 않으면 빛나지 않습니다. 극성은 신경 쓰지 않고 괜찮습니다.
RS485의 A, B를 맞추어 배선합니다.
아래 사진과 같이 이 온습도계는 플러스 마이너스 반대로도 움직입니다. (역으로도 움직이는지의 테스트 때의 사진이었습니다・・)
USB 어댑터를 꽂을 때 어떤 장치가 인식했는지 확인하십시오. USB에 꽂은 직후에 dmesg 보면 알기 쉽습니다. 아래의 로그를 보면 ttyUSB0
임을 알 수 있습니다.
$ dmesg | tail -n 5
[ 7533.026509] usb 1-1.3: Product: CP2104 USB to UART Bridge Controller
[ 7533.026524] usb 1-1.3: Manufacturer: Silicon Labs
[ 7533.026538] usb 1-1.3: SerialNumber: 00868CDA
[ 7533.032198] cp210x 1-1.3:1.0: cp210x converter detected
[ 7533.042672] usb 1-1.3: cp210x converter now attached to ttyUSB0
$ ls /dev/ttyUSB0
/dev/ttyUSB0
PyModbus를 사용하여 얻기
PyModbus를 사용하면 다음과 같이 쉽게 온도와 습도를 얻을 수 있습니다.
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)
temperature = res.registers[0]/10
print(f"Temperatur:\t{temperature} ℃")
humidity = res.registers[1]/10
print(f"Humidity:\t{humidity} %")
client.close()
이하 조금 설명합니다.
port에는 USB를 꽂을 때 Linux에서 인식되는 장치를 지정합니다. baudrate는 위의 스펙의 표에 있는 대로 조정 가능합니다만, 디폴트에서는 9600이므로 그것을 지정합니다.
ModbusSerialClient(baudrate=9600, port="/dev/ttyUSB0", method="rtu")
여기서 Socket 통신이 열립니다.
if client.connect():
예를 들면 다음과 같이 connect한 후, client.socket
에 대해서 Modbus의 명령을 직접 던지는 것도 가능합니다.
실행해보기
다음과 같이 온도와 습도를 얻을 수 있었습니다.
참고한 기사
비슷한 구성을 Golang에서 구현하고 주변의 내용도 써 주시고 있습니다.
이번은 RS485의 USB 변환 장치를 사용했습니다만, 전에 GPIO 경유로 했을 때의 기사입니다. 실은 외형은 함께입니다만 별도의 온습도 센서를 사용하고 있습니다.
Reference
이 문제에 관하여(PyModbus를 사용하여 USB-RS485 변환 어댑터를 통해 Modbus 호환 온습도 센서의 값을 얻습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yomon8/items/9da430bb5915f4683684
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
아래에서 쉽게 설치할 수 있습니다.
pip install pymodbus
배선
USB 어댑터를 사용한 구성이므로 매우 간단합니다.
전원이 DC8V ~ 48V로 크기이므로 조심하십시오. 위 사진에서 센서가 붉게 빛나고 있다고 생각합니다만 전원 부족하지 않으면 빛나지 않습니다. 극성은 신경 쓰지 않고 괜찮습니다.
RS485의 A, B를 맞추어 배선합니다.
아래 사진과 같이 이 온습도계는 플러스 마이너스 반대로도 움직입니다. (역으로도 움직이는지의 테스트 때의 사진이었습니다・・)
USB 어댑터를 꽂을 때 어떤 장치가 인식했는지 확인하십시오. USB에 꽂은 직후에 dmesg 보면 알기 쉽습니다. 아래의 로그를 보면 ttyUSB0
임을 알 수 있습니다.
$ dmesg | tail -n 5
[ 7533.026509] usb 1-1.3: Product: CP2104 USB to UART Bridge Controller
[ 7533.026524] usb 1-1.3: Manufacturer: Silicon Labs
[ 7533.026538] usb 1-1.3: SerialNumber: 00868CDA
[ 7533.032198] cp210x 1-1.3:1.0: cp210x converter detected
[ 7533.042672] usb 1-1.3: cp210x converter now attached to ttyUSB0
$ ls /dev/ttyUSB0
/dev/ttyUSB0
PyModbus를 사용하여 얻기
PyModbus를 사용하면 다음과 같이 쉽게 온도와 습도를 얻을 수 있습니다.
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)
temperature = res.registers[0]/10
print(f"Temperatur:\t{temperature} ℃")
humidity = res.registers[1]/10
print(f"Humidity:\t{humidity} %")
client.close()
이하 조금 설명합니다.
port에는 USB를 꽂을 때 Linux에서 인식되는 장치를 지정합니다. baudrate는 위의 스펙의 표에 있는 대로 조정 가능합니다만, 디폴트에서는 9600이므로 그것을 지정합니다.
ModbusSerialClient(baudrate=9600, port="/dev/ttyUSB0", method="rtu")
여기서 Socket 통신이 열립니다.
if client.connect():
예를 들면 다음과 같이 connect한 후, client.socket
에 대해서 Modbus의 명령을 직접 던지는 것도 가능합니다.
실행해보기
다음과 같이 온도와 습도를 얻을 수 있었습니다.
참고한 기사
비슷한 구성을 Golang에서 구현하고 주변의 내용도 써 주시고 있습니다.
이번은 RS485의 USB 변환 장치를 사용했습니다만, 전에 GPIO 경유로 했을 때의 기사입니다. 실은 외형은 함께입니다만 별도의 온습도 센서를 사용하고 있습니다.
Reference
이 문제에 관하여(PyModbus를 사용하여 USB-RS485 변환 어댑터를 통해 Modbus 호환 온습도 센서의 값을 얻습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yomon8/items/9da430bb5915f4683684
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ dmesg | tail -n 5
[ 7533.026509] usb 1-1.3: Product: CP2104 USB to UART Bridge Controller
[ 7533.026524] usb 1-1.3: Manufacturer: Silicon Labs
[ 7533.026538] usb 1-1.3: SerialNumber: 00868CDA
[ 7533.032198] cp210x 1-1.3:1.0: cp210x converter detected
[ 7533.042672] usb 1-1.3: cp210x converter now attached to ttyUSB0
$ ls /dev/ttyUSB0
/dev/ttyUSB0
PyModbus를 사용하면 다음과 같이 쉽게 온도와 습도를 얻을 수 있습니다.
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)
temperature = res.registers[0]/10
print(f"Temperatur:\t{temperature} ℃")
humidity = res.registers[1]/10
print(f"Humidity:\t{humidity} %")
client.close()
이하 조금 설명합니다.
port에는 USB를 꽂을 때 Linux에서 인식되는 장치를 지정합니다. baudrate는 위의 스펙의 표에 있는 대로 조정 가능합니다만, 디폴트에서는 9600이므로 그것을 지정합니다.
ModbusSerialClient(baudrate=9600, port="/dev/ttyUSB0", method="rtu")
여기서 Socket 통신이 열립니다.
if client.connect():
예를 들면 다음과 같이 connect한 후,
client.socket
에 대해서 Modbus의 명령을 직접 던지는 것도 가능합니다.실행해보기
다음과 같이 온도와 습도를 얻을 수 있었습니다.
참고한 기사
비슷한 구성을 Golang에서 구현하고 주변의 내용도 써 주시고 있습니다.
이번은 RS485의 USB 변환 장치를 사용했습니다만, 전에 GPIO 경유로 했을 때의 기사입니다. 실은 외형은 함께입니다만 별도의 온습도 센서를 사용하고 있습니다.
Reference
이 문제에 관하여(PyModbus를 사용하여 USB-RS485 변환 어댑터를 통해 Modbus 호환 온습도 센서의 값을 얻습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yomon8/items/9da430bb5915f4683684
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
비슷한 구성을 Golang에서 구현하고 주변의 내용도 써 주시고 있습니다.
이번은 RS485의 USB 변환 장치를 사용했습니다만, 전에 GPIO 경유로 했을 때의 기사입니다. 실은 외형은 함께입니다만 별도의 온습도 센서를 사용하고 있습니다.
Reference
이 문제에 관하여(PyModbus를 사용하여 USB-RS485 변환 어댑터를 통해 Modbus 호환 온습도 센서의 값을 얻습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yomon8/items/9da430bb5915f4683684텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)