Mục lục:

MAX7219 LED Matrix MQTT Sử dụng Esp8266: 6 bước
MAX7219 LED Matrix MQTT Sử dụng Esp8266: 6 bước

Video: MAX7219 LED Matrix MQTT Sử dụng Esp8266: 6 bước

Video: MAX7219 LED Matrix MQTT Sử dụng Esp8266: 6 bước
Video: DA14: ĐIỀU KHIỂN LED MATRIX Max7219 BẰNG MODULE WIFI NODEMCU 2024, Tháng mười một
Anonim
MAX7219 LED Matrix MQTT sử dụng Esp8266
MAX7219 LED Matrix MQTT sử dụng Esp8266

Tôi đang cố gắng kết nối màn hình LED MAX7219 của mình với máy chủ MQTT và nhận được một văn bản từ đăng ký MQTT để hiển thị.

nhưng tôi không nhận được bất kỳ mã phù hợp nào trên internet, vì vậy tôi bắt đầu xây dựng…

và kết quả khá tốt…

  • bạn có thể hiển thị bất kỳ văn bản nào trên màn hình led
  • bạn có thể điều chỉnh cường độ của màn hình
  • bạn có thể đặt tốc độ cuộn

Quân nhu

  1. Một hội đồng phát triển esp8266. (trường hợp của tôi đó là NODE MCU v1.0)
  2. Màn hình ma trận LED MAX7219.

Phần mềm cần thiết:

  1. Arduino IDE.
  2. Máy chủ MQTT. (trường hợp của tôi Mosquitto)

Thư viện yêu cầu:

  1. ESP8266WiFi.h
  2. MD_MAX72xx.h
  3. EspMQTTClient.h

Bước 1: Thiết lập Arduino IDE để phát triển Esp8266

Thiết lập Arduino IDE để phát triển Esp8266
Thiết lập Arduino IDE để phát triển Esp8266

mở tùy chọn của Arduino sau đó dán URL bên dưới vào URL trình quản lý bảng bổ sung:

arduino.esp8266.com/stable/package_esp8266com_index.json

sau đó nhấp vào Tools> Boards> Boards Manager và tìm kiếm esp8266 và cài đặt nó.

bây giờ lý tưởng Arduino của bạn đã sẵn sàng để phát triển esp8266.

Bước 2: Tải xuống thư viện bên ngoài

bây giờ chúng tôi cần một số thư viện cho MAX7219 và MQTT Client.

hãy tải xuống và thiết lập các thư viện

điều hướng đến Phác thảo> Bao gồm Thư viện> Quản lý Thư viện trên Arduino IDE

và tìm kiếm EspMQTTClient và nhấp vào Cài đặt

NB: Cài đặt tất cả các thư viện phụ thuộc, điều quan trọng là

Một lần nữa tìm kiếm MD_MAX72xx và nhấp vào Cài đặt

Bước 3: Viết một số mã ngay bây giờ

Bây giờ hãy dán đoạn mã dưới đây

#bao gồm

#include #include #include "EspMQTTClient.h" #define MAX_DEVICES 4 // số lượng thiết bị của bạn #define CLK_PIN D5 // hoặc SCK #define DATA_PIN D7 // hoặc MOSI #define CS_PIN D4 // hoặc SS // bạn có thể thiết lập thành bất kỳ chân nào #define HARDWARE_TYPE MD_MAX72XX:: PAROLA_HW // thay đổi theo kiểu hiển thị của bạn MD_MAX72XX mx = MD_MAX72XX (HARDWARE_TYPE, CS_PIN, MAX_DEVICES); const uint8_t MESG_SIZE = 255; const uint8_t CHAR_SPACING = 1; uint8_t SCROLL_DELAY = 75; // độ trễ cuộn mặc định uint8_t INTENSITY = 5; // cường độ mặc định char curMessage [MESG_SIZE]; char newMessage [MESG_SIZE]; bool newMessageAvailable = false; void scrollDataSink (uint8_t dev, MD_MAX72XX:: transformType_t t, uint8_t col) {} uint8_t scrollDataSource (uint8_t dev, MD_MAX72XX:: variableType_t t) {static enum {S_IDLE, S_NEXT_CHAR, S_SHOW_SHOW_CHAR, S_SHOW_CHAR, S_SHOW_CHAR, S_SHOW_CHAR, S_SHOW_CHAR, S_SHOW_CHAR char tĩnh * p; static uint16_t curLen, showLen; static uint8_t cBuf [8]; uint8_t colData = 0; switch (trạng thái) {case S_IDLE: p = curMessage; if (newMessageAvailable) {strcpy (curMessage, newMessage); newMessageAvailable = false; } state = S_NEXT_CHAR; nghỉ; case S_NEXT_CHAR: if (* p == '\ 0') state = S_IDLE; else {showLen = mx.getChar (* p ++, sizeof (cBuf) / sizeof (cBuf [0]), cBuf); curLen = 0; trạng thái = S_SHOW_CHAR; } nghỉ; case S_SHOW_CHAR: colData = cBuf [curLen ++]; if (curLen = SCROLL_DELAY) {mx.transform (MD_MAX72XX:: TSL); // di chuyển dọc theo - lệnh gọi lại sẽ tải tất cả dữ liệu presTime = millis (); // điểm bắt đầu cho lần sau}} void setup () {Serial.begin (115200); mx.begin (); mx.control (MD_MAX72XX:: INTENSITY, INTENSITY); mx.setShiftDataInCallback (scrollDataSource); mx.setShiftDataOutCallback (scrollDataSink); curMessage [0] = newMessage [0] = '\ 0'; sprintf (curMessage, "Màn hình thông minh"); } void onConnectionEstablished () {// Chủ đề đăng ký MQTT cho display text client.subscribe ("leddisplay / text", (const String & payload) {sprintf (curMessage, payload.c_str ());});

// Chủ đề đăng ký MQTT cho bộ điều khiển cường độ hiển thị

client.subscribe ("leddisplay / Cường độ", (const String & payload) {mx.control (MD_MAX72XX:: INTENSITY, payload.toInt ());}); // Chủ đề đăng ký MQTT để kiểm soát tốc độ cuộn hiển thị client.subscribe ("leddisplay / scroll", (const String & payload) {SCROLL_DELAY = payload.toInt ();}); } void loop () {client.loop (); scrollText (); }

Để biết thông tin chi tiết, hãy tham khảo kho này

github.com/souravj96/max7219-mqtt-esp8266

Bước 4: Sơ đồ mạch

Sơ đồ mạch
Sơ đồ mạch

kết nối màn hình MAX7219 với NODE MCU

Bước 5: Tải mã lên Esp8266

Tải mã lên Esp8266
Tải mã lên Esp8266

bây giờ hãy chọn đúng loại bảng và cổng nối tiếp của bạn, sau đó nhấn tải lên.

Bước 6: Kiểm tra mọi thứ

nếu mọi thứ diễn ra chính xác thì esp8266 của bạn sẽ được kết nối với máy chủ MQTT của bạn.

bây giờ, nếu bất cứ điều gì sẽ được xuất bản trên leddisplay / chủ đề văn bản sẽ được hiển thị.

{

topic: "leddisplay / text", payload: "your message here"}

nếu bạn muốn đặt cường độ hiển thị

{

chủ đề: "leddisplay / Cường độ", tải trọng: "2" // tối đa là 15 và tối thiểu là 0}

nếu bạn muốn đặt tốc độ cuộn của màn hình

{

topic: "leddisplay / scroll", payload: "100" // max là 255 và min 0}

Chúc bạn viết mã vui vẻ

Đề xuất: