Inhoudsopgave:
- Benodigdheden
- Stap 1: De Raspberry Pi instellen
- Stap 2: De elektronica aansluiten
- Stap 3: Database-ontwerp
- Stap 4: Arduino-installatie
- Stap 5: Raspberry Pi-backend
- Stap 6: zaak
Video: Wake Me Up - een slimme wekker - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:15
Wake me up is een slimme wekker die ook als slimme lamp kan worden gebruikt.
De ingebouwde ledstrip simuleert natuurlijk licht dat je kamer binnenkomt. Dit zorgt voor een rustige, natuurlijke manier om uw dag te beginnen.
Verder is de wekker voorzien van een 4*7 segment display voor het aflezen van de tijd, speakers om wakker te worden met je favoriete muziek, een touchbutton, een ldr voor het aanpassen van de helderheid van de ledstrip en een temperatuursensor waarmee je de temperatuur van uw kamer.
Benodigdheden
Een lijst met de exacte prijzen die ik heb betaald, vind je hier:
Microcontrollers en computers:
Raspberry Pi 4I gebruikte de raspberry pi 4 4GB, maar elk raspberry pi-model 3+ zou in orde moeten zijn
Arduino Uno
De arduino wordt gebruikt om het 4*7 segment klokdisplay te bedienen.
Sensoren:
- TMP36: temperatuursensor
- LDR: Lichtafhankelijke weerstand
Aandrijvingen:
- WS2801: Individueel adresseerbare ledstrip
- LCD-scherm: een 16 * 2 LCD-scherm.
- 4*7 segment klokweergave
IC's:
- 74HC595: Schakelregister voor het lcd-scherm
- MCP3008: 8-bit analoog naar digitaal converter
- Logic level converter: wordt gebruikt om te communiceren tussen raspi en arduino
Andere dingen:
- Een adafruit MAX9744-versterker om de luidsprekers van stroom te voorzien
- Elke luidspreker, ik gebruikte een Visaton 4Ohm 8Watt full range luidspreker (Art. Nr. 2240)
- Een 9 volt voeding om de versterker van stroom te voorzien
- Een 5volt voeding om de ledstrip en andere componenten te voeden. Houd er rekening mee dat elke led in de ledstrip 60mA kan verbruiken dus zorg ervoor dat je voeding voldoende is.
- Een paar 220Ohm weerstanden
- Een klein breadboard om in je koffer te plaatsen.
Gereedschap:
- Een soldeerbout.
- Iets om de behuizing te maken (ik gebruikte een 3D-printer met PLA en PETG en wat vinylstickers om het houten effect te krijgen.)
Stap 1: De Raspberry Pi instellen
De Raspberry Pi is onze belangrijkste microcontroller.
De raspberry pi draait onze lokale webserver, database, bestuurt de ledstrip, luidsprekers, …
Deel 1: Raspbian installeren
Gebruik deze tutorial om raspbian te installeren:
Zorg ervoor dat SSH is ingeschakeld
Deel 2: Verbinding maken
Om verbinding te maken met internet, moet u toegang krijgen tot de terminal van uw raspberry pi. Ik raad aan om stopverf te gebruiken. In het terminaltype:
wpa_passphrase "YourNetwork" "YourSSID" >> /etc/wpa_supplicant/wpa_supplicant.conf
"YourNetwork" is de naam van uw wifi-netwerk en "YourSSID" is het wachtwoord van het netwerk.
Nadat u het netwerk hebt toegevoegd, probeert u de Raspberry Pi opnieuw op te starten.
Typ het commando 'ping 8.8.8.8' dit zal een pakket naar de google servers sturen als je antwoord krijgt, je netwerk is ingesteld en werkt!
Deel 3: Installeer de benodigde programma's
We moeten wat extra programma's installeren om dit project op gang te krijgen.
Voordat we aan de slag gaan, voert u deze 2 opdrachten uit om ervoor te zorgen dat alles is geüpgraded.
sudo apt update
sudo apt-upgrade
Dit kan even duren.
Apache
sudo apt installeer apache2 -y
sudo apt installeer php libapache2-mod-php -y
MariaDB
sudo apt install mariadb-server mariadb-client -y
sudo apt install php-mysql -y
PHPMijnAdmin
sudo apt install phpmyadmin -y
Python-pip
We moeten pip installeren om sommige python-bibliotheken in te schakelen
pip3 installeer mysql-connector-python
pip3 install flask-socketio
pip3 installeer flask-cors
pip3 installeren gevent
pip3 installeren gevent-websocket
Stap 2: De elektronica aansluiten
Ik heb 2 schema's toegevoegd, 1 is een breadboard-schema voor testdoeleinden. Ik raad aan om het eerste schema te bouwen en te proberen de code te laten werken.
Ik heb de fritzing-bestanden hieronder toegevoegd.
Stap 3: Database-ontwerp
Dit is het databaseschema dat ik heb gemaakt. De woorden zijn in het Nederlands, maar ik zal elke tabel in detail uitleggen.
Tabel 1: tblMuziek
Dit is een vrij basic tafel. Het slaat de artiestennaam, de naam van het nummer en de bestandsnaam van een nummer op.
Tabel 2: tblLedstrip
Deze tabel houdt de huidige status van de ledstrip bij en slaat de status van de ledstrip op. Deze hebben we nodig voor de smartlight functie.
Tabel 3: tblSensoren
Deze tabel houdt de sensoren in ons alarm bij. We slaan de naam van de sensor en het kanaal van de MCP3008 op
Tabel 4: tblMeting
Deze tabel slaat de waarden van onze sensoren samen met hun tijd op.
Tabel 5: tblWekker
In deze tabel staan het wachtwoord en de naam van je wekker (bijv. Slaapkamer) Deze tabel is niet verplicht maar ik heb hem toegevoegd omdat ik ervan uit ga dat je meer dan 1 wekker in huis hebt.
Tabel 6: tblAlarm
Dit is waarschijnlijk de belangrijkste tabel. Het houdt bij welke wekkers je hebt ingesteld en wat de klok moet doen (welk liedje je moet spelen, welke led-reeks, op welke dagen moet het afgaan, …). Het is erg belangrijk om 2 data bij te houden. 1 datum wordt gebruikt om op te slaan op welk uur het alarm moet afgaan. De andere houdt bij wanneer het alarm voor het laatst is afgegaan. Om te weten op welke weekdag het moet gaan heb ik een varchar gebruikt die een getal van 7 cijfers bevat. Het eerste cijfer is maandag, het tweede dinsdag, … Als het een 1 is, moet het afgaan, als het een 0 is, zou het niet moeten. Voorbeeld: 1111100 dit betekent dat dit alarm af moet gaan op maandag, dinsdag, woensdag, donderdag en vrijdag.
Stap 4: Arduino-installatie
Deze stap is heel eenvoudig. Er zal een link naar mijn github zijn bij de volgende stap waar je het arduino-bestand kunt downloaden.
Wat doet het programma?
Het programma wacht op seriële gegevens die van de pi binnenkomen.
Zodra de gegevens zijn ontvangen, ontleedt het de string en stuurt het een bevestiging terug naar de pi.
De string ziet er ongeveer zo uit: '1201' dit betekent dat het 12:01 is. Ik gebruikte een gemeenschappelijke anode 7segment-display, dit betekent dat de cijfers hoog moeten zijn en de A, B, C, D, E, F, G en DP laag moeten zijn om ze in te schakelen. Als u een gewone kathode gebruikt, moet u HOOG in LAAG en LAAG in HOOG veranderen.
Hier is een link met meer info over hoe 7 segment displays werken. (met gebruik van bibliotheek):
www.instructables.com/id/Using-a-4-digit-7…
Hier is een link over 7 segment displays zonder het gebruik van een bibliotheek:
create.arduino.cc/projecthub/SAnwandter1/p…
Stap 5: Raspberry Pi-backend
Je kunt mijn code downloaden met Github. (https://github.com/VanHevelNico/WakeMeUp)
Hoe het programma te installeren:
De backend is geschreven in python met behulp van kolf. U kunt een service maken die dit programma (app.py) automatisch start.
Je moet de frontend-code in het html-bestand van de apache-server plaatsen die we eerder hebben gedownload. (/var/html)
Hoe werkt het programma?
Wanneer de wekker is ingeschakeld, gaat u naar het ip-adres van uw klok (het wordt weergegeven op het lcd-scherm)
Zodra je in je browser naar dat ip-adres gaat, stuurt je computer een socket.io-verzoek naar de backend waarin staat dat een client verbinding heeft gemaakt. Wanneer de backend dit ontvangt, zullen er een paar threads starten die ik hieronder zal uitleggen.
Opstelling
Dit initialiseert alle benodigde objecten.
GetTemp
Deze leest het mcp3008 kanaal 0 en converteert de binaire gegevens naar de werkelijke temperatuur en zet deze in de database met de huidige datum en uur.
GetTempGrafiek
Dit krijgt de afgelopen 20 waarden van de temperatuursensor en zendt deze naar de frontend.
tijd_sturen
Deze methode haalt de huidige tijd op en controleert of de minuut is gewijzigd. Als het is gewijzigd, stuurt het programma de nieuwe tijd naar de Arduino via seriële communicatie
checkAlarmen
Dit is de belangrijkste methode. Het ontvangt alle alarmen die zijn ingeschakeld en controleert of een van deze alarmen tussen nu en 5 minuten geleden moet afgaan (dit is een buffer om ervoor te zorgen dat elk alarm afgaat wanneer dat nodig is). Als het alarm moet afgaan starten we de muziek, de ledstrip, … We lezen de krachtgevoelige weerstand continu uit en als de waarde onder de 1000 zakt (lees de fsr wordt ingedrukt) We zetten het alarm uit en updaten het alarm in de databank. De datum waarop het alarm voor de laatste keer afging hebben we ingesteld op de huidige datum.
statusLicht
Deze methode zendt de waarde van de ledstrip uit en zet de ledstrip aan indien nodig.
lichtAanpassen
Dit is een extra methode om ervoor te zorgen dat de ledstrip en het alarmlampje niet met elkaar in conflict komen.
Stap 6: zaak
De link naar mijn bestanden is hier te vinden:
Ik heb een 3D-printer gebruikt om de behuizing te printen. Het is gedrukt in 4 verschillende delen:
- De frontplaat met gaten voor de luidspreker en enkele wanden voor het 7 segment display
- De buitenste ring voor de ledstrip in transparant PETG.
- Het middelste deel
- De achterplaat met een gat voor het lcd-scherm en een gat voor de kabels.
In het originele model was er geen gat voor het 7 segment display maar dit is nodig omdat anders het licht van het 7 segment display niet doorschijnt.
Zoals je kunt zien heb ik na het plaatsen van alle onderdelen vinyl stickers met een houten look gebruikt om het eindresultaat er beter uit te laten zien. De klokweergave schijnt door de sticker heen wat een heel mooi effect geeft.
Aanbevolen:
Slimme bureaulamp - Slimme verlichting met Arduino - Neopixels-werkruimte: 10 stappen (met afbeeldingen)
Slimme bureaulamp | Slimme verlichting met Arduino | Neopixels-werkruimte: tegenwoordig brengen we veel tijd thuis door, studeren en werken virtueel, dus waarom zouden we onze werkruimte niet groter maken met een aangepast en slim verlichtingssysteem op Arduino en Ws2812b-leds. Hier laat ik u zien hoe u uw Smart LED bureaulamp die
Slap-wekker met Arduino 13 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
Slap Alarm Clock With Arduino: ik weet niet hoe het met jou zit, maar een simpele wekker kan me niet wakker maken. Ik heb licht, geluid en zelfs een zachte klap nodig om wakker te worden. Geen enkele wekker spreekt me aan, dus besloot ik er een voor mezelf te maken, waardig om me wakker te maken
DIY slimme weegschaal met wekker (met wifi, ESP8266, Arduino IDE en Adafruit.io): 10 stappen (met afbeeldingen)
DIY Slimme Weegschaal Met Wekker (met Wi-Fi, ESP8266, Arduino IDE en Adafruit.io): In mijn vorige project ontwikkelde ik een slimme weegschaal met Wi-Fi. Het kan het gewicht van de gebruiker meten, het lokaal weergeven en naar de cloud sturen. U kunt hier meer informatie over krijgen op onderstaande link: https://www.instructables.com/id/Wi-Fi-Smart-Scale-wi
Slimme wekker: 13 stappen
Slimme wekker: Hallo, mijn naam is Alexandra Christiaens en ik studeer Media- en Communicatietechnologie aan Howest in Kortrijk, België. Als schoolopdracht moesten we een IoT-apparaat maken. We werden aangemoedigd om iets te maken dat een verschil zou maken i
Slimme wekker: 5 stappen
Slimme wekker: het idee achter dit project is om 's ochtends een minimale maar informatieve wekker te hebben. We hebben niet alle informatie die we op onze telefoons krijgen als eerste nodig, maar velen van ons willen wel een of twee dingen weten. Het is bijvoorbeeld leuk om te weten of