MAX7219 LED Matrix MQTT mitjançant Esp8266: 6 passos
MAX7219 LED Matrix MQTT mitjançant Esp8266: 6 passos
Anonim
MAX7219 LED Matrix MQTT mitjançant Esp8266
MAX7219 LED Matrix MQTT mitjançant Esp8266

Intentava connectar la pantalla LED MAX7219 a un servidor MQTT i rebre un text de la subscripció MQTT per mostrar.

però no vaig obtenir cap codi adequat a Internet, així que vaig començar a construir el meu propi …

i el resultat arriba força bé …

  • podeu mostrar qualsevol text a la pantalla LED
  • podeu ajustar la intensitat de la pantalla
  • podeu configurar la velocitat de desplaçament

Subministraments

  1. Una placa de desenvolupament esp8266. (el meu cas és NODE MCU v1.0)
  2. Pantalla LED de matriu MAX7219.

Programari necessari:

  1. IDE Arduino.
  2. Un servidor MQTT. (el meu cas Mosquitto)

Biblioteca obligatòria:

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

Pas 1: Configureu Arduino IDE per al desenvolupament Esp8266

Configureu Arduino IDE per al desenvolupament Esp8266
Configureu Arduino IDE per al desenvolupament Esp8266

obriu les preferències d'Arduino i, a continuació, enganxeu l'URL següent als URL del gestor de taules addicionals:

arduino.esp8266.com/stable/package_esp8266com_index.json

després Eines> Taulers> Gestor de taulers i cerqueu esp8266 i instal·leu-lo.

ara el vostre ide Arduino està preparat per al desenvolupament de l'esp8266.

Pas 2: baixeu biblioteques externes

ara necessitem algunes biblioteques per al client MAX7219 i MQTT.

descarregem i configurem les biblioteques

aneu a Sketch> Inclou biblioteca> Gestiona biblioteques a Arduino IDE

i cerqueu EspMQTTClient i feu clic a Instal·la

Nota: instal·leu totes les biblioteques dependents, és important

Torneu a buscar MD_MAX72xx i feu clic a Instal·la

Pas 3: escriviu ara algun codi

Ara enganxeu el codi següent

#incloure

#include #include #include "EspMQTTClient.h" #define MAX_DEVICES 4 // count your device #define CLK_PIN D5 // or SCK #define DATA_PIN D7 // or MOSI #define CS_PIN D4 // or SS // you can set it a qualsevol pin #define HARDWARE_TYPE MD_MAX72XX:: PAROLA_HW // canvia segons el tipus de pantalla 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; // retard de desplaçament per defecte uint8_t INTENSITAT = 5; // intensitat per defecte char curMessage [MESG_SIZE]; char newMessage [MESG_SIZE]; bool newMessageAvailable = fals; void scrollDataSink (uint8_t dev, MD_MAX72XX:: transformType_t t, uint8_t col) {} uint8_t scrollDataSource (uint8_t dev, MD_MAX72XX:: transformType_t t) {estat estàtic {S_IDLE, S_NEXT_CHAR, S_SHOW_ estàtic char * p; static uint16_t curLen, showLen; static uint8_t cBuf [8]; uint8_t colData = 0; commutador (estat) {cas S_IDLE: p = curMessage; if (newMessageAvailable) {strcpy (curMessage, newMessage); newMessageAvailable = false; } estat = S_NEXT_CHAR; trencar; cas S_NEXT_CHAR: if (* p == '\ 0') state = S_IDLE; else {showLen = mx.getChar (* p ++, sizeof (cBuf) / sizeof (cBuf [0]), cBuf); curLen = 0; estat = S_SHOW_CHAR; } trencar; cas S_SHOW_CHAR: colData = cBuf [curLen ++]; if (curLen = SCROLL_DELAY) {mx.transform (MD_MAX72XX:: TSL); // desplaçar-se: la devolució de trucada carregarà totes les dades prevTime = millis (); // punt de partida per a la propera vegada}} void setup () {Serial.begin (115200); mx.begin (); mx.control (MD_MAX72XX:: INTENSITAT, INTENSITAT); mx.setShiftDataInCallback (scrollDataSource); mx.setShiftDataOutCallback (scrollDataSink); curMessage [0] = newMessage [0] = '\ 0'; sprintf (curMessage, "Pantalla intel·ligent"); } void onConnectionEstablished () {// Tema de subscripció MQTT per al text de visualització client.subscribe ("leddisplay / text", (const String & payload) {sprintf (curMessage, payload.c_str ());});

// Tema de subscripció MQTT per al control de la intensitat de visualització

client.subscribe ("leddisplay / intensitat", (const String & payload) {mx.control (MD_MAX72XX:: INTENSITY, payload.toInt ());}); // Tema de subscripció a MQTT per a control de velocitat de desplaçament client.subscribe ("leddisplay / scroll", (const String & payload) {SCROLL_DELAY = payload.toInt ();}); } void loop () {client.loop (); scrollText (); }

Per obtenir informació detallada, consulteu aquest dipòsit

github.com/souravj96/max7219-mqtt-esp8266

Pas 4: Diagrama de circuits

Esquema de connexions
Esquema de connexions

connecteu la pantalla MAX7219 amb NODE MCU

Pas 5: pengeu el codi a Esp8266

Pengeu el codi a Esp8266
Pengeu el codi a Esp8266

ara trieu el tipus de placa i el port sèrie correctes i, a continuació, premeu Carrega.

Pas 6: proveu-ho tot

si tot va bé, el vostre esp8266 es connectarà al vostre servidor MQTT.

ara, si es publicarà alguna cosa sobre leddisplay / tema de text que es mostrarà.

{

topic: "leddisplay / text", payload: "el vostre missatge aquí"}

si voleu configurar la intensitat de visualització

{

tema: "leddisplay / intensitat", càrrega útil: "2" // màxim és 15 i mínim 0}

si voleu configurar la velocitat de desplaçament de la pantalla

{

tema: "leddisplay / scroll", càrrega útil: "100" // el màxim és de 255 i el mínim de 0}

Feliç codificació

Recomanat: