Innholdsfortegnelse:

Wake Me Up - en smart vekkerklokke: 6 trinn
Wake Me Up - en smart vekkerklokke: 6 trinn

Video: Wake Me Up - en smart vekkerklokke: 6 trinn

Video: Wake Me Up - en smart vekkerklokke: 6 trinn
Video: ALARM CLOCK TRIES TO WAKE ME UP ⏰ #shorts #doods 2024, November
Anonim
Wake Me Up - en smart vekkerklokke
Wake Me Up - en smart vekkerklokke

Wake me up er en smart vekkerklokke som også kan brukes som et smart lys.

Den innebygde ledstripen simulerer naturlig lys som kommer inn i rommet ditt. Dette muliggjør en rolig, naturlig måte å starte dagen på.

Vekkerklokken er også utstyrt med et 4*7 segment display for å lese tiden, høyttalere for å våkne med favorittmusikken din, en berøringsknapp, en ldr for å tilpasse lysstyrken på ledstripen og en temperatursensor som du kan bruke til å se temperaturen på rommet ditt.

Rekvisita

En liste over de eksakte prisene jeg betalte finner du her:

Mikrokontrollere og datamaskiner:

Raspberry Pi 4I brukte bringebær pi 4 4GB, men enhver bringebær pi modell 3+ burde være bra

Arduino Uno

Arduino brukes til å styre 4*7 segmenters klokkevisning.

Sensorer:

  • TMP36: temperatursensor
  • LDR: Lysavhengig motstand

Aktuatorer:

  • WS2801: Individuelt adresserbar ledstrip
  • LCD -skjerm: En 16*2 LCD -skjerm.
  • 4*7 segment klokkevisning

IC -er:

  • 74HC595: Skiftregister for LCD -skjermen
  • MCP3008: 8-bits analog til digital omformer
  • Logisk nivåomformer: Brukes til å kommunisere mellom raspi og arduino

Andre ting:

  • En adafruit MAX9744 forsterker for å drive høyttalerne
  • Enhver høyttaler, jeg brukte en Visaton 4Ohm 8Watt full range -høyttaler (art. Nr. 2240)
  • En 9 volt strømforsyning for å forsterke forsterkeren
  • En 5 volt strømforsyning for å forsyne ledstripen og andre komponenter. Husk at hver ledning i ledstripen kan kaste 60mA, så sørg for at strømforsyningen er tilstrekkelig.
  • Noen få 220Ohm motstander
  • Et lite brødbrett å sette i saken din.

Verktøy:

  • Et loddejern.
  • Noe å lage saken (jeg brukte en 3d -skriver med PLA og PETG og noen vinylklistremerker for å få treeffekten.)

Trinn 1: Konfigurere Raspberry Pi

Bringebær pi er vår viktigste mikrokontroller.

Raspberry pi driver vår lokale webserver, database, styrer ledstripen, høyttalere, …

Del 1: Installere Raspbian

Bruk denne opplæringen til å installere raspbian:

Sørg for at SSH er aktivert

Del 2: Bli tilkoblet

For å få forbindelse til internett, må du få tilgang til bringebær Pi -terminalen din. Jeg anbefaler å bruke kitt. I terminalen:

wpa_passphrase "YourNetwork" "YourSSID" >> /etc/wpa_supplicant/wpa_supplicant.conf

"YourNetwork" er navnet på wifi -nettverket ditt og "YourSSID" er passordet til nettverket.

Når du har lagt til nettverket, kan du prøve å starte Raspberry Pi på nytt.

Skriv inn kommandoen 'ping 8.8.8.8', dette sender en pakke til Google-serverne hvis du får svar, nettverket ditt er konfigurert og fungerer!

Del 3: Installer de nødvendige programmene

Vi må installere noen ekstra programmer for å få dette prosjektet i gang.

Kjør disse to kommandoene før vi begynner, for å sikre at alt er oppgradert.

sudo apt oppdatering

sudo apt oppgradering

Dette kan ta en stund.

Apache

sudo apt installere apache2 -y

sudo apt installer php libapache2-mod-php -y

MariaDB

sudo apt installer mariadb-server mariadb-klient -y

sudo apt installer php -mysql -y

PHPMyAdmin

sudo apt installer phpmyadmin -y

Python pip

Vi må installere pip for å aktivere noen python -biblioteker

pip3 installer mysql-connector-python

pip3 installere flask-socketio

pip3 installere kolbe-kors

pip3 installer gevent

pip3 installer gevent-websocket

Trinn 2: Koble til elektronikken

Koble til elektronikken
Koble til elektronikken
Koble til elektronikken
Koble til elektronikken

Jeg har lagt til 2 ordninger, 1 er et brødbrett for testformål. Jeg anbefaler å bygge det første opplegget og prøve å få koden til å fungere.

Jeg har lagt til fritzing -filene nedenfor.

Trinn 3: Databasedesign

Databasedesign
Databasedesign

Dette er databaseskjemaet jeg laget. Ordene er på nederlandsk, men jeg vil forklare hver tabell i detalj.

Tabell 1: tblMuziek

Dette er et ganske grunnleggende bord. Det lagrer artistnavnet, sangnavnet og filnavnet til en sang.

Tabell 2: tblLedstrip

Denne tabellen holder oversikt over den aktuelle tilstanden til ledstripen, den lagrer ledstripens tilstand. Vi trenger dette for smartlight -funksjonen.

Tabell 3: tblSensoren

Denne tabellen holder oversikt over sensorene i alarmen vår. Vi lagrer navnet på sensoren og MCP3008 -kanalen

Tabell 4: tblMeting

Denne tabellen lagrer verdiene til sensorene våre sammen med tiden.

Tabell 5: tblWekker

Denne tabellen lagrer passordet og navnet på vekkerklokken din (f.eks. Soverom) Denne tabellen er ikke obligatorisk, men jeg la den til fordi jeg antar at du vil ha mer enn 1 vekkerklokke i huset ditt.

Tabell 6: tblAlarm

Dette er sannsynligvis det viktigste bordet. Den holder oversikt over alarmen du har angitt og hva klokken må gjøre (hvilken sang som skal spilles, hvilken ledesekvens, på hvilke dager skal den gå, …). Det er veldig viktig å holde oversikt over 2 datoer. 1 dato brukes til å lagre på hvilken tid alarmen skal gå. Den andre holder orden på forrige gang alarmen gikk. For å vite hvilken ukedag det skulle gå, brukte jeg en varchar som inneholder et tall på 7 sifre. Det første sifferet er mandag, den andre tirsdag, … Hvis det er et 1, bør det gå av, hvis det er et 0, bør det ikke. Eksempel: 1111100 betyr at alarmen skal gå på mandag, tirsdag, onsdag, torsdag og fredag.

Trinn 4: Arduino -oppsett

Dette trinnet er veldig enkelt. Det vil være en lenke til githuben min på neste trinn der du kan laste ned arduino -filen.

Hva gjør programmet?

Programmet venter på at serielle data kommer fra pi.

Så snart dataene er mottatt, analyseres de gjennom strengen og sender tilbake en bekreftelse til pi.

Strengen vil være omtrent slik: '1201', dette betyr at klokken er 12:01. Jeg brukte en vanlig anode 7 -segmentvisning, dette betyr at tallene skal være høye og A, B, C, D, E, F, G og DP skal være lave for å slå dem på. Hvis du bruker en vanlig katode, bør du bare endre HIGH til LOW & LOW til HIGH.

Her er en lenke med mer informasjon om hvordan 7 segmentdisplayer fungerer. (med bruk av bibliotek):

www.instructables.com/id/Using-a-4-digit-7…

Her er en lenke om 7 segmentvisninger uten bruk av et bibliotek:

create.arduino.cc/projecthub/SAnwandter1/p…

Trinn 5: Raspberry Pi Backend

Raspberry Pi Backend
Raspberry Pi Backend

Du kan laste ned koden min med Github. (https://github.com/VanHevelNico/WakeMeUp)

Slik installerer du programmet:

Bakenden er skrevet i python ved hjelp av kolbe. Du kan lage en tjeneste som starter dette programmet (app.py) automatisk.

Du bør sette frontend -koden i html -filen til apache -serveren vi lastet ned tidligere. (/var/html)

Hvordan fungerer programmet?

Når vekkerklokken er slått på, gå til klokkeens ip -adresse (den vises på LCD -skjermen)

Så snart du går til den ip -adressen i nettleseren din, sender datamaskinen en socket.io -forespørsel til backend og sier at en klient har koblet seg til. Når backend mottar dette, starter noen få tråder som jeg vil forklare nedenfor.

Oppsett

Dette intialiserer alle objektene som trengs.

GetTemp

Dette leser mcp3008 kanal 0 og konverterer de binære dataene til den faktiske temperaturen og legger dem i databasen med gjeldende dato og time.

GetTempGrafiek

Dette får de siste 20 verdiene til temperatursensoren og sender den ut til frontenden.

tijd_sturen

Denne metoden får gjeldende tid og sjekker om minuttet har endret seg. Hvis det har endret seg, sender programmet den nye tiden til arduino ved hjelp av seriell kommunikasjon

sjekkAlarmen

Dette er den viktigste metoden. Den får alle alarmene som er slått på og sjekker om noen av disse alarmene må gå mellom nå og for 5 minutter siden (dette er en buffer for å sikre at hver alarm går når den trenger det). Hvis alarmen må gå, starter vi musikken, ledestripen, … Vi leser den kraftfølsomme motstanden kontinuerlig, og når verdien faller under 1000 (les fsr trykkes) Vi slår på alarmen og oppdaterer alarmen i database. Vi satte datoen da alarmen gikk for siste gang til gjeldende dato.

statusLight

Denne metoden avgir verdien av ledstripen og slår på ledstripen om nødvendig.

lichtAanpassen

Dette er en ekstra metode for å sikre at ledstrip og alarmlys ikke kommer i konflikt.

Trinn 6: Case

Sak
Sak
Sak
Sak
Sak
Sak

Lenken til filene mine finner du her:

Jeg brukte en 3d -skriver for å skrive ut kabinettet. Den er trykt i 4 forskjellige deler:

  1. Frontplaten med hull for høyttaleren og noen vegger for 7 -segmenters display
  2. Den ytre ringen for ledstripen i transparent PETG.
  3. Den midtre delen
  4. Bakplaten med et hull for LCD -skjermen og et hull for kablene.

I den originale modellen var det ikke noe hull for 7 -segmentskjermen, men dette er nødvendig, for ellers vil ikke lyset fra 7 -segmentet vise seg gjennom.

Som du kan se etter å ha satt alle komponentene i, brukte jeg vinylklistremerker med et treutseende for å få sluttresultatet til å se bedre ut. Klokkeskjermen lyser gjennom klistremerket som skaper en veldig fin effekt.

Anbefalt: