[아두이노#605] ESP32에 흐름제어가 자동으로되는 RS485모듈로 간단하게 modbus rtu프로토콜 구현해보기!(녹칸다의 아두이노 시즌2)
프로그래밍/RS485모드버스(modbus) 2024. 7. 9. 23:06
https://youtube.com/live/SG_-lBWcJDk
[아두이노#605] ESP32에 흐름제어가 자동으로되는 RS485모듈로 간단하게 modbus rtu프로토콜 구현해보기!(녹칸다의 아두이노 시즌2)
녹칸다의 아두이노 시즌2 시리즈이다!
이번편에서는 ESP32보드에 RS485모듈이 잘 작동하는지 확인하고 604편에서 구현해놓은 modbus rtu 예제를 그대로 작동시켜보도록 한다!
개발환경을 왔다갔다하면 시간이 오래걸리니 ESP32보드들끼리 RS485통신을 하는 것으로 해보자!
(보드다운로드주소)
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
(개발환경설정하기)
1.아두이노 IDE의 환경설정에 보드다운로드주소를 추가한다!
2.보드매니저로 가서 ESP32검색후 설치한다!(3.0.2버전)
3.툴-보드-ESP32-ESP32 Dev Module 선택한다!
4.ESP32를 USB로 컴퓨터에 연결하고 포트번호를 지정한다!
(필요한 라이브러리)
pubsubclient
CRC
(주의사항)
1.녹칸다가 설치하라고 했던 3.0.2버전은 Serial2포트가 ESP32보드의 것과 다르게 지정되어있다!
2.그래서 아래 코드를 이용해서 16번핀과 17번핀을 Serial2핀으로 지정해야 통신이 가능하더라!
Serial2.begin(9600, SERIAL_8N1, 16, 17);
(연결하기)
ESP32 - RS485모듈
3V3 - VCC
GND - GND
RX2 - RXD
TX2 - TXD
(예제목차)
1.마스터ESP32에서 슬레이브에게 1초간격으로 문자열을 전송하는 예시를 보이시오!
2.녹칸다의 아두이노 604편에서 아두이노 우노로 했던 write single coil예제를 esp32버전으로 바꾸시오!(LED 2개는 22번 23번에 연결함!)
3.녹칸다가 시리얼모니터에서 0에서3까지 숫자를 입력할 수 있을때 0이면 코일0번 OFF, 1이면 코일0번 ON, 2면 코일1번OFF, 3이면 코일1번 ON이 되도록 하시오!
4.마스터는 그대로 유지하고 슬레이브자리에 modbus rtu로 제어되는 4채널 릴레이를 연결해서 제어해보시오! 컴퓨터와 ESP32간의 제어명령은 예제3과 동일하게 0~7까지의 숫자를 활용하시오!(단 4채널릴레이의 국번은 1번임)
5.예제3에서 슬레이브를 국번2번으로 바꾸고 4채널릴레이와 동시에 제어되도록 하시오!(0~7은 4채널릴레이, A~D까지는 ESP32용으로 활용하기)
-4채널릴레이는 국번이 1번인상태
-ESP32는 국번이 2번인상태
6.ESP32를 WiFi에 연결하고 MQTT프로토콜을 이용해서 슬레이브에 달려있는 LED를 제어하시오!
-ESP32는 국번이 2번인상태
7.예제6번에서 스마트폰의 MQTT앱으로 제어하는게 아니라 노드레드(node-red)에서 제어하는 예시를 보이시오!
-ESP32쪽 코드는 예제 6과 동일함
8.modbus rtu로 측정되는 온습도센서에서 값을 read input register로 읽어오시오!
9.예제8에서 읽어온 온도와습도값을 MQTT프로토콜을 이용해서 스마트폰으로 전송하시오!