Sommario:
- Passaggio 1: cablaggio dell'hardware al Pi
- Passaggio 2: codifica dei programmi principali
- Passaggio 3: creazione del database
- Passaggio 4: codifica hardware
Video: Beargardian: 5 passi
2025 Autore: John Day | [email protected]. Ultima modifica: 2025-01-10 13:47
Ciao ragazzi per la scuola mi serviva un'idea per un progetto. Quindi stavo pensando, deve essere un progetto con il lampone pi ed è locale. Improvvisamente ho avuto una grande idea e non chiedermi come mi è venuta quell'idea, ma ho pensato a un aggiornamento per un baby monitor. Pensa un attimo a questa idea, la maggior parte dei baby monitor ha solo la funzione di ascoltare la stanza del bambino.
Le caratteristiche
- Un piccolo spettacolo di luci con colori regolabili
- Una fotocamera che ti mostra immagini dal vivo
- Un altoparlante per riprodurre musica
- Sensori per catturare i movimenti del bambino
- Tutto ciò che mostra su un sito web
Informazioni brevi
Lascia che ti spieghi questo in una versione breve. Quindi abbiamo bisogno di un sito Web e per questo progetto sto usando Flask, abbiamo anche bisogno di un database e sto usando mysql, anche uno script che esegue l'hardware e questo è con python (3) e come ultimo abbiamo bisogno di una configurazione del server sarebbe nginx sul PI.
Cosa ci serve
- Il Raspberry Pi 3
- Il motore passo-passo 28BYJ
- Il modulo passo-passo ULN2003 driverchip del motore passo-passo
- Un led rgb con 3 resistenze 330Ohm
- La fotocamera Pi NoIR V2
- Il sensore a ultrasuoni HC-SR04
- Il micromodulo di ardiuno
- Il MAX98357A
- Un altoparlante 8Ohm
- E non dimenticare di comprare un orso
Configurazione raspberry pi --------------------------------- --------------------------------------------------- ------------
All'inizio dobbiamo configurare il Pi. Inizia già ad accedere tramite putty, se non hai putty ti consiglio di scaricarlo, digita semplicemente il tuo ip statico del Pi con ssh e vai con esso. Se devi installare il tuo Raspberry Pi, ho ricevuto cattive notizie, non lo sto spiegando in questo progetto.
Installa i pacchetti
sudo apt update
sudo apt install -y python3-venv python3-pip python3-mysqldb mysql-server uwsgi nginx uwsgi-plugin-python3
Ambiente virtuale
python3 -m pip install --upgrade pip setuptools wheel virtualenv
mkdir {nome cartella del tuo progetto} && cd {nome cartella del tuo progetto} python3 -m venv --system-site-packages env source env/bin/activate python -m pip install mysql-connector-python argon2-cffi Flask Flask-HTTPAuth Flask- MySQL mysql-connector-python passlib
Ora devi clonare il repository git nella cartella del tuo progetto
github.com/NMCT-S2-Project-I/Project-I.git
Se guardi nella cartella del tuo progetto devi vedere 5 cartelle
- conf
- env
- sensore
- sql
- ragnatela
Banca dati
sudo systemctl status mysql
ss -lt | grep mysql sudo mysql
crea un utente nel database con tutti i privilegi e crea il tuo database
creare l'utente 'user'@'localhost' identificato da 'password';
creare il database nomedatabase; concedere tutti i privilegi su yourdatabasename.* a 'user'@'localhost' con l'opzione grant;
File di configurazione per il server
In uwsgi-flask.ini cambi 'module = …' in 'module= web:app' e il percorso del tuo virtualenv che hai creato. Negli altri file è necessario modificare i percorsi nei percorsi assoluti effettivi della directory.
Una volta capito, puoi impostare i file nel posto giusto.
sudo cp conf/project1-*.service /etc/systemd/system/
sudo systemctl daemon-reload sudo systemctl start project1-* sudo systemctl status project1-*
ora dobbiamo renderlo disponibile
sudo cp conf/nginx /etc/nginx/sites-available/project1
sudo rm /etc/nginx/sites-enabled/default sudo ln -s /etc/nginx/sites-available/project1 /etc/nginx/sites-enabled/project1 sudo systemctl restart nginx.service sudo nginx -t
Se tutto è andato bene dovresti salutare il mondo con questo comando
wget -qO - localhost
Fatto ! Bene, questo è per la parte su cui far funzionare il tuo sistema…
Passaggio 1: cablaggio dell'hardware al Pi
utilizzando BCM
audio MAX98357A
- BCK a GPIO 18
- Dati a GPIO 21
- LRCK a GPIO 19
leggero
- rosso a GPIO 17
- verde a GPIO 27
- blu a GPIO 22
modulo motore ULN2003
- pin 1 a GPIO 5
- pin 2 a GPIO 6
- pin 3 a GPIO 13
- pin 4 a GPIO 26
micro
D0 a GPIO 21
Sensore ultrasonico
- trig su GPIO 16
- eco a GPIO 20
Passaggio 2: codifica dei programmi principali
Non sto entrando nei dettagli qui, ma puoi controllare il mio codice in github.
Per cominciare ho creato il mio html e css, un indice, login, register, homescreen, music, addmusic, addbear, light, camera, camerasettings, sensor, dashboard page. I file html devono essere nei modelli e i file css nella cartella static/css. Puoi personalizzare completamente il css come desideri.
Se hai fatto questa parte, devi configurare la tua borraccia. Flask è facile da usare, solo un esempio del mondo ciao
# import boccetta all'inizio
from flask import * @app.route('/') def index(): return render_template('index.html')
Ora nel mio codice questo è già compilato, l'unica cosa che devi fare è cambiare l'utente e la password del database con quelli da te e ovviamente creare lo stesso database che puoi trovare anche in github.
Passaggio 3: creazione del database
Per i veri fan ti dirò come creare lo stesso database.
Quindi prima dobbiamo creare il database se non l'hai fatto nel passaggio uno.
creare database beargardian;
Una volta fatto questo, crei le tabelle in mysql workbench o phpadmin
la tabella utente ha
- ID utente
- nome di battesimo
- cognome
- nome del bambino
- password con sha1
- cartella utente
- playmusic (int)
- luce da gioco (int)
- registrazione (int)
il tavolo da musica ha
- IDmusica
- canzone
- il percorso
- cartella utente
- stato
- volume
la tabella di registrazione ha
- IDregistrazione
- il percorso
- cartella utente
- tempo
- giorno
la tabella dei colori ha
- IDcolore
- rosso
- verde
- blu
- luminosità
- ID utente
il tavolo dell'orso ha
- BearID (decimale(8))
- ID utente predefinito nullo
- nome dell'orso
la tabella dei sensori ha
- IDsensore
- distanza
- micro
- BearID
- tempo
- giorno
- ora di dormire
Quindi ora che hai creato il database con successo, passiamo all'hardware.
Passaggio 4: codifica hardware
Mostrerò un po' di codice e ti dirò perché l'ho fatto in quel modo.
Per cominciare ho usato il threading, cosa assolutamente indispensabile in questo progetto. Cos'è il threading, hmmm bella domanda! Beh, una minaccia in Python è eseguire più programmi contemporaneamente. Quindi, se ad esempio cambi il colore, puoi anche registrare. È facile da usare, non preoccuparti.
import _threaddef nome_funzione(qualcosa, qualcos'altro): codice da eseguire
_thread.start_new_thread(nome_funzione, tuple_con_le_variabili_funzioni)
Se hai guardato il mio programma hai visto logger.info('…'). Questa è la funzione di stampa ma molto meglio, perché sul Pi non puoi stampare cose, quindi creo un file e lo stampo lì. Puoi impostare il file di registro con questo codice.
logger = logging.getLogger(_name_)logger.setLevel(logging. INFO) # crea un gestore di file handler = logging. FileHandler('logger.log') handler.setLevel(logging. INFO)
# crea un formato di registrazione
formattatore = logging. Formatter('%(asctime)s - %(name)s - %(message)s') handler.setFormatter(formatter)
# aggiungi i gestori al logger
logger.addHandler(gestore)
logger.info('avvia l'hardware\n---------------------------------------')
più avanti nel codice stesso spiego tutto.