Inhaltsverzeichnis:

4 Projekte in 1 mit DFRobot FireBeetle ESP32 & LED-Matrix-Abdeckung - Gunook
4 Projekte in 1 mit DFRobot FireBeetle ESP32 & LED-Matrix-Abdeckung - Gunook

Video: 4 Projekte in 1 mit DFRobot FireBeetle ESP32 & LED-Matrix-Abdeckung - Gunook

Video: 4 Projekte in 1 mit DFRobot FireBeetle ESP32 & LED-Matrix-Abdeckung - Gunook
Video: FireBeetle 2 ESP32 S3 WROOM-1 getting started tutorial 2024, Juli
Anonim
Image
Image
Installieren Sie gemeinsame Bibliotheken für die Projekte
Installieren Sie gemeinsame Bibliotheken für die Projekte

Ich dachte darüber nach, für jedes dieser Projekte eine Anleitung zu machen - aber am Ende entschied ich, dass der größte Unterschied die Software für jedes Projekt ist. Ich dachte, es wäre besser, nur eine große Anleitung zu machen!

Die Hardware ist für jedes Projekt gleich und wir verwenden die Arduino IDE, um das ESP32-Gerät zu programmieren.

Was ist also die Hardware: Die gesamte Hardware wurde von meinen Freunden bei DFRobot zur Verfügung gestellt, sie haben sehr gute Tutorials und dafür einfach zu installierende Kernplatinen. Haben Sie auch ein gutes Support-System und einen ziemlich schnellen Versand in die USA.

Die vollständige Offenlegung des Firebeetle ESP32-Boards und der LED-Matrix wurden von DF Robot bereitgestellt, die vorgestellten Projekte und in den Videos sind meine eigenen.

Diese Projekte verwenden alle einen DFRobot FireBeetle ESP32 IOT MicroController

www.dfrobot.com/product-1590.html

Das Support-Wiki - mit Installationsanleitung für den Board-Core finden Sie hier:

www.dfrobot.com/wiki/index.php/FireBeetle_…

Wir brauchen auch eine FireBeetle Covers 24x8 LED Matrix (BLAU)

www.dfrobot.com/product-1595.html

Ich mag keine BLAUE LEDs - Sie haben auch verschiedene Farben.

GRÜN -

ROT -

WEISS -

GELB -

Sie benötigen nur eine LED-Matrix - die Farbe ist Ihre Wahl, sie funktionieren alle gleich.

Das Support-Wiki für LED Matrix finden Sie hier:

www.dfrobot.com/wiki/index.php/FireBeetle_…

Hier finden wir einen Link zur Arduino Library.

github.com/Chocho2017/FireBeetleLEDMatrix

Mehr dazu etwas später….

Etwas, das optional, aber vielleicht praktisch ist, ist ein MicroUSB 3xAA-Batteriehalter.

www.dfrobot.com/product-1130.html

Das ist die benötigte Hardware - Was sind die 4 Projekte -

Schritt 1: Die Projekte

Image
Image

Projekt 1: Ist eine einfache LED-Matrix-NTP-Uhr mit entweder Militärzeitanzeige oder AMPM-Zeitanzeige, Diese Uhr stellt eine Verbindung zu einem NTP (Zeitserver) her, erfasst die Zeit und wendet einen Offset an, damit Sie die lokale Zeit erhalten. Es zeigt die Zeit auf der LED-Matrix an. - Es ist eine sehr einfache Uhr und ein sehr einfaches 1. Projekt.

Projekt 2: ISS Pass Prediction Display, dieses Projekt verwendet den 2. Kern des Prozessors. Es zeigt an, wie nah (in Meilen) die ISS ist, wann der nächste ISS-Pass an Ihrem Standort zu erwarten ist (in UTC-Zeit) und optional wie viele Personen sich im Weltraum befinden. Da sich viele dieser Informationen nicht oft ändern, verwenden wir den 2. Kern, um nur alle 15 Minuten nach Aktualisierungen der Passvorhersagen oder der Anzahl der Personen im Weltraum zu suchen. Auf diese Weise können wir zu viele API-Aufrufe an den Server verhindern. Dieses Projekt ist etwas komplizierter, aber immer noch ziemlich einfach zu machen.

Projekt 3: Ein einfaches bewegliches Nachrichtenzeichen mit MQTT, ich habe ein Projekt erneut besucht, das für das ESP8266 D1-Miniboard erstellt wurde, und es ist eine 8x8-LED-Matrix - Die Idee ist, eine Verbindung zu einem MQTT-Broker herzustellen, eine Nachricht an ein Thema zu senden, das das Gerät ist anhören - und diese Nachricht anzeigen. Es ist ziemlich einfach und sehr einfach zu tun, sobald alles eingerichtet ist. Und es sind nur wenige Schritte erforderlich, um die MQTT-Client-Software auf einem Desktop-Computer einzurichten. Nach der Einrichtung ist MQTT ein sehr leistungsfähiges Messaging-Protokoll, das von vielen IoT-Geräten zum Senden und Empfangen von Nachrichten verwendet wird.

Projekt 4: Wetterstationsanzeige - basierend auf der ESP8266 D1 Mini-Wetterstation von Squix78 und ThingPulse. Wir holen unsere Daten von Wunderground und zeigen die aktuellen Bedingungen und die Temperatur in Grad Fahrenheit an. Wir verwenden den 2. Kern des ESP32, um unsere Daten alle 10 Minuten zu aktualisieren. Es ist auch einfach einzurichten.

BOUNS MINI-BEISPIELE: Die Bibliothek (und die Skizzen oben) verwenden eine 8x4-Schriftart, die Bibliothek enthält auch eine 5x4-Schriftart, die ich für die meisten dieser BOUNS-Mini-Beispiele verwendet habe. Es gibt ein paar Probleme, die ich mit der kleinen Schrift feststellen kann, eines scheint es Probleme zu geben, wenn Sie das WIFI des Geräts verwenden. Dies ist etwas, was ich mehr erkunden möchte, aber ich hatte die Zeit. Das andere Problem ist, dass es nicht scrollt, sondern nur die größere Schriftart kann scrollen. Keines dieser Beispiele verwendet also das WIFI - sie aktualisieren nur das Display, und mehr dazu später.

Lass uns anfangen…..

Schritt 2: Installieren Sie das DFRobot FireBeetle ESP32 Board in der Arduino IDE

Daher verweise ich Sie auf das DF Robot Wiki zur Installation des Platinenkerns für die Arduino IDE.

Mit der modernen IDE (1.8.x oder besser) ist das ziemlich einfach.

www.dfrobot.com/wiki/index.php/FireBeetle_…

Ich habe festgestellt, dass die in die Arduino IDE integrierte WiFi-Bibliothek Probleme verursacht (PS jede andere WiFi-Bibliothek, die möglicherweise in Ihrem Bibliotheksverzeichnis installiert ist, kann Probleme verursachen oder nicht). Der einzige (oder zumindest einfachste) Weg, das Problem zu lösen, besteht darin, die WiFi-Bibliothek aus dem IDE-Verzeichnis zu entfernen. Leider gibt es keine gute Möglichkeit, Ihnen zu sagen, wo es möglicherweise installiert ist - es hängt davon ab, wie die IDE installiert ist und welches Betriebssystem Sie verwenden.

Was ich getan habe, ist die WiFi-Bibliothek zu finden, die Probleme verursacht, und einfach das Verzeichnis WiFi-Verzeichnis auf Ihren Desktop verschoben … und die IDE neu starten. Auf diese Weise können Sie die Bibliothek behalten, falls Sie sie für die Arduino WIFI-Boards benötigen.

90% der Probleme, die ich gesehen habe, beziehen sich auf das obige Problem. Wenn Sie viele Kompilierungsfehler im Zusammenhang mit der Verwendung von WiFi aus dem Arduino IDE-Verzeichnis oder dem Arduino Library-Verzeichnis erhalten, ist dies das Problem, das Sie haben.

Mein zweites Problem ist manchmal, dass das Hochladen der Skizze fehlschlägt - In diesem Fall muss ich nur noch einmal auf die Schaltfläche zum Hochladen klicken und es funktioniert.

Und schließlich, wenn Sie die serielle Konsole öffnen und dann schließen - der FireBeetle friert ein.

Ich weiß, dass DF Robot aktiv am Board-Core arbeitet, und gerade in der kurzen Zeit, in der ich das Board habe, haben sie einen neuen Core veröffentlicht. Leider hat es das WiFi-Problem, das mein größtes Problem ist, nicht gelöst.

* Espressif hat einen 'generischen' Core-Manager, der installiert werden kann, der Core enthält das FireBeetle ESP32-Board, aber ich hatte ein Problem mit der Nummerierung der Pins. Das Interessante hier ist, dass die WiFi-Bibliothek mit der integrierten WiFi-Bibliothek zusammenarbeitet - ich weiß also, dass es gleich um die Ecke eine Lösung für dieses Problem gibt.

Wenn Sie die Espressif-Kerne ausprobieren möchten, finden Sie hier weitere Informationen:

github.com/espressif/arduino-esp32

Ich persönlich mag die Funktionsweise des DF-Robot-Kerns, selbst mit den wenigen Problemen, die ich habe.

** HINWEIS: Ich verwende LinuxMint 18, das auf Ubuntu 16.04 basiert. Ich glaube, ich habe dies auf keinem anderen Computer ausprobiert, aber ich glaube, dass das Problem für alle Betriebssysteme vorhanden ist, basierend auf einigen Internetsuchen, die ich durchgeführt habe. **

Schritt 3: Installieren Sie gemeinsame Bibliotheken für die Projekte

Installieren Sie allgemeine Bibliotheken für die Projekte
Installieren Sie allgemeine Bibliotheken für die Projekte

Alle diese Projekte verwenden einige gängige Bibliotheken, daher ist es jetzt einfacher, diesen Schritt durchzuführen.

Je nach Bibliothek finden Sie diese im Bibliotheksmanager - was bei weitem der einfachste Weg ist, eine Bibliothek zu installieren.

Eine andere gängige Methode ist die Installation über eine Zip-Datei, die ebenfalls funktioniert. Aber im Allgemeinen verwende ich die manuelle Installationsmethode. Auf der Arduino-Website gibt es ein gutes Tutorial zu den drei Methoden.

www.arduino.cc/en/guide/libraries

Für diese Bibliotheken würde ich die manuelle Methode empfehlen - da es einige verschiedene Bibliotheken mit demselben Namen gibt, kann es sein, dass Sie mit dem Bibliotheksmanager die falsche erhalten.

Alle diese Projekte verwenden einen WiFi-Manager, um die Verbindung zu Ihrem WLAN zu vereinfachen. Ich habe mich dafür entschieden, damit Sie das Board nicht neu programmieren müssen, wenn Sie Ihr Projekt verschieben müssen. Dies ist etwas, das ich für die ESP8266-Boards verwende, und es funktioniert gut - es ist nicht perfekt. Zum Glück wurde die Bibliothek von einem Github-Benutzer namens bbx10 für die Verwendung des ESP32 portiert. (Dieser Manager sollte auch mit den ESP8266-Boards funktionieren)

Auch hierfür müssen wir drei Bibliotheken installieren.

Der WiFiManager -

Der Webserver -

Und schließlich der DNSServer -

Allen Skizzen gemeinsam ist auch die Bibliothek DF Robot DFRobot_HT1632C für die LED-Matrix.

www.dfrobot.com/wiki/index.php/FireBeetle_…

Die Bibliothek finden Sie hier (Auch hier würde ich die manuelle Installationsmethode empfehlen)

github.com/Chocho2017/FireBeetleLEDMatrix

Ein besonderer Hinweis: In meinem Github-Repository habe ich ein paar leicht modifizierte DFRobot_HT1632C-Bibliotheken

github.com/kd8bxp/DFRobot-FireBeetle-ESP32…

Die Modifikation ist für eine kleinere Schriftart und wird nur für einige der Bonusbeispiele verwendet. Sie können die geänderte Bibliothek verwenden und es sollte keine Probleme verursachen. Es gibt auch eine leicht modifizierte Bibliothek (einige der Skizzen als Registerkarten angehängt), die Bitmap-Bilder erstellen kann.

Wenn Sie sich für die leicht modifizierte Version entscheiden, müssen Sie das Verzeichnis "modified-library" in FireBeetleLEDMatrix umbenennen und diesen Ordner in Ihr Arduino-Bibliotheksverzeichnis verschieben. Sie müssen diese Version für diese Projekte nicht verwenden, sie wird benötigt, wenn Sie einige der kleineren Schriftarten aus den Bonusbeispielen ausprobieren möchten.

Dies sind die üblichen Bibliotheken - wir werden für jedes Projekt einige spezielle Bibliotheken installieren.

Kommen wir zur LED-Matrix….

Schritt 4: Die 24x8 LED-Matrix-Abdeckung

Die 24x8 LED-Matrix-Abdeckung
Die 24x8 LED-Matrix-Abdeckung
Die 24x8 LED-Matrix-Abdeckung
Die 24x8 LED-Matrix-Abdeckung
Die 24x8 LED-Matrix-Abdeckung
Die 24x8 LED-Matrix-Abdeckung

Für Wir folgen zusammen mit dem DF-Roboter-Tutorial für die LED-Matrix

www.dfrobot.com/wiki/index.php/FireBeetle_…

Einführung: Dieses 24×8 LED-Matrix-Display wurde speziell für die FireBeetle-Serie entwickelt. Es unterstützt den Energiesparmodus und das Scroll-Display. Mit dem Hochleistungs-LED-Treiberchip HT1632C verfügt jede LED über ein unabhängiges Register, das die separate Ansteuerung erleichtert. Es integriert einen 256-kHz-RC-Takt, nur 5uA im Energiesparmodus, unterstützt 16-stufige PWM-Helligkeitsanpassung. Dieses Produkt funktioniert auch mit anderen Arduino-Mikrocontrollern wie Arduino UNO.

Spezifikation:

  • Betriebsspannung: 3.3~5VLED
  • Farbe: Einfarbig (Weiß/Blau/Gelb/Rot/Grün)
  • Laufwerkschip: HT1632C
  • Arbeitsstrom: 6~100mA
  • Geringer Stromverbrauch: 5uARC
  • Takt: 256KHz
  • Chipauswahl (CS): D2, D3, D4, D5 wählbar
  • Unterstützt Scrolling-Display

Standard-PINs:

  1. DATAD6
  2. WRD7 (im Allgemeinen nicht verwendet)
  3. CSD2, D3, D4, D5 wählbar (D2 Standard)
  4. RDD8
  5. VCC 5VUSB; 3.7VLipo-Batterie

(Alle diese Projekte verwenden D2 für den Select-Pin, dies kann bei Bedarf leicht geändert werden.)

Auf der Rückseite der LED-Matrix sehen Sie 4 kleine Schalter, stellen Sie sicher, dass Sie nur einen der CS-Pins auswählen. Mit diesen kleinen Schaltern wählen Sie Ihren CS-Pin aus, und die Standardeinstellung ist D2.

Das DF Robot WIKI enthält einige Beispielcodes, dieser Code ist auch in den Beispielen für die Bibliothek enthalten. (Ich glaube)

Noch ein Hinweis: Verwenden Sie die Dx-Nummern für Ihre Pins - andernfalls sind die Pin-Nummern die IO-Pin-Nummern / -Namen

Und das kann Ihnen einige Probleme bereiten.

Einen Punkt setzen:

X ist 0 bis 23 (oder wenn Sie es sich als Tabellenkalkulation vorstellen, sind dies Spalten).

Y ist 0 bis 7 (oder wenn Sie es als Tabellenkalkulation betrachten, sind dies Zeilen).

Die Bibliothek bietet eine Sollwertfunktion.

display.setPoint(x, y) Dadurch wird der Cursor an die Stelle gesetzt, an der Sie jetzt eine Nachricht drucken können.

display.print("Hallo Welt", 40); // Dadurch wird auf dem Display "Hello World" angezeigt, beginnend am x-, y-Punkt und beim Scrollen vom Bildschirm.

Es gibt auch setPixel(x, y) und clrPixel(x, y) - setPixel schaltet eine LED an der x, y-Position ein und clrPixel schaltet eine LED an der x, y-Position aus.

Es gibt noch einige andere Dinge, die diese Bibliothek tun kann - und die meisten sind in den Beispielen enthalten.

(Ich würde empfehlen, die Beispiele auszuführen und zu ändern, um zu sehen, was sie tun können).

* Eine Sache, die zu fehlen scheint, ist das Zeichnen von Bitmaps - die Bibliothek kann dies tatsächlich tun, aber aus irgendeinem Grund ist es eine private Funktion der Bibliothek. Sehen Sie sich einige meiner Bonusbeispiele für eine leicht modifizierte Version der Bibliothek an

** Eine andere Sache enthält einen 5x4-Schriftsatz, was schön ist, eine kleinere Schriftart zu haben - sie ist jedoch in der Bibliothek auskommentiert. Ich habe es entkommentiert und es funktioniert, aber ich habe ein paar Probleme damit festgestellt - das größte scrollt nicht. Und mir ist aufgefallen, dass es anscheinend Probleme mit dem WLAN oder einer anderen Bibliothek gibt, die ich verwenden wollte.

Eine der modifizierten Bibliotheken, die ich einfüge, verwendet jedoch die 5x4-Schriftart.

Kommen wir zu den Projekten…..

Schritt 5: Projekt 1: Eine einfache LED-Matrix-NTP-Uhr mit entweder militärischer Zeitanzeige oder AMPM-Anzeige

Projekt 1: eine einfache LED-Matrix-NTP-Uhr mit Militärzeitanzeige oder AMPM-Anzeige
Projekt 1: eine einfache LED-Matrix-NTP-Uhr mit Militärzeitanzeige oder AMPM-Anzeige
Projekt 1: eine einfache LED-Matrix-NTP-Uhr mit Militärzeitanzeige oder AMPM-Anzeige
Projekt 1: eine einfache LED-Matrix-NTP-Uhr mit Militärzeitanzeige oder AMPM-Anzeige
Projekt 1: eine einfache LED-Matrix-NTP-Uhr mit Militärzeitanzeige oder AMPM-Anzeige
Projekt 1: eine einfache LED-Matrix-NTP-Uhr mit Militärzeitanzeige oder AMPM-Anzeige

Projekt 1: Ist eine einfache LED-Matrix-NTP-Uhr mit entweder Militärzeitanzeige oder AMPM-Zeitanzeige, Diese Uhr stellt eine Verbindung zu einem NTP (Zeitserver) her, erfasst die Zeit und wendet einen Offset an, damit Sie die lokale Zeit erhalten. Es zeigt die Zeit auf der LED-Matrix an. - Es ist eine sehr einfache Uhr und ein sehr einfaches 1. Projekt.

Bevor wir mit diesem einfachen Projekt beginnen, ist es möglicherweise eine gute Idee zu wissen, was NTP ist -

NTP ist ein Internetprotokoll, das verwendet wird, um die Uhren von Computern mit einer Zeitreferenz zu synchronisieren. Es ist ein Standardprotokoll. NTP steht für Network Time Protocol.

NTP verwendet UTC als Referenzzeit (UTC ist die koordinierte Weltzeit), es hat sich aus der GMT (Greenwich Mean Time) entwickelt und wird in einigen Kreisen als Zulu-Zeit (Militärzeit) bezeichnet. UTC basiert auf einer Quantenresonanz eines Cäsiumatoms.

NTP ist fehlertolerant und hoch skalierbar, das Protokoll ist hochpräzise und verwendet eine Auflösung von weniger als einer Nanosekunde.

*

Eine UTC-Uhr nützt den meisten Menschen nicht viel, daher müssen wir unsere Uhr an die Ortszeit anpassen. Zum Glück können wir das ziemlich einfach machen. Beginnen wir also mit dieser einfachen NTP-Uhr….

Zuerst müssen wir eine Bibliothek installieren, die die Kommunikation mit den NTP-Servern erleichtert.

github.com/arduino-libraries/NTPClient (diese Bibliothek befindet sich wahrscheinlich im Bibliotheksmanager)

Haben Sie Schritt 3 übersprungen - und sind sich nicht sicher, wie Sie Bibliotheken installieren sollen (?) Gehen Sie besser zurück und lesen Sie Schritt 3:-)

Sie müssen auf diese Website gehen und die nächstgelegene Stadt in Ihrer Zeitzone eingeben.

www.epochconverter.com/timezones

Wenn Sie die Eingabetaste drücken, sehen Sie "Umrechnungsergebnisse" und in den Ergebnissen erhalten Sie Ihren Offset (Differenz zu GMT/UTC) in Sekunden (bei mir ist das -14400).

In der Skizze dfrobot_firebeetle_led_matrix_ntp_clock in Zeile 66 sehen Sie:

#define TIMEOFFSET -14400 //Finden Sie Ihre Zeitzone hier https://www.epochconverter.com/timezones OFF Set in Sekunden#define AMPM 1 //1 = AM PM Zeit, 0 = MILITARY/24 HR Time

Ersetzen Sie -14400 durch Ihren Offset. In der nächsten Zeile sehen Sie AMPM 1 - dies bewirkt, dass die Uhr die Zeit in AM/PM anzeigt.

Laden Sie anschließend die Skizze auf Ihr Board hoch, verbinden Sie sich mit dem Access Point (WLAN-Manager) und geben Sie die Details für Ihr WLAN ein. Wenn Sie dies bereits getan haben, sollten Sie "Verbunden" über den Bildschirm scrollen sehen und einige Sekunden später sollten Sie die Uhrzeit sehen.

Das war's für dieses Projekt - einfach und leicht zu bedienen…..

(Mögliche Verbesserungen: Zeigen Sie Monat, Tag und Jahr an, richten Sie einen Summer und Alarme ein - steuern Sie im Allgemeinen, was Sie über eine Webseite sehen. Diese Idee würde eine große Umschreibung der aktuellen einfachen Skizze erfordern.)

Bereit für ein weiteres einfaches Projekt - Zeigen Sie an, wo sich die ISS befindet - Passen Sie Vorhersagen an und wie viele Menschen sich im Weltraum befinden! (PS diese Skizze verwendet eine Webseite, um zu steuern, was angezeigt wird) …..

Schritt 6: Projekt 2: ISS-Pass-Vorhersageanzeige,

Projekt 2: Anzeige der ISS-Passvorhersage,
Projekt 2: Anzeige der ISS-Passvorhersage,
Projekt 2: Anzeige der ISS-Passvorhersage,
Projekt 2: Anzeige der ISS-Passvorhersage,
Projekt 2: Anzeige der ISS-Passvorhersage,
Projekt 2: Anzeige der ISS-Passvorhersage,

Projekt 2: ISS Pass Prediction Display, dieses Projekt verwendet den 2. Kern des Prozessors. Es zeigt an, wie nah (in Meilen) die ISS ist, wann der nächste ISS-Pass an Ihrem Standort zu erwarten ist (in UTC-Zeit) und optional wie viele Personen sich im Weltraum befinden. Da sich viele dieser Informationen nicht oft ändern, verwenden wir den 2. Auf diese Weise können wir zu viele API-Aufrufe an den Server verhindern. Dieses Projekt ist etwas komplizierter, aber immer noch ziemlich einfach zu machen.

Dieses Projekt basiert auf einem meiner früheren Projekte, das hier zu finden ist:

(Ein einfaches ISS-Benachrichtigungssystem) Dabei habe ich einen ESP8266 mit einem integrierten OLED-Bildschirm (D-Duino) verwendet. Zum größten Teil verwendet dieses Projekt nur ein anderes Anzeigesystem, das ich erweitert habe, damit Sie über eine Webseite im Handumdrehen ändern können, was Sie sehen möchten. Also lasst uns anfangen….

Der größte Teil des Lobes für die Benutzerfreundlichkeit geht an https://open-notify.org, das eine sehr einfache und benutzerfreundliche API hat. Die Open-Notify-API hat drei Dinge, die angezeigt werden können, den Standort der ISS in Breiten- und Längengrad, Passvorhersagen basierend auf einem bestimmten Breiten- und Längengrad. Und schließlich, wie viele Menschen (und ihre Namen) sich im Weltraum befinden.

Wir müssen eine andere Bibliothek installieren - die ArduinoJson-Bibliothek.

github.com/bblanchon/ArduinoJson

Wir brauchen auch TimeLib.h, aber ich bin mir nicht sicher, woher ich das habe oder ob es in der IDE enthalten ist (sorry)….

Warum also vorhersagen, wo die ISS sein wird - Die ISS enthält verschiedene Amateurfunkgeräte, und wenn sie "über Kopf" ist, kann ein Amateurfunker mit einigen sehr einfachen (und billigen) Funkgeräten Kontakt mit der ISS aufnehmen. Ich habe es sogar mobil gemacht (Autofahren). Sie brauchen wirklich nicht viel, damit das funktioniert. Das Einzige, was Sie brauchen, ist zu wissen, wo es ist. Und das Ausrichten der Antenne in ihre allgemeine Richtung hilft.

Zeile 57, 58, 59 sind einige Anzeigevariablen - wenn sie auf 1 gesetzt sind, sehen Sie eine Anzeige, wenn sie auf 0 (Null) gesetzt sind, sehen Sie keine Anzeige. (Diese Variablen können in der Skizze festgelegt oder von einer Webseite aktualisiert werden, die der Firebeetle erstellt - dazu später mehr).

int locDis = 1; // Position von ISSint anzeigen passDis = 0; // Passvorhersagen anzeigen int pplDis = 1; //Menschen im Weltraum anzeigen

locDis zeigt also den Standort der ISS in Breiten- und Längengrad an - es zeigt auch an, wie viele Meilen sie entfernt ist.

pasDis holt sich die Passvorhersagen von open-notify.org und zeigt sie an.

und schließlich zeigt pplDis die Namen an und wie viele Personen sich im Weltraum befinden - das kann sehr lang werden, tut es nicht

auch oft wechseln. (Sie können diese ändern oder belassen, es ist völlig optional)

Wir müssen auch unseren Breiten- und Längengrad kennen und in die Skizze einfügen.

Dies muss keine genaue Breite/Länge sein, es kann das Zentrum Ihrer Stadt sein oder nur ein wenig entfernt. Der Fußabdruck der ISS ist breit, während sie sich über dem Kopf befindet, und es können Hunderte (oder Tausende) von Meilen zurückgelegt werden., Kommunikation über 500 Meilen ist ziemlich üblich.

Wenn Sie Ihren Breiten- und Längengrad nicht kennen, kann Ihnen diese Website weiterhelfen.

www.latlong.net In der Nähe von Zeile 84 der Skizze sehen Sie etwa Folgendes:

//Finden Sie hier Ihren Breiten- und Längengrad//https://www.latlong.net/ float mylat = 39.360095; Float-Mylon = -84,58558;

Das sollte alles sein, was geändert werden muss. Laden Sie die Skizze hoch und verbinden Sie den Firebeetle mit dem Internet - und Sie sollten sehen, wo sich die ISS in Breitengrad/Längen befindet und wie viele Meilen sie entfernt ist (denken Sie daran, dass dies eine ungefähre Entfernung ist. Die ISS bewegt sich sehr schnell und bis die Anzeige fertig ist, hat sich die ISS viele Meilen von ihrem Standort entfernt). Sie sollten auch die Menschen im Weltraum sehen. (WENN Sie die Variable oben nicht geändert haben).

Wir verwenden den zweiten Kern des ESP32, um eine Website zu betreiben. Die Verwendung der Website gibt uns die Kontrolle darüber, was auf der LED-Matrix angezeigt wird. Es sollte ziemlich intuitiv sein, wie es funktioniert, ein Abschnitt zeigt an, was für die Anzeige aktiviert ist, ein anderer Abschnitt hat "Ja" "Nein"-Schaltflächen - auf "Ja" geklickt bedeutet, dass Sie es sehen möchten, "Nein" bedeutet "Nein" t zeigen es. Sie sollten auch sehen, dass sich der obere Abschnitt basierend auf den Schaltflächen ändert.

Das einzige, was hier nicht so kurz und bündig ist, ist, wie man die IP-Adresse des Firebeetle findet - leider konnte ich sie nicht gut finden - also habe ich einfach die serielle Konsole der IDE zur Anzeige verwendet es (9600 Baud).

Öffnen Sie die Konsole, und Sie sollten die IP-Adresse sehen. (öffnen Sie es, bevor Sie die verbundene Nachricht erhalten) - meine andere Wahl war, es direkt beim Start auf der LED-Matrix anzuzeigen - ich habe mich dagegen entschieden, weil Sie möglicherweise nicht auf die Zeit schauen und sie verpassen werden. Ich hatte überlegt, eine SMS zu senden oder so, aber am Ende halte ich es einfach. (Ich habe auch versucht, eine statische IP/Gateway/usw. zuzuweisen, ich konnte es mit dem WLAN-Manager nicht richtig zum Laufen bringen - der Code ist noch in der Skizze, also lass es mich wissen, wenn es jemand herausfindet)

Die Skizze nimmt auch den FreeRTOS-Build in den ESP32-Kern vor. Wir haben eine Aufgabe, die alle 15 Minuten oder so ausgeführt wird. Dadurch werden die Passvorhersagen sowie die Personen im Weltraum aktualisiert. Wie ich bereits sagte, ändern sich die Menschen im Weltraum nicht so sehr, also könnte das wahrscheinlich auf eine andere Aufgabe verschoben und vielleicht alle 12 Stunden (oder 6 Stunden) ausgeführt werden - aber das funktioniert und hält die Dinge einfach.

Für diejenigen, die FreeRTOS nicht kennen, ist es eine Möglichkeit, einen Single-Core-Mikrocontroller mehrere Aufgaben ausführen zu lassen

Normalerweise müssen Sie einige Bibliotheken und andere Dinge einbinden, damit es funktioniert - aber es ist in den Kern des ESP32 integriert - was den ESP32 zu einem sehr leistungsstarken Gerät macht. für weitere Informationen zu FreeRTOS

freertos.org/

VERBESSERUNGEN: Es gibt eine Reihe von Dingen, die für dieses Projekt verbessert werden können, und fast jeden Tag fällt mir etwas ein, das ein wenig anders gemacht, geändert oder hinzugefügt werden könnte.

Und im Verzeichnis Weitere Beispiele des Repositorys können Sie einige der früheren/anderen Dinge sehen, über die ich nachgedacht habe - einige davon haben nicht funktioniert, einige haben sich nur geändert und einige waren in der aktuellen Skizze enthalten.

* Irgendwann habe ich versucht, dem Display ein Neopixel hinzuzufügen, damit es ein bisschen mehr wie bei meinem vorherigen Projekt ist - ich habe es nie richtig zum Laufen gebracht (ich fand es ein Stromproblem, das ich nicht bedacht hatte) Ich bin an einer Verbesserung dieser Idee arbeiten *

Während ich diesen Schritt schrieb, dachte ich, vielleicht kann ich der Website eine Möglichkeit hinzufügen, Ihren Breiten- und Längengrad zu aktualisieren - auf diese Weise müsste die Skizze nie geändert werden - ich werde auch ein wenig darüber nachdenken.

Eine verbesserte Möglichkeit, die IP-Adresse zu erhalten, ist etwas, was ich gerne tun würde (ich denke auch noch darüber nach)

Kommen wir zu unserem nächsten Projekt…..

Schritt 7: Projekt 3: ein einfaches bewegliches Nachrichtenzeichen mit MQTT

Projekt 3: ein einfaches bewegliches Nachrichtenzeichen mit MQTT
Projekt 3: ein einfaches bewegliches Nachrichtenzeichen mit MQTT
Projekt 3: ein einfaches bewegliches Nachrichtenzeichen mit MQTT
Projekt 3: ein einfaches bewegliches Nachrichtenzeichen mit MQTT
Projekt 3: ein einfaches bewegliches Nachrichtenzeichen mit MQTT
Projekt 3: ein einfaches bewegliches Nachrichtenzeichen mit MQTT

"loading="faul" " loading="faul"

Bonus Teil 2 - Bilder anzeigen
Bonus Teil 2 - Bilder anzeigen
Bonus Teil 2 - Bilder anzeigen
Bonus Teil 2 - Bilder anzeigen
Bonus Teil 2 - Bilder anzeigen
Bonus Teil 2 - Bilder anzeigen

Es stellt sich also heraus, dass die Bibliothek Bilder anzeigen kann - aus irgendeinem Grund scheint diese Funktion "privat" zu sein - nun, für diese nächsten Skizzen habe ich die Bibliothek noch einmal modifiziert und drawImage zu einer öffentlichen Funktion gemacht.

Diesmal habe ich die modifizierte Bibliothek in das Sketches-Verzeichnis gelegt, damit Sie die Bibliothek nicht neu installieren müssen, die Skizze sieht sich zuerst selbst an, dann wird sie im Bibliotheksverzeichnis suchen, also sind wir gut!

*** Ich habe vor, diese Änderung an DFRobot zu senden, da es wirklich sehr cool und irgendwie nett ist, diese Art von Skizzen machen zu können ***

LED-Matrix-Image-Skizze, hier versuchte ich zuerst herauszufinden, was die Bibliothek wollte und was funktionieren würde und was nicht - mit unterschiedlichem Erfolg. Ich fand, dass die 8x8-Bilder am besten funktionieren, aber Sie können auch andere zum Arbeiten bringen. Ich habe auch einige Online-Matrix-Editoren gefunden, von denen einige besser funktionieren als andere.

xantorohara.github.io/led-matrix-editor/ - scheint in Ordnung zu sein, erstellt 8x8-Bilder und Sie möchten sie als Byte-Arrays.

www.riyas.org/2013/12/online-led-matrix-fo… dieser funktioniert gut und hat die Fähigkeit, größere als 8x8-Displays zu erstellen, das Display scheint mit diesem Display auf die Seite gedreht zu sein jedoch. Byte-Arrays scheinen hier am besten zu funktionieren. Ich habe es verwendet, um die "Space Invaders" zu machen, die im obigen Video zu sehen sind.

Wie funktioniert das also, drawImage(const byte * img, uint8_t width_t, uint8_t height_t, int8_t x, int8_t y, int img_offset);

Bild-Byte-Array-Variable, die Breite des Bildes (8), die Höhe des Bildes (8), die Startposition auf dem Bildschirm x (0), normalerweise y (0) und eine Offset-Zahl, die ich nicht bin 100% sicher, was es tut, also habe ich es die meiste Zeit bei Null gelassen.

In der Skizze LED Matrix Images - gibt es 8 verschiedene Byte-Arrays - mit drei verschiedenen Methoden dazu.

- Feuerwerkskörper sind die ersten Arrays, ehrlich gesagt bin ich mir nicht sicher, wie dieses funktioniert - aber es funktioniert.

als nächstes gibt es einen Mund - das funktioniert nicht ganz richtig, der Mund liegt für einen falsch, und der Versuch, irgendwelche Änderungen vorzunehmen, macht es nur noch schlimmer. (zu lernen, was funktioniert und was nicht, ist der halbe Spaß)

Gefolgt vom ersten marioImg - das ist zu groß für die Anzeige, und ich denke, hier kommt der Offset ins Spiel - ich habe ihn hier verwendet, und Sie können die Vorderseite von Mario sehen, wenn Sie den Offset auf 1 ändern. Ich werde ihn von hinten sehen. (Ich kann Ihnen nicht wirklich sagen, warum oder was der Versatz bewirkt. Es scheint das Bild zu verschieben, aber warum 2 es verschiebt, damit Sie die Vorderseite von ihm sehen können und warum 1 die andere Richtung verschiebt, kann ich Ihnen nicht sagen)

BILDER - Byte-Array ist ein @-Zeichen, das ich gemacht habe - es sieht aus wie das, was ich mit dem Tool unter https://xantorohara.github.io/led-matrix-editor erstellt habe

Das pic1-Byte-Array sieht auch so aus, wie ich es versucht habe, nur ist es kleiner als ich es versucht habe - was es ist, kann ich nicht sagen, aber ich kann sagen, dass es im Allgemeinen so aussieht, wie ich es im Editor gemacht habe.

mario2Img - das ist meine eigene Version des größeren Mario für eine Bildschirmgröße von 8x8 - und du da ein oder zwei Pixel fehl am Platz (meine Schuld, nicht die Displays) sieht es aus wie ein kleiner Mario (sorta).

invader1 und invader2 - beides meine Idee für einen Space Invader. sie sind ziemlich gut geworden, und indem ich die Bilder übereinander lege, kann ich den Effekt von Fußbewegungen erzeugen.

Es gibt zwei Feuerwerksskizzen im Verzeichnis, jede ist ein bisschen anders und es lohnt sich, sie auszuprobieren.

Bei einem bewegt sich das Feuerwerk über den Bildschirm, also etwas mehr/andere Animation … beim anderen werden zwei Feuerwerke gleichzeitig angezeigt

Es gibt auch drei "Eindringlinge" -Skizzen, jede ist ein bisschen anders, bei einer bewegt sich der Eindringling über den Bildschirm, und Sie können sich ansehen, wie ich das gemacht habe - (es gibt vielleicht bessere Möglichkeiten, ich weiß es nicht)

Mehr noch: Es gibt einige Skizzen im Testverzeichnis des Repositorys - die meisten davon haben nicht so funktioniert, wie ich es wollte, oder waren Ideen, die ich machen wollte, aber nicht so funktionierten, wie ich es wollte. Ich habe sie gelassen, weil mir jemand ein paar Ideen hat * (Ich habe ein kleines "Schild" mit einem WS2812-Pixel für die Verwendung mit dem ISS-Display gemacht, aber ich habe es an die 3V-Leitung angeschlossen und hatte einfach nicht genug Strom mit der LED-Matrix läuft auch, das Pixel funktioniert gut, ohne die LED-Matrix du, also gibt es noch etwas, was ich damit machen könnte)*

Es gibt auch ein Verzeichnis namens "Weitere Beispiele" - dies sind Variationen einiger Projektskizzen, entweder wurde etwas hinzugefügt oder entfernt oder in irgendeiner Weise geändert. Für diese funktionieren sie - sie sind nur nicht das endgültige Projekt. Also habe ich sie wieder gelassen, vielleicht bekommt jemand etwas Nützliches raus. (Vielleicht)

Ich hoffe, Sie haben dieses instructable genauso genossen, wie ich es genossen habe, diese Projekte zu machen:-)

Schritt 11: Verknüpfungen…

Dieses Projekt wurde von DF Robot gesponsert und unterstützt. Bitte nutzen Sie die folgenden Links für die Produkte:

Firebeetle ESP32 -

Firebeetle Cover 24x8 LED Matrix -

Mein Code-Repository:

Wenn Sie dieses oder eines meiner Projekte nützlich oder angenehm finden, unterstützen Sie mich bitte. Alles, was ich bekomme, dient dazu, mehr Teile zu kaufen und mehr / bessere Projekte zu machen.

www.patreon.com/kd8bxp

NTPClient-Bibliothek

ArduinoJson.h

ESP8266 Wetterbibliothek

Json-Streaming-Parser-Bibliothek

Empfohlen: