[아두이노#349] (tcp/udp #2) IoT보드를 TCP클라이언트로 C#윈폼을 TCP서버로 제어하기!(녹칸다/포로리야공대가자)
프로그래밍/TCP&UDP 2021. 9. 14. 23:28
(tcp/udp #2) IoT보드를 TCP클라이언트로 C#윈폼을 TCP서버로 제어하기!
녹칸다의 TCP, UDP통신을 위한 시리즈이다!
주요 내용은 인터넷에 접속가능한 사물인터넷보드(wemos d1r1)에서 생산된 정보나 제어를 하기 위해서 TCP, UDP통신을 사용해보는 것이다!
기존 녹칸다의 예제에서는 HTTP통신이나 MQTT를 주요내용으로 하였으나 상황에 따라서 TCP, UDP통신을 활용해야 할 때도 있다!
무엇을 사용하는게 옳냐기 보다는 상황에 따라 적절한 방식을 적용할 필요가 있다!(사실 녹칸다도 잘 모르는 분야임)
인터넷 통신은 기본적으로 서버와 클라이언트간의 통신이다!
이때 TCP통신은 서버와 클라이언트의 연결을 담보로 하고 진행되는 통신이고 UDP는 네트워크 안에 있는 디바이스들 끼리 수신자와 발신자의 정보를 이용해서 연결하지 않고 주고받는 방식이다!
그러므로 TCP통신은 서버와 클라이언트가 구체적인 반면 UDP는 서버와 클라이언트의 경계가 모호하다!
아무튼 기본 설명은 이정도로만 달아놓고 자세한 내용은 영상으로 남겨보도록 하자!
이번편에서는 사물인터넷보드(wemos d1r1)를 TCP클라이언트로 설정하고 C#윈폼을 TCP서버로 설정한다!
그리고 아래와 같은 순서로 진행해보도록 하자!
1.토대가 되는 기본예제를 활용해서 서버와 클라이언트를 구현하고 메시지를 주고받는 예제를 만들어보자!(단방향/양방향)
2.사물인터넷보드에 LED가 1개 연결되었을때 어떻게 제어를 할 수 있을지 알아보자!
3.사물인터넷보드에 LED가 4개 연결되었을때 어떻게 제어를 할 수 있을지 알아보자!
4.사물인터넷보드에 버튼이 2개 연결되었을때 버튼이 눌려진 상황을 TCP통신으로 전송해보자!
5.사물인터넷보드에 간단한 광센서를 연결하고 TCP통신으로 전송해보자!
6.사물인터넷보드에 온습도센서(DHT-11)을 연결하고 TCP통신으로 전송해보자!
(여기에서는 사물인터넷보드가 갑자기 오프라인이 되었을때 서버에서 감지할 수 있는 방법에 대한 내용이 들어가야함)
(추가) 데이터를 고속으로 전송할 수 있는 전략에 수립!
wemos d1r1의 TCP클라이언트는 아래 예제를 기본으로 함!
예제 / ESP8266WiFi / WiFiClientBasic
C#윈폼의 TCP서버는 아래 예제를 기본으로 함!
https://docs.microsoft.com/ko-kr/dotnet/api/system.net.sockets.tcplistener?view=net-5.0
1.사물인터넷보드를 TCP클라이언트로, C#윈폼을 TCP서버로 동작하기 위한 기본 예제이면서 양방향 메시지를 수신하는 예제!
2.IoT보드에 LED 4개를 연결해서 서버에서 보낸 명령에 따라 개별적으로 제어되고 LED의 상태를 클라이언트에서 서버쪽으로 TCP로 전송해보는 예제!
3.IoT보드에 온습도센서(DHT-11)를 연결해서 서버로 전송하는 예제!
4.IoT보드에 가변저항을 연결하고 측정한 아날로그값을 10ms간격으로 서버로 전송한다음 그래프로 결과를 출력하는 예제!
(사물인터넷보드/wemos d1r1용 코드)
(▼보드만 있으면 됨!)
(C#프로젝트/TCP리스너)