Sommario:

Wake Me Up - una sveglia intelligente: 6 passaggi
Wake Me Up - una sveglia intelligente: 6 passaggi

Video: Wake Me Up - una sveglia intelligente: 6 passaggi

Video: Wake Me Up - una sveglia intelligente: 6 passaggi
Video: Alex Mucci SIGMATA da Marra 2024, Novembre
Anonim
Wake Me Up - una sveglia intelligente
Wake Me Up - una sveglia intelligente

Wake me up è una sveglia intelligente che può essere utilizzata anche come luce intelligente.

La striscia led integrata simula la luce naturale che entra nella tua stanza. Ciò consente un modo calmo e naturale per iniziare la giornata.

La sveglia è inoltre dotata di un display 4*7 segmenti per la lettura dell'ora, altoparlanti per svegliarsi con la tua musica preferita, un pulsante touch, un ldr per adattare la luminosità della ledstrip e un sensore di temperatura che puoi utilizzare per visualizzare il temperatura della tua stanza.

Forniture

Un elenco dei prezzi esatti che ho pagato può essere trovato qui:

Microcontrollori e computer:

Raspberry Pi 4Ho usato il Raspberry Pi 4 4GB, tuttavia, qualsiasi modello Raspberry Pi 3+ dovrebbe andare bene

Arduino Uno

L'arduino viene utilizzato per controllare il display dell'orologio a 4*7 segmenti.

Sensori:

  • TMP36: sensore di temperatura
  • LDR: resistore dipendente dalla luce

Attuatori:

  • WS2801: ledstrip indirizzabile individualmente
  • Display LCD: un display LCD 16*2.
  • Display dell'orologio a 4*7 segmenti

CI:

  • 74HC595: Shiftregister per il display lcd
  • MCP3008: convertitore da analogico a digitale a 8 bit
  • Convertitore di livello logico: utilizzato per comunicare tra raspi e arduino

Altre cose:

  • Un amplificatore adafruit MAX9744 per alimentare gli altoparlanti
  • Qualsiasi altoparlante, ho usato un altoparlante full range Visaton 4Ohm 8Watt (Art. No. 2240)
  • Un alimentatore da 9 volt per alimentare l'amplificatore
  • Un alimentatore da 5 volt per alimentare la striscia led e altri componenti. Tieni presente che ogni led nella striscia led può assorbire 60 mA, quindi assicurati che l'alimentazione sia sufficiente.
  • Qualche resistore da 220Ohm
  • Una piccola breadboard da mettere nel tuo caso.

Utensili:

  • Un saldatore.
  • Qualcosa per realizzare la custodia (ho usato una stampante 3D con PLA e PETG e alcuni adesivi in vinile per ottenere l'effetto legno.)

Passaggio 1: configurazione del Raspberry Pi

Il Raspberry Pi è il nostro micro controller principale.

Il raspberry pi esegue il nostro server web locale, database, controlla il ledstrip, altoparlanti, …

Parte 1: installazione di Raspbian

Usa questo tutorial per installare raspbian:

Assicurati che SSH sia abilitato

Parte 2: Connettersi

Per connetterti a Internet, devi accedere al terminale del tuo raspberry pi. Consiglio di usare lo stucco. Nel tipo di terminale:

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

"YourNetwork" è il nome della tua rete wifi e "YourSSID" è la password della rete.

Una volta aggiunta la rete, prova a riavviare il Raspberry Pi.

Digita il comando 'ping 8.8.8.8' questo invierà un pacchetto ai server di Google se ricevi risposta che la tua rete è configurata e funzionante!

Parte 3: installa i programmi necessari

Avremo bisogno di installare alcuni programmi extra per far funzionare questo progetto.

Prima di iniziare, esegui questi 2 comandi per assicurarti che tutto sia aggiornato.

sudo apt update

sudo apt upgrade

Potrebbe volerci un po' di tempo.

Apache

sudo apt install apache2 -y

sudo apt install php libapache2-mod-php -y

Maria DB

sudo apt install mariadb-server mariadb-client -y

sudo apt install php-mysql -y

PHPMyAdmin

sudo apt install phpmyadmin -y

pitone pitone

Dobbiamo installare pip per abilitare alcune librerie Python

pip3 installa mysql-connector-python

pip3 install flask-socketio

pip3 install flask-cors

pip3 installa gevent

pip3 installa gevent-websocket

Passaggio 2: collegamento dell'elettronica

Collegamento dell'elettronica
Collegamento dell'elettronica
Collegamento dell'elettronica
Collegamento dell'elettronica

Ho aggiunto 2 schemi, 1 è uno schema breadboard a scopo di test. Consiglio di creare il primo schema e di provare a far funzionare il codice.

Ho aggiunto i file fritzing di seguito.

Passaggio 3: progettazione del database

Progettazione database
Progettazione database

Questo è lo schema del database che ho creato. Le parole sono in olandese, ma spiegherò ogni tabella in dettaglio.

Tabella 1: tblMuziek

Questa è una tabella piuttosto semplice. Salva il nome dell'artista, il nome del brano e il nome del file di un brano.

Tabella 2: tblLedstrip

Questa tabella tiene traccia dello stato corrente della ledstrip salva lo stato della ledstrip. Ne abbiamo bisogno per la funzione smartlight.

Tabella 3: tblSensoren

Questa tabella tiene traccia dei sensori nel nostro allarme. Memorizziamo il nome del sensore e il canale dell'MCP3008

Tabella 4: tblMeting

Questa tabella memorizza i valori dei nostri sensori insieme al loro tempo.

Tabella 5: tblWekker

Questa tabella memorizza la password e il nome della tua sveglia (es. Camera da letto) Questa tabella non è obbligatoria ma l'ho aggiunta perché presumo che avrai più di 1 sveglia in casa.

Tabella 6: tblAllarme

Questa è probabilmente la tabella più importante. Tiene traccia della sveglia che hai impostato e di cosa deve fare l'orologio (quale canzone suonare, quale sequenza di led, in quali giorni dovrebbe suonare, …). È molto importante tenere traccia di 2 date. 1 data viene utilizzata per memorizzare a che ora deve suonare la sveglia. L'altro tiene traccia dell'ultima volta che è suonato l'allarme. Per sapere quale giorno della settimana dovrebbe suonare ho usato un varchar che contiene un numero di 7 cifre. La prima cifra è lunedì, la seconda martedì… Se è 1 allora dovrebbe spegnersi, se è 0 no. Esempio: 1111100 significa che questo allarme dovrebbe suonare lunedì, martedì, mercoledì, giovedì e venerdì.

Passaggio 4: configurazione di Arduino

Questo passaggio è molto semplice. Ci sarà un collegamento al mio github nel passaggio successivo in cui è possibile scaricare il file arduino.

Cosa fa il programma?

Il programma attende che i dati seriali arrivino dal pi.

Non appena i dati vengono ricevuti, analizza la stringa e restituisce una conferma al pi.

La stringa sarà qualcosa del genere: '1201' questo significa che sono le 12:01. Ho usato un display a 7 segmenti ad anodo comune, questo significa che le cifre dovrebbero essere alte e A, B, C, D, E, F, G e DP dovrebbero essere basse per accenderle. Se usi un catodo comune dovresti semplicemente cambiare HIGH in LOW e LOW in HIGH.

Ecco un link con ulteriori informazioni su come funzionano i display a 7 segmenti. (con l'uso della biblioteca):

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

Ecco un link sui display a 7 segmenti senza l'uso di una libreria:

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

Passaggio 5: backend Raspberry Pi

Backend Raspberry Pi
Backend Raspberry Pi

Puoi scaricare il mio codice usando Github. (https://github.com/VanHevelNico/WakeMeUp)

Come installare il programma:

Il backend è scritto in Python usando flask. Puoi creare un servizio che avvii questo programma (app.py) automaticamente.

Dovresti inserire il codice del frontend nel file html del server Apache che abbiamo scaricato in precedenza. (/var/html)

Come funziona il programma?

Quando la sveglia è accesa vai all'indirizzo IP del tuo orologio (verrà visualizzato sul lcd)

Non appena vai a quell'indirizzo IP nel tuo browser, il tuo computer invierà una richiesta socket.io al backend dicendo che un client si è connesso. Quando il backend lo riceverà, inizieranno alcuni thread che spiegherò di seguito.

Impostare

Questo inizializza tutti gli oggetti necessari.

OttieniTemp

Questo legge il canale 0 del mcp3008 e converte i dati binari nella temperatura effettiva e li inserisce nel database con la data e l'ora correnti.

OttieniTempGrafiek

Questo ottiene gli ultimi 20 valori del sensore di temperatura e li emette al frontend.

tijd_sturen

Questo metodo ottiene l'ora corrente e controlla se il minuto è cambiato. Se è cambiato il programma invia la nuova ora all'arduino utilizzando la comunicazione seriale

checkAllarmi

Questo è il metodo più importante. Ottiene tutti gli allarmi attivati e controlla se uno di questi allarmi deve essere attivato tra ora e 5 minuti fa (questo è un buffer per assicurarsi che ogni allarme scada quando necessario). Se l'allarme deve suonare avviamo la musica, il ledstrip, … Leggiamo il resistore sensibile alla forza continuamente e quando il valore scende sotto 1000 (leggi il fsr è premuto) Spegniamo l'allarme e aggiorniamo l'allarme nel Banca dati. Abbiamo impostato la data in cui l'allarme è suonato per l'ultima volta alla data corrente.

statoLuce

Questo metodo emette il valore della ledstrip e accende la ledstrip se necessario.

lichtAanpassen

Questo è un metodo extra per assicurarsi che la striscia led e la luce di allarme non siano in conflitto.

Passaggio 6: caso

Caso
Caso
Caso
Caso
Caso
Caso

Il collegamento ai miei file può essere trovato qui:

Ho usato una stampante 3D per stampare l'involucro. È stampato in 4 parti diverse:

  1. La piastra frontale con i fori per l'altoparlante e alcune pareti per il display a 7 segmenti
  2. L'anello esterno per il ledstrip in PETG trasparente.
  3. La parte centrale
  4. La piastra posteriore con un foro per lcd e un foro per i cavi.

Nel modello originale non c'era il foro per il display a 7 segmenti, tuttavia questo è necessario perché altrimenti la luce del display a 7 segmenti non risplenderà.

Come puoi vedere dopo aver inserito tutti i componenti ho usato adesivi in vinile con un aspetto legno per rendere il risultato finale migliore. Il display dell'orologio brilla attraverso l'adesivo che crea un effetto molto gradevole.

Consigliato: