Sommario:
- Forniture
- Passaggio 1: collegamento di tutta l'elettronica
- Passaggio 2: configurazione del Raspberry Pi
- Passaggio 3: creazione del database
- Passaggio 4: configurazione del backend
- Passaggio 5: configurazione del frontend
- Passaggio 6: creazione dell'involucro
Video: Distributore d'acqua automatico per monitorare il consumo: 6 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:01
Ciao!
Un paio di mesi fa, ero nella mia stanza a pensare a che tipo di progetto avrei voluto realizzare per un incarico scolastico. Volevo fare qualcosa che mi andasse bene e che mi avrebbe beneficiato in futuro. Improvvisamente, mia madre è entrata nella stanza e ha iniziato a lamentarsi di non bere abbastanza acqua. Ho avuto subito un'illuminazione. Mi è venuta l'idea di realizzare un distributore automatico d'acqua (come al cinema) che monitorasse il consumo di acqua su base giornaliera.
Con un Raspberry Pi, alcuni sensori, una pompa e poca conoscenza, ho cercato di renderlo il migliore possibile.
Alla fine di tutti i passaggi, avrai un waterdispenser funzionante che riempie la tua borraccia e che si connette e interagisce con il tuo Raspberry Pi. Non solo sarai in grado di monitorare il tuo consumo di acqua in base a una percentuale, ma avrai anche la possibilità di visualizzare la temperatura e il livello dell'acqua del tuo contenitore dell'acqua. Infine, potrai controllare le tue statistiche. Se questo ti sembra interessante, assicurati di dare un'occhiata e provalo tu stesso!
Il repository GitHub:
Forniture
Microcontrollori
Lampone Pi 4
Sensori e moduli
Ho usato 4 sensori:
2xHC-SR04Sensore a ultrasuoni
I sensori a ultrasuoni misurano la distanza utilizzando onde ultrasoniche. La testa del sensore emette un'onda ultrasonica e riceve l'onda riflessa dal bersaglio. I sensori a ultrasuoni misurano la distanza dal bersaglio misurando il tempo tra l'emissione e la ricezione. Ne ho usati due per controllare se c'è una bottiglia nelle vicinanze e per misurare la distanza dall'acqua nel serbatoio.
Scheda dati
1x sensore di temperatura DS18B20
Il DS18B20 è un sensore di temperatura programmabile a 1 filo di maxim integrato. È ampiamente utilizzato per misurare la temperatura in ambienti difficili come soluzioni chimiche, miniere o terreno, ecc. L'ho usato per misurare la temperatura dell'acqua del serbatoio dell'acqua.
Scheda dati
1x modulo RFID RC522
L'RC522 è un modulo RFID a 13,56 MHz basato sul controller MFRC522 di NXP semiconductors. Il modulo può supportare I2C, SPI e UART e normalmente viene spedito con una scheda RFID e un portachiavi. È comunemente usato nei sistemi di presenza e in altre applicazioni di identificazione di persone/oggetti. In questo progetto viene utilizzato per un sistema di identificazione/accesso.
Scheda dati
E 2 attuatori:
1x pompa peristaltica 12-24V
Ho usato una pompa peristaltica per portare l'acqua dal serbatoio a una bottiglia d'acqua. La maggior parte delle pompe era troppo lenta, quindi ho optato per una versione a 24 V che alimenterei con un adattatore di alimentazione da 24 V.
1x display LCD
Il display LCD viene utilizzato per visualizzare l'indirizzo IP ei messaggi importanti. Un display a cristalli liquidi (LCD) è un display a schermo piatto o un altro dispositivo ottico modulato elettronicamente che utilizza le proprietà di modulazione della luce dei cristalli liquidi combinate con i polarizzatori.
Scheda dati
involucro
Parlando dell'involucro, ho fatto un fai da te con forniture da un deposito di casa (nel mio caso il Brico in Belgio). Ho usato del compensato che ho tagliato alla giusta misura. Parlerò di come ho realizzato il mio caso in un passaggio successivo, ma ecco le cose di cui avrai bisogno:
- 3x tavole di compensato
- 1x imbuto piccolo
- 1x Serbatoio dell'acqua (puoi scegliere la quantità che vuoi, io ho optato per 10L)
- 1x vassoio antigoccia
Puoi trovare tutti i materiali e i prezzi nella distinta base allegata.
Passaggio 1: collegamento di tutta l'elettronica
Ora che abbiamo riassunto tutta l'elettronica, è il momento di collegarli. Ho realizzato due circuiti Fritzing, una breadboard e uno schematico, per mostrarvi come e dove collegare tutta l'elettronica. Puoi trovare il link per scaricare Fritzing qui: https://fritzing.org/download/. Come accennato prima, ho usato un Raspberry Pi e ho collegato uno scanner RFID, due sensori a ultrasuoni, un sensore di temperatura, un LCD e una pompa peristaltica per l'acqua.
Ho allegato i due circuiti in un PDF, se vuoi dargli un'occhiata più da vicino.
Passaggio 2: configurazione del Raspberry Pi
Useremo il nostro Raspberry Pi per eseguire e controllare tutto: backend, frontend e database.
Un Raspberry Pi non viene eseguito automaticamente. Dovremo seguire alcuni passaggi per iniziare a usarlo.
Passaggio 1: Raspbian
Se stai usando un nuovissimo Raspberry Pi, avrai bisogno di raspbian. Il link per il download e il tutorial sono disponibili qui.
Passaggio 2: scrittura dell'immagine su SD
Ora che hai la tua immagine Raspbian, avrai bisogno di un software di scrittura di immagini (consiglio win32diskimager) per scrivere il file immagine sulla scheda SD. Il tutorial completo lo trovate qui.
Passaggio 3: accesso al Raspberry Pi
Apri "Powershell" e digita "ssh [email protected]". Se tutto va bene, ti chiederanno una password (la password predefinita è sempre lampone). Normalmente, questo dovrebbe accedere al Raspberry Pi. Ora dovremo apportare alcune modifiche alle nostre impostazioni. Digita sudo raspi-config nel terminale e premi invio. Vai alle opzioni di localizzazione > cambia fuso orario e impostalo sul tuo fuso orario. Dovresti anche cambiare il tuo paese Wi-Fi con la tua posizione. Infine, vai alle opzioni di interfaccia e abilita SPI, I2C e 1-wire. Questo sarà importante per utilizzare correttamente i sensori.
Passaggio 4: configurazione della connessione Internet
Useremo una rete WiFi. Puoi aggiungere la tua rete domestica tramite:
wpa_passphrase "YourNetwork" "YourSSID" >> /etc/wpa_supplicant/wpa_supplicant.conf
Dovrai riavviare il tuo Pi per stabilire una connessione. Per verificare se ha funzionato, puoi utilizzare ifconfig per verificare se esiste un indirizzo IP.
Passaggio 5: configurazione del server web e del database
Innanzitutto, è meglio aggiornare e aggiornare il sistema con la seguente sequenza di comandi:
- sudo apt dist-upgrade --auto-remove -y
- sudo apt upgrade
- sudo apt update
- sudo apt autoremove
Fatto ciò, avremo bisogno dei seguenti pacchetti per il nostro server web e database:
Apache
sudo apt install apache2 -y
PHP
sudo apt install php
sudo apt install phpMyAdmin -y
Non dimenticare di impostare una password MySQL sicura, quando viene richiesto di impostare una password.
Maria DB
sudo apt install mariadb-server mariadb-client -y
sudo apt install php-mysql -y
sudo systemctl riavvia apache2.service
Passaggio 6: installazione delle librerie Python
Per il backend, avremo bisogno di alcune librerie per Python. Li installeremo usando pip3, perché stiamo usando python3.
pip3 installa mysql-connector-python
pip3 install flask-socketio
pip3 install flask-cors
pip3 installa gevent
pip3 installa gevent-websocket
sudo apt install python3-mysql.connector -y
pip3 installa mfrc522 ! (ci servirà per utilizzare lo scanner RFID)
Passaggio 7: preparazione del codice di Visual Studio
Per eseguire il codice, ti consiglio di utilizzare Visual Studio Code per connettere il tuo Raspberry Pi a. Il link per il download per installare VSC può essere trovato qui.
Se non hai ancora installato Remote Development utilizzando SSH, puoi trovare i passaggi per farlo qui.
Passaggio 3: creazione del database
Memorizzeremo tutti i nostri dati del sensore e i dati dell'utente in un database.
Il mio database è composto da 5 tabelle:
Dispositivo
Table Device ha un DeviceID, che fa riferimento al dispositivo stesso. Il DeviceName fornisce il nome del dispositivo, in questo caso sensore a ultrasuoni, sensore di temperatura, … DeviceType fornisce il tipo di dispositivo (sensore o attuatore).
Storia
La cronologia della tabella contiene tutta la cronologia del sensore, insieme alla data (HistoryDate) la cronologia è stata aggiunta e il valore del momento nella cronologia. Ha anche due chiavi esterne:
- DeviceID, per collegare un registro specifico a un dispositivo
- UserID, per collegare un utente specifico a un registro (questo perché utilizziamo un RFID e vogliamo aggiungere il registro della cronologia a un utente specifico)
Utente
L'utente della tabella viene utilizzato per creare un sistema di accesso utente con lo scanner RFID. Consiste in un Nickname, FirstName, LastName, Password e RFID (questo è il numero RFID di un tag). Ogni utente è collegato a un contenitore (watertank) e trasporta anche il ContainerID come chiave esterna.
Contenitore
Il contenitore della tabella è costituito da tutti i diversi contenitori. Ha un ID, una ContainerLocation (può essere un'azienda, una casa o qualsiasi altra cosa). Infine, ha un MaxLevel che rappresenta il volume massimo del contenitore.
Impostazioni
Table Settings ha un SettingsID e tiene traccia del DailyGoal di ogni utente + la data in cui il DailyGoal è stato aggiunto dall'utente. Questo spiega l'ID utente della chiave esterna.
Un dump del database può essere trovato nel mio repository GitHub sotto Database.
Passaggio 4: configurazione del backend
Non esiste un progetto senza un backend funzionante.
Il backend è composto da 4 cose diverse:
aiutanti
Gli helper sono tutte le classi utilizzate per i diversi sensori e attuatori. C'è un aiuto per il sensore di temperatura (DS18B20), per i sensori a ultrasuoni (HCSR05) per poter misurare la distanza e per l'LCD per poter scrivere messaggi sullo schermo.
repository
Nella cartella dei repository, troverai 2 file Python:
- Database.py che è un aiuto per ottenere righe dal tuo database. Semplifica l'esecuzione e la lettura del database.
- DataRepository.py che contiene tutte le query SQL, che vengono utilizzate nel codice principale (app.py). Sono utilizzati per ottenere, aggiornare o eliminare dati dal database.
app.py
Questo è il codice di backend principale del progetto. Esegue la configurazione definendo tutti i pin e le modalità e contiene il codice per far funzionare la pompa, ottenere la temperatura, ottenere l'utente e così via. Contiene anche i percorsi utilizzati per recuperare i dati dal Database e tutti i socketio.on. Per ogni pagina HTML c'è un socketio.on diverso per assicurarsi che ogni funzione funzioni al momento giusto.
config.py
Abbiamo ancora un file: config.py. Questo è il file con le opzioni di configurazione per connettersi con il database. Non dimenticare di impostare le credenziali del database.
Il backend può essere trovato nel mio repository sotto Backend.
Passaggio 5: configurazione del frontend
Per il frontend, ho iniziato creando un design di come dovrebbe apparire il mio server web in AdobeXD. Ho utilizzato i colori nel mio logo, che sono l'arancione e 2 diverse tonalità di blu. Ho cercato di mantenere il design il più semplice possibile e ho creato una goccia d'acqua che mostra la percentuale fino a che punto hai raggiunto il tuo obiettivo della giornata.
Nel mio repository GitHub, troverai il mio Frontend in Codice > Frontend. È importante incollarlo nella cartella /var/html del tuo Raspberry Pi per renderlo accessibile dal server web.
Consiste in un paio di file HTML, che portano alle diverse pagine. Troverai anche il mio screen.css con tutto il CSS di cui avrai bisogno per farlo sembrare il mio progetto. Infine, avrai diversi file JavaScript sotto gli script. Questi script comunicano con il mio backend per mostrare i dati dal mio database o dal mio backend.
Il backend può essere trovato nel mio repository sotto Frontend.
Passaggio 6: creazione dell'involucro
Se parliamo del mio caso, ci sono due parti principali:
Involucro esterno
Ho costruito il caso da zero. Ho usato assi di compensato e le ho segate nelle dimensioni corrette. Ho avvitato insieme tutte le assi e praticato i fori per l'LCD, il pulsante, il sensore a ultrasuoni per rilevare se è presente una bottiglia d'acqua e l'imbuto per distribuire l'acqua. Ho diviso la mia custodia in diverse sezioni per tenere separati l'acqua e l'elettronica e ho usato una canalina per proteggere i cavi dalle perdite d'acqua. Nel video allegato, puoi vedere la maggior parte degli aspetti del mio involucro e come l'ho realizzato. Ho anche stampato in 3D un bottone, che è incollato a un bottone normale. Infine, ho usato un vassoio antigoccia per raccogliere tutta l'acqua versata. Ho anche usato le cerniere per poter aprire e chiudere un pannello laterale per guardare la mia elettronica. Puoi sempre usare un dispenser di seconda mano oppure puoi usare anche altri materiali.
Per le misure esatte del mio costruito, ho allegato un PDF con tutte le misure delle lastre utilizzate nella valigetta.
Serbatoio d'acqua
Il serbatoio dell'acqua non era un lavoro facile. Ho un serbatoio dell'acqua con un foro sul fondo, quindi ho dovuto fissarlo con del nastro adesivo per fermare la perdita. Avrai bisogno di quattro fori: uno per il sensore di temperatura, uno per il tubo della pompa. uno per il tubo di riempimento del serbatoio e uno per il sensore ad ultrasuoni. Per quest'ultimo, ho stampato in 3D una custodia, che può essere trovata qui. Ciò conferisce al sensore una maggiore protezione contro l'acqua. Ho quindi forato un rettangolo nella parte superiore del serbatoio, su cui appoggiare il sensore.
Consigliato:
Distributore automatico con bilancia per confermare Itemdrop (Raspberry Pi): 5 passaggi
Distributore automatico con scala per confermare Itemdrop (Raspberry Pi): benvenuto amico creatore, per un progetto scolastico ho deciso di realizzare un distributore automatico di snack. Il nostro compito era creare un dispositivo ricreabile che utilizzasse almeno 3 sensori e 1 attuatore. Sono andato a fare un distributore automatico anche perché avevo accesso ad alcuni
Distributore automatico per senzatetto: 3 passaggi
Distributore automatico per senzatetto: sto cercando di prevenire la fame nella nostra comunità. Ci sono circa 3.000+ persone in Oklahoma che soffrono di senzatetto. Abbiamo scelto di cospirare una soluzione per questo problema per migliorare e far crescere la nostra comunità nel suo insieme. Un gran numero di persone in
Monitorare il livello dell'acqua del serbatoio o la distanza sul desktop: 3 passaggi
Monitora il livello dell'acqua del serbatoio o la distanza sul desktop: utilizzando Wemos D1, un sensore a ultrasuoni e la piattaforma Thingio.AI IoT
Come misurare correttamente il consumo energetico dei moduli di comunicazione wireless nell'era del basso consumo energetico?: 6 passaggi
Come misurare correttamente il consumo energetico dei moduli di comunicazione wireless nell'era del basso consumo energetico?: Il basso consumo energetico è un concetto estremamente importante nell'Internet delle cose. La maggior parte dei nodi IoT deve essere alimentata da batterie. Solo misurando correttamente il consumo energetico del modulo wireless possiamo stimare con precisione quanta batteria ho
Distributore d'acqua da 5 galloni controllato a pedale: 3 passaggi
Distributore d'acqua da 5 galloni controllato a pedale: in alcuni paesi come dove vivo (Turchia), abbiamo problemi con le pompe manuali per erogare l'acqua da un contenitore. Alcune pompe manuali sono ingombranti e i bambini piccoli hanno problemi a fornire la potenza necessaria. Così ho pensato di usare un piede