Cuprins:

Trezește-mă - o ceas cu alarmă inteligentă: 6 pași
Trezește-mă - o ceas cu alarmă inteligentă: 6 pași

Video: Trezește-mă - o ceas cu alarmă inteligentă: 6 pași

Video: Trezește-mă - o ceas cu alarmă inteligentă: 6 pași
Video: Dani Mocanu - Alo Politia | Official Audio 2024, Noiembrie
Anonim
Wake Me Up - un ceas cu alarmă inteligent
Wake Me Up - un ceas cu alarmă inteligent

Wake me up este un ceas cu alarmă inteligent care poate fi folosit și ca lumină inteligentă.

Banda LED integrată simulează intrarea luminii naturale în camera dvs. Acest lucru permite un mod calm și natural de a începe ziua.

Ceasul deșteptător este, de asemenea, echipat cu un afișaj de 4 * 7 segmente pentru citirea orei, difuzoare pentru a vă trezi cu muzica preferată, un buton tactil, un ldr pentru adaptarea luminozității ledstrip-ului și un senzor de temperatură pe care îl puteți utiliza pentru a vizualiza temperatura camerei tale.

Provizii

O listă a prețurilor exacte pe care le-am plătit poate fi găsită aici:

Microcontrolere și computere:

Raspberry Pi 4 Am folosit raspberry pi 4 4GB, cu toate acestea, orice model raspberry pi 3+ ar trebui să fie în regulă

Arduino Uno

Arduino este folosit pentru a controla afișajul ceasului de 4 * 7 segmente.

Senzori:

  • TMP36: senzor de temperatură
  • LDR: Rezistență dependentă de lumină

Actuatoare:

  • WS2801: Ledstrip accesibil individual
  • Afișaj LCD: Un afișaj LCD de 16 * 2.
  • Afișaj ceas 4 * 7 segmente

IC-uri:

  • 74HC595: Shiftregister pentru afișajul LCD
  • MCP3008: Convertor analogic digital pe 8 biți
  • Convertor de nivel logic: folosit pentru a comunica între raspi și arduino

Alte lucruri:

  • Un amplificator MAX9744 adafruit pentru alimentarea difuzoarelor
  • Orice difuzor, am folosit un difuzor cu gamă completă Visaton 4Ohm 8Watt (nr. Art. 2240)
  • O sursă de alimentare de 9 volt pentru alimentarea amplificatorului
  • O sursă de alimentare de 5 volți pentru a furniza ledstrip și alte componente. Rețineți că fiecare led din ledstrip poate drow 60mA, deci asigurați-vă că sursa de alimentare este suficientă.
  • Câteva rezistențe de 220 Ohm
  • O mică placă pentru a pune în cazul dvs.

Instrumente:

  • Un fier de lipit.
  • Ceva care să facă cazul (am folosit o imprimantă 3D cu PLA și PETG și câteva autocolante de vinil pentru a obține efectul de lemn.)

Pasul 1: Configurarea Raspberry Pi

Raspberry pi este principalul nostru micro controler.

Raspberry pi rulează serverul nostru web local, baza de date, controlează ledstrip-ul, difuzoarele, …

Partea 1: Instalarea Raspbian

Utilizați acest tutorial pentru a instala raspbian:

Asigurați-vă că SSH este activat

Partea 2: Conectarea

Pentru a vă conecta la internet, trebuie să accesați terminalul dvs. raspberry pi. Recomand utilizarea chitului. În tipul terminalului:

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

„YourNetwork” este numele rețelei dvs. wifi, iar „YourSSID” este parola rețelei.

După ce ați adăugat rețeaua, încercați să reporniți Raspberry Pi.

Tastați comanda „ping 8.8.8.8”, acest lucru va trimite un pachet către serverele google dacă primiți răspuns, rețeaua dvs. este configurată și funcționează!

Partea 3: Instalați programele necesare

Vom avea nevoie să instalăm câteva programe suplimentare pentru a pune în funcțiune acest proiect.

Înainte de a începe, executați aceste 2 comenzi pentru a ne asigura că totul este actualizat.

actualizare sudo apt

sudo apt upgrade

Ar putea dura ceva timp.

Apache

sudo apt instalează apache2 -y

sudo apt instalează php libapache2-mod-php -y

MariaDB

sudo apt instalați mariadb-server mariadb-client -y

sudo apt instalează php-mysql -y

PHPMyAdmin

sudo apt instalează phpmyadmin -y

Python pip

Trebuie să instalăm pip pentru a activa unele biblioteci python

pip3 instalează mysql-connector-python

pip3 instalează flask-socketio

pip3 instalează flask-cors

pip3 instalează gevent

pip3 instalează gevent-websocket

Pasul 2: Conectarea dispozitivelor electronice

Conectarea electronice
Conectarea electronice
Conectarea electronice
Conectarea electronice

Am adăugat 2 scheme, 1 este o schemă de testare. Vă recomand să construiți prima schemă și să încercați ca codul să funcționeze.

Am adăugat fișierele interesante de mai jos.

Pasul 3: Proiectarea bazei de date

Proiectare baze de date
Proiectare baze de date

Aceasta este schema de baze de date pe care am realizat-o. Cuvintele sunt în olandeză, dar voi explica fiecare tabel în detaliu.

Tabelul 1: tblMuziek

Acesta este un tabel destul de simplu. Se salvează numele artistului, numele melodiei și numele fișierului unei melodii.

Tabelul 2: tblLedstrip

Acest tabel ține evidența stării curente a ledstrip-ului și salvează starea ledstrip-ului. Avem nevoie de acest lucru pentru funcția smartlight.

Tabelul 3: tblSensoren

Acest tabel ține evidența senzorilor din alarma noastră. Stocăm numele senzorului și canalul MCP3008

Tabelul 4: tblMeting

Acest tabel stochează valorile senzorilor noștri împreună cu timpul lor.

Tabelul 5: tblWekker

Acest tabel stochează parola și numele ceasului cu alarmă (de ex. Dormitor) Acest tabel nu este obligatoriu, dar l-am adăugat deoarece presupun că veți avea mai mult de 1 ceas cu alarmă în casa dvs.

Tabelul 6: tblAlarm

Acesta este probabil cel mai important tabel. Acesta ține evidența alarmei pe care ați setat-o și ce trebuie să facă ceasul (ce melodie să redați, ce secvență de leduri, în ce zile ar trebui să se declanșeze, …). Este foarte important să țineți evidența a 2 date. 1 dată este utilizată pentru a stoca la ce oră ar trebui să declanșeze alarma. Cealaltă ține evidența ultimei declanșări a alarmei. Pentru a ști ce zi săptămânală ar trebui să dispară, am folosit un varchar care conține un număr de 7 cifre. Prima cifră este luni, a doua marți, … Dacă este 1, atunci ar trebui să dispară, dacă este 0, nu ar trebui. Exemplu: 1111100 înseamnă că alarma ar trebui să declanșeze luni, marți, miercuri, joi și vineri.

Pasul 4: Configurare Arduino

Acest pas este foarte ușor. La pasul următor va fi un link către github-ul meu de unde puteți descărca fișierul arduino.

Ce face programul?

Programul așteaptă ca datele seriale să vină din pi.

De îndată ce datele sunt primite, acestea analizează șirul și trimite înapoi o confirmare către pi.

Șirul va fi cam așa: „1201” înseamnă că este 12:01. Am folosit un afișaj anodic comun de 7 segmente, ceea ce înseamnă că cifrele ar trebui să fie mari și A, B, C, D, E, F, G și DP ar trebui să fie scăzute pentru a le activa. Dacă utilizați un catod comun, ar trebui să schimbați HIGH la LOW și LOW la HIGH.

Iată un link cu mai multe informații despre cum funcționează afișajele pe 7 segmente. (cu utilizarea bibliotecii):

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

Iată un link despre afișajele pe 7 segmente fără utilizarea unei biblioteci:

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

Pasul 5: Raspberry Pi Backend

Raspberry Pi Backend
Raspberry Pi Backend

Puteți descărca codul meu folosind Github. (https://github.com/VanHevelNico/WakeMeUp)

Cum se instalează programul:

Backend-ul este scris în python folosind balonul. Puteți crea un serviciu care pornește automat acest program (app.py).

Ar trebui să introduceți codul frontend în fișierul html al serverului apache pe care l-am descărcat mai devreme. (/ var / html)

Cum funcționează programul?

Când ceasul cu alarmă este pornit, accesați adresa IP a ceasului (acesta va fi afișat pe ecranul LCD)

De îndată ce accesați adresa IP din browserul dvs. computerul dvs. va trimite o cerere socket.io către backend spunând că s-a conectat un client. Când backend-ul primește acest lucru, vor începe câteva fire pe care le voi explica mai jos.

Înființat

Aceasta inițializează toate obiectele necesare.

GetTemp

Aceasta citește canalul mcp3008 0 și convertește datele binare la temperatura reală și le introduce în baza de date cu data și ora curente.

GetTempGrafiek

Aceasta obține ultimele 20 de valori ale senzorului de temperatură și îl emite în frontend.

tijd_sturen

Această metodă obține ora curentă și verifică dacă minutul s-a schimbat. Dacă s-a schimbat, programul trimite ora nouă către arduino folosind comunicații seriale

checkAlarmen

Aceasta este cea mai importantă metodă. Acesta primește toate alarmele care sunt activate și verifică dacă oricare dintre aceste alarme trebuie să treacă între acum și acum 5 minute (acesta este un buffer pentru a vă asigura că fiecare alarmă se declanșează când trebuie). Dacă alarma trebuie să se declanșeze, vom începe muzica, ledstrip-ul, … Citim rezistența sensibilă la forță continuu și când valoarea scade sub 1000 (citim fsr este apăsat) Întoarcem alarma și actualizăm alarma în Bază de date. Am stabilit data la care s-a declanșat alarma pentru ultima dată la data curentă.

statusLight

Această metodă emite valoarea ledstrip-ului și pornește ledstrip-ul dacă este necesar.

lichtAanpassen

Aceasta este o metodă suplimentară pentru a vă asigura că ledul și ledul de alarmă nu intră în conflict.

Pasul 6: Caz

Caz
Caz
Caz
Caz
Caz
Caz

Link-ul către fișierele mele poate fi găsit aici:

Am folosit o imprimantă 3d pentru a imprima carcasa. Este tipărit în 4 părți diferite:

  1. Placa frontală cu găuri pentru difuzor și niște pereți pentru afișajul pe 7 segmente
  2. Inelul exterior pentru ledstrip în PETG transparent.
  3. Partea de mijloc
  4. Placa din spate cu o gaură pentru ecranul LCD și o gaură pentru cabluri.

În modelul original nu a existat nicio gaură pentru afișajul cu 7 segmente, totuși acest lucru este necesar pentru că altfel lumina afișajului pe 7 segmente nu va străluci.

După cum puteți vedea, după ce am introdus toate componentele, am folosit autocolante de vinil cu aspect de lemn pentru a face rezultatul final să arate mai bine. Afișajul ceasului strălucește prin autocolant, ceea ce creează un efect foarte frumos.

Recomandat: