[아두이노#355] (tcp/udp #8) IoT보드를 제어할 수 있는 TCP클라이언트를 C#으로 구현해서 제어해보기!(녹칸다/포로리야공대가자)
프로그래밍/TCP&UDP 2021. 9. 30. 23:35
(tcp/udp #8) IoT보드를 제어할 수 있는 TCP클라이언트를 C#으로 구현해서 제어해보기!
녹칸다의 TCP, UDP통신을 위한 시리즈이다!
이번편은 직전강의에 구현한 노드레드(node-red)를 이용한 다중접속이 가능한 TCP서버를 이용해서 사물인터넷보드(wemos d1r1)을 관리하고 별도로 GUI환경에서 컨트롤 가능한 C#윈폼 TCP클라이언트를 구현해서 양방향 통신을 하는 것을 목표로 한다!
7편에서 노드레드(node-red)에서 사물인터넷보드(wemos d1r1)를 직접 컨트롤 했는데 개념상 좋지 않다!
서버는 안정된 서버로서의 역할만 충실하고 제어는 클라이언트들 끼리 하는게 더 좋다고 생각한다!
그래서 윈도우환경에서 시각프로그램을 구현할 수 있는 C#을 이용해서 TCP클라이언트를 구현한다음 사물인터넷보드에 달린 목적물을 제어하거나, 센서값을 가져와서 출력하는 형태로 진행한다!
아래와 같은 순서로 진행해보도록 하자!
1.어떻게 하면 C#윈폼으로 구현한 TCP클라이언트가 노드레드 서버에 접속되겠는가?(이미 구현되어있음)
2.노드레드(node-red) TCP서버에서 A클라이언트의 메시지를 B클라이언트에게 연결해줘야 하는 상황일때 어떻게 하면 가능하겠는가?(메시지 송수신)
3.사물인터넷보드(wemos d1r1) 3대에 각각 LED 4개가 달려있을때 C#TCP클라이언트에서 개별적으로 제어할 수 있도록 하려면 어떻게 하겠는가?
4.사물인터넷보드(wemos d1r1) 3대에 각각 광센서가 연결되어 있을때 어떻게 하면 C#TCP클라이언트에 데이터를 효과적으로 수집할 수 있을까?
5.사물인터넷보드(wemos d1r1) 3대에 각각 온습도센서(DHT11), 이산화탄소센서(MHZ19B), 미세먼지센서(PMS7003)이 연결되어 있을때 어떻게 하면 C#TCP클라이언트에게 데이터를 전송할 수있을까?
(이번편의 핵심은 서버는 중간다리 역할만하고 클라이언트간의 제어이다)
C#클라이언트샘플(#348-1)
관련라이브러리(DHT11/1.3.8)
https://github.com/adafruit/DHT-sensor-library
관련라이브러리(MHZ19B/1.1.1)
https://github.com/strange-v/MHZ19
관련라이브러리(PMS7003/1.1.0)
https://github.com/fu-hsi/pms
1.사물인터넷보드를 TCP클라이언트로 구현하고, C#윈폼 앱을 TCP클라이언트로 구성해서 서로간 메시지를 주고받는 예제!
(▼노드레드/node-red)
(▼사물인터넷보드/wemos d1r1)
(▼C#윈폼TCP클라이언트)
2.사물인터넷보드 3대와 C#클라이언트 3대를 준비해서 지정된 클라이언트들 끼리 통신을 할 수 있도록 하시오!
(▼노드레드/node-red)
(▼사물인터넷보드/wemos d1r1)
(▼C#윈폼TCP클라이언트)
3.사물인터넷보드 각각에 LED를 4개씩 연결하고 C#클라이언트에서 개별적으로 제어할 수 있도록 하시오!
(▼노드레드/node-red)
(▼사물인터넷보드/wemos d1r1)
(▼C#윈폼TCP클라이언트)
4.사물인터넷보드 3대에 각각 온습도센서(dht11),이산화탄소센서(mhz19b), 미세먼지센서(pms7003)을 연결하고 센서값을 C#클라이언트로 몽땅 전송해서 한화면에 출력하시오!
(▼노드레드)
(▼C#윈폼TCP클라이언트)