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
Những hình ảnh về dự án: 
Bài viết truyền cảm hứng: 
lên
17 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ả

ESP8266 kết nối Internet - Phần 1.1: ESP8266 đi thuê phòng ở khách sạn Socket Server

Ở bài viết Phần 1: Cài đặt ESP8266 làm một socket client kết nối tới socket server trong mạng LAN. Trong bài này, chúng ta đã làm mô hình một thiết bị ESP8266 kết nối vào Socket Server. Nhưng trong thực tế, Socket là một mô hình mạng có thể kết nối nhiều thiết bị với nhau. Và qua bài viết này, mình làm một ví dụ cho ESP8266 kết nối với một ESP8266 khác. Cùng khám phá nhé.

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

iNut platform là gì?

Nhắc tới dòng mạch iNut dùng để lập trình, cái đầu tiên mà người ta thường nói tới chính là dòng iNut Cảm biến – một trong các mạch cho việc lập trình IoT. Hiện dòng mạch này đã phát triển tới thế hệ thứ 2 (iNut Sensor R2). Bạn sẽ bắt đầu đến với nền tảng iNut Platform thông qua mạch này. Bạn có thể dùng firmware iNut cảm biến cũng được nhưng bạn nên dùng bo mạch iNut Sensor R2 vì nó rất gọn và tương thức với Arduino Uno và Arduino Mega.

lên
4 thành viên đã đánh giá bài viết này hữu ích.
Từ khóa: