Inhaltsverzeichnis:

DIY Arduino Binärwecker - Gunook
DIY Arduino Binärwecker - Gunook

Video: DIY Arduino Binärwecker - Gunook

Video: DIY Arduino Binärwecker - Gunook
Video: Casting Patterns, Flask, Camera Gimbal and Routing Rubber 2024, Juli
Anonim
DIY Arduino Binärwecker
DIY Arduino Binärwecker
DIY Arduino Binärwecker
DIY Arduino Binärwecker
DIY Arduino Binärwecker
DIY Arduino Binärwecker

Es ist wieder die klassische Binäruhr! Diesmal aber mit noch mehr Zusatzfunktion! In diesem anweisbaren zeige ich Ihnen, wie Sie einen binären Wecker mit Arduino bauen, der Ihnen nicht nur Zeit, sondern auch Datum, Monat, sogar mit Timer- und Alarmfunktionen, die auch als Nachttischlampe verwendet werden können, zeigen kann! Lassen Sie uns ohne weiteres loslegen!

Hinweis: Dieses Projekt verwendet kein RTC-Modul, daher hängt die Genauigkeit von der verwendeten Platine ab. Ich habe einen Korrekturmechanismus eingefügt, der die Zeitdrift über einen bestimmten Zeitraum korrigiert, aber Sie müssen herumexperimentieren, um den richtigen Wert für den Zeitraum zu finden (mehr dazu weiter unten), und selbst mit Korrekturmechanismus wird es immer noch driften über lange Zeit (im Vergleich zu ohne). Bei Interesse können Sie die Verwendung des RTC-Moduls in diesem Projekt implementieren

Lieferungen

5mm LED (beliebige Farbe, ich habe 13 weiße LEDs mit einer RGB-LED als Indikator verwendet) --- 14 Stück

Arduino Nano (andere funktionieren möglicherweise) --- 1 Stück

Mikroschalter --- 1 Stück

Kleines Stück Alufolie

Montageplatte (für Gehäuse, aber Sie können Ihre eigenen entwerfen)

Stück weißes Papier (oder eine andere Farbe)

Etwas Plastikfolie (die als Buchcover verwendet wird)

Bündel Drähte

Summer --- 1 Stück

NPN-Transistor --- 1pc

Widerstände 6k8 --- 14 Stück, 500R --- 1 Stück, 20R (10Rx2) --- 1 Stück, 4k7 --- 1 Stück

Stromversorgung für das Projekt (ich habe einen Li-On-Akku verwendet)

5050 LED-Streifen und ein Schiebeschalter (optional)

Schritt 1: Schließen Sie die Schaltung an

Schließen Sie die Schaltung an!
Schließen Sie die Schaltung an!

Ich unterteile diesen Schritt in:

1) Der Summerteil

2) Das LED-Panel

3) Der Schalter (Druckknopf)

4) LED-Streifen

5) Der Kapazitätssensor

6) Stromversorgung

7) Verbinden Sie alle mit Arduino

Meistens ist dies nur ein Schritt "Folgen Sie dem Schema". Schauen Sie sich den Schaltplan oben an oder laden Sie ihn herunter und drucken Sie ihn aus!

Schritt 2: Vorbereiten des Summerteils

Vorbereiten des Summerteils
Vorbereiten des Summerteils
Vorbereiten des Summerteils
Vorbereiten des Summerteils
Vorbereiten des Summerteils
Vorbereiten des Summerteils

Wenn Sie bereits Summer mit Arduino verwendet haben, wissen Sie, dass es nicht laut genug ist, wenn wir es direkt mit Arduino verbinden. Also brauchen wir einen Verstärker. Um den Verstärker zu konstruieren, benötigen wir einen NPN-Transistor (im Grunde funktioniert jeder NPN, ich habe S9013 verwendet, weil ich ihn aus einem alten Projekt habe) und einen Widerstand zur Strombegrenzung. Identifizieren Sie zunächst Kollektor, Emitter und Basis des Transistors. Ein wenig googeln des Datenblattes wird dafür funktionieren. Löten Sie dann den Kollektor des Transistors an den Minuspol des Summers. Am Pluspol des Summers löten wir einfach ein Stück Draht an, damit wir es später an unseren Arduino löten können. Löten Sie danach den 500R-Widerstand (oder einen ähnlichen Widerstandswert) an die Basis des Transistors und löten Sie vom Widerstand ein weiteres Stück Draht für die zukünftige Verwendung. Schließlich löten Sie die beiden 10R-Widerstände in Reihe an den Emitter des Transistors und schließen Sie einen weiteren Draht von den Widerständen an.

Wirklich, siehe Schaltplan.

p/s: Ich weiß immer noch nicht wirklich, wie man einen Widerstand für den Transistor auswählt, als ich dies schreibe. Der verwendete Wert I wird empirisch gewählt.

Schritt 3: Vorbereiten des LED-Panels

Vorbereiten des LED-Panels
Vorbereiten des LED-Panels
Vorbereiten des LED-Panels
Vorbereiten des LED-Panels
Vorbereiten des LED-Panels
Vorbereiten des LED-Panels

Stecken Sie die LEDs und den Widerstand entsprechend in die Prototyping-Platine und löten Sie sie. Das ist es. Folgen Sie dem Schema. Falls Sie sich für den von mir verwendeten Abstand interessieren, 3 Löcher für jede Spalte und zwei Löcher für jede Reihe (siehe Bild). Und die Anzeige-LED? Ich habe es zufällig angeschlossen.

Nachdem Sie die LEDs und den Widerstand an die Platine gelötet haben, verbinden Sie alle positiven Anschlüsse der LEDs miteinander. Dann löten Sie Drähte nacheinander an jeden der Widerstände an den negativen Anschlüssen der LEDs, damit wir sie später an Arduino löten können.

HINWEIS: Dieser Schritt könnte Sie verwirren. Denken Sie daran, anstatt die gesamte Masse miteinander zu verbinden, verbinden wir alle positiven Anschlüsse und den negativen Anschluss mit dem einzelnen Pin auf Arduino. Daher verwenden wir den Arduino GPIO-Pin als Masse, nicht Vcc. Falls Sie es versehentlich rückwärts anschließen, machen Sie sich keine Sorgen. Sie können alle HIGH zu LOW und LOW zu HIGH in der LEDcontrol-Funktion ändern.

Schritt 4: Vorbereiten des Schalters (Druckknopf eigentlich)

Vorbereiten des Schalters (Druckknopf eigentlich)
Vorbereiten des Schalters (Druckknopf eigentlich)
Vorbereiten des Schalters (Druckknopf eigentlich)
Vorbereiten des Schalters (Druckknopf eigentlich)
Vorbereiten des Schalters (Druckknopf eigentlich)
Vorbereiten des Schalters (Druckknopf eigentlich)

Für den Schalter (ich nenne ihn Schalter, weil ich einen Mikroschalter verwendet habe, aber Sie wissen, dass es ein Druckknopf ist) benötigen wir einen 4k7-Pulldown-Widerstand und natürlich den Schalter selbst. Ah, vergiss nicht, ein paar Drähte vorzubereiten. Beginnen Sie, indem Sie den Widerstand und ein Stück Draht an die gemeinsame Masse (COM) des Mikroschalters anlöten. Löten Sie dann ein weiteres Stück Draht an den normalerweise geöffneten (NO) des Mikroschalters. Schließlich befestigen Sie einen weiteren Draht an den Widerstand. Sichern Sie es mit etwas Heißkleber.

Wissensecke: Warum brauchen wir einen Pull-Down-Widerstand?

"Wenn Sie den digitalen I/O-Pin von allem trennen, kann die LED unregelmäßig blinken. Dies liegt daran, dass der Eingang "schwebt" - das heißt, er gibt zufällig entweder HIGH oder LOW zurück. Deshalb benötigen Sie einen Pull-up oder Pulldown-Widerstand im Stromkreis." -- Quelle: Arduino-Website

Schritt 5: LED-Streifen vorbereiten

LED-Streifen vorbereiten
LED-Streifen vorbereiten
LED-Streifen vorbereiten
LED-Streifen vorbereiten

LED-Streifen ist für die Nachttischlampe, die optional ist. Einfach LED-Streifen und Schiebeschalter in Reihe schalten, nichts Besonderes.

Schritt 6: Vorbereiten des Kapazitätssensors

Vorbereitung des Kapazitätssensors
Vorbereitung des Kapazitätssensors
Vorbereitung des Kapazitätssensors
Vorbereitung des Kapazitätssensors
Vorbereitung des Kapazitätssensors
Vorbereitung des Kapazitätssensors
Vorbereitung des Kapazitätssensors
Vorbereitung des Kapazitätssensors

Ok siehe Bild. Grundsätzlich werden wir den Draht nur an einem kleinen Stück Aluminiumfolie befestigen (da Aluminiumfolie nicht gelötet werden kann) und dann auf ein kleines Stück Montageplatte kleben. Zur Erinnerung, stellen Sie sicher, dass Sie die Aluminiumfolie nicht vollständig abkleben. Lassen Sie etwas davon für direkten Kontakt frei.

Schritt 7: Vorbereiten der Stromversorgung

Vorbereiten der Stromversorgung
Vorbereiten der Stromversorgung
Vorbereiten der Stromversorgung
Vorbereiten der Stromversorgung
Vorbereiten der Stromversorgung
Vorbereiten der Stromversorgung

Da ich einen Li-On-Akku als Stromversorgung verwendet habe, benötige ich ein TP4056-Modul zum Laden und Schutz und einen Aufwärtswandler, um die Spannung auf 9V umzuwandeln. Wenn Sie sich für die Verwendung eines 9-V-Wandadapters entschieden haben, benötigen Sie möglicherweise eine DC-Buchse oder schließen Sie sie einfach direkt an. Beachten Sie, dass der Widerstandswert für den Verstärker für 9 V ausgelegt ist und wenn Sie eine andere Spannung verwenden möchten, müssen Sie möglicherweise den Widerstand ändern.

Schritt 8: Anschließen an Arduino

Anschließen an Arduino
Anschließen an Arduino
Anschließen an Arduino
Anschließen an Arduino
Anschließen an Arduino
Anschließen an Arduino

Folgen Sie dem Schema! Folgen Sie dem Schema! Folgen Sie dem Schema!

Schließen Sie nicht den falschen Pin an, sonst wird es seltsam.

Schritt 9: Gehäuse

Gehege
Gehege
Gehege
Gehege
Gehege
Gehege
Gehege
Gehege

Die Abmessung meines Designs beträgt 6,5 cm * 6,5 cm * 8 cm, daher ist es etwas sperrig. Es besteht aus einem Frontfenster für die LED-Anzeige und einem oberen Fenster für die Nachttischlampe. Für mein Design siehe Bilder.

Schritt 10: Programmierzeit

Image
Image
Programmierzeit!
Programmierzeit!

Laden Sie meine Skizze unten herunter und laden Sie sie auf Ihr Arduino hoch. Wenn Sie nicht wissen, wie das geht, machen Sie dieses Projekt nicht! Nee, nur ein Scherz, hier ist ein gutes Tutorial dazu: Sketch to arduino hochladen

Öffnen Sie dann den seriellen Monitor, und Sie sollten sehen, dass er die aktuelle Uhrzeit ausgibt. Um die Zeit einzustellen, gehen Sie wie folgt vor.

Stunde einstellen: h, XX -- wobei xx die aktuelle Stunde ist

Minute einstellen: min, XX -- xx ist die aktuelle Minute

Sekunde einstellen: s, XX

Datum einstellen: d, XX

Monat einstellen: Mo, XX

Wenn der obige Kommentar ausgeführt wird, sollte er Ihnen den gerade eingestellten Wert zurückgeben. (Wenn Sie beispielsweise die Stunde mit h, 15 einstellen, sollte im seriellen Monitor Hour: 15 zurückgegeben werden.

Für den Kapazitätssensor müssen Sie ihn möglicherweise kalibrieren, bevor er funktioniert. Drücken Sie dazu zweimal den Mikroschalter und schauen Sie auf den seriellen Monitor. Es sollte eine Reihe von Zahlen ausgeben. Legen Sie nun Ihren Finger auf den Kapazitätssensor und beachten Sie den Bereich der Nummer. Ändern Sie als nächstes die Variable "captrigger". Nehmen wir an, Sie erhalten 20-30, wenn Sie gedrückt werden, und setzen Sie dann captrigger auf 20.

Die Skizze verwendet die ADCTouch-Bibliothek, stellen Sie sicher, dass Sie sie installiert haben.

Schritt 11: Korrekturmechanismus

Der Zeitraum für den Korrekturmechanismus in meinem Code ist auf den für mich genauen Zeitraum eingestellt. Wenn die Zeit immer noch nicht genau ist, müssen Sie den Wert der Variablen "corrdur" ändern

Der Kordur ist jetzt im neuesten Update standardmäßig auf 0 eingestellt.

Der Wert von corrdur gibt an, wie viele Millisekunden es dauert, um eine Sekunde zu verlangsamen

Um den Wert von corrdur herauszufinden, verwenden Sie die Formel:

2000/(y-x)/x)

wobei x=tatsächliche Zeitdauer und y=Zeitdauer der Uhr, beide in Sekunden

Um den Wert von x und y zu finden, müssen Sie ein kleines Experiment durchführen.

Stellen Sie die Uhrzeit der Uhr auf die aktuelle Uhrzeit ein und zeichnen Sie die Anfangszeit auf (die tatsächliche Anfangszeit und die Anfangszeit der Uhr sollten gleich sein). Notieren Sie nach einer Weile (einigen Stunden) die endgültige tatsächliche Uhrzeit und die letzte Uhrzeit der Uhr.

x=aktuelle Endzeit-Anfangszeit und y=Uhr Endzeit-Anfangszeit

Ändern Sie dann den Wert von corrdur im Code und laden Sie ihn erneut auf das Arduino hoch.

Wiederholen Sie dann den Test und dieses Mal änderte sich die Formel zu:

2000/((2/z)+(y-x/x))

Wobei x und y dasselbe sind wie zuvor, während z der aktuelle Korrdurwert ist.

Laden Sie es erneut hoch und führen Sie den Test immer wieder durch, bis er für Sie präzise genug ist.

Falls Ihre Uhr immer noch schneller wird, obwohl corrdur auf 0 gesetzt ist (bedeutet, dass kein Korrekturmechanismus vorhanden ist), müssen Sie die Sekunde ++ in die Sekunde ändern - im Korrekturmechanismus-Teil des Codes (ich habe es kommentiert), setzen Sie corrdur auf 0, dann finde die nr. von Millisekunden dauert es, um eine Sekunde zu beschleunigen.

Schritt 12: So verwenden Sie alle Funktionen

Image
Image

Sie können den Modus durch Drücken des Mikroschalters ändern.

Im ersten Modus wird einfach die Zeit angezeigt. Wenn die Kontrollleuchte 1 Mal pro Sekunde blinkt, ist der Alarm ausgeschaltet. Wenn 2 Mal pro Sekunde, ist der Alarm aktiviert. Sie können den Alarm im ersten Modus 10 Minuten lang snoozen, indem Sie den Kapazitätssensor drücken.

Im zweiten Modus wird das Datum angezeigt. Drücken des Kapazitätssensors tut nichts.

Im dritten Modus können Sie den Timer einstellen. Durch Drücken des Kapazitätssensors wird der Timer eingeschaltet und Sie sollten sehen, dass die Kontrollleuchte zu blinken beginnt. Der Kapazitätssensor wird auch verwendet, um die Timerzeit einzustellen. Der Timerbereich reicht von 1 Minute bis 59 Minuten.

Im vierten Modus können Sie die Alarmstunde mit dem Kapazitätssensor einstellen

Im fünften Modus können Sie die Alarmminute mit dem Kapazitätssensor einstellen.

Im sechsten Modus wird durch Drücken des Kapazitätssensors die Minute auf 30 und die Sekunde auf 0 zurückgesetzt, ohne die Stunde zu ändern. Das heißt, solange Ihre Uhr nicht über 30 Minuten abweicht, können Sie sie in diesem Modus neu kalibrieren.

Der siebte Modus ist der Nichtstun-Modus für den Fall, dass der Kapazitätssensor beim Laden ausfällt.

Oh, um den Alarm auszuschalten, drücken Sie einfach den Mikroschalter. (AKTUELLES UPDATE ZUM EINSCHLIEßEN VON ALARM SNOOZE)

Nun, wie wäre es mit dem Lesen der Uhr? Es ist einfach! Binäre Uhr lesen -- Wikihow Vielleicht fühlen Sie sich zuerst komisch, aber Sie werden sich daran gewöhnen!

Schritt 13: Fazit

Abschluss
Abschluss
Abschluss
Abschluss

Warum ich dieses Projekt gestartet habe. Am Anfang liegt es daran, dass ich eine alte Digitaluhr herumliegen habe und sie in einen Wecker verwandeln möchte. Leider stellt sich heraus, dass die alte Uhr kaputt ist. Also dachte ich mir, warum nicht einen mit Arduino bauen? Mit ein wenig Google-Suche fand ich dieses binäre Uhrenprojekt ohne RTC auf von Cello62 anweisbar. Es hat jedoch nicht die gewünschte Weckerfunktion, also nehme ich den Code und ändere ihn selbst. Und das Projekt ist geboren. Darüber hinaus sah ich den Uhrenwettbewerb, der kürzlich auf instructable lief, was mir noch mehr Motivation gab, dies zu tun. Wie auch immer, dies ist immer noch mein erstes Projekt mit Arduino, also eine Reihe möglicher Verbesserungen.

Zukünftige Verbesserung:

1) Verwenden Sie RTC

2) Stellen Sie drahtlos Alarm oder Zeit oder Timer ein!

3) An welche Funktion ich auch immer denke

Schritt 14: Update: Nach einer Woche Nutzung

Update: Nach einer Woche Nutzung
Update: Nach einer Woche Nutzung
Update: Nach einer Woche Nutzung
Update: Nach einer Woche Nutzung
Update: Nach einer Woche Nutzung
Update: Nach einer Woche Nutzung

Abgesehen von dem offensichtlichen Problem - Zeitdrift - ist das nächste, was ich sagen würde, der Stromverbrauch. Zuerst steigere ich die Spannung auf 9V, die dann vom Linearregler in Arduino heruntergesetzt wird. Der Linearregler ist sehr ineffizient. Die Uhr dauert nur EINEN TAG. Das heißt, ich muss es jeden Tag aufladen. Das ist nicht die größte Sache, bis Sie feststellen, dass das gesamte System nur etwa 50 % effizient ist. Da mein Akku 2000 mAh hat, könnte ich jeden Tag berechnen, wie viel Energie verschwendet wird.

Stromverschwendung=(7,4Wh*10%)+(7,4Wh*90%*50%)=4,07Wh pro Tag

Das sind 1,486 kWh pro Jahr! Das kann zum Kochen von, äh, 283 g Wasser (von 25 C bis 100 C) verwendet werden? Aber wie auch immer, ich werde die Effizienz der Uhr verbessern. Der Weg, dies zu tun, besteht darin, den Linearregler überhaupt nicht zu verwenden. Das bedeutet, dass wir den Aufwärtswandler so einstellen müssen, dass er 5V direkt an den 5V-Pin von Arduino ausgibt. Um die Energieverschwendung noch weiter zu minimieren, muss ich als nächstes die beiden On-Board-LEDs (Pin13 und Power) entfernen, da sie 0,95 Wh pro Tag verschwenden. Leider bin ich beim SMD-Löten total noob, also kann ich nur die Schiene auf der Platine schneiden. Danach muss ich den Emitterwiderstand am Summer und der Nachttischlampe entfernen (LED-Streifen funktioniert nicht bei 5V). Aber bedeutet das, dass Sie diese erstaunliche Funktion aufgeben müssen? Nein! Sie haben hier zwei Möglichkeiten: Verwenden Sie die normale 5mm LED-Diode oder verwenden Sie 5V LED-Streifen. Aber für mich war ich schon müde, dieses Projekt die ganze letzte Woche zu machen, also beschloss ich, dieses Feature aufzugeben. Ich habe den Schalter jedoch ursprünglich für die Lichtfunktion zum Ein- oder Ausschalten des Uhrenpanels verwendet, um weiter Energie zu sparen, aber am Ende blinkt die LED, wenn ich es ausschalte. Bug Feature geworden? Ich weiß es nicht (jemand weiß es bitte unten).

Am Ende der Modifikation hält die Uhr nun mehr als 2 Tage!

Als nächstes habe ich ein weniger ernstes Problem mit der Uhr. Während des Ladevorgangs würde der Kapazitätssensor verrückt spielen, also füge ich einen weiteren Modus hinzu, der absolut nichts tut.

Da es sehr unpraktisch ist, jeden Tag an den Computer anzuschließen, um ihn zurückzusetzen, habe ich einen weiteren Modus hinzugefügt, der die Minute auf 30 und die Sekunde auf 0 setzt. Das heißt, Sie können ihn um jede halbe Stunde zurücksetzen!

Empfohlen: