Guten Tag, heute werde ich Anweisungen geben, wie man eine Uhr mit einem Raumthermometer macht. Die Uhr läuft weiter Arduino Der Grafikbildschirm UNO, WG12864B dient zur Anzeige von Zeit und Temperatur. Als Temperatursensor - ds18b20. Im Gegensatz zu den meisten anderen Uhren werde ich RTS (Real Time Clock) nicht verwenden, aber versuchen, auf dieses zusätzliche Modul zu verzichten.
Dafür hausgemacht Folgende Komponenten sind erforderlich:
- Arduino UNO (oder ein anderes Arduino-kompatibles Board)
- Grafikbildschirm WG12864B
- Temperatursensor ds18b20
- Widerstand 4,7 Kom 0,25 W.
- Widerstand 100 Ohm 0,25 W.
- Batteriefach für 4 AA-Batterien „Fingertyp“
- Geeignete Box
- Kleine Datei
- Nagellack (schwarz oder körperfarben)
- Ein wenig dünner Kunststoff oder Pappe
- Isolierband
- Verbindungsdrähte
- Leiterplatte
- Knöpfe
- Lötkolben
- Lot, Kolophonium
- Doppelseitiges Klebeband
Schritt 1 Vorbereiten des Gehäuses.
Unsere Uhren sollten sich also irgendwo befinden. Sie müssen eine geeignete Box finden. Die Hauptsache ist, dass der WG12864B-Bildschirm, Arduino und eine kleine Platine für Tasten hineinpassen. Die minimale Boxgröße beträgt 7 x 7 x 10 cm. Wenn Sie ein kleines Arduino-Board verwenden, können Sie es in eine Box und eine kleinere schieben. Ich werde den Vorgang jedoch am Beispiel der Arduino UNO beschreiben. Das Material, aus dem die Box besteht, ist vorzugsweise Kunststoff. Wenn es sich wie bei mir um Eisen handelt, lohnt es sich, auf die Isolierung zu achten, damit im Inneren nichts „herumlaufen“ kann. Kunststoff ist vorzuziehen, da er leichter zu schneiden ist. Mit einer Box ist er der Fall unserer Uhren, entschieden. Jetzt ist es notwendig, ein Fenster unter dem Bildschirm von 6,5 x 4 cm zu schneiden. Wenn die Box aus Eisen ist, ist es äußerst schwierig, dies vorsichtig zu tun. Egal wie Sie es versuchen, es wird abgebrochene Farbe und Rauheit in der Nähe des Schnitts geben. Deshalb schneiden wir es zuerst aus, dazu können Sie den „Schleifer“, einen Bohrer mit einer Düse zum Schneiden oder einen Fräser Ihrer Wahl im Allgemeinen mit dem, was zur Hand ist, verwenden. Danach reinigen wir die Kanten mit einer Feile. Wir streichen alle abgebrochenen Farben mit Nagellack, passende Farbe. Das Ergebnis sollte folgendes sein:
Schritt 2 Bereiten Sie den Grafikbildschirm vor.
Mit dem Anschluss des Bildschirms ergeben sich auf den ersten Blick viele Probleme und Schwierigkeiten. Aber wenn Sie sich zuerst mit ihren Typen befassen, wird es viel einfacher und verständlicher. Es gibt viele Variationen und Arten von Bildschirmen auf dem Controller ks0107 / ks0108.Alle Bildschirme sind normalerweise in 4 Typen unterteilt:
Option A: HDM64GS12L-4, Crystalfontz CFAG12864B, Sparkfun LCD-00710CM, NKC Electronics LCD-0022, WinStar WG12864B-TML-T
Option B: HDM64GS12L-5, Lumex LCM-S12864GSF, Futurlec BLUE128X64LCD, AZ-Displays AGM1264F, Displaytech 64128A BC, Adafruit GLCD, DataVision DG12864-88, Topway LM12864LDW, Digitron SG1286464J-QJ, QY
Option C: Shenzhen Jinghua zeigt Co Ltd. Jm12864
Option D: Wintek-Kaskaden WD-G1906G, Wintek-GEN / WD-G1906G / KS0108B, Wintek / WD-G1906G / S6B0108A, TECDIS / Y19061 / HD61202, Varitronix / MGLS19264 / HD61202
Die Liste ist nicht vollständig, es gibt viele davon. Das häufigste und meiner Meinung nach bequemste WG12864B3 V2.0. Das Display kann über eine serielle oder parallele Schnittstelle mit dem Arduino verbunden werden. Bei Verwendung mit Arduino UNO ist es besser, eine serielle Schnittstelle zu wählen. Dann benötigen wir nur 3 Ausgänge des Mikrocontrollers anstelle von mindestens 13 Leitungen, wenn diese über eine parallele Schnittstelle verbunden sind. Alles ist ganz einfach miteinander verbunden. Es gibt noch eine Nuance. Zum Verkauf stehen zwei Versionen von Displays mit integriertem Potentiometer (zum Einstellen des Kontrasts) und ohne. Ich habe gewählt, und ich rate Ihnen, dasselbe mit dem eingebauten zu tun.
Dies reduziert die Anzahl der Teile und die Lötzeit. Es lohnt sich auch, einen Strombegrenzungswiderstand von 100 Ohm für die Hintergrundbeleuchtung zu verwenden. Durch den direkten Anschluss von 5 Volt besteht die Gefahr, dass die Hintergrundbeleuchtung verbrannt wird.
WG12864B - Arduino UNO
1 (GND) - GND
2 (VCC) - + 5V
4 (RS) - 10
5 (R / W) - 11
6 (E) - 13
15 (PSB) - GND
19 (BLA) - durch den Widerstand - + 5V
20 (BLK) - GND
Am bequemsten ist es, alles hinter dem Bildschirm zu sammeln und 5 Drähte daraus auszugeben, um eine Verbindung zum Arduino UNO herzustellen. Das Ergebnis sollte ungefähr so aussehen:
Für diejenigen, die noch eine Parallelverbindung wählen, werde ich eine Verbindungstabelle geben.
Und das Layout für Option B-Bildschirme:
Schritt 3 Schließen Sie den Temperatursensor an.
Wie gesagt, wir werden den integrierten Sensor DS18B20 verwenden, um die Temperatur zu messen. Ich habe es wegen seiner hohen Messgenauigkeit gewählt, der Fehler beträgt nicht mehr als 0,5 ° C. Der Sensor ist zum Zeitpunkt der Herstellung kalibriert, es sind keine zusätzlichen Einstellungen erforderlich. Temperaturmessbereich -55 ... + 125 ° C. Es gibt zwei Betriebsarten: mit einer externen Stromquelle und „Störstrom“. Wenn Sie im externen Stromversorgungsmodus arbeiten, ist die Verbindung wie folgt:
Bei Verwendung von "Störleistung" erhält der Sensor Strom von der Kommunikationsleitung. In diesem Modus reichen zwei Drähte aus, um den ds18b20 mit dem Mikrocontroller zu verbinden. Der interne Kondensator des Sensors wird aufgrund von Energie auf der Kommunikationsleitung auf einem niedrigen Pegel am Bus aufgeladen. Der Modus "Parasitäre Ernährung" hat viele Funktionen und daher empfehle ich nicht, ihn zu verwenden. Wenn Sie sich dennoch für die Verwendung entscheiden, finden Sie hier das folgende Diagramm:
Oder Sie können einen verbesserten Schaltplan verwenden, wenn Sie "Störleistung" verwenden:
Auf einer Kommunikationsleitung können mehrere Sensoren enthalten sein. Für unsere Uhren reicht eine. Wir verbinden den Draht vom "DQ" ds18b20 Pin mit dem "Pin 5" Arduino UNO.
Schritt 4 Vorbereiten einer Platine mit Tasten.
Um die Uhrzeit und das Datum auf der Uhr einzustellen, verwenden wir drei Tasten. Löten Sie zur Vereinfachung die drei Tasten auf der Leiterplatte und verdrahten Sie sie.
Wir verbinden uns wie folgt: Der allen drei Tasten gemeinsame Draht ist mit dem „GND“ -Arduino verbunden. Die erste Taste dient zum Aufrufen des Zeiteinstellungsmodus und zum Umschalten von Uhrzeit und Datum, Verbindung zu "Pin 2". Die zweite Taste zum Erhöhen des Werts befindet sich auf "Pin 3", und die dritte Taste zum Verringern des Werts befindet sich auf "Pin 4".
Schritt 5 Alles zusammenfügen.
Isolieren Sie den Bildschirm, um einen Kurzschluss zu vermeiden. In einem Kreis wickeln wir uns mit Klebeband ein und befestigen auf der Rückseite ein doppelseitiges Klebeband, zugeschnitten, einen Streifen Isoliermaterial. Geeignet ist dicker Karton oder dünner Kunststoff. Ich habe Plastik von einem Papiertablett verwendet. Es stellte sich Folgendes heraus:
Auf die Vorderseite des Bildschirms entlang der Kante kleben wir ein doppelseitiges Klebeband auf Schaumbasis, vorzugsweise schwarz.
Wir verbinden den Bildschirm mit Arduino:
Außerdem verbinden wir uns vom Batteriefach mit dem "VIN" Arduino, minus mit dem "GND". Wir platzieren es hinter dem Arduino. Vergessen Sie vor der Installation im Gehäuse nicht, den Temperatursensor und die Platine mit Tasten zu verbinden.
Schritt 6 Bereiten Sie die Skizze vor und füllen Sie sie aus.
Ein Temperatursensor benötigt die OneWire-Bibliothek.
Die Ausgabe auf dem Bildschirm erfolgt über die U8glib-Bibliothek:
Installieren Sie diese beiden Bibliotheken, um die Skizze zu bearbeiten und zu füllen. Es gibt zwei Möglichkeiten, dies zu tun. Entpacken Sie einfach diese Archive und legen Sie die entpackten Dateien im Ordner "Bibliotheken" ab, der sich in dem Ordner befindet, in dem die Arduino IDE installiert ist.Oder die zweite Möglichkeit besteht darin, die Bibliothek direkt in der Programmierumgebung zu installieren. Wählen Sie in der Arduino IDE das Menü Sketch - Connect Library aus, ohne die heruntergeladenen Archive zu entpacken. Wählen Sie ganz oben in der Dropdown-Liste das Element ".Zip-Bibliothek hinzufügen" aus. Wählen Sie im angezeigten Dialogfeld die Bibliothek aus, die Sie hinzufügen möchten. Öffnen Sie das Menü Sketch - Connect Library erneut. Ganz unten in der Dropdown-Liste sollte eine neue Bibliothek angezeigt werden. Jetzt kann die Bibliothek in Programmen verwendet werden. Vergessen Sie nicht, die Arduino IDE nach all dem neu zu starten.
Der Temperatursensor arbeitet nach dem One Wire-Protokoll und hat für jedes Gerät eine eindeutige Adresse - einen 64-Bit-Code. Jedes Mal ist es unpraktisch, nach diesem Code zu suchen. Daher müssen Sie zuerst den Sensor an das Arduino anschließen und die Skizze im Menü Datei - Beispiele - Dallas-Temperatur - OneWireSearch ausfüllen. Führen Sie als Nächstes Tools - Port Monitor aus. Arduino sollte unseren Sensor finden, seine Adresse und die aktuellen Temperaturwerte schreiben. Wir kopieren oder notieren einfach die Adresse unseres Sensors. Öffnen Sie die Skizze Arduino_WG12864B_Term und suchen Sie nach der Zeile:
Byte-Adresse [8] = {0x28, 0xFF, 0xDD, 0x14, 0xB4, 0x16, 0x5, 0x97}; // Adresse meines Sensors
Wir notieren die Adresse Ihres Sensors zwischen geschweiften Klammern und ersetzen die Adresse meines Sensors.
Lagerbestand:
//u8g.setPrintPos (44, 64); u8g.print (sek); // Sekunden drucken, um die Richtigkeit des Kurses zu überprüfen
Zeigt Sekunden neben "Daten" an. Dies ist notwendig, um den Zeitverlauf genau einzustellen.
Wenn die Uhr es eilig hat oder nacheilt, sollten Sie den Wert in der Zeile ändern:
if (micros () - prevmicros> 494000) {// zur Korrektur auf einen anderen wechseln war 500000
Ich habe experimentell die Zahl bestimmt, bei der die Uhr ziemlich genau läuft. Wenn Ihre Uhr es eilig hat, sollten Sie diese Zahl erhöhen, wenn ich im Rückstand bin, verringern Sie sie. Um die Genauigkeit des Kurses zu bestimmen und benötigen Sie eine Abschlusssekunde. Nach genauer Kalibrierung der Zahl können Sekunden auskommentiert und somit vom Bildschirm entfernt werden.
Füllen Sie die Skizze.