Πίνακας περιεχομένων:

MAX7219 LED Matrix MQTT χρησιμοποιώντας Esp8266: 6 βήματα
MAX7219 LED Matrix MQTT χρησιμοποιώντας Esp8266: 6 βήματα

Βίντεο: MAX7219 LED Matrix MQTT χρησιμοποιώντας Esp8266: 6 βήματα

Βίντεο: MAX7219 LED Matrix MQTT χρησιμοποιώντας Esp8266: 6 βήματα
Βίντεο: Using HT16K33 4 digit seven segment display with ESP8266 NodeMCU and D1 Mini 2024, Νοέμβριος
Anonim
MAX7219 LED Matrix MQTT χρησιμοποιώντας Esp8266
MAX7219 LED Matrix MQTT χρησιμοποιώντας Esp8266

Προσπαθούσα να συνδέσω την οθόνη LED MAX7219 σε διακομιστή MQTT και να λάβω ένα κείμενο από τη συνδρομή MQTT προς εμφάνιση.

αλλά δεν έλαβα κατάλληλο κωδικό στο διαδίκτυο, οπότε άρχισα να φτιάχνω τον δικό μου…

και το αποτέλεσμα έρχεται πολύ καλά…

  • μπορείτε να εμφανίσετε οποιοδήποτε κείμενο στην οθόνη led
  • μπορείτε να ρυθμίσετε την ένταση της οθόνης
  • μπορείτε να ρυθμίσετε την ταχύτητα κύλισης

Προμήθειες

  1. Ένας πίνακας ανάπτυξης esp8266. (η περίπτωσή μου είναι NODE MCU v1.0)
  2. Οθόνη μήτρας MAX7219 LED.

Απαιτείται λογισμικό:

  1. Arduino IDE.
  2. Ένας διακομιστής MQTT. (η περίπτωση μου Mosquitto)

Απαιτείται βιβλιοθήκη:

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

Βήμα 1: Εγκατάσταση του Arduino IDE για ανάπτυξη Esp8266

Ρυθμίστε το Arduino IDE για ανάπτυξη Esp8266
Ρυθμίστε το Arduino IDE για ανάπτυξη Esp8266

ανοίξτε τις προτιμήσεις του Arduino και στη συνέχεια επικολλήστε την παρακάτω διεύθυνση URL στις διευθύνσεις διευθύνσεων πρόσθετων πινάκων:

arduino.esp8266.com/stable/package_esp8266com_index.json

στη συνέχεια Εργαλεία> Πίνακες> Διαχειριστής πινάκων και αναζητήστε το esp8266 και εγκαταστήστε το.

τώρα το Arduino ide είναι έτοιμο για ανάπτυξη esp8266.

Βήμα 2: Λήψη εξωτερικών βιβλιοθηκών

τώρα χρειαζόμαστε μερικές βιβλιοθήκες για MAX7219 και MQTT Client.

ας κατεβάσουμε και να δημιουργήσουμε τις βιβλιοθήκες

μεταβείτε στο Sketch> Include Library> Manage Libraries on Arduino IDE

και αναζητήστε το EspMQTTClient και κάντε κλικ στην Εγκατάσταση

Σημείωση: Εγκαταστήστε όλες τις εξαρτημένες βιβλιοθήκες, είναι σημαντικό

Αναζητήστε ξανά MD_MAX72xx και κάντε κλικ στην επιλογή Εγκατάσταση

Βήμα 3: Γράψτε λίγο κώδικα τώρα

Τώρα επικολλήστε τον παρακάτω κώδικα

#περιλαμβάνω

#include #include #include "EspMQTTClient.h" #define MAX_DEVICES 4 // ο αριθμός των συσκευών σας #define CLK_PIN D5 // ή SCK #define DATA_PIN D7 // ή MOSI #define CS_PIN D4 // ή SS // μπορείτε να το ορίσετε σε οποιαδήποτε καρφίτσα #ορίστε HARDWARE_TYPE MD_MAX72XX:: PAROLA_HW // αλλάξτε ανάλογα με τον τύπο οθόνης σας 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; // προεπιλεγμένη καθυστέρηση κύλισης uint8_t ΕΝΤΑΣΗ = 5; // προεπιλεγμένη ένταση char curMessage [MESG_SIZE]; char newMessage [MESG_SIZE]; bool newMessageAvailable = false; 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_CHOW, S_NEXT_CHAR, στατικό char *p; στατικό uint16_t curLen, showLen; στατικό uint8_t cBuf [8]; uint8_t colData = 0; switch (κατάσταση) {case S_IDLE: p = curMessage; if (newMessageAvailable) {strcpy (curMessage, newMessage); newMessageAvailable = false; } κατάσταση = S_NEXT_CHAR; Διακοπή; περίπτωση S_NEXT_CHAR: εάν (*p == '\ 0') κατάσταση = S_IDLE; else {showLen = mx.getChar (*p ++, sizeof (cBuf) / sizeof (cBuf [0]), cBuf); curLen = 0; κατάσταση = S_SHOW_CHAR; } Διακοπή; θήκη S_SHOW_CHAR: colData = cBuf [curLen ++]; if (curLen = SCROLL_DELAY) {mx.transform (MD_MAX72XX:: TSL); // κύλιση κατά μήκος - η επανάκληση θα φορτώσει όλα τα δεδομένα prevTime = millis (); // σημείο εκκίνησης για την επόμενη φορά}} void setup () {Serial.begin (115200); mx.begin (); mx.control (MD_MAX72XX:: ΕΝΤΑΣΗ, ΕΝΤΑΣΗ); mx.setShiftDataInCallback (scrollDataSource); mx.setShiftDataOutCallback (scrollDataSink); curMessage [0] = newMessage [0] = '\ 0'; sprintf (curMessage, "Έξυπνη οθόνη"); } void onConnectionEstablished () {// Θέμα συνδρομής MQTT για πελάτη κειμένου εμφάνισης.subscribe ("leddisplay/text", (const String & payload) {sprintf (curMessage, payload.c_str ());});

// Θέμα συνδρομής MQTT για έλεγχο έντασης οθόνης

client.subscribe ("leddisplay/intensity", (const String & payload) {mx.control (MD_MAX72XX:: INTENSITY, payload.toInt ());}); // Θέμα συνδρομής MQTT για οθόνη ελέγχου κύλισης ταχύτητας κύλισης client.subscribe ("leddisplay/scroll", (const String & payload) {SCROLL_DELAY = payload.toInt ();}); } void loop () {client.loop (); scrollText (); }

Για λεπτομερείς πληροφορίες, ανατρέξτε σε αυτό το αποθετήριο

github.com/souravj96/max7219-mqtt-esp8266

Βήμα 4: Διάγραμμα κυκλώματος

Διάγραμμα κυκλώματος
Διάγραμμα κυκλώματος

συνδέστε την οθόνη MAX7219 με το NODE MCU

Βήμα 5: Μεταφόρτωση κωδικού στο Esp8266

Μεταφόρτωση κωδικού στο Esp8266
Μεταφόρτωση κωδικού στο Esp8266

τώρα επιλέξτε τον σωστό τύπο πίνακα και σειριακή θύρα και πατήστε upload.

Βήμα 6: Δοκιμάστε τα πάντα

αν όλα πάνε σωστά τότε το esp8266 θα είναι συνδεδεμένο στον διακομιστή MQTT.

τώρα, αν κάτι θα δημοσιευτεί στο θέμα leddisplay/text που θα εμφανιστεί.

{

θέμα: "leddisplay/text", ωφέλιμο φορτίο: "το μήνυμά σας εδώ"}

εάν θέλετε να ρυθμίσετε την ένταση της οθόνης

{

θέμα: "προβολή/ένταση", ωφέλιμο φορτίο: "2" // max είναι 15 και min 0}

εάν θέλετε να ρυθμίσετε την ταχύτητα κύλισης της οθόνης

{

θέμα: "leddisplay/scroll", ωφέλιμο φορτίο: "100" // max είναι 255 και min 0}

Καλή κωδικοποίηση

Συνιστάται: