반응형

https://youtube.com/live/-eNtIwdP1P8

[아두이노#563] 전원이 분리되도 쓸 수 있는 전자종이(MH-ET LIVE 2.9" E-Paper)를 ESP32로 시작하기!(E-PAPER#1)

녹칸다의 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를 연결해서 작동을 시켜보는 튜토리얼편에 해당한다!

아래와 같은 목차로 내용을 진행해보도록 한다!
1.ESP32 개발환경 구성하기!
2.ESP32에 E-paper 연결하는 방법!
3.E-paper를 사용하기 위한 라이브러리 설치!
4.Text를 e-paper에 출력하는 방법!
5.이미지를 e-paper에 출력하는 방법!
6.전자종이에 업로드할 mono bitmap을 C#윈폼으로 생성하기!
7.PC와 ESP32를 USB로 연결하고 C#윈폼에서 만든 mono bitmap을 esp32로 전송해서 전자종이의 내용을 수정하기!

 

(라이브방송에서 만든 자료)

 

(참고자료)
1.녹칸다가 사용하는 E-paper 모델명 : MH-ET LIVE 2.9" E-Paper Module(3-컬러 모듈)
2.화면의 해상도 : 296*128(w*h)
  -하얀색 : 표시가 안되는 부분!
  -블랙, 컬러(layer로 구성이 되어있다)
3.필요한 라이브러리 이름 : GxEPD2
4.녹칸다가 사용하는 ESP32모듈의 정식이름 : ESP32 DEV V1
5.라이브러리에 딸린 기본예제를 구동하려니 내가 구입한 E-paper의 define부분을 찾아야하는데 도저히 알수가없다!
6.E-paper라이브러리에 제일 첫번째 컴파일은 시간이 오래걸린다!

(시작하기)
1.아두이노 IDE에 ESP32 개발환경을 구성한다!
   -아두이노 IDE의 환경설정은 연다!(파일-환경설정)
   -추가적인 보드 URLS에 아래 내용을 그대로 입력한다!
   -https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
   -툴-보드-보드 매니저로 이동한다음 ESP32를 검색한다!
   -툴-보드-ESP32-ESP32 DEV module을 선택한다!
   -구입한 보드에 따라서 추가적으로 CH340드라이버를 설치해야할 수 도 있다!
2.아두이노에 E-paper라이브러리를 설치한다!
   -스케치-라이브러리 포함하기-라이브러리 관리로 들어가서 라이브러리 매니저를 열어준다!
   -녹칸다는 현재 1.5.1버전이 설치되어있다!
3.ESP32와 E-paper를 연결해야한다!
   -ESP32와 E-paper은 SPI통신으로 연결된다!
   -해당되는 핀번호에 ESP32핀을 연결한다!
   -Busy : D4
   -Reset : D16(RX2)
   -D/C : D17(TX2)
   -CS : D5
   -SCLK : D18
   -SDI : D23
   -GND : GND
   -VCC : 3V3
4.E-paper가 정상적으로 작동되는지 아닌지 확인하는 기본예제가 무엇인가?

 

(예제)


1.E-paper에 text출력하시오!
  -한글은 안되고 영어랑 숫자밖에 출력이 안된다!
  -한글이나 이미지를 출력하려면 어떤전력을 써야겠는가?
  -한글은 안되고 영어만 된다면 한글폰트를 직접 만들어서 드로잉할 수 있지만 내가 출력하려는 한글 자체를 이미지로 만들어서 출력할 수 도 있다!

563-1(E-paper-text-upload).txt
0.00MB

2.E-paper에 이미지를 업로드하시오!
  -녹칸다가 블로그에 업로드할 nockanda.h파일을 아래 경로에 복붙한다!
  -C:\Users\<사용자계정>\Documents\Arduino\libraries\GxEPD2\src\bitmaps

<mono bitmap sample>

nockanda.h
0.15MB

<arduino code>

563-2(E-paper-img-upload).txt
0.00MB

3.E-paper에 내가 원하는 이미지를 업로드하시오!
  -nockanda.h는 녹칸다가 이미지를 mono bitmap으로 생성해서 제공을 해주었는데 내가 원하는 이미지를 비트맵으로 생성하려면 어떻게 해야하는가?
  -C#윈폼으로 이미지를 mono bitmap으로 변환하는 프로그램을 만들어보도록 하자!
  -화면 사이즈가 296*128이므로 37888 갯수의 bit가 필요하다!
  -검정색 한세트 컬러 한세트 해서 총 25088의 2배만큼의 bit가 필요하다!
  -8개의 bit를 하나로 묶은것을 byte라고 하고 그것을 1차원 배열로 표현해야한다!(4736byte)
  -1이면 색칠안함, 0이면 색칠함!
  -이미지를 90도만큼 회전해서 출력한다!
  -새로운 이미지를 업로드하기 위한 절차
  -
  -1)C#으로 만든 생성기로 검정색과 컬러의 mono bitmap을 각각 생성한다!
  -2)nockanda.h파일을 복사해서 내가원하는 이름으로 바꾼다(nockanda2.h)
  -3)아두이노 코드에 nockanda2.h를 include한다!

<mono bitmap sample>

nockanda2.h
0.15MB
nockanda3.h
0.15MB

<arduino code>

563-3(커스텀이미지).txt
0.00MB

<c sharp project>

example563_3.zip
0.05MB

 

4.ESP32에서 업로드할 mono bitmap을 C#윈폼에서 USB로 전송해서 출력하시오!
  -아두이노의 툴을 눌러서 포트번호를 확인한다!(녹칸다는 COM10)
  -아두이노의 시리얼모니터를 열면 작동안됨!

<arduino code>

563-4(씨샵에서이미지업로드하기1).txt
0.00MB

<c sharp project>

example563_4.zip
0.06MB

5.ESP32와 PC를 USB로 연결한 상태에서 C#윈폼의 SerialPort컴포넌트를 이용해서 이미지를 변환한즉시 업로드해서 e-paper의 내용을 수정하시오!

<arduino code>

563-5(씨샵에서이미지업로드하기2).txt
0.00MB

<c sharp project>

example563_5.zip
0.06MB



(2편에서 이어질 내용)
1.C#윈폼과 ESP32를 TCP통신으로 연결한다!
2.ESP32가 TCP서버로 동작하고 C#윈폼이 TCP클라이언트로 동작한다!
3.C#윈폼에서 원하는 이미지를 선택하면 변환해서 TCP전송한다음 E-paper내용을 업데이트한다!
4.튜토리얼편에서는 PC 1개당 E-paper를 1개를 제어한다라는 컨셉이고 2편에서는 1:N을 전제로한다!
5.2편에서는 E-paper 2개를 동시에 사용을 하는데 지금 녹칸다가 E-paper 1개더 있던것의 행방을 모르는 관계로 만약 못찾게된다면 1개로만 하도록 한다!







반응형
Posted by 덕력킹
,