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ả

Xây dựng phong trào "Chia sẻ tình yêu với Arduino"

Với mong muốn cháy bỏng, đó là xây dựng được một cộng đồng Arduino Việt Nam, nơi mà ở đó, các bạn có thể học tập, trao đổi, chia sẻ mọi thứ từ kiến thức, module cho đến kinh phí làm dự án với tinh thần chia sẻ và quan tâm. Với tinh thần đó, hiện nay, Cộng đồng Arduino Việt Nam của chúng ta đã trở thành nơi duy nhất có uy tín trong cộng đồng Việt Nam, nơi quy tụ các bạn yêu thích Tự động hóa nói chung và Arduino nói riêng, cùng nhau chia sẻ những khối kiến thức được tích lũy qua quá trình học tập nghiên cứu. Trên tinh thần đó, hôm nay, chúng ta sẽ cùng nhau đi xa hơn với việc cùng nhau gây dựng phong trào chia sẻ module, chia sẻ tình yêu với Arduino. Hãy cùng đọc, cảm nhận và tham gia cùng chúng tôi nhé.

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

Lập trình Arduino trên mây với Arduino Create - Sự thay thế tạm thời cho Codebender

Như chúng ta đã biết, Arduino là một board mạch lập trình giúp những người yêu thích vọc vạch điện tử có thể làm nên những dự án ý nghĩa mà không cần qua bất cứ trường lớp chuyên môn nào cả. Vậy, ngoài việc lập trình trên máy tính trước đây, liệu có cách nào giúp chúng ta lập trình Arduino trên mây được hay không? Nếu là một người theo dõi Arduino.vn thường xuyên, thì chắc hẳn bạn biết đến Codebender. Tuy nhiên, vì các lý do về kinh phí hoạt động, codebender của chúng ta sẽ không còn cho phép biên dịch code miễn phí online vào cuối tháng 11/2016 nữa. Vậy, liệu đó có phải là dấu chấm hết cho cộng đồng chúng ta khi muốn biên dịch Arduino online? Câu trả lời là không, và tôi xin giới thiệu với bạn Arduino Create, một trình biên dịch Arduino IDE online của Arduino(dot)cc được phát triển sau codebender và cũng mới đi vào hoạt động trong năm 2016.

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