https://youtube.com/live/wgOscpEFOiM
[아두이노#553] ESP32에 대표적인 디스플레이를 연결해서 작동테스트 해보기!(녹칸다ESP32#3)
녹칸다의 ESP32시리즈이다!
제목 그대로 과거의 녹칸다는 IoT보드로 ESP8266보드만 활용했다!
ESP32에 대한 수요도 늘어나는것 같고 제일 중요한 것은 지금의 녹칸다가 ESP32보드가 필요하게 되었다!
ESP8266으로 만들어진 예제들을 ESP32버전으로 바꾸는게 주요 주제라고 할 수 있다!
그와 동시에 약간의 설명도 첨가해서 이것저것 예제를 만들어보도록 하자!
(ESP8266과 ESP32의 차이점을 강조해서 진행해보도록함!)
(근데 거의 80~90%는 거기서 거기인듯!)
이번시간에는 아두이노와 ESP8266에서 녹칸다가 주로 사용하는 각종 디스플레이를 EPS32에 연결해서 잘 작동하는지 확인해보는 시간을 가져보도록 하자!
어떤핀에 어떻게 연결하느냐와 어떤 라이브러리를 설치하느냐, 어떤 코드를 집어넣느냐에 따라 결과가 달라질수 있으니 적절하게 작동되는 예제를 만들어보도록 한다!
2편에서 진행했던 센서를 몇가지 사용해서 결과를 디스플레이에 출력해보자!
아래와 같이 대표적인 디스플레이를 활용해보도록 하자! 상황을봐서 추가로 더하거나 안할수도 있음~!
대표디스플레이 목록
-FND모듈(TM1637)
-1602LCD, 2004LCD (I2C버전)
-SSD1306(0.91인치 OLED)
-ILI9341(컬러LCD) → 라이브러리 업데이트로 일시적으로 사용불가 다음에 보충필요함
(참고자료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
(깨알지식)
1.FND모듈은 정수부분만 출력하고 소수점이하는 버림처리하기 때문에 소수점 2째짜리까지 출력하기 위해서는 100을 곱해서 출력하고 마음의 눈으로 가운데 소수점이 있다고 생각하면 그럭저럭 쓸만하다!
2.1602LCD는 FND모듈과 다리게 text출력이 가능하지만 한글은 출력이 안된다!
3.1602LCD라이브러리에 포함된 예제는 호환되지않음 안에 들어있으나 작동하는데 아무런 지장이 없으니 안심해두됨!
4.1602LCD를 작동시켰는데 아무것도 안나온다면 연결을 잘못했거나, i2c주소가 0x27이 아닌 특수한 경우이거나, 뒷면에 있는 백라이트를 조정을 안해서 그러하다!
5.1602LCD는 좌표공간이 있고 가로로 0~15, 세로로 0~1로 구성되어있다!
6.기본적으로 text를 드로잉하는 절차는 커서의 좌표를 지정하고 내가 입력할 text를 전송하는 것으로 구성된다!
7.lcd화면의 좌측 상단 모서리의 좌표가 0,0이다! 오른쪽으로 갈수록 x값이 커지고 아래쪽으로 갈수록 y값이 커진다!
8.LCD의 print함수는 문자열을 기준으로하기 때문에 출력할 데이터를 문자열로 만들어주어야한다!
9.(1602LCD와 2004LCD)LCD의 VCC를 3.3V에 연결했더니 화면이 흐려져서 5V에 연결하는 것으로 정정함!
10.아두이노용 OLED가 화면이 큰것도 있고 작은것도 있고 i2c통신버전도있고 spi통신 버전도 있는데 녹칸다는 128*32의 i2c버전을 구입해서 사용하고있다!
11.SSD1306은 드로잉할때 가상의 메모리(캔버스)에 drawing을 하고 최종적으로 디스플레이로 전송해서 출력한다!
12.display.display(); 이 함수가 캔버스에 있는 값을 oled로 전송해서 출력하라는 함수이다!
13.ILI9341예제를 구현하려고 했으나 라이브러리를 업데이트 하는 바람에 라이브방송에서 성공적인 예시를 보이지 못했음!
(라이브러리)
1.TM1637의 라이브러리 : TM1637
2.1602와 2004LCD의 라이브러리 : LiquidCrystal I2C
3.SSD1306의 라이브러리 : Adafruit_SSD1306, Adafruit_GFX
4.ILI9341의 라이브러리 : Adafruit_ILI9341, Adafruit_GFX (보충하기)
(예제설명)
1.ESP32에 TM1637을 CLK를 5번에 연결하고 DIO를 18번에 연결해서 시리얼모니터에서 녹칸다가 입력한 숫자가 FND화면에 출력되도록 하시오!
2.(예제1번에서)ESP32에 TM1637을 2개 연결하는데 첫번째 모듈은 CLK를 5번에 연결하고 DIO를 18번에 연결하고 두번째 모듈은 CLK를 19에 연결하고 DIO를 21에 연결해서 시리얼모니터에 입력한 숫자를 FND모듈에 출력되도록 하시오!
3.(예제2번에서)ESP32에 온습도센서(DHT-11)을 13번핀에 연결해서 측정한 온도값을 디스플레이1에 출력하고 습도값을 디스플레이 2에 출력하는 예시를 구현하시오!
4.ESP32에 1602LCD를 연결하고 녹칸다가 시리얼모니터에서 전송한 text를 LCD화면에 출력하는 예시를 보이시오!
5.(예제4번에서)1602LCD에 13번핀에 연결된 온습도센서의 측정값을 출력하시오!
6.(예제5번에서)1602LCD를 2004LCD로 교체하고 넓어진 화면을 조금더 활용하시오!
7.ESP32에 SSD1306을 연결해서 녹칸다가 시리얼 모니터에서 전송한 text값을 출력하도록 하시오!
8.(예제7번에서)13번핀에 연결된 온습도센서의 측정값을 출력하시오!