https://youtube.com/live/IpFHWsyb-BE
[아두이노#564] ESP32에 연결된 전자종이를 TCP/IP로 C#윈폼을 이용해서 원격제어해보기!(E-PAPER#2)
녹칸다의 E-PAPER 시리즈이다!
사용할 E-paper의 모델명은 아래와 같다!
MH-ET LIVE 2.9" E-Paper Module
아두이노월드에서 화면은 LCD에 출력한다!
LCD는 전원이 연결되어있어야하고 전원이 분리되면 화면에 있던 내용은 사라지게 된다!(당연한 것!)
그러나 아주 신기한 LCD가 있다!
바로 E-Paper이다!
E-Paper는 LCD에 뭔가 출력을 한다음 전원을 분리해도 화면이 그대로 남아있게 된다!(잔상형태로 남아있음)
그럼 아두이노에서 전자종이(e-paper)에 화면을 수정한다음 분리해도 그 LCD는 그대로 쓸 수 있게 되는 것이다!
일단 e-paper의 사용상 이득은 "저전력"구동이라고 볼 수 있다!
전원을 분리해도 쓸수있다고 하더라도, 화면에 있는 내용을 바꾸기 위해서는 아두이노와 같은 MCU가 연결은 되어있어야한다!
그렇다면 MCU는 "필요할때만 켜져서" 전자종이의 내용을 바꾸고 "필요하지 않을때는 저전력"으로 동작해야한다!
아두이노 월드에서 그러한 동작을 딥슬립(deepsleep)이라고 한다!
적절한 MCU보드를 선정해야하는데 아두이노 우노에서 구동은 가능하지만 내장 메모리가 너무 작아서 사용상의 어려움이 있다!
그래서 ESP32보드를 아두이노 IDE개발환경으로 활용하도록 한다!
ESP32보드에 전자종이(e-paper)를 연결하고 작동시키는 것이다!
EPS32보드는 딥슬립(deepsleep)모드도 지원을 하니 목표와 딱 맞을 것 같다!
이번 전자종이 시리즈는 아래와 같은 4가지 단계를 순서대로 진행해보도록 한다!
1.ESP32에 E-paper를 연결해서 화면을 업데이트 하는 방법!
2.PC에서 ESP32에 TCP로 연결해서 화면을 원격으로 업데이트 하는 방법!
3.ESP32에서 HTTP로 웹서버에 접속해서 자동으로 업데이트 하는 방법!
4.ESP32가 저전력 모드로 동작하면서 자동으로 업데이트 하는 방법!
이번편에서는 ESP32보드에 전자종이(E-paper)를 연결하고 WiFi에 접속시키도록 한다!
그리고 C#윈폼으로 TCP/IP로 접속해서 원격으로 전자종이의 내용을 수정하는 내용을 주제로 한다!
이때 ESP32가 TCP서버로 동작하고 C#윈폼이 TCP클라이언트로 동작할때 구현이 쉽다!
이러한 예시는 녹칸다의 TCP/UDP시리즈에서 다뤘던적이 있으므로 연결에 필요한 내용은 참고하면된다!(그러나 새로 구현할 예정이다)
(해당되는 편의 링크)
https://bota.tistory.com/1723
C#윈폼에서 이미지를 선택하면 mono bitmap으로 변환한다음 byte stream으로 ESP32에 전송해서 이미지를 출력하는 것이다!
그리고 PC와 USB로 연결된 상황이 아니기 때문에 1:N으로 통신이 가능하다!
C#윈폼에서 내용 수정이 필요한 ESP32에 접속해서 내용을 업데이트하는 것이다!
아래와 같은 목차로 진행해보도록 한다!
1.ESP32와 C#윈폼이 TCP로 통신하는 방법 알아보기!
2.C#윈폼에 메모리에 mono bitmap이 있고 이것을 ESP32로 전송해서 E-paper에 출력해보기!
3.C#윈폼에서 이미지를 입력받아서 mono bitmap으로 변환한다음 E-paper 내용 수정해보기!
4.ESP32보드 2대에 각각 E-paper를 연결해서 선택적으로 내용을 수정해보기!
(라이브방송에서 구현한 예제)
(참고자료)
1.ESP32에 고정IP할당하는 방법(https://bota.tistory.com/1834)
IPAddress ip (192, 168, 0, 15); //내가 원하는 IP
IPAddress gateway (192, 168, 0, 1);
IPAddress subnet (255, 255, 255, 0);
WiFi.config (ip, gateway, subnet); //내가 원하는 설정 반영
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
(예제)
1.ESP32와 C#윈폼간 TCP통신으로 메시지를 전송하는 예시를 구현하시오!
-ESP32보드를 TCP서버로 설정한다!
-C#윈폼을 TCP클라이언트로 설정한다!
-C#윈폼에 ESP32에 IP주소를 입력하고 접속을 하게된다!
-ESP32는 인터넷공유기로부터 동적으로 IP주소를 발급받게된다!(언제든지 바뀔수있음)
-ESP32가 서버형태라면 고정IP를 받을 수 있도록 하는게 옳바르다!
-현재 ESP32의 TCP주소 : 192.168.0.60:60000
-통신은 클라이언트에서 서버쪽으로 데이터를 전송하는 단방향통신만한다!
2.C#윈폼에서 메모리에 올라가있는 mono bitmap을 TCP통신으로 ESP32로 전송해서 E-paper에 출력하시오!
3.예제2에서는 mono bitmap이 C#윈폼의 전역변수로 존재했는데, C#에서 이미지를 입력받아서 자체적으로 변환해서 바로 전송할 수 있도록 하시오!
4.ESP32+E-paper조합을 한세트 더 구성해서 C#윈폼에서 개별적으로, 혹은 일괄적으로 이미지를 수정할 수 있도록 하시오!
5.C#에서 검정색이미지와 컬러이미지를 사용자가 마우스로 그림을 그릴수있도록 하고 그려진 그림을 2대의 E-paper에 동시에 출력하는 예시를 보이시오!(시간이 남아서 만들어본 보너스예제)
(아두이노 코드는 4편과 같음)
(565편에서 이어질내용)
1.ESP32보드를 웹클라이언트로 설정하고 C#윈폼을 웹서버로 설정한다!
2.ESP32가 HTTP프로토콜로 C#윈폼에 접속한다!
3.C#윈폼에서 언제 어느 타이밍에 ESP32가 접속할지 모르기때문에 업데이트가 필요하다면 이미지를 등록해둔다!
4.ESP32는 웹서버에 접속한다음 자기자신에게 등록된 이미지가 있다면 다운로드받는다!
5.다운로드받은 mono bitmap을 E-paper에 출력한다!