Daftar Isi:

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 mencoba menghubungkan layar LED MAX7219 saya ke server MQTT dan menerima teks dari langganan MQTT untuk ditampilkan.

tapi saya tidak mendapatkan kode yang cocok di internet, jadi saya mulai membuat sendiri…

dan hasilnya cukup baik…

  • Anda dapat menampilkan teks apa pun pada tampilan yang dipimpin
  • Anda dapat menyesuaikan intensitas tampilan
  • Anda dapat mengatur kecepatan gulir

Perlengkapan

  1. Papan pengembangan esp8266. (kasus saya ini NODE MCU v1.0)
  2. Tampilan Matriks LED MAX7219.

Perangkat lunak yang dibutuhkan:

  1. ArduinoIDE.
  2. Sebuah server MQTT. (kasus saya Nyamuk)

Perpustakaan diperlukan:

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

Langkah 1: Siapkan Arduino IDE untuk Pengembangan Esp8266

Siapkan Arduino IDE untuk Pengembangan Esp8266
Siapkan Arduino IDE untuk Pengembangan Esp8266

buka preferensi Arduino lalu rekatkan URL di bawah ini di URL Aditional Boards Manager:

arduino.esp8266.com/stable/package_esp8266com_index.json

lalu Tools > Boards > Boards Manager dan cari esp8266 dan install.

sekarang ide Arduino Anda siap untuk pengembangan esp8266.

Langkah 2: Unduh Perpustakaan Eksternal

sekarang kita membutuhkan beberapa library untuk MAX7219 dan MQTT Client.

mari unduh dan atur perpustakaan

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

dan cari EspMQTTClient dan klik Instal

NB: Instal semua perpustakaan dependen, itu penting

Sekali lagi cari MD_MAX72xx dan klik Instal

Langkah 3: Tulis Beberapa Kode Sekarang

Sekarang rekatkan kode di bawah ini

#termasuk

#include #include #include "EspMQTTClient.h" #define MAX_DEVICES 4 // jumlah perangkat Anda #define CLK_PIN D5 // atau SCK #define DATA_PIN D7 // atau MOSI #define CS_PIN D4 // atau SS // Anda dapat mengaturnya ke sembarang pin #define HARDWARE_TYPE MD_MAX72XX::PAROLA_HW // ubah sesuai dengan jenis tampilan 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; // penundaan gulir default uint8_t INTENSITAS = 5; // intensitas default char curMessage[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_SHO_CHAR, S_NEXT_SHO_CHAR, S_NEXT_SHO_CHAR, S_NEXT_SHO_CHAR, S_NEXT_SHO_CHAR karakter statis *p; static uint16_t curLen, showLen; static uint8_t cBuf[8]; uint8_t colData = 0; switch (status) { case S_IDLE: p = curMessage; if (NewMessageAvailable) { strcpy(curMessage, newMessage); newMessageAvailable = salah; } status = S_NEXT_CHAR; merusak; kasus S_NEXT_CHAR: if (*p == '\0') status = S_IDLE; else { showLen = mx.getChar(*p++, sizeof(cBuf) / sizeof(cBuf[0]), cBuf); curLen = 0; status = S_SHOW_CHAR; } merusak; kasus S_SHOW_CHAR: colData = cBuf[curLen++]; if (curLen = SCROLL_DELAY) { mx.transform(MD_MAX72XX::TSL); // gulir bersama - panggilan balik akan memuat semua data prevTime = milis(); // titik awal untuk waktu berikutnya } } void setup() { Serial.begin(115200); mx.mulai(); mx.control(MD_MAX72XX::INTENSITAS, INTENSITAS); mx.setShiftDataInCallback(scrollDataSource); mx.setShiftDataOutCallback(scrollDataSink); curMessage[0] = newMessage[0] = '\0'; sprintf(curMessage, "Tampilan Pintar"); } void onConnectionEstablished() { // MQTT topik langganan untuk teks tampilan client.subscribe("leddisplay/text", (const String & payload) { sprintf(curMessage, payload.c_str()); });

// Topik berlangganan MQTT untuk kontrol intensitas tampilan

client.subscribe("leddisplay/intensity", (const String & payload) { mx.control(MD_MAX72XX::INTENSITY, payload.toInt()); }); // topik langganan MQTT untuk kontrol kecepatan gulir tampilan client.subscribe("leddisplay/scroll", (const String & payload) { SCROLL_DELAY = payload.toInt(); }); } void loop() { client.loop(); scrollTeks(); }

Untuk informasi detail, lihat repositori ini

github.com/souravj96/max7219-mqtt-esp8266

Langkah 4: Diagram Sirkuit

Diagram Sirkuit
Diagram Sirkuit

sambungkan layar MAX7219 dengan NODE MCU

Langkah 5: Unggah Kode ke Esp8266

Unggah Kode ke Esp8266
Unggah Kode ke Esp8266

sekarang pilih jenis papan dan port serial yang benar lalu tekan unggah.

Langkah 6: Uji Semuanya

jika semuanya berjalan dengan benar maka esp8266 Anda akan terhubung ke server MQTT Anda.

sekarang, jika ada yang akan dipublikasikan di leddisplay/topik teks yang akan ditampilkan.

{

topic: "leddisplay/text", payload: "pesan anda disini" }

jika Anda ingin mengatur intensitas tampilan

{

topik: "leddisplay/intensity", payload: "2" // maks adalah 15 dan min 0 }

jika Anda ingin mengatur kecepatan gulir tampilan

{

topik: "leddisplay/scroll", payload: "100" // maks adalah 255 dan min 0 }

Selamat mengkode

Direkomendasikan: