Innholdsfortegnelse:
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-13 06:58
Vinteren kan være trist. Du våkner, det er mørkt og du må gå ut av sengen. Det siste du vil høre er den irriterende lyden fra vekkerklokken din. Hvis du, som meg, har problemer med å våkne om morgenen, er denne vekkerklokken akkurat det du trenger.
I denne opplæringen skal vi bygge en soloppgangsklokke. Det er en vekkerklokke som alle andre ved at du kan stille inn timen og minuttet du vil våkne, men med fordelen av å bruke lys til å lyse opp soverommet ditt over en periode som en soloppgang for å vekke deg i stedet for en irriterende summer!
Vi bruker også en Bluetooth -modul for å lage en app som lar deg sette alarmen via telefonen på klokken. LCD-skjermen viser tid, dato og ukedag. Soloppgangslamper finnes på markedet, men de kan være dyre (et raskt søk på Google returnerer produkter i € 100-serien), skjøre og ganske kliniske utseende. Derfor bestemte jeg meg for å lage mitt eget for mitt Arduino skoleprosjekt. Alle delene vil bli oppført i neste trinn. Koden kan lastes ned fra min Github repo soloppgang-vekkerklokke. La oss begynne:)
all kode finner du på:
Trinn 1: Samle delene
Vi bruker en klokke som inngang og en ultralyst LED som utgang for å simulere soloppgangen.
For å bygge kretsen trenger vi:
- Arduino Uno -clockmodule RTC DS3231 - et MOSFET for å kontrollere lysstyrken på lyset - en superlys LED (jeg kjøpte 2, en varm, en kald) - 9V batteri for å drive LED - et brødbrett - en LCD -skjerm (16: 2)- Bluetooth-adapter hc-05 slik at vi kan bruke en app til å stille alarmen.
Alt du trenger kan kjøpes på www.martoparts.nl
Trinn 2: Montering av kretsen
Du kan referere til skissen for kretsen min, dessverre fant jeg ikke RTC DS3231 i programmet, så jeg måtte gjøre med denne. Tilkoblinger er litt forskjellige i virkeligheten, her er sammenhengene. (Bluetooth -modulen er ikke i skissen, men jeg vil forklare hvordan den fungerer nedenfor, noe som gjør det ganske vanskelig)
RTC DS3231GND går til GND på arduinoen
VCC går til 5v
SDA går til arduino
SCL går til arduino Vi bruker ikke SQW og 32KMOSFET
Gate pin går til pin ~ 9 på Arduino Uno fordi det er PWMDrain pin går til den negative siden av LED Kilden pin går til GND på ArduinoLCD-DisplayGND går til GND på arduino
VCC går til 5VSDA går til A4 på arduinoSKL går til A5 på arduinoLED- går til mosfet+ går til 5v9v batteri Du kan kjøpe et 9v batteri i hvilken som helst lokal butikk, koble til arduinoen med en kontaktlist.
Bluetooth-modulen hc-055V går til 5V fra arduinoen
GND går til GND på arduinoen
Nå er det to flere innganger, men her kommer den vanskelige delen, vi må koble de motsatte inngangene til de 2 på arduinoTX fra hc-05 går til RX på arduinoRX fra hc-05 går til TX på arduino
Viktig: Sørg for at du KOBLER TX & RX fra HC-05 når du laster opp kode på din arduino, eller du får en feilmelding som sier "noe gikk galt med å laste opp koden" i kompilatoren.
Trinn 3: Stille inn LCD -skjermen og klokken
Biblioteket som brukes til LCD-skjermen er flytende krystall og finnes på: https://github.com/fdebrabander/Arduino-LiquidCrys… Last ned zip-filen, lagre den og legg den i Arduino's/libraries-mappen
Biblioteket jeg bruker til å kjøre klokken, finnes på Rinky-Dinky Electronics https://www.rinkydinkelectronics.com/library.php?id=73 og sørg for at du er på DS3231-siden. Last ned zip -filen, lagre den og plasser den i Arduinos biblioteksmappe.
Tid
Inkluder biblioteket DS3231 eller DS1307 i din arduino -kode
Ikke kommenter disse tre kodelinjene for å angi tiden:
// rtc.setDOW (MANDAG); // Sett ukedag til SØNDAG // rtc.setTime (23, 57, 0); // Still tiden til 12:00:00 (24 -timers format) // rtc.setDate (14, 1, 2019); // Angi datoen til 1. januar 2014
LCD-skjerm
Inkluder biblioteket liqduicrystal_i2c i din arduino -kode
Bruk for å skrive ut på LCD -skjermen
lcd.setCursor (kol, rad) // plassering av tekst trykt lcd.print (~) // tekst skrevet ut
Trinn 4: Koding
Last ned koden på: github:
Ikke kommenter disse 3 linjene for å stille klokken på LCD -skjermen:
// rtc.setDOW (MANDAG); // Sett ukedag til SØNDAG // rtc.setTime (23, 57, 0); // Still tiden til 12:00:00 (24 -timers format) // rtc.setDate (14, 1, 2019); // Angi datoen til 1. januar 2014
Bruk lcd.setCuros (kol, rad); for å angi posisjonen til teksten som skal vises
lcd.setCursor (0, 2);
og skriv ut () for å skrive ut noe på skjermen
lcd.print (rtc.getDateStr ());
Endre disse variablene hvis du vil
int fadeTime = 1; // Hvor lenge lyset vil falme til maxint setHour = 02; // Angi timer for vekking (militær tid) int setMin = 49; // Angi minutt for å vekke int uled = 9; // Sett pinout med PWM
Bluetooth -modulkode
String firstHalf = getValue (input, ':', 0); // sjekk første inngang til ":"
String secondHalf = getValue (input, ':', 1); // sjekk andre inndata etter ":"
// bruk denne koden hvis du ikke bruker Bluetooth -modulen
// // if (t.hour == setHour && t.min == setMin) // Sjekk om det er på tide å våkne! // { // start(); //}
// sjekk de to første sifferinngangene, og sjekk deretter de to andre sifferene
hvis (t.time == firstHalf.toInt () && t.min == secondHalf.toInt ()) {start (); }}
// logikk for å skille strenger
String getValue (String data, char separator, int index) {int found = 0; int strIndex = {0, -1}; int maxIndex = data.length () - 1;
for (int i = 0; i <= maxIndex && funnet <= index; i ++) {if (data.charAt (i) == separator || i == maxIndex) {funnet ++; strIndex [0] = strIndex [1] + 1; strIndex [1] = (i == maxIndex)? i+1: i; }} retur funnet> indeks? data.substring (strIndex [0], strIndex [1]): ""; }
Trinn 5: Tid for testing
Kompiler koden din og test om komponentene fungerer!
Trinn 6: Oppsett av Bluetooth-app
Fordi jeg syntes det var irriterende å grave i koden hver gang jeg ønsket å stille en alarm, ønsket jeg å lage en app som ville sette alarmen, noe som er mye lettere.
Gå til https://ai2.appinventor.mit.edu her kan vi lage en enkel app som lar oss stille alarmen, jeg har inkludert det enkle designoppsettet (du kan alltid justere dette senere) og koden som brukes for Du kan deretter publisere appen og koble den til på telefonen ved å bruke en QR -kode eller laste ned appen direkte til datamaskinen og deretter overføre den med kabel på telefonen. (skjermbilde)
Trinn 7: Bygg saken
Du kan alltid bygge en annen sak rundt arduino -klokken. Jeg brukte tre og matt plexiglass for å bygge min egen vekkerklokke. Jeg valgte matt plexiglass, slik at du kan se lyset som tydelig skinner gjennom saken, men du kan ikke se innsiden av klokken.
Trinn 8: Ferdig
Nå som du har lastet opp koden til arduinoen din, bygget saken og sjekket om du har montert klokken riktig, kan du sette en alarm på bluetooth -appen og begynne å våkne mer naturlig!:)