[아두이노#476] (ESPNOW#6) ESP8266보드 1:N으로 양방향 통신하는 방법!(축소된 메시네트워크)(녹칸다/포로리야공대가자)
프로그래밍/ESPNOW 2022. 5. 5. 22:31
(ESPNOW#6) ESP8266보드 1:N으로 양방향 통신하는 방법!(축소된 메시네트워크)
녹칸다의 ESPNOW 시리즈이다!
ESP보드는 제조사에서 제공하는 보드끼리 통신하는 프로토콜이 있다!
그것이 바로 ESPNOW이다!
ESP32나 ESP8266보드에 별도의 장치를 추가하지 않더라도 서로 통신이 가능하다!
1:1로 구성할수 있고 1:N으로 구성할수 있고 N:N으로 구성할 수 있고 단방향, 양방향 모두 가능한것 같다!
이번편은 간단하게 ESPNOW mesh network를 구성해보도록 한다!
ESP8266보드 6대를 이용하는 아주 고난이도의 예제이다!
보드를 순서대로 A,B,C,D,E,F라고 이름을 붙혀보자!
↗ⓑ→ⓓ↘
ⓐ × ⓕ
↘ⓒ→ⓔ↗
A는 B와C에게 전송한다!
B는 D와 E에게 전송한다!
C는 D와 E에게 전송한다!
D는 F에게 전송한다!
E는 F에게 전송한다!
각 노드를 피어로 등록하고 브로드캐스트로 메시지를 전송해서 A에서 F로 데이터를 전송해보도록 하자!
모든 노드에 LED를 1개씩 부착하고 메시지를 받았을때 1초간 LED가 켜졌다가 꺼지도록 해보자!
(그러면 데이터의 흐름이 시각화 될 것이다!)
다음으로 각노드가 메시지를 전송할때 등록된 피어에 순차적으로 메시지 전송을 시도해보고 전송에 성공하면 다른노드에게 보내는 것은 생략해보도록 하자!
(2개의 보드에 전송가능하도록 하는 것은 1개의 노드가 갑자기 통신불능이 되었을때 우회경로를 만들어 두는 것이다!)
(이미 특정한 보드에 메시지 전송이 이루어졌다는 것은 후보 노드에게 반드시 전송할 필요는 없을 것 같다)
이렇게 하면 전체 네트워크의 데이터 송수신 효율이 좋아 질 것이라 기대한다!
(해봐야 알 것 같다!)
이러한 방식을 구성했을때 데이터 흐름을 시각적으로 확인해보도록 하자!
(시간이 남으면 아무거나 만들어보기)
(실제로한거)
1.보드A,B,C가 있을때 A가 마스터가되고 B,C가 슬레이브관계에 있을때 request * response방식으로 ESPNOW로통신하고 그때 마스터가 슬레이브에게 Broadcasting하는 방식으로 작동시키시오!
2.유저가 시리얼모니터에 0이라고입력하면 1번슬레이브에게 request하고 1이라고 입력하면 2번슬레이브에게 request하시오!
3.마스터보드가 슬레이브 1과 슬레이브 2가 있는데 둘중 랜덤하게 하나를 골라서 메시지를 2초에 한번마다 전송하고 그때 응답을 받을 수 있도록 하시오!
4.마스터가 슬레이브1과 슬레이브2에게 메시지를 보낼때 슬레이브1에게 먼저 전송하고 전송에 성공했다면 끝내고, 실패하면 슬레이브 2에게 전송하시오!
5.ESP8266보드 6개를 이용해서 심플한 메시네트웍을 구성하고 Broadcasting방식으로 시작점에서 종료지점으로 메시지를 전달하시오!
6.출발점에서 목표점으로 데이터를 메시네트웍으로 전송하되 성공적은 경로 1개만 찾아서 전송하시오!
7.(6)예제에서 각 보드에 LED를 하나씩 달아서 성공적으로 메시지를 전송했을 경우에 1초간 켰다가 꺼지도록 하시오!