ESP8266 Ma trận LED

Hướng dẫn này chỉ cho bạn cách sử dụng ESP8266 với màn hình ma trận LED. Cụ thể, chúng ta sẽ học:

Một khi việc đó được hoàn tất, việc chỉnh sửa mã cho các ma trận LED khác sẽ rất đơn giản, ví dụ như ma trận LED 16x8 hoặc 64x8.

Phần cứng cần chuẩn bị

1×ESP8266 NodeMCU ESP-12E
1×Recommended: ESP8266 NodeMCU ESP-12E (Uno-form)
1×USB Cable Type-A to Type-C (for USB-A PC)
1×USB Cable Type-C to Type-C (for USB-C PC)
1×FC-16 LED Matrix 32x8
1×FC-16 LED Matrix 8x8
1×Generic LED Matrix 8x8
1×dây jumper
1×DC Power Jack
1×5V Power Adapter for ESP8266
1×(Khuyến nghị) Screw Terminal Expansion Board for ESP8266
1×(Khuyến nghị) Power Splitter for ESP8266 Type-C

Or you can buy the following kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)

Về Ma trận LED

Các màn hình ma trận LED thường được gọi là màn hình LED hoặc màn hình ma trận điểm.

màn hình ma trận LED

Ma trận LED có nhiều loại khác nhau. Ma trận LED dựa trên MAX7219 được sử dụng rộng rãi với ESP8266. Nó có các đặc điểm sau:

  • Một khối đơn gồm ma trận LED 8x8 (64 LED) và bộ điều khiển MAX7219.
  • Có hai loại khối phổ biến: mô-đun tổng quát và mô-đun FC-16.
  • Bạn có thể mua một ma trận LED nhiều khối đã được chế tác sẵn (ví dụ 4 trong 1, 8 trong 1) hoặc ghép nhiều khối lại với nhau để tạo ma trận LED có kích thước bạn mong muốn.
  • Kích thước của ma trận LED bạn sử dụng phải được khai báo trong mã ESP8266.

Bố trí chân cho ma trận LED

bố trí chân cho ma trận LED

Một ma trận LED được tạo thành từ một hoặc nhiều khối. Mỗi khối có hai tập pin:

  • Nhóm chân vào:
    • VCC: kết nối với nguồn 5V.
    • GND: kết nối với đất.
    • DIN: Chân dữ liệu, kết nối với bất kỳ chân số nào của ESP8266.
    • CS: Chọn chip, kết nối với bất kỳ chân số nào của ESP8266.
    • CLK: Chân đồng hồ, kết nối với bất kỳ chân số nào của ESP8266.
  • Nhóm chân ra:
    • VCC: kết nối với VCC ở khối tiếp theo.
    • GND: kết nối với GND ở khối tiếp theo.
    • DOUT: Dữ liệu ra, kết nối với chân DIN của khối tiếp theo.
    • CS: kết nối với CS ở khối tiếp theo.
    • CLK: kết nối với CLK ở khối tiếp theo.

Sơ đồ đấu dây

Nếu ma trận LED được làm từ một khối duy nhất:

  • Kết nối các chân đầu vào với ESP8266
  • Để các chân đầu ra không được kết nối
sơ đồ nối dây cho ma trận LED 8x8 fc-16 ESP8266 NodeMCU

This image is created using Fritzing. Click to enlarge image

Xem thêm Sơ đồ chân ESP8266Cách cấp nguồn cho ESP8266.

sơ đồ nối dây chung cho ma trận LED 8×8 ESP8266 NodeMCU

This image is created using Fritzing. Click to enlarge image

Nếu ma trận LED được ghép sẵn từ nhiều khối:

  • Kết nối nhóm các chân đầu vào với ESP8266
  • Để nhóm các chân đầu ra không được nối
sơ đồ nối dây cho màn hình ma trận LED ESP8266 NodeMCU

This image is created using Fritzing. Click to enlarge image

Nếu bạn làm ma trận LED từ nhiều khối:

  • Kết nối các nhóm chân đầu vào của khối đầu tiên với ESP8266
  • Kết nối các nhóm chân đầu ra của mỗi khối với các nhóm chân đầu vào của khối tiếp theo
  • Để nhóm chân đầu ra của khối cuối cùng không được kết nối
sơ đồ đấu dây cho ma trận LED 32×8 ESP8266 NodeMCU fc-16

This image is created using Fritzing. Click to enlarge image

Do lượng tiêu thụ dòng điện cao của màn hình (lên tới 1A ở độ sáng tối đa):

  • Tránh cấp nguồn từ chân 5V của ESP8266.
  • Thay vào đó, hãy sử dụng nguồn 5V từ bên ngoài. ESP8266 và ma trận LED có thể được cấp nguồn bằng một bộ nguồn 5V duy nhất.

Vì ESP8266 được kết nối với ma trận LED thông qua các chân SPI:

  • Chân D5 (SCK) và D7 (MOSI) trên ESP8266 phải được sử dụng. Nếu đang sử dụng một bo mạch ESP8266 khác, hãy tham khảo tài liệu chính thức để tìm các chân SPI tương đương.
  • Chân D8 (CS) có thể được gán cho bất kỳ chân nào trên bo mạch ESP8266.

Cách Lập Trình Cho Ma Trận LED

Việc điều khiển ma trận LED không phải là một nhiệm vụ đơn giản. May mắn thay, có các thư viện sẵn có giúp cho việc này dễ dàng hơn. Dưới đây là hướng dẫn từng bước về cách viết mã ESP8266 để điều khiển ma trận LED:

  • Kết hợp các thư viện:
#include <MD_Parola.h> #include <MD_MAX72xx.h>
  • Xác định loại phần cứng được sử dụng: GENERIC_HW hoặc FC16_HW.
#define HARDWARE_TYPE MD_MAX72XX::FC16_HW
  • Xác định số khối LED được sử dụng. Ví dụ, ma trận LED 4 trong 1 có 4 khối.
#define MAX_DEVICES 4
  • Xác định chân được kết nối với chân CS của ma trận LED. Ví dụ, chân D3.
#define CS_PIN D8
  • Tạo một đối tượng MD_Parola để được sử dụng với màn hình ma trận LED.
MD_Parola ledMatrix = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
  • Mã nằm ở hàm setup():
void setup() { ledMatrix.begin(); // initialize the object ledMatrix.setIntensity(0); // set the brightness of the LED matrix display (from 0 to 15) ledMatrix.displayClear(); // clear led matrix display }
  • Hiển thị văn bản, các giá trị số và hiệu ứng động: tham khảo phần tiếp theo.

ESP8266 - Mã cho ma trận LED

Mã này phù hợp cho ma trận LED FC-16 có kích thước 32x8, gồm bốn khối. Nó có thể dễ dàng điều chỉnh cho các kích thước khác như 8x8, 16x8 và 64x8.

/* * Mã ESP8266 NodeMCU này được phát triển bởi newbiely.vn * Mã ESP8266 NodeMCU này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/esp8266/esp8266-led-matrix */ #include <MD_Parola.h> #include <MD_MAX72xx.h> #define HARDWARE_TYPE MD_MAX72XX::FC16_HW #define MAX_DEVICES 4 // 4 blocks #define CS_PIN D8 // create an instance of the MD_Parola class MD_Parola ledMatrix = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES); void setup() { ledMatrix.begin(); // initialize the LED Matrix ledMatrix.setIntensity(15); // set the brightness of the LED matrix display (from 0 to 15) ledMatrix.displayClear(); // clear LED matrix display } void loop() { ledMatrix.setTextAlignment(PA_LEFT); ledMatrix.print("Left"); // display text delay(2000); ledMatrix.setTextAlignment(PA_CENTER); ledMatrix.print("Center"); // display text delay(2000); ledMatrix.setTextAlignment(PA_RIGHT); ledMatrix.print("Right"); // display text delay(2000); ledMatrix.setTextAlignment(PA_CENTER); ledMatrix.setInvert(true); ledMatrix.print("Invert"); // display text inverted delay(2000); ledMatrix.setInvert(false); ledMatrix.print(1234); // display number delay(2000); }

Hướng dẫn từng bước

Để bắt đầu với ESP8266 trên Arduino IDE, hãy làm theo các bước sau:

  • Xem hướng dẫn ESP8266 - Cài đặt phần mềm nếu đây là lần đầu bạn sử dụng ESP8266.
  • Kết nối các linh kiện như được hiển thị trong sơ đồ.
  • Kết nối bo mạch ESP8266 với máy tính của bạn bằng cáp USB.
  • Mở Arduino IDE trên máy tính của bạn.
  • Chọn bo mạch ESP8266 phù hợp, ví dụ NodeMCU 1.0 (ESP-12E Module), và cổng COM tương ứng của nó.
  • Kết nối ESP8266 với ma trận LED như đã chỉ ra trong sơ đồ nối.
  • Kết nối ESP8266 với PC bằng cáp USB.
  • Nhấp vào biểu tượng Thư viện ở thanh bên trái của Arduino IDE.
  • Tìm kiếm “MD_Parola”, rồi xác định thư viện MD_Parola.
  • Nhấn nút Cài đặt.
thư viện md_parola cho ESP8266 NodeMCU
  • Bạn sẽ được yêu cầu cài đặt thư viện “MD_MAX72XX”
  • Nhấp nút Cài đặt Tất cả để cài đặt phụ thuộc.
thư viện md_max72xx cho ESP8266 NodeMCU
  • Thông điệp
  • Sao chép mã và mở nó bằng Arduino IDE.
  • Nhấn nút Tải lên trên Arduino IDE để biên dịch và tải mã lên ESP8266.
  • Kiểm tra ma trận LED đang hiển thị thông điệp.

Mã ma trận LED ESP8266 – Văn bản cuộn

Nếu một tin nhắn quá dài để hiển thị trên ma trận LED, có thể sử dụng hiệu ứng chữ chạy. Điều này cho phép toàn bộ tin nhắn được nhìn thấy.

Đoạn mã ESP8266 này minh họa cách cuộn một thông điệp trên màn hình ma trận LED.

/* * Mã ESP8266 NodeMCU này được phát triển bởi newbiely.vn * Mã ESP8266 NodeMCU này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/esp8266/esp8266-led-matrix */ #include <MD_Parola.h> #include <MD_MAX72xx.h> #define HARDWARE_TYPE MD_MAX72XX::FC16_HW #define MAX_DEVICES 4 // 4 blocks #define CS_PIN D8 // create an instance of the MD_Parola class MD_Parola ledMatrix = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES); void setup() { ledMatrix.begin(); // initialize the object ledMatrix.setIntensity(15); // set the brightness of the LED matrix display (from 0 to 15) ledMatrix.displayClear(); // clear led matrix display ledMatrix.displayScroll("ESP8266", PA_CENTER, PA_SCROLL_LEFT, 100); } void loop() { if (ledMatrix.displayAnimate()) { ledMatrix.displayReset(); } }

Nếu bạn đang tìm kiếm thêm các hiệu ứng văn bản, hãy xem Tài liệu tham khảo thư viện MD_Parola.

Video Tutorial

Việc sản xuất video tốn rất nhiều thời gian. Nếu video hướng dẫn hữu ích cho việc học của bạn, hãy đăng ký kênh YouTube để ủng hộ. Nếu nhu cầu đủ cao, chúng tôi sẽ cố gắng làm thêm nhiều video.