Innehållsförteckning:

Wake Me Up - en smart väckarklocka: 6 steg
Wake Me Up - en smart väckarklocka: 6 steg

Video: Wake Me Up - en smart väckarklocka: 6 steg

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

Wake me up är en smart väckarklocka som också kan användas som ett smart ljus.

Den inbyggda ledstripen simulerar naturligt ljus som kommer in i ditt rum. Detta möjliggör ett lugnt, naturligt sätt att komma igång med dagen.

Väckarklockan är också utrustad med en 4*7 segmentdisplay för avläsning av tiden, högtalare för att vakna med din favoritmusik, en peksknapp, en ldr för att anpassa ljusstyrkan på ledstripen och en temperatursensor som du kan använda för att se temperaturen i ditt rum.

Tillbehör

En lista över de exakta priserna jag betalade hittar du här:

Mikrokontroller och datorer:

Raspberry Pi 4I använde hallon pi 4 4GB, men alla hallon pi modell 3+ borde vara bra

Arduino Uno

Arduino används för att styra klockdisplayen med 4*7 segment.

Sensorer:

  • TMP36: temperaturgivare
  • LDR: Ljusberoende motstånd

Ställdon:

  • WS2801: Individuellt adresserbar ledstrip
  • LCD -skärm: En 16*2 LCD -skärm.
  • 4*7 segment klocka

IC: er:

  • 74HC595: Skiftregister för LCD -skärmen
  • MCP3008: 8-bitars analog till digital omvandlare
  • Logic level converter: Används för att kommunicera mellan raspi och arduino

Andra saker:

  • En adafruit MAX9744 förstärkare för att driva högtalarna
  • Vilken högtalare som helst, jag använde en Visaton 4Ohm 8Watt full range -högtalare (art. Nr 2240)
  • En 9 volt strömförsörjning för att driva förstärkaren
  • En 5 volt strömförsörjning för att leverera ledstripen och andra komponenter. Tänk på att varje led i ledstripen kan dricka 60mA så se till att din strömförsörjning är tillräcklig.
  • Några 220Ohm motstånd
  • En liten brödbräda att sätta i ditt fodral.

Verktyg:

  • Ett lödkolv.
  • Något att göra fodralet (jag använde en 3d -skrivare med PLA och PETG och några vinylklistermärken för att få träeffekten.)

Steg 1: Konfigurera Raspberry Pi

Raspberry pi är vår främsta mikrokontroller.

Raspberry pi driver vår lokala webbserver, databas, styr ledstrip, högtalare, …

Del 1: Installera Raspbian

Använd den här självstudien för att installera raspbian:

Se till att SSH är aktiverat

Del 2: Att ansluta

För att kunna ansluta till internet måste du komma åt din hallon Pi -terminal. Jag rekommenderar att du använder kitt. I terminalen:

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

"Ditt nätverk" är namnet på ditt wifi -nätverk och "YourSSID" är lösenordet för nätverket.

När du har lagt till nätverket försöker du starta om Raspberry Pi.

Skriv in kommandot 'ping 8.8.8.8' detta kommer att skicka ett paket till Googles servrar om du får svar ditt nätverk är konfigurerat och fungerar!

Del 3: Installera de program som behövs

Vi kommer att behöva installera några extra program för att få igång detta projekt.

Kör dessa två kommandon innan vi sätter igång för att se till att allt är uppgraderat.

sudo apt uppdatering

sudo apt uppgradering

Detta kan ta ett tag.

Apache

sudo apt installera apache2 -y

sudo apt installera php libapache2-mod-php -y

MariaDB

sudo apt installera mariadb-server mariadb-klient -y

sudo apt installera php -mysql -y

PHPMyAdmin

sudo apt installera phpmyadmin -y

Python pip

Vi måste installera pip för att aktivera några pythonbibliotek

pip3 installera mysql-connector-python

pip3 installera flask-socketio

pip3 installera kolvkors

pip3 installera gevent

pip3 installera gevent-websocket

Steg 2: Anslutning av elektroniken

Ansluter elektroniken
Ansluter elektroniken
Ansluter elektroniken
Ansluter elektroniken

Jag har lagt till 2 scheman, 1 är ett skivbräda för teständamål. Jag rekommenderar att du bygger det första schemat och försöker få koden att fungera.

Jag har lagt till fritzing -filerna nedan.

Steg 3: Databasdesign

Databasdesign
Databasdesign

Detta är det databasschema jag gjorde. Orden är på nederländska men jag kommer att förklara varje tabell i detalj.

Tabell 1: tblMuziek

Detta är ett ganska grundläggande bord. Det sparar artistnamnet, låtnamnet och filnamnet på en låt.

Tabell 2: tblLedstrip

Denna tabell håller reda på det aktuella tillståndet för ledstripen det sparar tillståndet för ledstripen. Vi behöver detta för smartlight -funktionen.

Tabell 3: tblSensoren

Denna tabell håller reda på sensorerna i vårt larm. Vi lagrar namnet på sensorn och MCP3008: s kanal

Tabell 4: tblMeting

Denna tabell lagrar värdena på våra sensorer tillsammans med deras tid.

Tabell 5: tblWekker

Denna tabell lagrar lösenordet och namnet på din väckarklocka (t.ex. sovrum) Denna tabell är inte obligatorisk men jag lade till den eftersom jag antar att du kommer att ha mer än 1 väckarklocka i ditt hus.

Tabell 6: tblAlarm

Detta är förmodligen det viktigaste bordet. Den håller reda på vilket larm du har ställt in och vad klockan måste göra (vilken låt som ska spelas, vilken led -sekvens, på vilka dagar ska den gå, …). Det är väldigt viktigt att hålla reda på två datum. 1 datum används för att lagra vid vilken tid alarmet ska gå. Den andra håller reda på förra gången larmet gick. För att veta vilken vardag det ska gå av använde jag en varchar som innehåller ett antal 7 siffror. Den första siffran är måndag, den andra tisdagen, … Om det är en 1 ska den gå av, om den är en 0 ska den inte. Exempel: 1111100 betyder att larmet ska gå på måndag, tisdag, onsdag, torsdag och fredag.

Steg 4: Arduino -installation

Detta steg är mycket enkelt. Det kommer att finnas en länk till min github i nästa steg där du kan ladda ner arduino -filen.

Vad gör programmet?

Programmet väntar på att seriell data ska komma in från pi: n.

Så snart data har mottagits analyseras den genom strängen och skickar tillbaka en bekräftelse till pi: n.

Strängen kommer att vara ungefär så här: '1201', det betyder att klockan är 12:01. Jag använde en vanlig anod 7segmentdisplay, det betyder att siffrorna ska vara höga och A, B, C, D, E, F, G och DP ska vara låga för att slå på dem. Om du använder en vanlig katod ska du bara ändra HÖG till LÅG & LÅG till HÖG.

Här är en länk med mer information om hur 7 -segmentskärmar fungerar. (med användning av bibliotek):

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

Här är en länk om 7 segmentdisplayer utan att använda ett bibliotek:

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

Steg 5: Raspberry Pi Backend

Raspberry Pi Backend
Raspberry Pi Backend

Du kan ladda ner min kod med Github. (https://github.com/VanHevelNico/WakeMeUp)

Så här installerar du programmet:

Backend är skriven i python med hjälp av kolv. Du kan göra en tjänst som startar detta program (app.py) automatiskt.

Du bör lägga frontend -koden i html -filen på apache -servern som vi laddade ner tidigare. (/var/html)

Hur fungerar programmet?

När väckarklockan är på går du till klockans ip -adress (den kommer att visas på LCD -skärmen)

Så snart du går till den ip -adressen i din webbläsare skickar din dator en socket.io -begäran till backend som säger att en klient har anslutit. När backend tar emot detta startar några trådar som jag kommer att förklara nedan.

Uppstart

Detta intialiserar alla objekt som behövs.

GetTemp

Detta läser mcp3008 -kanalen 0 och konverterar binära data till den verkliga temperaturen och lägger den i databasen med aktuellt datum och timme.

GetTempGrafiek

Detta får de senaste 20 värdena för temperaturgivaren och avger det till frontänden.

tijd_sturen

Denna metod får aktuell tid och kontrollerar om minuten har ändrats. Om det har ändrats skickar programmet den nya tiden till arduino med hjälp av seriell kommunikation

checkAlarmen

Detta är den viktigaste metoden. Den får alla larm som slås på och kontrollerar om något av dessa larm måste gå mellan nu och för 5 minuter sedan (detta är en buffert för att se till att varje larm går när det behövs). Om larmet måste gå startar vi musiken, ledstripen, … Vi läser det kraftkänsliga motståndet kontinuerligt och när värdet sjunker under 1000 (läs fsr trycks) Vi slår på larmet och uppdaterar larmet i databas. Vi ställde in det datum då larmet gick för sista gången till det aktuella datumet.

statusLight

Denna metod avger värdet på ledstripen och slår på ledstripen om det behövs.

lichtAanpassen

Detta är en extra metod för att se till att ledstrip och larmljus inte konflikter.

Steg 6: Fodral

Fall
Fall
Fall
Fall
Fall
Fall

Länken till mina filer finns här:

Jag använde en 3d -skrivare för att skriva ut höljet. Den är tryckt i 4 olika delar:

  1. Frontplattan med hål för högtalaren och några väggar för 7 -segmentskärmen
  2. Ytterringen för ledstripen i transparent PETG.
  3. Den mellersta delen
  4. Bakplattan med ett hål för LCD -skärmen och ett hål för kablarna.

I den ursprungliga modellen fanns det inget hål för 7 -segmentskärmen, men detta behövs eftersom annars inte ljuset från 7 -segmentskärmen kommer att lysa igenom.

Som du kan se efter att ha lagt in alla komponenter använde jag vinylklistermärken med träutseende för att få slutresultatet att se bättre ut. Klockdisplayen lyser genom klistermärket vilket skapar en mycket snygg effekt.

Rekommenderad: