Inhaltsverzeichnis:

Cricket-Anzeigetafel mit NodeMCU - Gunook
Cricket-Anzeigetafel mit NodeMCU - Gunook

Video: Cricket-Anzeigetafel mit NodeMCU - Gunook

Video: Cricket-Anzeigetafel mit NodeMCU - Gunook
Video: 9 Digits Cricket Scoreboard With Ac220v And DC12v Car Power Input 2024, Juli
Anonim
Image
Image
Der Plan
Der Plan

Hallo! Ich wurde kürzlich in die Welt des IoT (Internet of Things) eingeführt, als ich auf das beliebteste Gerät in diesem Bereich, ESP8266, stieß. Ich war erstaunt, wie viele Möglichkeiten dieses winzige und billige Gerät bietet. Da ich derzeit neu darin bin, habe ich beschlossen, ein Projekt damit zu machen und nebenbei zu lernen. Also fing ich an, im Internet nach Projekten und Ideen zu suchen.

Ich stieß auf ein erstaunliches Projekt namens Arduino Cricket Score Ticker von W. A. Smith. In diesem Projekt wird Arduino zusammen mit Ethernet Shield und SD-Karte verwendet, um Live-Cricket-Ergebnisse von Cricbuzz anzuzeigen. Dieses Projekt hat mich zum Nachdenken gebracht.

Ich komme aus Indien und das erste, was mir einfällt, nachdem ich Indien gehört habe, ist Cricket. Kricket ist hier Religion. Es wird manchmal schwierig, vor einem Fernseher zu sitzen, um das gesamte Spiel zu verfolgen. Warum also nicht etwas machen, das das Anschauen von Partituren einfach, drahtlos und tragbar macht. Ein dediziertes kleines Gerät, das genügend Informationen anzeigt, um Sie mit nur einem Blick auf dem Laufenden zu halten.

Kein Cricket-Fan? Kein Problem! Der Code enthält den XML-Parser, mit dem Daten aus einer beliebigen XML-Datei abgerufen werden können. Verwenden Sie einfach die richtigen Funktionen, um die Daten zu erhalten.

Schritt 1: Der Plan

Der Plan
Der Plan

Es ist geplant, das NodeMCU Development Board (mit ESP-12E-Modul) zu verwenden, um auf das Internet zuzugreifen und den XML-Code von Cricbuzz anzufordern, der alle Informationen zu den laufenden/anstehenden Spielen enthält. Dieser Code wird als.xml-Datei auf der SD-Karte gespeichert. Die Datei wird dann von der SD-Karte gelesen, um die erforderlichen Daten aus dem XML-Code zu parsen. Ich werde den Code von W. A. Smith verwenden, um die Informationen zu analysieren. Dank seiner Bemühungen. Schauen Sie sich sein Projekt an, wenn Sie dasselbe mit Arduino und Ethernet Shield machen möchten.

Meine Idee ist es, es so klein wie möglich zu machen, eine benutzerdefinierte Leiterplatte und ein Gehäuse dafür zu bauen. Lassen Sie uns zunächst einen Prototyp erstellen. Aber zuerst machen wir uns mit den Komponenten vertraut, die in diesem Projekt verwendet werden.

Lass uns anfangen

Schritt 2: OLED-Display

OLED-Display
OLED-Display
OLED-Display
OLED-Display

Ich habe mich wegen der geringen Größe für ein OLED-Display entschieden und sie sind günstig erhältlich. Ich verwende ein 0,96-Zoll-Display, das für die Anzeige der Spielinformationen ausreicht. Sie können jede beliebige Größe des Displays verwenden.

Das von mir verwendete Display ist ein monochromes mit dem SSD1306-Treiber und der I2C-Schnittstelle (2-Draht). SPI-Versionen des Displays sind ebenfalls erhältlich. Sie zu betreiben ist eine leichte Aufgabe. Laden Sie die SSD1306- und GFX-Bibliotheken herunter, die zum Ausführen der Displays erforderlich sind. Danke an Adafruit für das Schreiben dieser Bibliotheken.

Anschlüsse sind ganz einfach.

  • GND zu GND
  • VCC bis 3,3 V
  • SCL zu D1
  • SDA auf D2.

Schritt 3: SD-Karte & Adapter

SD-Karte & Adapter
SD-Karte & Adapter

Die SD-Karte speichert die XML-Datei von Cricbuzz, bis alle Informationen analysiert wurden. Sobald die erforderlichen Informationen angezeigt wurden, wird die Datei gelöscht. Die Verwendung einer SD-Karte zum Speichern einer 10 - 20 kB großen XML-Datei ist ein bisschen übertrieben, aber es macht das Parsen viel einfacher und leicht verständlicher.

Jede Speicherkarte kann verwendet werden. Ich habe die Micro-SD-Karte wegen ihres kleinen Formfaktors gewählt. Sie können Drähte direkt auf die SD-Karte löten, aber die Verwendung einer Breakout-Platine macht die Arbeit einfach. Es ist zu beachten, dass alle SD-Karten mit 3,3 V betrieben werden sollen. Dies bedeutet, dass nicht nur die Stromversorgung mit 3,3 V erfolgen sollte, sondern auch die Kommunikation zwischen Mikrocontroller und SD-Karte auf 3,3 V Logikpegel erfolgen muss. Spannung über 3,3 V wird es töten! Wir werden uns nicht darum kümmern, was NodeMCU betrifft, da NodeMCU selbst mit 3,3 V läuft, was in Ordnung ist. Wenn Sie vorhaben, einen anderen Mikrocontroller mit 5V-Logikpegel zu verwenden, stellen Sie sicher, dass Ihr Breakout-Board über einen integrierten Pegelumsetzer verfügt (wie im Bild gezeigt). Es wandelt oder "verschiebt" die 5 V vom Mikrocontroller auf SD-Karten-freundliche 3,3 V. Die Verwendung des Pegelumsetzers zusammen mit 3,3 V (wie ich es getan habe) hat keinen Einfluss auf seine Funktion.

SD-Karte verwendet SPI-Schnittstelle für die Kommunikation. Der CS- oder Chip-Select-Pin kann mit jedem der GPIO-Pins verbunden werden. Ich habe mich für GPIO15 (D8) entschieden. Nehmen Sie einfach die erforderlichen Änderungen im Code vor, wenn Sie einen anderen Pin als GPIO15 verwendet haben

  • SCK zu D5
  • MISO zu D6
  • MOSI zu D7
  • CS bis D8
  • VCC bis 3,3 V
  • GND zu GND

Formatieren Sie Ihre SD-Karte

Die von uns verwendete Bibliothek unterstützt FAT16- oder FAT32-Dateisysteme. Stellen Sie sicher, dass Sie die SD-Karte im richtigen Format formatieren.

Schritt 4: Erstellen der Tastatur

Die Tastatur herstellen
Die Tastatur herstellen
Die Tastatur herstellen
Die Tastatur herstellen
Die Tastatur herstellen
Die Tastatur herstellen

Ich möchte das Projekt so klein wie möglich halten. Also beschloss ich, eine separate Platine für die Tastatur zu machen und sie später über der Hauptplatine zu montieren. Dadurch wird etwas Platz gespart.

Eine fertige Tastenmatrix kann gekauft werden, aber ich hatte Druckknöpfe herumliegen. Außerdem wollte ich es so klein wie möglich machen. Eine typische Anordnung zum Verbinden von Zeilen und Spalten würde insgesamt 6 GPIO-Pins für eine 3 x 3-Matrix benötigen. Das ist ziemlich viel, wenn man bedenkt, dass auch OLED-Display und SD-Karte angeschlossen werden.

Wenn Sie Zweifel haben, googeln Sie es heraus! Das habe ich getan und einen Weg gefunden, der nur 1 Pin benötigt, um die gesamte Matrix zu steuern. Dies wird durch die Spannungsteilermatrix ermöglicht. Zwischen jeder Reihe und Spalte sind Widerstände geschaltet. Wenn eine Taste gedrückt wird, wird eine bestimmte Kombination von Widerständen in Reihe geschaltet, wodurch ein Spannungsteiler entsteht. Siehe Schaltplan. Die variierende Spannung wird vom Mikrocontroller gelesen. Jede Taste erzeugt eine andere Spannung und somit kann durch Ablesen der Ausgangsspannung der Matrix leicht festgestellt werden, welche Taste gedrückt wurde. Da wir unterschiedliche Spannungspegel lesen wollen und jetzt nur noch High und Low, benötigen wir einen Analog-Pin. Glücklicherweise gibt es auf NodeMCU einen analogen Pin, der mit A0 gekennzeichnet ist. Problem gelöst!

Wenn Sie eine Matrix kaufen möchten, überprüfen Sie die in der Abbildung gezeigten internen Verbindungen. Es kann eine Matrix beliebiger Dimensionen verwendet werden. Stellen Sie sicher, dass Sie einen 2,2 kΩ Widerstand zwischen den Zeilen und einen 680 Ω Widerstand zwischen den Spalten verwenden.

Anschließen von Drucktasten

Pins 1 & 2 sind intern verbunden. Gleiches gilt für Pins 3 & 4. Wenn die Taste gedrückt wird, werden alle Pins miteinander verbunden. Sehen Sie sich das Bild an, um eine Vorstellung vom Anschließen der Schalter auf einem Perfboard zu erhalten.

Ich habe einen 3-Pin-Stecker angeschlossen, damit er später mit der Hauptplatine verbunden werden kann.

Schritt 5: Alles zusammenfügen

Alles zusammenfügen
Alles zusammenfügen
Alles zusammenfügen
Alles zusammenfügen
Alles zusammenfügen
Alles zusammenfügen

Sie können planen, die Komponenten an einer beliebigen Stelle zu platzieren. Keine Einschränkungen dabei. Ich werde Ihnen zeigen, wie ich es gemacht habe, um es kompakt zu machen, da ich etwas wollte, das in die Handfläche passt. Es kann ein wenig unordentlich werden, also versuchen Sie es mit meinem Weg, wenn Sie mit dem Löten vertraut sind. Ich beschloss, beide Seiten der Platine als zweilagige Leiterplatte zu bestücken. NodeMCU und SD-Karten-Breakout-Board auf der einen Seite und OLED und Tastatur auf der anderen Seite.

Der SD-Karten-Breakout passt einfach zwischen die beiden Buchsenleisten, die für die NodeMCU sind. Ich habe die abgewinkelten Stiftleisten, mit denen das Breakout-Board geliefert wurde, entlötet, gedreht und wieder so verlötet, dass die Pins wie im Bild gezeigt senkrecht nach unten gehen. Der Zugriff auf den SD-Kartensteckplatz wird einfacher.

Ich habe die Pins einer 4-Pin-Buchse rechtwinklig gebogen und wie im Bild gezeigt auf die Kupferseite des Perfboards gelötet.

Decken Sie die Lötstellen unter der Tastatur ab, um Kurzschlüsse zu vermeiden. Fügen Sie ein dünnes Stück Hartschaum (ca. 5 mm dick) zwischen Tastatur und Mainboard für zusätzlichen Schutz und Stabilität hinzu. Schließlich löten Sie die Tastatur, die wir zuvor gemacht haben. Ein Lötkolben mit spitzer Spitze wird Ihnen die Arbeit sicherlich erleichtern. Es war eine chaotische Arbeit, es so kompakt wie möglich zu machen, aber es ist endlich gelungen.

Überprüfen Sie alle Ihre Anschlüsse auf Kurzschlüsse, bevor Sie das Gerät einschalten

Schritt 6: Einrichten der Tastatur

Einrichten der Tastatur
Einrichten der Tastatur

Nachdem Sie alle Verbindungen überprüft haben, können Sie Ihr Gerät zum ersten Mal mit Strom versorgen. Daumen drücken! Kein magischer Rauch? Herzlichen Glückwunsch!

Jetzt können wir die Tastatur einrichten. Erinnern Sie sich an die Funktionsweise der Tastatur. Jeder Tastendruck gibt eine andere Spannung aus, die dem analogen Pin der NodeMCU zugeführt wird. ESP-12E verfügt über einen Analog-Digital-Wandler (ADC) mit einer Auflösung von 10 Bit. 2 hoch 10 ergibt 1024. Das bedeutet, dass wir für jede gedrückte Taste einen Messwert zwischen 0 und 1024 erhalten. Mal sehen, welche Messwerte wir bekommen. Aber zuerst müssen wir ein kleines Programm schreiben, um diese Werte zu erhalten. Öffnen Sie die Arduino IDE, kopieren Sie den folgenden Code und laden Sie ihn auf NodeMCU hoch.

int TastaturPin = A0;

Void setup () {Serial.begin (115200); aufrechtzuerhalten. Void Schleife () { Int r = analogRead (keypadPin); Serial.println (r); }

  • Öffnen Sie den seriellen Monitor. Stellen Sie die Baudrate auf 115200 ein.
  • Drücken Sie nun eine beliebige Taste. Sie sollten eine konstante Anzeige auf dem seriellen Monitor erhalten. Kleine Schwankungen sind ok. Diese werden im Hauptcode berücksichtigt. Machen Sie dasselbe für jeden Schlüssel.
  • Jeder Schlüssel sollte einen anderen Wert haben.
  • Notieren Sie alle Werte. Wir werden sie später brauchen.

Schritt 7: Lassen Sie uns codieren

Lass uns codieren
Lass uns codieren
Lass uns codieren
Lass uns codieren
Lass uns codieren
Lass uns codieren

Laden Sie die unten bereitgestellte Datei Scoreboard.ino auf Ihren Computer herunter und öffnen Sie sie mit der Arduino IDE.

Vor dem Hochladen

1) Stellen Sie die Aktualisierungszeit für die Anzeigetafel ein. Zum Beispiel 15L für 15 Sekunden.

2) Geben Sie die SSID und das Passwort des Routers ein, mit dem Sie sich verbinden möchten.

3) Nehmen Sie die erforderlichen Änderungen vor, wenn Sie den CS-Pin der SD-Karte mit einem anderen Pin als GPIO15 verbinden möchten.

4) Erinnern Sie sich an die Werte, die wir für alle Schlüssel notiert haben? Wir müssen jedem Wert eine Schlüsselnummer zuweisen. Ich hatte dir auch von den Schwankungen in der Lektüre erzählt. Dies liegt daran, dass die Schaltkontakte nicht perfekt sind. Auf lange Sicht kann dieser Wert aufgrund der Alterung der Kontakte vom Stromwert abweichen, was zu einem zusätzlichen Widerstand im Stromkreis führt und somit die Spannung ändert. Wir können uns um dieses Problem im Code kümmern.

Wir werden eine Obergrenze und eine Untergrenze des Wertes mit einer Marge von 5 hinzufügen. Zum Beispiel habe ich für Schlüssel 1 einen Messwert von 617 erhalten.

  • Ziehe 5 davon ab. 617 - 5 = 612. Dies ist die untere Grenze.
  • Fügen Sie nun 5 hinzu. 617 + 5 = 622. Dies ist die Obergrenze.
  • Scrollen Sie zum Ende des Codes. Füllen Sie den Platz, der für die beiden Werte im Code vorgesehen ist, wie in der Abbildung gezeigt.
  • Tun Sie dies für alle 9 Werte.

if(r > 612 && r < 622) { keyNumber = 1; }

Was bedeutet das?

WENN der Messwert (r) größer als 612 UND kleiner als 622 ist, wird Taste 1 gedrückt. Jeder Wert zwischen 612 und 622 wird als Schlüssel 1 behandelt. Dadurch wird das Problem der schwankenden Messwerte gelöst.

Schritt 8: Aufbau des Gehäuses

Aufbau des Gehäuses
Aufbau des Gehäuses
Aufbau des Gehäuses
Aufbau des Gehäuses
Aufbau des Gehäuses
Aufbau des Gehäuses
Aufbau des Gehäuses
Aufbau des Gehäuses

Dies ist völlig optional. Ich dachte, das Projekt würde ordentlich und komplett mit einem Fall aussehen. Ohne die richtigen Werkzeuge für diesen Job würde es eine riesige Aufgabe für mich werden. Das Gehäuse ist aus Acryl gebaut.

Bereiten Sie die Stücke zum Kleben vor, indem Sie die Kanten mit Sandpapier glätten. Ich habe Fevi Kwik (Super Glue) verwendet, um alle Teile zusammenzufügen. Sekundenkleber hinterlässt nach dem Aushärten weiße Rückstände. Tragen Sie es daher nur zwischen den Fugen auf. Beim Arbeiten mit Sekundenkleber muss man schnell und genau sein, da er schnell aushärtet. Acrylzement ist für diese Aufgabe am besten geeignet.

Eine kleine Öffnung gemacht, um mit einer Datei auf den USB-Anschluss zuzugreifen. Es sollte groß genug sein, um das USB-Kabel einzuführen.

Erstellt ein 3x3-Raster auf der vorderen Abdeckung für die Druckknöpfe. Dadurch werden die Drucktasten schwer zugänglich. Um dieses Problem zu lösen, habe ich für jede Taste quadratische Stücke geschnitten, sodass ihre Tasten jetzt bis zur Oberfläche verlängert sind.

Nach so viel Schleifen, Schneiden, Fixieren und Justieren war es endlich geschafft!

Schritt 9: Viel Spaß

Spaß haben!
Spaß haben!

Endlich ist die ganze harte Arbeit getan. Schalten Sie Ihre Mini-Anzeigetafel ein und bleiben Sie mit dem Spiel auf dem Laufenden.

Nach dem Einschalten verbindet er sich zunächst mit dem Access Point. Initialisiert die SD-Karte. Es wird ein Fehler angezeigt, wenn die SD-Karte nicht initialisiert ist.

Eine Liste aller Übereinstimmungen wird zusammen mit der Übereinstimmungsnummer angezeigt.

Wählen Sie die Match-Nummer über die Tastatur aus.

Die Ergebnisse werden angezeigt. Sie können anpassen, was alles auf dem Display angezeigt werden soll. Ich würde nicht zu tief in die Erklärung des Codes gehen. Eine ausführliche Erklärung zur Funktionsweise des Parsings finden Sie hier.

Um zum Menü zurückzukehren, halten Sie die Taste ZURÜCK (Taste 8) gedrückt, bis die Seite „Partituren abrufen…“angezeigt wird.

Zukunftspläne

  • Entwerfen Sie eine benutzerdefinierte Leiterplatte mit dem ESP8266 12-E-Modul.
  • Fügen Sie einen wiederaufladbaren Akku hinzu.
  • Verbessern Sie den Code mit neuen Funktionen.

Hoffentlich hat Ihnen der Aufbau gefallen. Machen Sie es sich selbst und haben Sie Spaß! Es gibt immer etwas Raum für Verbesserungen und viel zu lernen. Kommen Sie mit Ihren eigenen Ideen. Fühlen Sie sich frei, Vorschläge zum Bau zu kommentieren. Danke, dass du bis zum Schluss durchgehalten hast.

Empfohlen: