INHOUDSOPGAWE:

Maak my wakker - 'n slim wekker: 6 stappe
Maak my wakker - 'n slim wekker: 6 stappe

Video: Maak my wakker - 'n slim wekker: 6 stappe

Video: Maak my wakker - 'n slim wekker: 6 stappe
Video: Mart Hoogkamer - Ik Ga Zwemmen (Officiële Videoclip) 2024, November
Anonim
Maak my wakker - 'n slim wekker
Maak my wakker - 'n slim wekker

Wake me up is 'n slim wekker wat ook as 'n slim lig gebruik kan word.

Die ingeboude ledstrip simuleer natuurlike lig wat u kamer binnekom. Dit bied 'n rustige, natuurlike manier om u dag te begin.

Die wekker is ook toegerus met 'n 4*7 segment -skerm om die tyd te lees, luidsprekers om met u gunsteling musiek te wakker word, 'n aanraakknoppie, 'n ldr om die helderheid van die ledstrip aan te pas en 'n temperatuursensor waarmee u die temperatuur van u kamer.

Voorrade

'N Lys met die presiese pryse wat ek betaal het, kan u hier vind:

Mikrobeheerders en rekenaars:

Raspberry Pi 4I het die framboos pi 4 4GB gebruik, maar elke framboos pi model 3+ behoort goed te wees

Arduino Uno

Die arduino word gebruik om die 4*7 segment klokskerm te beheer.

Sensors:

  • TMP36: temperatuursensor
  • LDR: Ligafhanklike weerstand

Aandrywers:

  • WS2801: Individueel aanspreekbare ledstrip
  • LCD -skerm: 'n 16*2 LCD -skerm.
  • 4*7 segment klok vertoon

IC's:

  • 74HC595: Shiftregister vir die lcd -skerm
  • MCP3008: 8-bis analoog na digitaal omskakelaar
  • Logiese vlakomskakelaar: Word gebruik om tussen raspi en arduino te kommunikeer

Ander goed:

  • 'N Adafruit MAX9744 versterker om die luidsprekers aan te dryf
  • By elke luidspreker het ek 'n Visaton 4Ohm 8Watt volledige reeks luidspreker gebruik (art. Nr. 2240)
  • 'N 9 volt -kragtoevoer om die versterker van krag te voorsien
  • 'N 5V -kragtoevoer om die ledstrip en ander komponente te voorsien. Hou in gedagte dat elke led in die ledstrip 60mA kan verdrink, dus maak seker dat u kragtoevoer voldoende is.
  • 'N Paar weerstands van 220 Ohm
  • 'N Klein broodbord om in u kas te sit.

Gereedskap:

  • 'N Soldeerbout.
  • Iets om die kas te maak (ek het 'n 3D -drukker met PLA en PETG en 'n paar vinylplakkers gebruik om die houteffek te kry.)

Stap 1: Stel die Raspberry Pi op

Die framboos pi is ons belangrikste mikrobeheerder.

Die framboos pi bestuur ons plaaslike webserver, databasis, beheer die ledstrip, luidsprekers, …

Deel 1: Installeer Raspbian

Gebruik hierdie tutoriaal om raspbian te installeer:

Maak seker dat SSH aangeskakel is

Deel 2: Maak verbinding

Om aan die internet gekoppel te word, moet u toegang kry tot die terminale van u framboospi. Ek beveel aan om stopverf te gebruik. In die terminale tipe:

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

'YourNetwork' is die naam van u wifi -netwerk en 'YourSSID' is die wagwoord van die netwerk.

Sodra u die netwerk bygevoeg het, probeer om die Raspberry Pi weer te begin.

Tik die opdrag 'ping 8.8.8.8' in, dit stuur 'n pakkie na die Google-bedieners as u reageer, u netwerk is opgestel en werk!

Deel 3: Installeer die nodige programme

Ons benodig 'n paar ekstra programme om hierdie projek aan die gang te kry.

Voer hierdie twee opdragte uit voordat ons begin, om seker te maak dat alles opgegradeer is.

sudo apt -opdatering

sudo apt -opgradering

Dit kan 'n rukkie neem.

Apache

sudo apt installeer apache2 -y

sudo apt installeer php libapache2-mod-php -y

MariaDB

sudo apt installeer mariadb-server mariadb-client -y

sudo apt installeer php -mysql -y

PHPMyAdmin

sudo apt installeer phpmyadmin -y

Python pip

Ons moet pip installeer om sommige python -biblioteke moontlik te maak

pip3 installeer mysql-connector-python

pip3 installeer flask-socketio

pip3 installeer fles-kors

pip3 installeer gevent

pip3 installeer gevent-websocket

Stap 2: Koppel die elektronika aan

Koppel die elektronika aan
Koppel die elektronika aan
Koppel die elektronika aan
Koppel die elektronika aan

Ek het 2 skemas bygevoeg, 1 is 'n broodbordskema vir toetsdoeleindes. Ek beveel aan dat u die eerste skema bou en probeer om die kode te laat werk.

Ek het die fritzing -lêers hieronder bygevoeg.

Stap 3: Databasisontwerp

Databasisontwerp
Databasisontwerp

Dit is die databasiskema wat ek gemaak het. Die woorde is in Nederlands, maar ek sal elke tabel in detail verduidelik.

Tabel 1: tblMuziek

Dit is 'n redelik basiese tafel. Dit stoor die kunstenaarsnaam, liedjie se naam en die lêernaam van 'n liedjie.

Tabel 2: tblLedstrip

Hierdie tabel hou die huidige toestand van die ledstrip by, dit red die toestand van die ledstrip. Ons het dit nodig vir die smartlight -funksie.

Tabel 3: tblSensoren

Hierdie tabel hou die sensors in ons alarm dop. Ons stoor die naam van die sensor en die kanaal van die MCP3008

Tabel 4: tblMeting

Hierdie tabel stoor die waardes van ons sensors saam met hul tyd.

Tabel 5: tblWekker

Hierdie tabel stoor die wagwoord en die naam van u wekker (bv. Slaapkamer). Hierdie tafel is nie verpligtend nie, maar ek het dit bygevoeg omdat ek aanvaar dat u meer as 1 wekker in u huis sal hê.

Tabel 6: tblAlarm

Dit is waarskynlik die belangrikste tabel. Dit hou tred met die alarm wat u ingestel het en wat die klok moet doen (watter liedjie moet speel, watter volgorde, op watter dae moet dit afgaan, …). Dit is baie belangrik om 2 datums by te hou. 1 datum word gebruik om te stoor op watter uur die alarm moet afgaan. Die ander een hou rekord van die laaste keer dat die alarm afgegaan het. Om te weet watter weeksdag dit moet gaan, gebruik ek 'n varchar wat 'n getal van 7 syfers bevat. Die eerste syfer is Maandag, die tweede Dinsdag, … As dit 'n 1 is, moet dit afgaan, as dit 'n 0 is, moet dit nie. Voorbeeld: 1111100, dit beteken dat hierdie alarm Maandag, Dinsdag, Woensdag, Donderdag en Vrydag moet afgaan.

Stap 4: Arduino -opstelling

Hierdie stap is baie maklik. Daar sal 'n skakel na my github wees in die volgende stap waar u die arduino -lêer kan aflaai.

Wat doen die program?

Die program wag totdat reeksdata vanaf die pi kom.

Sodra die data ontvang is, ontleed dit deur die string en stuur 'n bevestiging terug na die pi.

Die string sal so wees: '1201', dit beteken dat dit 12:01 is. Ek het 'n gewone anode 7 -segmentskerm gebruik, dit beteken dat die syfers hoog moet wees en dat A, B, C, D, E, F, G en DP laag moet wees om dit aan te skakel. As u 'n gewone katode gebruik, moet u net HOOG na LAAG en LAAG na HOOG verander.

Hier is 'n skakel met meer inligting oor hoe 7 segmentskerms werk. (met die gebruik van biblioteek):

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

Hier is 'n skakel oor sewe segmentskerms sonder die gebruik van 'n biblioteek:

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

Stap 5: Raspberry Pi Backend

Raspberry Pi Backend
Raspberry Pi Backend

U kan my kode aflaai met Github. (https://github.com/VanHevelNico/WakeMeUp)

Hoe om die program te installeer:

Die agterkant is in python geskryf met behulp van fles. U kan outomaties 'n diens maak wat hierdie program (app.py) begin.

U moet die frontend -kode in die html -lêer van die apache -bediener wat ons vroeër afgelaai het, plaas. (/var/html)

Hoe werk die program?

As die wekker aangeskakel is, gaan na die ip -adres van u horlosie (dit sal op die lcd verskyn)

Sodra u na die ip -adres in u blaaier gaan, stuur u rekenaar 'n socket.io -versoek na die backend en sê dat 'n kliënt gekoppel is. As die backend dit ontvang, begin 'n paar drade wat ek hieronder sal verduidelik.

Stel op

Dit geïntialiseer alle benodigde voorwerpe.

GetTemp

Dit lees die mcp3008 kanaal 0 en skakel die binêre data om na die werklike temperatuur en plaas dit in die databasis met die huidige datum en uur.

GetTempGrafiek

Dit kry die afgelope 20 waardes van die temperatuursensor en gee dit na die voorkant.

tyd_sturen

Hierdie metode kry die huidige tyd en kyk of die minuut verander het. As dit verander het, stuur die program die nuwe tyd na die arduino met behulp van seriële kommunikasie

checkAlarmen

Dit is die belangrikste metode. Dit kry al die alarms wat aangeskakel word en kyk of een van hierdie alarms tussen nou en 5 minute gelede moet gaan (dit is 'n buffer om seker te maak dat elke alarm afgaan wanneer dit nodig is). As die alarm moet afgaan, begin ons met die musiek, die strook, … Ons lees die kraggevoelige weerstand deurlopend en as die waarde onder 1000 daal (lees die fsr word ingedruk) Ons skakel die alarm aan en werk die alarm op in die databasis. Ons stel die datum waarop die alarm vir die laaste keer afgegaan het, op die huidige datum.

status lig

Hierdie metode gee die waarde van die ledstrip uit en skakel die ledstrip aan indien nodig.

lichtAanpassen

Dit is 'n ekstra metode om seker te maak dat die ledstrip en alarmlig nie bots nie.

Stap 6: Saak

Saak
Saak
Saak
Saak
Saak
Saak

Die skakel na my lêers kan hier gevind word:

Ek het 'n 3D -drukker gebruik om die omhulsel te druk. Dit word in 4 verskillende dele gedruk:

  1. Die voorplaat met gate vir die luidspreker en 'n paar mure vir die 7 -segment -skerm
  2. Die buitenste ring vir die ledstrip in deursigtige PETG.
  3. Die middelste deel
  4. Die agterplaat met 'n gat vir die lcd en 'n gat vir die kabels.

In die oorspronklike model was daar geen gat vir die 7 -segment -skerm nie, maar dit is nodig, want anders sal die lig van die 7 -segment -skerm nie deurskyn nie.

Soos u kan sien, nadat ek al die komponente daarin geplaas het, het ek vinylplakkers met 'n houtvoorkoms gebruik om die eindresultaat beter te laat lyk. Die klokskerm skyn deur die plakker, wat 'n baie mooi effek skep.

Aanbeveel: