Isi kandungan:

MAX7219 LED Matrix MQTT Menggunakan Esp8266: 6 Langkah
MAX7219 LED Matrix MQTT Menggunakan Esp8266: 6 Langkah

Video: MAX7219 LED Matrix MQTT Menggunakan Esp8266: 6 Langkah

Video: MAX7219 LED Matrix MQTT Menggunakan Esp8266: 6 Langkah
Video: Animation Tutorial on 4 in 1 MAX7219 LED Display 2024, November
Anonim
MAX7219 LED Matrix MQTT Menggunakan Esp8266
MAX7219 LED Matrix MQTT Menggunakan Esp8266

Saya cuba menyambungkan paparan LED MAX7219 saya ke pelayan MQTT dan menerima teks dari langganan MQTT untuk dipaparkan.

tetapi saya tidak mendapat kod yang sesuai di internet, jadi saya mula membina sendiri …

dan hasilnya cukup baik …

  • anda boleh memaparkan teks pada paparan LED
  • anda boleh menyesuaikan intensiti paparan
  • anda boleh menetapkan kelajuan tatal

Bekalan

  1. Lembaga pembangunan esp8266. (kes saya NODE MCU v1.0)
  2. Paparan Matriks LED MAX7219.

Perisian yang diperlukan:

  1. Arduino IDE.
  2. Pelayan MQTT. (kes saya Mosquitto)

Perpustakaan diperlukan:

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

Langkah 1: Siapkan Arduino IDE untuk Pembangunan Esp8266

Siapkan Arduino IDE untuk Pembangunan Esp8266
Siapkan Arduino IDE untuk Pembangunan Esp8266

buka pilihan Arduino kemudian tampal URL di bawah dalam URL Pengurus Papan Aditional:

arduino.esp8266.com/stable/package_esp8266com_index.json

kemudian Alat> Papan> Pengurus Papan dan cari esp8266 dan pasangnya.

kini idea Arduino anda sudah siap untuk pengembangan esp8266.

Langkah 2: Muat turun Perpustakaan Luaran

sekarang kita memerlukan beberapa perpustakaan untuk MAX7219 dan MQTT Client.

mari memuat turun dan menubuhkan perpustakaan

arahkan ke Sketsa> Sertakan Perpustakaan> Uruskan Perpustakaan di Arduino IDE

dan cari klien EspMQTTC dan klik Pasang

NB: Pasang semua perpustakaan yang bergantung, penting

Sekali lagi cari MD_MAX72xx dan klik Pasang

Langkah 3: Tulis Beberapa Kod Sekarang

Sekarang tampal kod di bawah

#sertakan

#include #include #include "EspMQTTClient.h" #define MAX_DEVICES 4 // jumlah peranti anda #define CLK_PIN D5 // atau SCK #define DATA_PIN D7 // atau MOSI #define CS_PIN D4 // atau SS // anda boleh menetapkannya ke mana-mana pin #define HARDWARE_TYPE MD_MAX72XX:: PAROLA_HW // ubah mengikut jenis paparan anda 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; // kelewatan tatal lalai uint8_t INTENSITY = 5; // cur intensiti lalai charMessage [MESG_SIZE]; char newMessage [MESG_SIZE]; bool newMessageAvailable = salah; void scrollDataSink (uint8_t dev, MD_MAX72XX:: transformType_t t, uint8_t col) {} uint8_t scrollDataSource (uint8_t dev, MD_MAX72XX:: transformType_t t) {static enum {S_IDLE, S_NEXT_CHAR, S_SHOW_, S_SHOW_ char statik * p; uint16_t curLen statik, showLen; statik uint8_t cBuf [8]; uint8_t colData = 0; tukar (keadaan) {case S_IDLE: p = curMessage; jika (newMessageAvailable) {strcpy (curMessage, newMessage); newMessageAvailable = salah; } negeri = S_NEXT_CHAR; rehat; kes S_NEXT_CHAR: jika (* p == '\ 0') nyatakan = S_IDLE; lain {showLen = mx.getChar (* p ++, sizeof (cBuf) / sizeof (cBuf [0]), cBuf); curLen = 0; nyatakan = S_SHOW_CHAR; } rehat; kes S_SHOW_CHAR: colData = cBuf [curLen ++]; jika (curLen = SCROLL_DELAY) {mx.transform (MD_MAX72XX:: TSL); // tatal bersama - panggilan balik akan memuatkan semua data prevTime = millis (); // titik permulaan untuk lain kali}} batal persediaan () {Serial.begin (115200); mx.begin (); mx.control (MD_MAX72XX:: INTENSITY, INTENSITY); mx.setShiftDataInCallback (scrollDataSource); mx.setShiftDataOutCallback (tatalDataSink); curMessage [0] = newMessage [0] = '\ 0'; sprintf (curMessage, "Paparan Pintar"); } void onConnectionEstolveded () {// topik langganan MQTT untuk klien teks paparan.subscribe ("leddisplay / text", (const String & payload) {sprintf (curMessage, payload.c_str ());});

// Topik langganan MQTT untuk kawalan intensiti paparan

client.subscribe ("leddisplay / شدت", (const String & payload) {mx.control (MD_MAX72XX:: INTENSITY, payload.toInt ());}); // Topik langganan MQTT untuk paparan pengendali kelajuan tatal pelanggan.subscribe ("leddisplay / scroll", (const String & payload) {SCROLL_DELAY = payload.toInt ();}); } gelung void () {client.loop (); tatal Teks (); }

Untuk maklumat terperinci, rujuk repositori ini

github.com/souravj96/max7219-mqtt-esp8266

Langkah 4: Diagram Litar

Rajah Litar
Rajah Litar

sambungkan paparan MAX7219 dengan NODE MCU

Langkah 5: Muat naik Kod ke Esp8266

Muat naik Kod ke Esp8266
Muat naik Kod ke Esp8266

sekarang pilih jenis papan dan port bersiri yang betul kemudian tekan muat naik.

Langkah 6: Uji Segalanya

jika semuanya betul, esp8266 anda akan disambungkan ke pelayan MQTT anda.

sekarang, jika ada yang akan diterbitkan mengenai topik leddisplay / teks yang akan dipaparkan.

{

topik: "leddisplay / text", muatan: "mesej anda di sini"}

jika anda mahu menetapkan intensiti paparan

{

topik: "leddisplay / intensiti", muatan: "2" // maksimum adalah 15 dan min 0}

jika anda mahu menetapkan kelajuan tatal paparan

{

topik: "leddisplay / scroll", muatan: "100" // maksimum ialah 255 dan min 0}

Selamat pengekodan

Disyorkan: