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