Inhaltsverzeichnis:

Arduino Dusk / Dawn Clock Timer - Gunook
Arduino Dusk / Dawn Clock Timer - Gunook

Video: Arduino Dusk / Dawn Clock Timer - Gunook

Video: Arduino Dusk / Dawn Clock Timer - Gunook
Video: Arduino Based Home Automation Dusk To Dawn Lighting Timer Based On Vintage Sangamo Suntracker 2024, Juli
Anonim
Arduino Dämmerungs-/Morgendämmerungsuhr-Timer
Arduino Dämmerungs-/Morgendämmerungsuhr-Timer

Zusammenfassung:

Dieser Arduino-basierte Timer kann ein 220-V-Licht in der Dämmerung, im Morgengrauen oder zu einer bestimmten Zeit schalten.

Einführung:

Einige der Lichter in meinem Haus werden in der Abenddämmerung automatisch eingeschaltet, entweder bis zu einer voreingestellten Zeit oder bis zum Morgengrauen (die ganze Nacht).

Die Position der Leuchten lässt die Verwendung eines Lichtsensors nicht zu. Die regulär verfügbaren Zeitschaltuhren schalten sich zu einer bestimmten Zeit ein. Das Einschalten in der Dämmerung erfordert daher eine regelmäßige Anpassung der Timer-Programmeinstellung.

Als schöne Herausforderung habe ich beschlossen, stattdessen einen benutzerdefinierten Arduino-basierten Stand-Alone-Timer zu bauen. Es verwendet eine Echtzeituhr und die Dusk2Dawn-Bibliothek, um die Zeit zu bestimmen, zu der die Lichter ein- oder ausgeschaltet werden müssen. Das Gehäuse für diesen Timer ist 3D-gedruckt und kann auf Thingiverse gefunden werden. Den Arduino-Code für dieses Projekt finden Sie auf GitHub.

Bei der Erstellung dieses Timers habe ich mich von vielen Designs und Schaltungen im Internet inspirieren lassen. Mein Dank gilt allen Mitwirkenden, die nicht explizit erwähnt wurden.

Zur besseren Lesbarkeit werden in den Schritten bei Bedarf Teilschaltbilder anstelle eines kompletten Schaltplans dargestellt.

Alternativlösungen:

Statt einer Stand-alone-Zeitschaltuhr gibt es viele Lösungen, bei denen ein Smart Home Automation System das Licht steuert. Mein Ziel war es, eine unabhängige Lösung zu haben, die nicht von WIFI (oder anderen) Konnektivität abhängt.

Einschränkungen:

Der mit diesem Projekt bereitgestellte Code umfasste eine Implementierung der Sommerzeitumstellung basierend auf dem europäischen Sommerzeitsystem.

Schritt 1: Teileliste und Werkzeuge

Teileliste und Werkzeuge
Teileliste und Werkzeuge

Teile:

Gesamtkosten der Teile (ohne 3D-Druck) ca. € 30,-.

  • Arduino Nano V3 (kompatibel) ohne Header
  • Netzteil 5V 0.6A (34 x 20 x 15mm)
  • Halbleiterrelais 5V - Aktiv niedrig - 2A 230VAC
  • Echtzeituhr DS3231 (klein)
  • 0,96-Zoll-OLED-Display SPI 128 * 64 Pixel
  • Drehgeber - EC11 - 20mm
  • Knopf 6mm Welle 15mm * 17mm
  • Steckbrett Leiterplatte,
  • 4 * M3x25mm Schrauben
  • 3D gedrucktes Gehäuse
  • Schrumpfschlauch
  • Drähte
  • Schraubklemmenblock (zum Anschluss von Neutralleitern)

Werkzeuge benötigt:

  • Lötkolben
  • Lötdraht
  • Entlötpumpe
  • Abisolierzangen
  • Schneider
  • 3D-Drucker (um Gehäuse zu drucken)
  • Verschiedene kleine Werkzeuge

WARNUNG

Diese Schaltung funktioniert mit 230 V Wechselspannung und wenn Sie nicht daran gewöhnt sind, mit Netzspannung zu arbeiten oder nicht über ausreichende Erfahrung im Umgang mit 230 V Wechselspannung verfügen, halten Sie sich bitte von diesem Projekt fern

Ich übernehme keine Verantwortung für Verluste oder Schäden, die direkt aus oder als Folge dieses Projekts entstehen

Es wird immer empfohlen, beim Arbeiten mit Wechselstromnetzen angemessene Vorsicht und Vorsichtsmaßnahmen zu treffen

Schritt 2: OLED-Display und Echtzeituhr vorbereiten

OLED-Display und Echtzeituhr vorbereiten
OLED-Display und Echtzeituhr vorbereiten

Das 3D-gedruckte Gehäuse ist auf minimale Größe ausgelegt. Daher müssen die Header des OLED-Displays und der Echtzeituhr entfernt werden.

Um den nächsten Schritt vorzubereiten, entfernen Sie mit der Entlötpumpe alle Lötmittelreste aus den Löchern.

Schritt 3: Drehgeber vorbereiten

Drehgeber vorbereiten
Drehgeber vorbereiten

Der Drehgeber hat fadenscheinige Anschlüsse. Um Beschädigungen zu vermeiden, montieren Sie ein Stück Leiterplatte am Encoder.

Auf dem Bild ist auch der Masseanschluss (oben rechts und Mitte unten) bereits vorbereitet.

Hinweis: Stellen Sie sicher, dass der Drehgeber mit Leiterplatte in das Gehäuse passt, ohne den Arduino zu berühren. Es kann erforderlich sein, die Leiterplatte zu schleifen, um einen festen Sitz zu erhalten.

Schritt 4: Gehäuse

Gehege
Gehege
Gehege
Gehege

Drucken Sie die drei Teile des Gehäuses mit einem 3D-Drucker. Lesen Sie die Anweisungen auf Thingiverse.

Schritt 5: Arduino Power-LED deaktivieren (optional)

Arduino Power-LED deaktivieren (optional)
Arduino Power-LED deaktivieren (optional)

Um zu verhindern, dass der Timer grün leuchtet, kann die Power-LED des Arduino deaktiviert werden.

Beachten Sie, dass diese Änderung optional ist.

Die Modifikation des Arduino Nano besteht darin, den Widerstand neben der Strom-LED zu entfernen (siehe roter Kreis im Bild).

Schritt 6: Stromversorgung + Halbleiterrelais

Netzteil + Halbleiterrelais
Netzteil + Halbleiterrelais

In diesem Schritt werden Netzteil und Solid-State-Relais kombiniert und im unteren Teil des Gehäuses montiert.

An der Unterseite dieser Komponenten werden Verbindungen zwischen der Stromversorgung und dem Relais hergestellt. Die Schraubklemmenleiste des Relais wird verwendet, um eine Verbindung zum Arduino herzustellen.

Hinweis: Achten Sie beim Anschließen darauf, dass die Montagelöcher des Solid-State-Relais frei bleiben.

  • Löten Sie ein Verbindungskabel zwischen Halbleiterrelais A1 an einen der AC-Anschlüsse des Netzteils
  • Löten Sie einen Draht an den anderen AC-Anschluss des Netzteils (dieser wird in Schritt 7 an die neutrale Schraubklemmenleiste angeschlossen)
  • Löten Sie einen Draht zwischen Stromversorgung -Vo zu Relais DC-
  • Löten Sie einen Draht, um die Stromversorgung +Vo an das Relais DC+. anzuschließen

Hinweis: Möglicherweise müssen die Kabel an der Stromversorgung und am Relais gekürzt werden, damit sie in das Gehäuse passen.

Schritt 7: Arduino Nano + Netzteil + Halbleiterrelais

Arduino Nano + Netzteil + Halbleiterrelais
Arduino Nano + Netzteil + Halbleiterrelais

In diesem Schritt wird der Arduino Nano mit der Stromversorgung und dem Solid-State-Relais verbunden.

  • Schneiden Sie zwei Drähte von ca. 70 mm Länge ab. 30 mm Isolierung auf einer Seite und 4 mm auf der anderen Seite abisolieren.
  • Löten Sie die Seite mit 30 mm abisolierter Isolierung an den Arduino +5V und GND, wobei der Draht durchsteht
  • Schneiden Sie zwei Schrumpfschläuche von 20 mm Länge ab und montieren Sie sie über dem 25 mm abisolierten Teil. Dadurch werden die Adern bis zur Verbindung mit der montierten Schraubklemmleiste DC+ und DC- des Halbleiterrelais isoliert.
  • Beachten Sie, dass die Drähte für GND und +5 V gekreuzt werden müssen, um richtig an den Schraubklemmenblock des Relais anzuschließen.
  • Schneiden Sie einen Draht von ca. 40 mm Länge ab und entfernen Sie 4 mm Isolierung an beiden Enden. Löten Sie eine Seite mit dem A2-Anschluss auf der RÜCKSEITE des Arduino und verbinden Sie die andere Seite mit dem CH1-Anschluss des Festkörpermontage-Schraubklemmenblocks.

WARNUNG

Der Arduino wird direkt von der stabilen +5V-Stromversorgung versorgt, anstatt den internen Stromregler des Arduino zu verwenden. Daher ist es nicht sicher, USB anzuschließen, wenn das Arduino über das Netzteil mit Strom versorgt wird.

Trennen Sie immer das 230VAC-Netz, bevor Sie die Arduino-USB-Verbindung verwenden.

Schritt 8: Arduino Nano + Echtzeituhr

Arduino Nano + Echtzeituhr
Arduino Nano + Echtzeituhr

In diesem Schritt wird die Echtzeituhr mit dem Arduino verbunden, teilweise unter Verwendung der im vorherigen Schritt vorbereiteten Kabel.

  • Löten Sie das von Arduino GND kommende Kabel (auch mit DC- des Relais verbunden) an '-' der Echtzeituhr.
  • Löten Sie den Draht von Arduino +5V (auch an DC+ des Relais angeschlossen) an "+" der Echtzeituhr.
  • Schneiden Sie zwei Drähte von ca. 40 mm Länge ab und entfernen Sie 4 mm der Isolierung an beiden Enden.
  • Löten Sie einen Draht zwischen Arduino A4 und Echtzeituhr D (SDA).
  • Löten Sie einen Draht zwischen Arduino A5 und Echtzeituhr C (SCL).
  • Formen Sie die Drähte der Echtzeituhr so, dass sie den Drehgeber nicht stören. Dazu müssen sich die Drähte an der Unterseite des Gehäuses befinden.

Schritt 9: OLED-Display anschließen

OLED-Display verbinden
OLED-Display verbinden

In diesem Schritt wird das OLED-SPI-Display zum Arduino hinzugefügt.

  • Schneiden Sie 2 Drähte von 65 mm Länge ab und entfernen Sie 4 mm der Isolierung von beiden Enden.
  • Löten Sie einen Draht an den GND-Anschluss des OLED-Displays. Löten Sie diesen Draht an den isolierten Draht des Schrumpfschlauchs, der vom Arduino GND kommt (siehe Schritt 4) und verbinden Sie beide Drähte mit dem DC-Mount-Schraubklemmenblock des Halbleiterrelais.
  • Löten Sie einen Draht an den VCC-Anschluss des OLED-Displays. Löten Sie diesen Draht an den isolierten Draht des Schrumpfschlauchs, der vom Arduino +5V kommt (siehe Schritt 4) und verbinden Sie beide Drähte mit der DC+-Schraubklemmenleiste des Halbleiterrelais.
  • Schneiden Sie 5 Drähte von 65 mm Länge ab und entfernen Sie 4 mm der Isolierung von beiden Enden.
  • Löten Sie einen Draht, um D0 (CLK) mit Arduino D10 zu verbinden
  • Löten Sie einen Draht, um D1 (MOSI / DATA) mit Arduino D9 zu verbinden
  • Löten Sie einen Draht, um RES (RT) mit Arduino D8 zu verbinden
  • Löten Sie einen Draht, um DC mit Arduino D11 zu verbinden
  • Löten Sie einen Draht, um CS mit Arduino D12 zu verbinden

Hinweis: Die Reihenfolge der Displaykabel ist nicht logisch. Dies ist das Ergebnis der ersten Verwendung des Adafruit-Beispiels und der anschließenden Änderung der Verbindungen, da die Verwendung von D13 ständig zu einer roten LED auf dem Arduino führt.

Alternative

Es ist möglich, eine „normale“Reihenfolge für die SPI-Verbindungen zu verwenden. Dazu muss die digitale Ausgangsdefinition des Arduino-Programms in oledcontrol.cpp entsprechend angepasst werden:

// Verwendung der Software SPI

// Pin-Definitionen

#define CS_PIN 12

#define RST_PIN 8

#define DC_PIN 11

#define MOSI_PIN 9

#define CLK_PIN 10

Schritt 10: Drehgeber

Drehcodierer
Drehcodierer

Das Diagramm zeigt die Anschlüsse des Arduino an den Drehgeber (Encoder von oben gesehen).

  • Schneiden Sie 4 Drähte von 45 mm ab und entfernen Sie 4 mm der Isolierung von beiden Enden.
  • Verbinden Sie Arduino GND mit den oberen rechten und unteren mittleren Anschlüssen des Encoders
  • Verbinden Sie Arduino D2 mit der unteren linken Seite des Encoders
  • Verbinden Sie Arduino D3 unten rechts mit dem Encoder
  • Verbinden Sie Arduino D4 oben links vom Encoder

Schritt 11: Installation im Gehäuse

Einbau im Gehäuse
Einbau im Gehäuse

Installieren Sie die gesamte Elektronik im unteren Teil des Gehäuses:

  • Schieben Sie den Arduino auf den vertikalen Schlitz
  • Schieben Sie die Echtzeituhr in das untere Fach
  • Schieben Sie das Netzteil und das Relais in das obere Fach und stellen Sie sicher, dass das Relais auf seinen Halterungen sitzt.

Schritt 12: Anschließen an das Stromnetz / zu schaltendes Licht

Anschluss an das Stromnetz / zu schaltendes Licht
Anschluss an das Stromnetz / zu schaltendes Licht
Anschluss an das Stromnetz / zu schaltendes Licht
Anschluss an das Stromnetz / zu schaltendes Licht

WARNUNG

Achten Sie bei der Arbeit mit Wechselstromnetzen auf angemessene Sorgfalt und Vorsicht und stellen Sie sicher, dass das Wechselstromnetz getrennt ist

Ich übernehme keine Verantwortung für Verluste oder Schäden, die direkt aus oder als Folge dieses Projekts entstehen

  • Schließen Sie die AC-Netzphase an die A1-Schraube (links) des Relais an.
  • Schließen Sie die Phase des zu schaltenden Lichts an die Schraubklemme B1 (rechts) des Relais an.
  • Verwenden Sie eine separate Schraubklemmenleiste, um den Neutralleiter des AC-Netzes, den hellen Neutralleiter und den Neutralleiter der Stromversorgung anzuschließen.
  • Bringen Sie zur Zugentlastung einen Kabelbinder um jedes der Stromkabel an.

Schritt 13: Fertigstellen des Gehäuses

Fertigstellen des Gehäuses
Fertigstellen des Gehäuses

In diesem Schritt ist die Montage im Gehäuse abgeschlossen

  • Schieben Sie das OLED-Display durch das Display-Montageloch im mittleren Teil des Gehäuses.
  • Schieben Sie den Drehgeber durch das Loch im Mittelteil und stellen Sie sicher, dass die Verdrehsicherung ausgerichtet ist. Montieren Sie den Drehgeber mit der mitgelieferten Unterlegscheibe und Mutter.
  • Montieren Sie den oberen Teil des Gehäuses und schließen Sie das Gehäuse, indem Sie die vier M3x25mm Schrauben von unten anbringen.

Schritt 14: Programmierung des Arduino

WARNUNG

Der Arduino wird direkt von der stabilen +5V-Stromversorgung versorgt, anstatt den internen Arduino-Leistungsregler zu verwenden. Daher ist es nicht sicher, USB anzuschließen, wenn das Arduino über das Netzteil mit Strom versorgt wird.

Trennen Sie immer das 230VAC-Netz, bevor Sie die Arduino-USB-Verbindung verwenden.

Rufen Sie das Arduino-Timerprogramm von GitHub ab.

Dieses Programm verwendet die Arduino IDE, die hier erhältlich ist.

Das Programm verwendet die folgenden zusätzlichen Bibliotheken:

SSD1303Ascii

Arduino Wire-Bibliothek

Beachten Sie, dass die Bibliothek dusk2dawn ebenfalls verwendet wird, jedoch aufgrund einer Änderung in ihrer Schnittstelle als Code enthalten ist.

Um eine korrekte Dämmerungs- / Morgendämmerungsberechnung zu gewährleisten, müssen Längen- und Breitengrad sowie Zeitzone eingestellt werden.

Wie im Beispiel dusk2dawn beschrieben, können Sie den Längen- und Breitengrad für einen beliebigen Standort ganz einfach ermitteln, indem Sie den Ort in Google Maps suchen, mit der rechten Maustaste auf den Ort auf der Karte klicken und "Was ist hier?" auswählen. Unten sehen Sie eine Karte mit den Koordinaten.

Längen- und Breitengrad sind im Programm fest codiert, in Dusk2Dawn.cpp Zeile 19 und 20:

/* Breiten- und Längengrad Ihres Standorts müssen hier eingestellt werden.

* * TIPP: Eine einfache Möglichkeit, den Längen- und Breitengrad für einen beliebigen Ort zu ermitteln, besteht darin, * den Ort in Google Maps zu suchen, mit der rechten Maustaste auf den Ort auf der Karte zu klicken und * "Was ist hier?" auszuwählen. Unten sehen Sie eine Karte mit den *-Koordinaten. */ #define LATITUDE 52.097105; // Utrecht #define LONGTITUDE 5.068294; // Utrecht

Die Zeitzone ist auch in Zeile 24 von Dusk2Dawn.cpp fest codiert. Standardmäßig ist sie auf Niederlande (GMT + 1) eingestellt:

/* Geben Sie hier Ihre Zeitzone (Offset zu GMT) ein.

*/ #define ZEITZONE 1

Bei der erstmaligen Programmierung des Arduino muss der EEPROM-Speicher initialisiert werden. Ändern Sie dazu die Zeile 11 von timer.cpp, um die EEPROM-Initialisierung durchzuführen:

// für die erstmalige Programmierung auf true ändern

#define INITIALIZE_EEPROM_MEMORY false

Laden Sie das Programm auf das Arduino hoch und booten Sie das Arduino.

Deaktivieren Sie die EEPROM-Initialisierung und laden Sie das Programm erneut auf den Arduino hoch. Der Timer merkt sich nun die Schaltzeiteinstellungen beim Neustart.

Schritt 15: Einstellen der Uhrzeit und Schaltzeiten

Konzepte der Benutzerinteraktion:

  • Durch kurzes Drücken wird die Auswahl bestätigt. Darüber hinaus schaltet im Haupt-Timer-Bildschirm ein kurzes Drücken das Licht ein oder aus.
  • Langes Drücken wird verwendet, um das Menü vom Haupt-Timer-Bildschirm aus aufzurufen. Überall im Menü kehren Sie durch langes Drücken zum Haupt-Timer-Bildschirm zurück.
  • ‘>’ Auswahlkurs. Dieser Cursor zeigt die ausgewählte Option in einem Menü an.

Haupt-Timer-Bildschirm

Der Haupt-Timer-Bildschirm zeigt:

Wochentag So

Aktuelle Uhrzeit 16:00

Aktueller Timerzustand und nächste Schaltzeit Timer AUS bis 17:12

Morgen- und Abenddämmerung Morgendämmerung 08:05 Abenddämmerung 17:10

Einstellen der richtigen Uhrzeit

Lange drücken, um das Menü zu öffnen. Die folgenden Optionen werden angezeigt:

ZurückUhrzeit einstellenWochentagprogrammWochenendprogrammOptionen

Wählen Sie Zeit einstellen, um Datum und Uhrzeit der Echtzeituhr einzustellen. Geben Sie die richtigen Werte ein für:

JahrMonatTagUhrzeit

Der Timer bestimmt automatisch den Wochentag. Die Umstellung der Sommerzeit erfolgt ebenfalls automatisch. Die Sommerzeit wird nur für die europäische Zeitzone implementiert.

Timerprogramm einstellen

Der Timer hat 2 Programme, eines für Wochentage, eines für das Wochenende. Beachten Sie, dass der Freitag als Teil des Wochenendes gilt, die Lichter können etwas länger anbleiben.

Jeder Timer hat einen Ein- und Ausschaltzeitpunkt. Der Moment kann entweder sein:

  • Uhrzeit: Genau festgelegte Uhrzeit
  • Morgendämmerung: Wechseln Sie basierend auf der berechneten Zeit der Morgendämmerung
  • Dämmerung: Wechseln Sie basierend auf der berechneten Zeit der Dämmerung

Für Dämmerung und Morgendämmerung kann ein Korrekturwert von 59 Minuten vorher oder nachher eingegeben werden.

Beispiele:

Um ein Licht die ganze Nacht einzuschalten, wählen Sie Einschalten um (Dämmerung + 10min), Ausschalten um (Morgendämmerung - 10min)

Um abends ein Licht einzuschalten, wählen Sie bei Dämmerung einschalten, um 22:30 Uhr ausschalten.

Optionen

Im Optionsbildschirm kann ein Timeout für das Umschalten des Bildschirms eingestellt werden.

Wenn der Bildschirm ausgeschaltet ist, kehren Sie durch Drücken des Drehreglers zum Haupt-Timer-Bildschirm zurück.

Empfohlen: