สารบัญ:

MAX7219 LED Matrix MQTT โดยใช้ Esp8266: 6 ขั้นตอน
MAX7219 LED Matrix MQTT โดยใช้ Esp8266: 6 ขั้นตอน

วีดีโอ: MAX7219 LED Matrix MQTT โดยใช้ Esp8266: 6 ขั้นตอน

วีดีโอ: MAX7219 LED Matrix MQTT โดยใช้ Esp8266: 6 ขั้นตอน
วีดีโอ: ESP8266 Led Matrix Clock, Weather, News, Bitcion 2024, พฤศจิกายน
Anonim
MAX7219 LED Matrix MQTT โดยใช้ Esp8266
MAX7219 LED Matrix MQTT โดยใช้ Esp8266

ฉันกำลังพยายามเชื่อมต่อจอแสดงผล LED MAX7219 ของฉันกับเซิร์ฟเวอร์ MQTT และรับข้อความจากการสมัครสมาชิก MQTT เพื่อแสดง

แต่ฉันไม่ได้รับรหัสที่เหมาะสมบนอินเทอร์เน็ต ดังนั้นฉันจึงเริ่มสร้าง…

และผลก็ออกมาค่อนข้างดี…

  • คุณสามารถแสดงข้อความใด ๆ บนจอแสดงผล led
  • คุณสามารถปรับความเข้มของจอแสดงผลได้
  • คุณสามารถตั้งค่าความเร็วในการเลื่อน

เสบียง

  1. บอร์ดพัฒนา esp8266 (กรณีของฉันคือ NODE MCU v1.0)
  2. MAX7219 จอแสดงผล LED เมทริกซ์

ซอฟต์แวร์ที่จำเป็น:

  1. Arduino IDE
  2. เซิร์ฟเวอร์ MQTT (กรณีของฉัน ยุงลาย)

ห้องสมุดที่ต้องการ:

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

ขั้นตอนที่ 1: ตั้งค่า Arduino IDE สำหรับการพัฒนา Esp8266

ตั้งค่า Arduino IDE สำหรับการพัฒนา Esp8266
ตั้งค่า Arduino IDE สำหรับการพัฒนา Esp8266

เปิดการตั้งค่าของ Arduino จากนั้นวาง URL ด้านล่างใน URL ตัวจัดการบอร์ดเพิ่มเติม:

arduino.esp8266.com/stable/package_esp8266com_index.json

จากนั้น เครื่องมือ > บอร์ด > ตัวจัดการบอร์ด และค้นหา esp8266 และติดตั้ง

ตอนนี้ Arduino ide ของคุณพร้อมสำหรับการพัฒนา esp8266 แล้ว

ขั้นตอนที่ 2: ดาวน์โหลด External Libraries

ตอนนี้เราต้องการไลบรารี่สำหรับ MAX7219 และ MQTT Client

มาดาวน์โหลดและตั้งค่าไลบรารีกันเถอะ

นำทางไปยัง Sketch > รวมไลบรารี > จัดการไลบรารีบน Arduino IDE

และค้นหา EspMQTTClient แล้วคลิกติดตั้ง

หมายเหตุ: ติดตั้งไลบรารีที่ขึ้นต่อกันทั้งหมดเป็นสิ่งสำคัญ

ค้นหา MD_MAX72xx อีกครั้งแล้วคลิกติดตั้ง

ขั้นตอนที่ 3: เขียนโค้ดตอนนี้

ตอนนี้วางโค้ดด้านล่าง

#รวม

#include #include #include "EspMQTTClient.h" #define MAX_DEVICES 4 // จำนวนอุปกรณ์ของคุณ #define CLK_PIN D5 // หรือ SCK #define DATA_PIN D7 // หรือ MOSI #define CS_PIN D4 // หรือ SS // คุณสามารถตั้งค่าได้ ไปยังพินใด ๆ #define HARDWARE_TYPE MD_MAX72XX::PAROLA_HW // เปลี่ยนตามประเภทการแสดงผลของคุณ 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; // ดีเลย์เลื่อนเริ่มต้น uint8_t INTENSITY = 5; // ถ่านความเข้มเริ่มต้น curMessage [MESG_SIZE]; ถ่านข้อความใหม่[MESG_SIZE]; bool newMessageAvailable = false; ถือเป็นโมฆะ scrollDataSink (uint8_t dev, MD_MAX72XX::transformType_t t, uint8_t col) {} uint8_t scrollDataSource (uint8_t dev, MD_MAX72XX::transformType_t t) { enum แบบคงที่ { S_IDLE, S_NEXT_SHOR, S_NEXT_SHOW; ถ่านคงที่ *p; คงที่ uint16_t curLen, showLen; คงที่ uint8_t cBuf[8]; uint8_t colData = 0; สวิตช์ (สถานะ) { กรณี S_IDLE: p = curMessage; ถ้า (newMessageAvailable) { strcpy (curMessage, newMessage); newMessageAvailable = false; } รัฐ = S_NEXT_CHAR; หยุดพัก; กรณี S_NEXT_CHAR: ถ้า (*p == '\0') สถานะ = S_IDLE; อื่น { showLen = mx.getChar(*p++, sizeof(cBuf) / sizeof(cBuf[0]), cBuf); curLen = 0; รัฐ = S_SHOW_CHAR; } หยุดพัก; กรณี S_SHOW_CHAR: colData = cBuf[curLen++]; ถ้า (curLen = SCROLL_DELAY) { mx.transform (MD_MAX72XX::TSL); // เลื่อนไปตาม - การโทรกลับจะโหลดข้อมูลทั้งหมด prevTime = millis(); // จุดเริ่มต้นสำหรับครั้งต่อไป } } การตั้งค่าเป็นโมฆะ () { Serial.begin (115200); mx.begin(); mx.control(MD_MAX72XX::INTENSITY, INTENSITY); mx.setShiftDataInCallback (scrollDataSource); mx.setShiftDataOutCallback(scrollDataSink); curMessage[0] = newMessage[0] = '\0'; sprintf(curMessage, "สมาร์ทดิสเพลย์"); } เป็นโมฆะ onConnectionEstablished () { // หัวข้อการสมัครสมาชิก MQTT สำหรับข้อความที่แสดง

// หัวข้อการสมัครสมาชิก MQTT สำหรับการควบคุมความเข้มของการแสดงผล

client.subscribe("leddisplay/intensity", (const String & payload) { mx.control(MD_MAX72XX::INTENSITY, payload.toInt()); }); // หัวข้อการสมัครสมาชิก MQTT สำหรับการควบคุมความเร็วในการเลื่อนการแสดงผลที่ลูกค้า.subscribe("leddisplay/scroll", (const String & payload) { SCROLL_DELAY = payload.toInt(); }); } วงเป็นโมฆะ () { client.loop (); เลื่อนข้อความ(); }

สำหรับข้อมูลรายละเอียด โปรดดูที่ที่เก็บนี้

github.com/souravj96/max7219-mqtt-esp8266

ขั้นตอนที่ 4: แผนภาพวงจร

แผนภูมิวงจรรวม
แผนภูมิวงจรรวม

เชื่อมต่อจอแสดงผล MAX7219 กับ NODE MCU

ขั้นตอนที่ 5: อัปโหลดรหัสไปที่ Esp8266

อัปโหลดรหัสไปที่ Esp8266
อัปโหลดรหัสไปที่ Esp8266

ตอนนี้เลือกประเภทบอร์ดและพอร์ตอนุกรมที่ถูกต้อง จากนั้นกดอัปโหลด

ขั้นตอนที่ 6: ทดสอบทุกอย่าง

หากทุกอย่างถูกต้อง esp8266 ของคุณจะเชื่อมต่อกับเซิร์ฟเวอร์ MQTT ของคุณ

ตอนนี้หากมีสิ่งใดที่จะเผยแพร่ในหัวข้อ leddisplay / text ที่จะแสดง

{

หัวข้อ: "leddisplay/text", payload: "your message here" }

หากคุณต้องการตั้งค่าความเข้มของการแสดงผล

{

หัวข้อ: "leddisplay/intensity", payload: "2" // สูงสุดคือ 15 และต่ำสุด 0 }

หากคุณต้องการตั้งค่าความเร็วการเลื่อนของ display

{

หัวข้อ: "leddisplay/scroll", payload: "100" // max คือ 255 และ min 0 }

มีความสุขในการเข้ารหัส

แนะนำ: