İçindekiler:

Esp8266 Kullanan MAX7219 LED Matrix MQTT: 6 Adım
Esp8266 Kullanan MAX7219 LED Matrix MQTT: 6 Adım

Video: Esp8266 Kullanan MAX7219 LED Matrix MQTT: 6 Adım

Video: Esp8266 Kullanan MAX7219 LED Matrix MQTT: 6 Adım
Video: fritzing nedir nasıl kullanılır nasıl kurulur ve olmayan devre elemanlarını nasıl ekleriz? 2024, Kasım
Anonim
Esp8266 Kullanan MAX7219 LED Matrix MQTT
Esp8266 Kullanan MAX7219 LED Matrix MQTT

MAX7219 LED ekranımı bir MQTT sunucusuna bağlamaya ve MQTT aboneliğinden görüntülenecek bir metin almaya çalışıyordum.

ama internette uygun bir kod bulamadım, bu yüzden kendi kodumu oluşturmaya başladım…

ve sonuç oldukça iyi geliyor…

  • led ekranda herhangi bir metni görüntüleyebilirsiniz
  • ekranın yoğunluğunu ayarlayabilirsiniz
  • kaydırma hızını ayarlayabilirsiniz

Gereçler

  1. Bir esp8266 geliştirme kartı. (benim durumum NODE MCU v1.0)
  2. MAX7219 LED Matris Ekranı.

Gerekli yazılım:

  1. Arduino IDE'si.
  2. Bir MQTT sunucusu. (benim durumum Sivrisinek)

Gerekli kitaplık:

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

Adım 1: Esp8266 Geliştirme için Arduino IDE'yi Kurun

Esp8266 Geliştirme için Arduino IDE Kurulumu
Esp8266 Geliştirme için Arduino IDE Kurulumu

Arduino'nun tercihlerini açın, ardından aşağıdaki URL'yi Ek Pano Yöneticisi URL'lerine yapıştırın:

arduino.esp8266.com/stable/package_esp8266com_index.json

ardından Araçlar > Panolar > Pano Yöneticisi ve esp8266'yı aratın ve yükleyin.

Artık Arduino ide'niz esp8266 geliştirmeye hazır.

2. Adım: Harici Kitaplıkları İndirin

şimdi MAX7219 ve MQTT Client için bazı kitaplıklara ihtiyacımız var.

kütüphaneleri indirip ayarlayalım

Sketch > Kitaplığı Dahil Et > Arduino IDE'deki Kitaplıkları Yönet'e gidin

ve EspMQTTClient'i arayın ve Yükle'ye tıklayın

Not: Tüm bağımlı kitaplıkları kurun, bu önemlidir

Tekrar MD_MAX72xx'i arayın ve Yükle'ye tıklayın.

Adım 3: Şimdi Bazı Kodlar Yazın

Şimdi aşağıdaki kodu yapıştırın

#Dahil etmek

#include #include #include "EspMQTTClient.h" #define MAX_DEVICES 4 // cihaz sayınız #define CLK_PIN D5 // veya SCK #define DATA_PIN D7 // veya MOSI #define CS_PIN D4 // veya SS // ayarlayabilirsiniz herhangi bir pin için #define HARDWARE_TYPE MD_MAX72XX::PAROLA_HW // ekran tipinize göre değiştirin 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; // varsayılan kaydırma gecikmesi uint8_t YOĞUNLUK = 5; // varsayılan yoğunluk char curMessage[MESG_SIZE]; char yeniMesaj[MESG_SIZE]; bool newMessageAvailable = false; void scrollDataSink(uint8_t dev, MD_MAX72XX::transformType_t t, uint8_t sütun) {} uint8_t scrollDataSource(uint8_t dev, MD_MAX72XX::transformType_t t) { statik numaralandırma { S_IDOWLE, S_NEXT_CHAR, SACE_SP_SHAR; statik karakter *p; statik uint16_t curLen, showLen; statik uint8_t cBuf[8]; uint8_t colData = 0; switch (durum) { case S_IDLE: p = curMessage; if (newMessageAvailable) { strcpy(curMessage, newMessage); newMessageAvailable = yanlış; } durum = S_NEXT_CHAR; kırmak; durum S_NEXT_CHAR: if (*p == '\0') durum = S_IDLE; else { showLen = mx.getChar(*p++, sizeof(cBuf) / sizeof(cBuf[0]), cBuf); curLen = 0; durum = S_SHOW_CHAR; } kırmak; durum S_SHOW_CHAR: colData = cBuf[curLen++]; if (curLen = SCROLL_DELAY) { mx.transform(MD_MAX72XX::TSL); // ilerleyin - geri arama tüm verileri yükleyecektir prevTime = millis(); // bir sonraki sefer için başlangıç noktası } } void setup() { Serial.begin(115200); mx.begin(); mx.control(MD_MAX72XX::YOĞUNLUK, YOĞUNLUK); mx.setShiftDataInCallback(scrollDataSource); mx.setShiftDataOutCallback(scrollDataSink); curMessage[0] = newMessage[0] = '\0'; sprintf(curMessage, "Akıllı Ekran"); } void onConnectionEstablished() { // Görüntüleme metni için MQTT abonelik konusu client.subscribe("leddisplay/text", (const String & payload) { sprintf(curMessage, payload.c_str()); });

// Ekran yoğunluğu kontrolü için MQTT abonelik konusu

client.subscribe("leddisplay/yoğunluk", (const String & payload) { mx.control(MD_MAX72XX::INTENSITY, payload.toInt()); }); // Ekran kaydırma hızı kontrolü için MQTT abonelik konusu client.subscribe("leddisplay/scroll", (const String & payload) { SCROLL_DELAY = payload.toInt(); }); } geçersiz döngü() { client.loop(); scrollText(); }

Ayrıntılı bilgi için bu depoya bakın

github.com/souravj96/max7219-mqtt-esp8266

Adım 4: Devre Şeması

Devre şeması
Devre şeması

MAX7219 ekranını NODE MCU ile bağlayın

Adım 5: Kodu Esp8266'ya Yükleyin

Kodu Esp8266'ya Yükle
Kodu Esp8266'ya Yükle

şimdi doğru pano tipinizi ve seri bağlantı noktanızı seçin ve ardından yüklemeye basın.

6. Adım: Her Şeyi Test Edin

her şey yolunda giderse, esp8266'nız MQTT sunucunuza bağlanacaktır.

şimdi, leddisplay/text üzerinde herhangi bir şey yayınlanacaksa görüntülenecek konu.

{

konu: "leddisplay/metin", yük: "mesajınız burada" }

ekran yoğunluğunu ayarlamak istiyorsanız

{

konu: "led ekran/yoğunluk", yük: "2" // maksimum 15 ve minimum 0 }

ekranın kaydırma hızını ayarlamak istiyorsanız

{

konu: "leddisplay/scroll", yük: "100" // max 255 ve min 0 }

mutlu kodlama

Önerilen: