Hardware/ESP

ESP32와 컴퓨터 사이에 UDP 통신 하기

초인로크 2022. 9. 2. 18:06
반응형

 

일단 라이브러리는  espressif에서 제공되는 [AsyncUDP]가 있어서 이걸 사용하면 된다.

 

https://github.com/espressif/arduino-esp32/blob/master/libraries/AsyncUDP/examples/AsyncUDPServer/AsyncUDPServer.ino

 

GitHub - espressif/arduino-esp32: Arduino core for the ESP32

Arduino core for the ESP32. Contribute to espressif/arduino-esp32 development by creating an account on GitHub.

github.com

 

 

단지 내가 하고 싶었던 것은 서버 컴퓨터가 한대 있고,

 

첫 번째 ESP에서 데이터를 수집해서 서버로 보내면,

 

그 결과를 분석해서 두 번째 ESP로 정보를 보내는 것을 하고 싶었는데 어떻게 할까 고민을 많이 했었다.

 

 

 

 

따라서 위의 참고 소스에 나와있는

 

전체 시스템의 포트번호를 통일시키고,

 

udp.listen(1234)을 이용하여서 정보를 수신하는,

 

그냥 UDP 브로드캐스팅으로 전체 통신을 해 버리는 게 제일 간단하네.

 

(브로드캐스팅 참고:https://ko.wikipedia.org/wiki/%EB%B8%8C%EB%A1%9C%EB%93%9C%EC%BA%90%EC%8A%A4%ED%8C%85_%28%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%82%B9%29)

 

브로드캐스팅 (네트워킹) - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 브로드캐스팅(broadcasting)은 송신 호스트가 전송한 데이터가 네트워크에 연결된 모든 호스트에 전송되는 방식을 의미한다. 컴퓨터 네트워킹, 정보 통신 및 방송

ko.wikipedia.org

 

각각의 모듈에서 받은 정보가 중요한지 무시해야 할 것인지 판단하는 것이 제일 좋네.

 

 

 

udp.onPacket 부분에서

 

적절히 수신된 메시지를 시리얼 모니터에 표시해 준다.

 

 

 

그리고 메시지를 보낼 때는

 

udp.broadcast를 사용하여 전체적으로 보내준다.

 

예를 들면 [udp.broadcast("Anyone here?");] 를 이용하면

 

Anyone here?라는 라는 문장을 브로드캐스팅 (같은 AP에 접속된 디바이스 전체에 전송)으로 송신이 된다.

 

 

 

며칠 동안 고민하다가 보니까 이제 라이브러리가 어떻게 굴러가는지 대충 알겠네..

 

 

아래가 예제를 사용한 시스템이다.

 

 

 

위의 espressif ESP32의 버튼을 누르면 신호가 서버 PC로 전송된다.

 

이 ESP32 보드는 컴퓨터에 USB로는 연결되어 있지 않다.

 

 

서버에서는 버튼 신호를 인식하여 UDP 브로드캐스팅 통신을 통해 신호가 Wemos D1 R32로 전달 되게 된다.

 

서버에서의 버튼 신호를 받으면 보드에 있는 붉은색 LED가 점등되게 된다.

 

 

시스템은 간단한데 이것저것 공부할게 많다.

 

 

 

 

반응형