[아두이노#364] (tcp/udp #17) 노드레드(node-red) TCP서버에 ESP8266 CAN통신(MCP2515) 마스터를 연결해보자!(녹칸다/포로리야공대가자)
프로그래밍/TCP&UDP 2021. 10. 19. 23:52
(tcp/udp #17) 노드레드(node-red) TCP서버에 ESP8266 CAN통신(MCP2515) 마스터를 연결해보자!
녹칸다의 TCP, UDP통신을 위한 시리즈이다!
이번편은 14편에서 구현한 노드레드(node-red)서버에 사물인터넷보드(wemos d1r1)로 구현한 CAN통신(MCP2515) 마스터를 연결하는 것을 목표로 한다!
녹칸다의 노드레드(node-red) TCP 서버에서 클라이언트들 간의 메시지를 전달하는데 캔통신 마스터는 CAN프레임을 송수신 하도록 한다!
캔통신 마스터는 프레임을 수신하면 자신에게 달려있는 슬레이브에게 request하고 슬레이브가 response한 프레임을 TCP통신으로 요청한 클라이언트에게 응답한다!
아래와 같은 수순으로 데이터가 흘러갈듯 하다!
(A클라이언트) - (서버) - (캔통신마스터) - (캔통신슬레이브) - (캔통신마스터) - (서버) - (A클라이언트)
캔통신마스터도 모드버스 마스터와 마찬가지로 송수신 하는 데이터를 문자열로 변환해서 송수신 하도록 한다!
아래와 같은 순서로 진행해보도록 하자!
1.캔통신으로 text 데이터를 송수신 하기 위한 기본 형태를 구현해보자!(1:1)
2.캔통신으로 text 데이터를 송수신 하기 위한 기본 형태를 구현해보자!(1:2)
3.슬레이브에 LED를 1개씩 연결하고 원격제어 할 수 있도록 해보자!
(서버에서 직접제어, 클라이언트가 간접제어)
4.슬레이브에 LED를 4개씩 연결하고 원격제어 할 수 있도록 해보자!
(서버에서 직접제어, 클라이언트가 간접제어)
5.캔통신 슬레이브에 가상의 온습도 센서가 달려있다고 할때 센서값을 다른 클라이언트로 TCP로 넘기시오!
(서버에서 출력하기, 다른 IoT보드에서 출력)
(녹칸다의 1:N CAN통신/125편)
https://bota.tistory.com/1356
CAN통신라이브러리(MCP2515)
https://github.com/autowp/arduino-mcp2515
(예제순서)
1.디바이스1에서 디바이스2에게 캔통신패킷을 요청하면 디바이스2는 캔슬레이브에게 request를 하고 response를 받아서 다시 디바이스1에게 응답하는 예제!
2.캔슬레이브가 2개일때 (1)예제가 돌아가도록 하시오!
3.캔슬레이브에 LED를 1개씩 연결하고 디바이스1에서 시리얼입력으로 제어할 수 있도록 하시오!
4.(3)예제에서 디바이스1에 버튼2개를 연결해서 버튼을 눌렀을때 슬레이브에 달린 LED가 제어 될 수 있도록 하시오!
5.캔 슬레이브에 릴레이와 모스펫을 연결해서 DC모터를 제어하시오!(4)예제와 코드 같음!