반응형

https://youtube.com/live/hPRp5ZCPIBM

[아두이노#556] ESP32를 MQTT프로토콜을 이용해서 C#윈폼, node-red, app-inventor로 제어해보기!(녹칸다ESP32#6)

녹칸다의 ESP32시리즈이다!
제목 그대로 과거의 녹칸다는 IoT보드로 ESP8266보드만 활용했다!
ESP32에 대한 수요도 늘어나는것 같고 제일 중요한 것은 지금의 녹칸다가 ESP32보드가 필요하게 되었다!
ESP8266으로 만들어진 예제들을 ESP32버전으로 바꾸는게 주요 주제라고 할 수 있다!
그와 동시에 약간의 설명도 첨가해서 이것저것 예제를 만들어보도록 하자!
(ESP8266과 ESP32의 차이점을 강조해서 진행해보도록함!)
(근데 거의 80~90%는 거기서 거기인듯!)

이번편은 555편에 이어서 ESP32에 MQTT프로토콜을 적용해서 제어해보도록 한다!
555편에서는 ESP32를 제어할 수 있을만한 컨트롤러를 구현하는 개념이 없어서 스마트폰으로 제어하는 것을 목표로 했다!
앱스토어에서 누군가가 만들어둔 MQTT앱으로 시연을 한 것이다!

이번편에서는 누군가가 만든게 아니라 내가 직접 ESP32를 컨트롤 할 수 있는 MQTT 클라이언트를 구현해서 제어해보도록 한다!
아래와 같은 순서로 접근해보도록 하자!
1.C#윈폼으로 만든 윈도우 앱으로 ESP32 제어해보기!
2.노드레드(node-red) IoT 플렛폼으로 ESP32 제어해보기!
3.앱인벤터(App-inventor)로 ESP32 제어해보기!

 

(참고자료1 ESP32핀맵)
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/hw-reference/esp32/user-guide-devkitm-1.html
(참고자료2 INPUT_PULLUP가능핀)
불가능 34,35,2,36,39
가능 32, 33,25,26,14,27,12,13,22,23,19,21,5,18,16,17,4,15
(참고자료3 ESP32의 I2C핀)
SDA : 21
SCL : 22
(참고자료4 ESP32의 SPI핀)
SCK : 18
MOSI : 23
MISO : 19
CS : 5
(참고자료5 ESP32의 Serial핀)
RX : 16
TX : 17

(참고자료6 C#윈폼에서 MQTT로 ESP8266제어하기#104)
https://bota.tistory.com/1527
(참고자료7 노드레드(node-red)에서 MQTT로 ESP8266제어하기#280)
https://bota.tistory.com/1636
(참고자료8 앱인벤터(app-inventor)에서 MQTT로 ESP8266제어하기#311)
https://bota.tistory.com/1673
(참고자료9 윈도우에 노드레드 설치하기)
https://youtu.be/pvLeW7UkAAs
(참고자료10 앱인벤터 MQTT 익스텐션)
https://ullisroboterseite.de/android-AI2-PahoMQTT-en.html

(참고자료11 C#에서 MQTT활용하는방법)

C#에서 MQTT사용하는 기본코드.txt
0.00MB

 

(깨알지식)
1.녹칸다는 visual studio 2019버전이 설치되어있다. 그러나 지금 최신 버전은 2022버전이다! 2022버전과 2019버전의 사용상의 차이는 크게 없으나 가급적이면 2019버전인게 녹칸다와 동일한 환경이라고 볼 수 있다!
2.C#윈폼으로 앱을 구현할때 개발환경에서 MQTT를 기본적으로 지원하지는 않으므로 ESP32에 라이브러리를 설치해서 사용하는것처럼 C#에도 뭔가를 설치해야 그것이 가능핟!(M2MQTT)
3.녹칸다가 지금 C#윈폼으로 보여주는 예시는 메인폼이 실행될때 서버와 연결되고 종료될때 서버와 연결이 끊어지는 방식이다! 불행하게도 프로그램이 작동되는 중에 서버와 연결이 임시로 끊어진 상태라면 재접속하는 절차를 내부에 넣어야한다!(재접속하는 것은 고려하지 않음)
4.MQTT에서 subscribe를 할때는 MQTT브로커와 접속이 완료된다음 해야하고 접속이 끊어졌다면 다시 해당 topic으로 subscribe를 해야한다!
5.노드레드를 윈도우에서 설치해서 사용할 수 있다!
6.노드레드는 웹브라우저에서 코딩을 하고 블록코딩방식으로 한다!
7.노드레드의 작업페이지는 http://127.0.0.1:1880으로 접속한다!
8.node-red는 아무것도 설치하지 않아도 mqtt가 기본적으로 사용가능함으로 되어있다!
9.노드레드에서 블럭과 블럭사이에 주고받는 object는 msg이고 msg.payload를 기본적을 주고받는다!
10.노드레드에 UI에 값을 출력하기 위해서는 dashboard를 설치해야한다!
11.노드레드의 UI페이지는 http://127.0.0.1:1880/ui로 접속한다!
12.앱인벤터는 안드로이드 스마트폰에 앱을 블록코딩으로 간단히 만들 수 있는 무료 툴이다!
13.앱인벤터는 구글 아이디만 있으면 바로 등록해서 공짜로 쓸 수 있다!
14.C#윈폼을 대략 할 수있으면 앱인벤터에 접근하기가 대단히 용이하다!
15.앱인벤터도 MQTT가 가능하도록 하려면 누군가가 만들어놓은 것을 적용해야하는데 앱인벤터에서는 그것을 익스텐션을 추가한다라고 표현한다!
16.앱인벤터는 배열에 인덱스로 접근할때 1부터 출발한다!
17.앱인벤터에서 ai컴패니언으로 작업하는 것은 실시간으로 앱이 어떻게 구현되는지 확인하기 위한 용도이고 최종적으로 앱을 만들때는 빌드를 하게 되면 apk파일이 생성되고 이것은 스마트폰에 설치해서 사용할수있는 앱이 되는것이다!


(예제)
1.ESP32에서 MQTT로 전송하는 메시지를 C#윈폼 화면에 출력하고, C#윈폼에서 MQTT로 전송하는 메시지를 ESP32의 시리얼모니터에서 출력가능하도록 하시오!

556-1(기본적인송수신확인).txt
0.00MB
example556_1.zip
1.17MB

2.ESP32에 LED를 15번핀과 2번핀에 하나씩 연결하고 C#윈폼에서 전송하는 명령에 의해서 ON/OFF되도록 하시오!
  10 : LED 1번을 OFF
  11 : LED 1번을 ON
  20 : LED 2번을 OFF
  21 : LED 2번을 ON

556-2(LED제어해보기).txt
0.00MB
example556_2.zip
1.18MB

3.ESP32보드 2대를 준비해서 각각 15번핀과 2번핀에 LED를 1개씩 연결하고 C#윈폼에서 개별적으로 LED를 제어할 수 있도록 하시오!

556-3(보드3개동시제어하기).txt
0.00MB
example556_3.zip
1.18MB

4.(예제2번에서)ESP32보드에 4번핀에 온습도센서(DHT-11)을 연결하고 측정값을 MQTT로 C#윈폼으로 전송해서 화면에 출력하시오!(CSV포멧)

556-4(온습도센서값전송하기).txt
0.00MB
example556_4.zip
1.18MB

5.(예제4번에서)ESP32에 달려있는 LED 2개가 켜져있는지 꺼져있는지를 C#에서 알 수 있도록하고 수신한 온습도값을 gauge를 이용해서 출력하시오!

556-5(온습도센서값과버튼상태전송하기).txt
0.00MB
example556_5.zip
1.23MB

6.(예제4에서) ESP32에 업로드되어있는 코드를 그대로 노드레드(node-red)에서 활용하시오!(ESP32 코드는 4번과 같음)

556-6(노드레드코드).txt
0.01MB

7.(예제4에서) ESP32에 업로드되어있는 코드를 그대로 앱인벤터(app-inventor)에서 활용하시오!(ESP32 코드는 4번과 같음)

example556_7.aia
0.31MB

 

반응형
Posted by 덕력킹
,