MAX7219 LED Matrix MQTT โดยใช้ Esp8266: 6 ขั้นตอน
MAX7219 LED Matrix MQTT โดยใช้ Esp8266: 6 ขั้นตอน
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 }

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