Inhaltsverzeichnis:

Oled Wecker - Gunook
Oled Wecker - Gunook

Video: Oled Wecker - Gunook

Video: Oled Wecker - Gunook
Video: OLED oximeter alarm demo 2024, November
Anonim
Oled Wecker
Oled Wecker

Es gibt viele Arduino / ESP32-Uhren, aber verwenden sie diese schönen und knackigen OLEDs?

Ich experimentiere schon seit einiger Zeit mit Arduinos und ESP32, aber ich habe es nie zu einem fertigen Produkt geschafft. Ich habe einen Wecker mit 4 1,3 Zoll monochromen OLEDs gemacht. Die Uhr verfügt außerdem über eine dimmbare Nachttischlampe und einen USB-Ladeanschluss (niemand hat Ersatzsteckdosen neben seinem Bett). Die OLEDs sind auch dimmbar, dies wurde in letzter Minute hinzugefügt, nachdem mein Projekt von meiner Freundin bedroht wurde. Sollte dim -in der Stimme der Freundin- nicht schwach genug sein, kann ich auch eine Version des Codes bereitstellen, bei der 3 Displays zwischen bestimmten Stunden ausgeschaltet werden. Das Ziel war es, eine einfach zu wartende Uhr zu entwickeln, die über den "Prototyp" hinausgeht. Bei der Herstellung meiner Uhr stieß ich auf einige Schwierigkeiten, die ich lösen musste, weshalb ich denke, dass diese Anleitung es wert ist, geteilt zu werden. Die Uhr kann mit wenigen Werkzeugen hergestellt werden, ich mag die Tutorials "und für den nächsten Schritt habe ich meine 10.000€/$ CNC-Fräse verwendet" nicht.

Einige Dinge, die in diesem instructable (in-structable-ception) erklärt werden:

- So verwenden / verdrahten Sie ein I2C-OLED-Display mit arduino/ESP32

- So verwenden Sie mehrere I2C-Objekte mit einem Arduino/ESP32

- Wie man ein "scrollbares" Menü mit einem Drehgeber erstellt (+ wie man einen Encoder mit einem ESP32/Arduino verwendet)

- So entwerfen und bestellen Sie eine benutzerdefinierte Leiterplatte mit Fritzing.

- Die Uhr verwendet auch eine RTC (Echtzeituhr), einen LED-Treiber, ein Abwärtsspannungsmodul … Ich werde nicht wirklich darauf eingehen, da für diese Module wirklich viele Informationen verfügbar sind.

Ich möchte darauf hinweisen, dass ich kein professioneller Programmierer bin. Das Ziel meines instructable ist es, die oben genannten Punkte zu erklären. Wie ich das alles für mein Endprodukt zusammenstelle, ist vielleicht nicht der sauberste Weg. Auf diese Weise konnte ich den Überblick behalten.

Lieferungen

Beim Einkaufen von Verbrauchsmaterialien versuche ich immer, die Bedeutung von Qualität/Dokumentation gegenüber dem Preis abzuwägen. Meine Vorräte sind eine Mischung aus A-Marken und billigeren chinesischen Teilen. Mouser ist ein großartiger Lieferant, wenn Qualität wichtig ist, bestelle ich bei Banggood/Aliexpress für die billigeren Teile.

- Ein ESP32-Board, ich habe das Huzzah32 von adafruit verwendet, aber es gibt viele andere (billigere) Optionen. Ich habe mich für Huzzah32 entschieden, weil es sehr gut dokumentiert ist.

- 4 1,3-Zoll-I2C-OLED-Displays (128x64, mit dem SH1106-Treiber), die 0,96-Zoll-Displays sind häufiger, aber für dieses Projekt bevorzuge ich die 1,3-Zoll-Displays

- Sparkfun Femtobuck-Treiber zum Antreiben der LED

- RTC-Uhr, ich habe eine mit einer Lithiumzelle verwendet

- Arduino Nano

- Weiblicher USB 2.0-Port (ich habe verwendet: SS-52200-002 von Stewart Connector)

- DC-Buchse (ich habe verwendet: L722A von Switchcraft)

- 12V 3A DC-Adapter (GST36E12-P1J von Mean Well)

- Kundenspezifische Leiterplatte, optional, aber dies macht das Projekt viel kompakter und einfacher zu warten, wenn ein Teil stirbt + mehr Zuverlässigkeit durch weniger Drähte (jlcpcb.com)

- M3 Schrauben & Bolzen

- M3 Messingeinsätze

- 12V auf 5V Abwärtsmodul von Pololu (DF24V22F5)

- 3 Watt Leistung mit Kühlkörper

- Überbrückungsdrähte

- Summer

- I2C-Multiplexer (TCA9548A von adafruit)

- 2 Drehgeber (ich habe einige ausprobiert, nicht alle funktionieren mit meinem Code. Der von "DFrobot" funktioniert und auch der mit der runden Platine von "DIYmore". Mein Code scheint für den Taster nicht zu funktionieren vom Typ KY-040. Mein Wecker verwendet den von DIYmore, da er sehr einfach an der Schalttafel montiert werden kann (keine zusätzlichen Schrauben / Löcher erforderlich).

- Sortiment an Buchsenleisten (optional)

- Holz für den Rahmen: 18mmx18mmx2400mm

- Transparentpapier

Ich habe auch einige Werkzeuge verwendet (Lötkolben, 3. Hand, Säge…), aber nichts wirklich Exotisches.

Schritt 1: Verwenden eines Oled

Verwenden eines Oled
Verwenden eines Oled
Verwenden eines Oled
Verwenden eines Oled
Verwenden eines Oled
Verwenden eines Oled

Um die OLEDs nutzen zu können, muss eine Bibliothek installiert werden. Ich verwende die U8G2lib von Oli Kraus, sie ist sehr verständlich und hat ein Nachschlagewerk mit anschaulichen Beispielen.

Um Ihr Board (ESP oder Arduino) anzuschließen, müssen Sie SDA- und SCL-Pins finden. Diese Pins sind die I2C-Kommunikationspins. Suchen Sie nach der "Pinbelegung" Ihres spezifischen Boards, wenn Sie sie nicht finden können.

Ich habe etwas Beispielcode hinzugefügt. Der Code funktioniert sowohl für Arduino als auch für ESP32, aber der ESP32 hat weniger wahrscheinlich keinen Speicher mehr. Alle Oleds, die ich bisher ausprobiert habe, funktionieren sowohl mit 3,3 V (ESP32) als auch mit 5 V.

Schritt 2: Mehrere OLEDs

Mehrere OLEDs
Mehrere OLEDs

Hier beginnt sich mein Projekt von vielen anderen Weckern zu unterscheiden. Die meisten Arduinos / ESPs haben nur einen oder zwei I2C-Pins. Dies schränkt die Verwendung von I2C-Teilen ein. Was ist, wenn ich 4 I2C-Sensoren habe und deren Messwerte auf einem I2C-Display anzeigen möchte? Geben Sie den Multiplexer ein. Mit dem Multiplexer können Sie 7 verschiedene I2C-Teile ansprechen. Dadurch kann mein ESP32 eine I2C-Echtzeituhr verwenden und die Zeit erneut mit I2C über die 4 Displays anzeigen (oder mehr, lassen Sie sich nicht aufhalten).

Ich habe einige Beispielcode für den ESP32 hinzugefügt, von hier an bin ich mir nicht sicher, ob das Arduino mithalten kann. Das Beispiel verwendet nur Displays, es können auch andere Dinge wie I2C-Sensoren usw. sein. Das Prinzip ist immer gleich, Sie rufen den richtigen Kanal mit dem "tcaselect(#);" -Funktion, dann führen Sie den Code aus, der für Ihr I2C-Objekt erforderlich ist.

Schritt 3: Erstellen eines scrollbaren Menüs mit einem Drehgeber

Erstellen eines scrollbaren Menüs mit einem Drehgeber
Erstellen eines scrollbaren Menüs mit einem Drehgeber
Erstellen eines scrollbaren Menüs mit einem Drehgeber
Erstellen eines scrollbaren Menüs mit einem Drehgeber
Erstellen eines scrollbaren Menüs mit einem Drehgeber
Erstellen eines scrollbaren Menüs mit einem Drehgeber

Das Wichtigste zuerst, testen Sie Ihre Encoder. Ich habe etwas Code hinzugefügt, um Ihre Encoder-Module zu testen. Wie im Lieferumfang angegeben: Ich habe meinen Code nur mit den Drehgebermodulen von DF robot und dem Modul mit der Rundplatine von DIYmore erfolgreich getestet. Siehe die Bilder oben für die richtigen Encoder.

Die Bibliothek, die ich verwendet habe, ist diese:

Das PDF, das ich hinzugefügt habe, hilft hoffentlich bei der Menüstruktur, die ich für meine Uhr verwendet habe.

Den Encoder zum Laufen zu bringen, war für mich der schwierigste Teil in diesem Projekt. Es gibt viele verschiedene Encoder und viele verschiedene Bibliotheken, die nicht immer mit dem ESP32 kompatibel sind. Aber ich denke ein (funktionierender) Drehgeber ist eine elegante Lösung, wenn man etwas eingeben möchte. Hätte ich nur Tasten verwendet, hätte ich mehr als 1 benötigt und das Einstellen der Zeit würde viele Tastendrücke erfordern.

Schritt 4: Den vorherigen Code zusammenfügen

Den vorherigen Code zusammenfügen
Den vorherigen Code zusammenfügen

Der Titel fasst irgendwie zusammen, was ich getan habe. Ich habe Teil für Teil probiert und dann alles zusammengebaut. Aber weil nichts jemals einfach ist, musste ich einiges ändern. Die serielle Kommunikation ist ein langsamer Prozess. Dies behindert das korrekte Auslesen des Encoders. Um dies zu überwinden, habe ich den Pins des Encoders Interrupts hinzugefügt. Der Code zum Lesen des Encoders wird dann sofort aufgerufen, wenn Sie den Encoder drücken oder drehen.

Sobald Sie verstehen, wie die Menüs aufgebaut sind, werden Sie feststellen, dass es sehr einfach ist, Funktionen nach Ihren Wünschen hinzuzufügen oder zu entfernen. Vielleicht möchten Sie das aktuelle Wetter oder die aktuelle Uhrzeit aus dem Internet holen und anzeigen?

Ich habe viele solcher Ideen weggelassen, weil ich vor allem einen verlässlichen Zeitfrieden wollte. Eine, die nichts automatisch tut. Ich arbeite sehr ungerade Stunden in einer Sommerzeitzone. Jedes Mal, wenn die Stunde geändert wird, bin ich nervös, zu verschlafen. Wird mein Telefon die Stunde automatisch ändern? Wird meine Uhr? Nun, meine Uhr wird nicht, es sei denn, ich ändere sie selbst. Aber vielleicht möchten Sie Ihre Uhr in die Küche stellen? Anderes Szenario, fügen Sie Funktionen hinzu, bis der Speicher aufgebraucht ist!

Schritt 5: Benutzerdefinierte Leiterplatte mit Fritzing + Schaltplan

Benutzerdefinierte Leiterplatte mit Fritzing + Schaltplan
Benutzerdefinierte Leiterplatte mit Fritzing + Schaltplan
Benutzerdefinierte Leiterplatte mit Fritzing + Schaltplan
Benutzerdefinierte Leiterplatte mit Fritzing + Schaltplan
Benutzerdefinierte Leiterplatte mit Fritzing + Schaltplan
Benutzerdefinierte Leiterplatte mit Fritzing + Schaltplan

Hinweis: Adafruit weist darauf hin, dass Sie den huzzah32 zwar über den USB-Pin mit Strom versorgen können, aber darauf achten müssen, dass Sie nicht gleichzeitig den Micro-USB-Stromeingang verwenden. Meine Platine wird über den Step-Down-Buck mit Strom versorgt, der dann den Huzzah über den USB-Pin mit Strom versorgt. Trennen Sie also beim Hochladen immer die externe Stromversorgung / entfernen Sie das Huzzah vom Board.

Ich habe mich entschieden, Buchsenleisten auf der Platine zu löten, da es einfacher ist, ein Teil auszutauschen oder beispielsweise einen zusätzlichen I2C-Sensor hinzuzufügen. Dadurch kann ich auch problemlos den Nano oder den ESP32 entfernen, um die Programme zu laden.

Ich habe die Frizting-Datei hinzugefügt, ich kann hier einen Roman eingeben, aber ich denke, das Beispiel spricht am besten. Ich begann mit dem Schema des gesamten Setups. Fritzing hat zwar viele Teile in seinen Behältern, aber nicht alles ist da. Manchmal findet man den Fritzing-Teil im Internet, manchmal nicht. Die Teile, die ich nicht finden konnte, habe ich einfach durch ein weibliches Kopfteil ersetzt. Wenn Sie mit der rechten Maustaste darauf klicken, können Sie die Kopfzeile auf die gewünschte Anzahl von Pins bearbeiten und ihr eine Pinbelegung zuweisen. Ich habe das mit jedem Teil gemacht, den ich nicht finden konnte. Da fast alle Module die gleiche Teilung von 0,1 Zoll (2,54 mm) verwenden, erhalten Sie den richtigen Abstand für das Teil.

Als nächstes wechseln Sie in die PCB-Ansicht der Fritzing-App. Eine Leiterplatte wird platziert. Wenn Sie darauf klicken, können Sie ihre Größe einstellen und eine ein- oder zweilagige Leiterplatte auswählen. Meine verwendet 2 Schichten. Fritzing schlägt die von Ihnen vorgenommenen Verbindungen in der schematischen Ansicht vor. Das Programm hat eine Autoroute-Option, aber ich benutze sie nie. Ich organisiere meine Verbindungen gerne manuell. In der Leiterplattenansicht befinden sich die gelben Anschlüsse in der oberen Schicht, die orangefarbenen in der unteren Schicht. Auch hier können Sie, wenn Sie auf die Verbindung klicken, ihre Eigenschaften auswählen.

Um die eigentliche Leiterplatte zu erstellen, müssen Sie sie als Gerber-Datei exportieren. Bevor Sie dies tun, können Sie unter dem Reiter "Routing" die Designregeln überprüfen. Wenn alles ausgecheckt ist, können Sie auf "Export für PCB" klicken. Die meisten Hersteller fragen nach einer Gerber-Datei, also wählen Sie Export nach Gerber.

Ich habe meine Platine bei JLCPCB bestellt, es gefällt mir, dass sie Ihnen sofort einen Preis nennen. Es gibt natürlich noch viele andere Möglichkeiten.

Zum Schaltplan: Es werden 2 Spannungen verwendet. Die LED und der Femtobuck werden direkt von der 12V-Versorgung gespeist. Der Rest wird über den Step-Down-Buck mit 5 Volt versorgt.

Schritt 6: Design + Lasercutter

Design + Lasercutter
Design + Lasercutter
Design + Lasercutter
Design + Lasercutter

Für meinen ersten Entwurf habe ich es mit massiver Eiche versucht (ich besuche Holzbearbeitungskurse), aber es wurde schnell klar, dass dies nicht ideal war. Das Holz ist zu dick, was es schwierig macht, Ihre Teile zu montieren. Das 3mm Birken-Multiplex ermöglicht eine einfachere Befestigung der Encoder und Displays.

Ich habe einen Online-Lasercut-Service gefunden, snijlab.nl, der für Hobbyisten in Rotterdam verfügbar ist (sie versenden nach Belgien, den Niederlanden und Deutschland). Auf ihrer Website können Sie Ihre Zeichnungen hochladen und sie geben sofort Ihren Preis an. Ich habe Autocad verwendet, das ich bei der Arbeit habe, aber die Software spielt keine Rolle. Es muss nur eine Vektorzeichnung sein (Vectr, Illustrator, Inkscape…). Die meisten Geschäfte verwenden Farben, um zu bestimmen, ob Sie schneiden oder gravieren möchten.

Einige Dinge, die Sie beachten sollten:

- max. Abmessungen des Lasercutters (ich habe einen Rahmen um meine Teile gezogen)

- Mindest. Abstand zwischen den Schnitten

- Stellen Sie sicher, dass Sie keine Doppellinien zeichnen, der Laser macht einen zusätzlichen Durchgang, der Sie mehr kostet.

- Stellen Sie beim Plotten in PDF sicher, dass Sie 1:1 plotten. Sie möchten nicht verkleinern oder aufs Papier passen.

Schritt 7: Montage

Montage
Montage
Montage
Montage
Montage
Montage

Ich habe die Uhr um einen Holzrahmen herum gebaut, die Paneele werden mit M3-Schrauben und Einsätzen im Rahmen gehalten. Sollte ich jemals eine Version 2 bauen, würde ich "L" -Profile aus Aluminium verwenden, um die Paneele zu befestigen. Es war sehr schwierig, die Löcher für die Messingeinsätze genau zu bohren. Ich habe sehr lange gebraucht, um nur ein akzeptables Ergebnis zu erzielen. Dies würde natürlich bedeuten, dass die Lasercut-Zeichnung überarbeitet werden muss. Ich denke, mit Aluminiumprofilen und nur Schrauben und Muttern erzielen Sie ein besseres Ergebnis.

Um das Licht besser zu streuen, habe ich Pauspapier auf die Innenseite der Perforationen geklebt. Dies verleiht dem Licht einen schönen Glanz.

Schritt 8: Hören Sie hier nicht auf

Hör nicht hier auf
Hör nicht hier auf
Hör nicht hier auf
Hör nicht hier auf
Hör nicht hier auf
Hör nicht hier auf

Das Projekt dreht sich um einen ESP32, ich habe ihn kaum benutzt. Meine Schlafzimmerleuchten können derzeit mit blynk ferngesteuert werden. Die Steuerung mit der Uhr ist nur ein kleiner Schritt weiter. Vielleicht möchten Sie zusätzliche Displays, die Ihnen die Temperatur in Ihrem Haus anzeigen? Oder einige lokale Sensoren (es gibt noch freie I2C-Verbindungen auf diesem Multiplexer!). Vielleicht Zeit/Wecker über eine App und Bluetooth einstellen?

Lassen Sie mich wissen, was Sie geändert haben, was Sie ändern würden, was ich ändern sollte …

Empfohlen: