Beargardian: 5 passi
Beargardian: 5 passi
Anonim
Beargardian
Beargardian

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

Cablaggio dell'hardware al Pi
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

Creazione del database
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
  • e-mail
  • 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.

Consigliato: