Cuprins:

Temporizator de ceas Arduino Dusk / dawn: 15 pași
Temporizator de ceas Arduino Dusk / dawn: 15 pași

Video: Temporizator de ceas Arduino Dusk / dawn: 15 pași

Video: Temporizator de ceas Arduino Dusk / dawn: 15 pași
Video: I made an alarm clock that's also a drinking glass | #shorts 2024, Iulie
Anonim
Arduino Dusk / dawn Clock Timer
Arduino Dusk / dawn Clock Timer

Rezumat:

Acest temporizator bazat pe Arduino poate comuta o lumină de 220V la amurg, în zori sau la ora specificată.

Introducere:

Unele dintre luminile din casa mea se aprind automat la amurg, până la o oră prestabilită sau până în zori (toată noaptea).

Amplasarea luminilor nu permite utilizarea unui senzor de lumină. Temporizatoarele normale de ceas disponibile se pornesc la o anumită oră. Pentru a porni în jurul amurgului, este necesară ajustarea regulată a setării programului temporizatorului.

Ca o provocare frumoasă, am decis să construiesc în schimb un temporizator personalizat bazat pe Arduino. Folosește un ceas în timp real și biblioteca Dusk2Dawn pentru a determina ora la care trebuie aprinse sau oprite luminile. Carcasa acestui timer este imprimată 3D și poate fi găsită pe Thingiverse. Codul Arduino pentru acest proiect poate fi găsit pe GitHub.

La crearea acestui cronometru m-am inspirat din multe modele și circuite de pe internet. Mulțumesc tuturor contribuabililor care nu sunt menționați în mod explicit.

Pentru lizibilitate, diagramele parțiale sunt prezentate în pașii în care este necesar, în loc de o diagramă completă a circuitului.

Soluții alternative:

În loc de un cronometru autonom, există multe soluții în care un sistem inteligent de automatizare a casei conduce lumina. Scopul meu a fost să am o soluție independentă, care să nu depindă de conectivitatea WIFI (sau alta).

Restricții:

Codul furnizat împreună cu acest proiect a inclus o implementare a modificărilor de vară bazate pe sistemul european de vară.

Pasul 1: Lista pieselor și instrumentele

Lista pieselor și instrumentele
Lista pieselor și instrumentele

Părți:

Costuri totale ale pieselor (cu excepția tipăririi 3D) aproximativ 30 EUR, -.

  • Arduino Nano V3 (compatibil) fără anteturi
  • Alimentare 5V 0.6A (34 x 20 x 15mm)
  • Releu în stare solidă 5V - Activ scăzut - 2A 230VAC
  • Ceas DS3231 în timp real (mic)
  • Afișaj OLED de 0,96”SPI 128 * 64 pixeli
  • Codificator rotativ - EC11 - 20mm
  • Buton ax 6mm 15mm * 17mm
  • Placă cu circuite imprimate,
  • 4 * șuruburi M3x25mm
  • Carcasă tipărită 3D
  • Tuburi termocontractabile
  • Fire
  • Bloc terminal cu șurub (pentru conectarea firelor neutre)

Instrumente necesare:

  • Ciocan de lipit
  • Sârmă de lipit
  • Pompa de dezlipire
  • Dispozitive de decupare a firelor
  • Freze
  • Imprimantă 3D (pentru imprimarea carcasei)
  • Unelte mici asortate

AVERTIZARE

Acest circuit funcționează pe 230V AC și dacă nu sunteți obișnuiți să lucrați cu tensiunea de rețea sau nu aveți o experiență amplă în lucrul cu tensiunea de alimentare 230V AC, vă rugăm să stați departe de acest proiect

Nu-mi asum nici o responsabilitate pentru orice pierdere sau daună care rezultă direct din sau ca urmare a urmării acestui proiect

Este întotdeauna recomandat să aveți grijă și precauție în timp ce lucrați cu rețeaua de curent alternativ

Pasul 2: Pregătiți afișajul OLED și ceasul în timp real

Pregătiți afișajul OLED și ceasul în timp real
Pregătiți afișajul OLED și ceasul în timp real

Carcasa imprimată 3D este concepută pentru dimensiuni minime. Ca urmare, antetele afișajului OLED și ceasul în timp real trebuie eliminate.

În pregătirea pentru pasul următor, îndepărtați orice lipire rămasă din găuri cu ajutorul pompei de sudare.

Pasul 3: Pregătiți codificatorul rotativ

Pregătiți codificatorul rotativ
Pregătiți codificatorul rotativ

Codificatorul rotativ are conectori slabi. Pentru a preveni deteriorarea, montați o bucată de placă de circuite imprimate pe codificator.

Pe imagine, conexiunea la masă (în partea dreaptă sus și mijloc jos) este deja pregătită.

Notă: Asigurați-vă că codificatorul rotativ cu placă de circuite imprimate se potrivește în carcasă fără a atinge Arduino. Poate fi necesar să măcinați placa de circuit imprimat pentru a vă potrivi perfect.

Pasul 4: incintă

Incintă
Incintă
Incintă
Incintă

Imprimați cele trei părți ale carcasei cu o imprimantă 3D. Consultați instrucțiunile de pe Thingiverse.

Pasul 5: Dezactivați LED-ul de alimentare Arduino (opțional)

Dezactivați LED-ul de alimentare Arduino (opțional)
Dezactivați LED-ul de alimentare Arduino (opțional)

Pentru a preveni o strălucire verde în cronometru, LED-ul de alimentare al Arduino poate fi dezactivat.

Rețineți că această modificare este opțională.

Modificarea Arduino Nano constă în îndepărtarea rezistorului de lângă ledul de alimentare (vezi cercul roșu din imagine).

Pasul 6: sursă de alimentare + releu de stare solidă

Sursa de alimentare + releu de stare solidă
Sursa de alimentare + releu de stare solidă

În acest pas, sursa de alimentare și releul în stare solidă sunt combinate și montate în partea inferioară a carcasei.

Conexiunile dintre sursa de alimentare și releul se fac în partea de jos a acestor componente. Blocul de borne cu șurub al releului va fi utilizat pentru conectarea la Arduino.

Notă: Când faceți conexiuni, asigurați-vă că orificiile de montare ale releului în stare solidă sunt menținute libere.

  • Lipiți un fir de conectare între releul de stare solidă A1 la una dintre conexiunile de curent alternativ ale sursei de alimentare
  • Lipiți un fir la cealaltă conexiune de curent alternativ a sursei de alimentare (aceasta va fi conectată la borna cu șurub neutru la pasul 7)
  • Lipiți un fir între sursa de alimentare -Vo pentru releu DC-
  • Lipiți un fir pentru a conecta sursa de alimentare + Vo la releu DC +

Notă: S-ar putea să fie necesar să scurtați cablurile de la sursa de alimentare și de la releu pentru a vă putea încadra în carcasă.

Pasul 7: Arduino Nano + Sursa de alimentare + Releu în stare solidă

Arduino Nano + sursă de alimentare + releu în stare solidă
Arduino Nano + sursă de alimentare + releu în stare solidă

În acest pas, Arduino Nano este conectat la sursa de alimentare și la releul în stare solidă.

  • Tăiați două fire de aproximativ 70 mm lungime. Îndepărtați 30 mm de izolare pe o parte și 4 mm pe cealaltă parte.
  • Lipiți partea cu o izolație de 30 mm pe Arduino + 5V și GND, cu firul care se lipeste prin
  • Tăiați două tuburi termocontractibile cu lungimea de 20 mm și montați-le peste partea decupată de 25 mm. Acest lucru izolează firele până la conexiunea cu bornele cu șurub de montare DC + și DC- ale releului în stare solidă.
  • Rețineți că firele pentru GND și + 5V trebuie să se încrucișeze pentru a se conecta corect la blocul de borne cu șurubul releului.
  • Tăiați un fir de aproximativ 40 mm lungime și curățați 4 mm de izolare a ambelor capete. Lipiți o parte la conexiunea A2 de pe partea din spate a Arduino și conectați cealaltă parte la conexiunea CH1 a blocului de borne cu șurub de montare în stare solidă.

AVERTIZARE

Arduino este alimentat direct de la sursa de alimentare stabilă + 5V în loc să utilizeze regulatorul de putere intern Arduino. Prin urmare, nu este sigur să conectați USB atunci când Arduino primește energie de la sursa de alimentare.

Deconectați întotdeauna rețeaua de 230VAC înainte de a utiliza conexiunea USB Arduino.

Pasul 8: Arduino Nano + Ceas în timp real

Arduino Nano + Ceas în timp real
Arduino Nano + Ceas în timp real

În acest pas, ceasul în timp real este conectat la Arduino, parțial utilizând cablurile pregătite în pasul anterior.

  • Lipiți firul care vine de la Arduino GND (conectat și la DC- al releului) la „-” al ceasului în timp real.
  • Lipiți firul care vine de la Arduino + 5V (conectat și la DC + al releului) la „+” al ceasului în timp real.
  • Tăiați două fire de aproximativ 40 mm lungime și curățați 4 mm de izolare a ambelor capete.
  • Lipiți un fir între Arduino A4 și ceasul în timp real D (SDA).
  • Lipiți un fir între Arduino A5 și ceasul în timp real C (SCL).
  • Formați firele ceasului în timp real pentru a vă asigura că nu interferează cu codificatorul rotativ. Pentru aceasta, firele trebuie să fie în partea inferioară a incintei.

Pasul 9: Conectați ecranul OLED

Conectați afișajul OLED
Conectați afișajul OLED

În acest pas, afișajul OLED SPI este adăugat la Arduino.

  • Tăiați 2 fire de 65 mm lungime și curățați 4 mm de izolare a ambelor capete.
  • Lipiți un fir la conexiunea GND a afișajului OLED. Lipiți acest fir la firul izolat al tubului termocontractabil provenit de la Arduino GND (consultați pasul 4) și conectați ambele fire la blocul de borne cu șurub montat în CC al releului de stare solidă.
  • Lipiți un fir la conexiunea VCC a afișajului OLED. Lipiți acest fir la firul izolat al tubului termocontractabil care vine de la Arduino + 5V (consultați pasul 4) și conectați ambele fire la blocul de borne cu șurub de montare DC + al releului de stare solidă.
  • Tăiați 5 fire de 65 mm lungime și curățați 4 mm de izolare a ambelor capete.
  • Lipiți un fir pentru a conecta D0 (CLK) la Arduino D10
  • Lipiți un fir pentru a conecta D1 (MOSI / DATA) la Arduino D9
  • Lipiți un fir pentru a conecta RES (RT) la Arduino D8
  • Lipiți un fir pentru a conecta DC la Arduino D11
  • Lipiți un fir pentru a conecta CS la Arduino D12

Notă: Ordinea firelor de afișare nu este logică. Acesta este rezultatul utilizării mai întâi a exemplului Adafruit și apoi a schimbării conexiunilor, deoarece utilizarea D13 are ca rezultat un LED roșu pe Arduino tot timpul.

Alternativă

Este posibil să se utilizeze o ordine „normală” pentru conexiunile SPI. Pentru aceasta, definiția ieșirii digitale a programului Arduino din oledcontrol.cpp trebuie ajustată în consecință:

// Utilizarea software-ului SPI

// definiții pin

#define CS_PIN 12

#define RST_PIN 8

#define DC_PIN 11

#define MOSI_PIN 9

#define CLK_PIN 10

Pasul 10: Codificator rotativ

Rotativ
Rotativ

Diagrama arată conexiunile Arduino la codificatorul rotativ (codificatorul văzut de sus).

  • Tăiați 4 fire de 45 mm și curățați 4 mm de izolare a ambelor capete.
  • Conectați Arduino GND la conectorii din dreapta sus și din partea de jos a codificatorului
  • Conectați Arduino D2 în partea stângă jos a codificatorului
  • Conectați Arduino D3 în dreapta jos a codificatorului
  • Conectați Arduino D4 în partea stângă sus a codificatorului

Pasul 11: Instalare în incintă

Instalare în incintă
Instalare în incintă

Instalați toate componentele electronice în partea de jos a carcasei:

  • Glisați Arduino pe fanta verticală
  • Glisați ceasul în timp real în compartimentul inferior
  • Glisați sursa de alimentare și releul în compartimentul superior, asigurați-vă că releul se află pe suporturile sale.

Pasul 12: Conectarea la rețea / lumină pentru a fi comutată

Conectarea la rețea / lumină care trebuie comutată
Conectarea la rețea / lumină care trebuie comutată
Conectarea la rețea / lumină care trebuie comutată
Conectarea la rețea / lumină care trebuie comutată

AVERTIZARE

Asigurați-vă că aveți grijă și precauție în timp ce lucrați cu rețeaua de curent alternativ, asigurați-vă că rețeaua de curent alternativ este deconectată

Nu-mi asum nici o responsabilitate pentru orice pierdere sau daună care rezultă direct din sau ca urmare a urmării acestui proiect

  • Conectați faza de rețea AC la blocul de borne cu șurub A1 (stânga) al releului.
  • Conectați faza luminii de comutat la blocul de borne cu șurub B1 (dreapta) al releului.
  • Utilizați un bloc terminal cu șurub separat pentru a conecta firul neutru de rețea de curent alternativ, firul neutru ușor și firul neutru al sursei de alimentare.
  • Pentru ameliorarea tensiunii, montați o învelitoare de cravată în jurul fiecărui cablu de alimentare.

Pasul 13: Finalizarea incintei

Finalizarea incintei
Finalizarea incintei

În acest pas se finalizează montarea în carcasă

  • Glisați afișajul OLED prin orificiul de montare a afișajului în partea de mijloc a carcasei.
  • Glisați codificatorul rotativ prin orificiul din partea din mijloc, asigurați-vă că linia anti-rotație se ridică. Montați codificatorul rotativ folosind șaiba și piulița incluse.
  • Montați partea superioară a carcasei și închideți carcasa montând cele patru șuruburi M3x25mm de jos.

Pasul 14: Programarea Arduino

AVERTIZARE

Arduino este alimentat direct de la sursa de alimentare stabilă + 5V în loc să utilizeze regulatorul de putere intern Arduino. Prin urmare, nu este sigur să conectați USB atunci când Arduino primește energie de la sursa de alimentare.

Deconectați întotdeauna rețeaua de alimentare de 230VAC înainte de a utiliza conexiunea USB Arduino.

Recuperați programul de temporizare Arduino de pe GitHub.

Acest program folosește Arduino IDE, care poate fi obținut aici.

Programul folosește următoarele biblioteci suplimentare:

SSD1303Ascii

Biblioteca Arduino Wire

Rețineți că biblioteca dusk2dawn este de asemenea utilizată, dar inclusă ca cod din cauza unei modificări a interfeței sale.

Pentru a asigura calculul corect de amurg / zori, trebuie setate longitudinea și latitudinea și fusul orar.

După cum este descris în exemplul dusk2dawn, o modalitate ușoară de a găsi longitudinea și latitudinea pentru orice locație este de a găsi locul în Google Maps, faceți clic dreapta pe locul de pe hartă și selectați „Ce este aici?”. În partea de jos, veți vedea un card cu coordonatele.

Longitudinea și latitudinea sunt codificate în program, în linia 19 și 20 Dusk2Dawn.cpp:

/ * Latitudinea și longitudinea locației dvs. trebuie setate aici.

* * SFAT: O modalitate ușoară de a găsi longitudinea și latitudinea pentru orice locație este * de a găsi locul în Google Maps, faceți clic dreapta pe locul de pe hartă și * selectați „Ce este aici?”. În partea de jos, veți vedea un card cu coordonatele *. * / #define LATITUDE 52.097105; // Utrecht #define LONGTITUDE 5.068294; // Utrecht

Fusul orar este, de asemenea, codificat în linia Dusk2Dawn.cpp 24. În mod implicit, este setat la Olanda (GMT + 1):

/ * Introduceți fusul orar (decalat la GMT) aici.

* / #define TIMEZONE 1

Când programați Arduino pentru prima dată, memoria EEPROM trebuie inițializată. Pentru aceasta, schimbați linia 11 timer.cpp pentru a efectua inițializarea EEPROM:

// treceți la adevărat pentru prima dată de programare

#define INITIALIZE_EEPROM_MEMORY false

Încărcați programul pe Arduino și porniți Arduino.

Dezactivați inițializarea EEPROM și încărcați din nou programul pe Arduino. Cronometrul își va aminti acum setările de timp de comutare la repornire.

Pasul 15: Configurarea orei și a orelor de comutare

Concepte de interacțiune cu utilizatorul:

  • Apăsarea scurtă este utilizată pentru a confirma selecțiile. În plus, în ecranul principal al temporizatorului, o apăsare scurtă pornește sau oprește lumina.
  • Apăsați lung pentru a accesa meniul din ecranul principal al temporizatorului. Oriunde în meniu, o apăsare lungă va reveni la ecranul principal al temporizatorului.
  • ‘>’ Cursus de selecție. Acest cursor indică opțiunea selectată într-un meniu.

Ecranul temporizatorului principal

Ecranul principal al temporizatorului afișează:

Ziua săptămânii Su

Ora curentă 16:00

Starea actuală a temporizatorului și următorul timp de comutare Timer OFF până la 17:12

Zori și amurg Amurg 08:05 Amurg 17:10

Setarea orei corecte

Apăsați lung pentru a intra în meniu. Sunt afișate următoarele opțiuni:

Înapoi Setează ora Programul zilei săptămânii Programul weekendului Opțiuni

Selectați ora setată pentru a seta data și ora ceasului în timp real. Introduceți valorile corecte pentru:

YearMonthDayTime

Cronometrul determină automat ziua săptămânii. Comutarea orei de vară se face, de asemenea, automat. Ora de vară este implementată numai pentru fusul orar european.

Setarea programului temporizator

Temporizatorul are 2 programe, unul pentru zilele săptămânale, unul pentru weekend. Rețineți că vinerea este considerată parte a weekendului, luminile pot rămâne aprinse puțin mai mult.

Fiecare temporizator are un moment de pornire și oprire. Momentul poate fi:

  • Ora: ora specificată exact
  • Zori: comută în funcție de ora calculată a zorilor
  • Amurg: comută în funcție de ora calculată a amurgului

Pentru amurg și zori este posibil să introduceți o valoare de corecție de 59 de minute înainte sau după.

Exemple:

Pentru a aprinde o lumină toată noaptea, selectați porniți la (amurg + 10min), opriți la (zori - 10min)

Pentru a aprinde o lumină seara, selectați pornirea la amurg, opriți la ora 22:30.

Opțiuni

În ecranul de opțiuni poate fi setat un timeout pentru comutarea ecranului.

Când ecranul este oprit, apăsarea butonului codificatorului rotativ va reveni la ecranul principal al temporizatorului.

Recomandat: