ST7565 và ESP8266 - Màn hình LCD bự chà bá chưa đến 100k cho thế giới IoT

Mình rất thích LCD ST7565 này, và đã đặt liền 4 con mà mỗi con quá rẻ có 20k. Nhưng khổ một điều, điện áp hoạt động và IO của LCD ST7565 có 3.3V. Bản thân mình lại không thích việc chơi điện trở để chơi LCD này với Arduino. Lý do đơn giản là phải hàn quá nhiều, mình lại lười crying. Hổm nay, mình đang làm loạt bài về ESP8266 và cũng phải gặp vấn đề điện trở để làm cầu phân áp khi giao tiếp giữa ESP8266 và Arduino. Cảm thấy có một mối liên hệ giữa LCD ST7565 và ESP8266 nên mình đã thử tìm cách làm cho thư viện của Nick Chung hoạt động trên ESP8266 này. Mình đã thành công, và mình sẽ chia sẻ thành quả của mình với bạn. Thử ngay nào!

Cần chuẩn bị phần cứng gì?

  • Một con ESP8266v12 (NodeMCU v0.9 mình mua có 80k ở Việt Nam luôn)
  • Một con ST7565 (hàng tháo chip cho rẻ, mình mua cũng có 20k)
  • Vậy là hết 100k rồi.
  • Thêm 7 dây breadboard cái - cái để nối dây nữa là xong!

Cần cài đặt gì?

  • Cài đặt board ESP8266 để lập trình từ Arduino IDE. Các bạn làm theo bài viết sau.
  • Cà đặt thư viện ST7565_homephone_esp8266 của mình. Những thay đổi mình đã chỉnh sửa trong thư viện này:
    • Bỏ PROGMEM cho đơn ký tự char.
    • Bỏ các từ khóa asc vì esp8266 không phải là AVR.
    • Hết rồi, thư viện của Nick Chung (Thái Sơn) chạy quá tốt luôn.

Thử nghiệm

Lắp mạch cho LCD

Tùy con nha, mình lấy con NodeMCU 1.0 vì trong fritzing có con này, chứ mình sài NodeMCU 0.9

Pinout của con LCD ST7565

Chúng ta chỉ cần dùng chân 2, 3, 4, 7, 8, 9, 10 mà thôi. Bạn có thể hàn như mình nè.

Ngoài ra, bạn có thể cấp điện 3v3 vào chỗ bôi đỏ để bật đèn màn hình

Nói chung, bạn có thể lấy mọi ví dụ bài viết về ST7565 của Nick Chung viết trước đây và thử nghiệm trên ESP8266. Nhớ đổi tên chân lại, như con ESP8266 có các chân từ D0 => D9, A0. Ngoài ra, tùy bản ESP8266 mà có nhiều chân (pin) hơn ahihi.

Các thử nghiệm

Vẽ Tam giác

Xem toàn bộ thông tin tại đây.

#include "ST7565_homephone_esp8266.h"//a
ST7565 lcd(D0, D1, D2, D3);//b
 
 
void setup()   {  
  lcd.ON();//c
  lcd.SET(22,0,0,0,4);   //d
}
void loop(){
  lcd.Tri(60,10,30,40,90,40,BLACK);
  lcd.Display();
}  

a : Thêm thư viện

b : Thiết lập pin kết nối

c: Bật màn hình

d : Cài đặt cấu hình giao diện

Viết 1 kí tự tiếng Việt

Xem thông tin tại đây.

#include "ST7565_homephone_esp8266.h"//a
ST7565 lcd(D0, D1, D2, D3);//b
 
 
void setup()   {  
  lcd.ON();//c
  lcd.SET(22,0,0,0,4);   //d
}
void loop(){
  //c1:
  
  lcd.Uni_Char(63,10,u'A',BLACK);//A
  //c2:
  const static char16_t text=u'\x1ED8';//Ộ
  lcd.Uni_Char(63,31,text,BLACK);
  lcd.display();
}

Viết một chuỗi tiếng Việt

Xem thông tin tại đây

Anh em nhớ bỏ macro Uni nha

#include "ST7565_homephone_esp8266.h"//a
ST7565 lcd(D0, D1, D2, D3);//b
 
 
void setup()   {  
  lcd.ON();//c
  lcd.SET(22,0,0,0,4);   //d
}
void loop(){
  //c1:
  lcd.Uni_String( 30, 15, u"\x111\x1ECF", BLACK);//đỏ
  //c2:
  const static char16_t text[] PROGMEM =u"\x111\x65n";//đen
  lcd.Uni_String( 30, 35,text, BLACK);
      
  lcd.Display();
}

 

Kết luận

Tốc độ xử lý của ESP8266 nhanh hơn rất nhiều so với Arduino, các bạn có thể làm game rất mượt mà. Bạn có thể làm nhiều trò vui với ESP8266 và ST7565. Thư viện của Thái Sơn quá đầy đủ để chúng ta có thể chơi một cách ngon lành. Mời bạn xem video ở dưới để cùng chiêm ngưỡng những khả năng độc đáo của thư viện!

Youtube: 
Thử chơi game Ping Pong trên ESP8266 và LCD ST7565
Bài viết truyền cảm hứng: 
lên
9 thành viên đã đánh giá bài viết này hữu ích.
Các dự án được truyền cảm hứng

Select any filter and click on Apply to see results

Các bài viết cùng tác giả

noTone()

Hàm này có nhiệm vụ kết thúc một sự kiện tone() trên một pin nào đó (đang chạy lệnh tone()). Nếu không có bất kỳ hàm tone() nào đang hoạt động thì hàm này sẽ không gây bất kỳ ảnh hưởng gì đến chương trình.

lên
4 thành viên đã đánh giá bài viết này hữu ích.