Taula de continguts:

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

Vídeo: MAX7219 LED Matrix MQTT mitjançant Esp8266: 6 passos

Vídeo: MAX7219 LED Matrix MQTT mitjançant Esp8266: 6 passos
Vídeo: How to send sensor dat to thingspeak server using ESP and Arduino. 2024, Desembre
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: