Sommario:

Distributore d'acqua automatico per monitorare il consumo: 6 passaggi
Distributore d'acqua automatico per monitorare il consumo: 6 passaggi

Video: Distributore d'acqua automatico per monitorare il consumo: 6 passaggi

Video: Distributore d'acqua automatico per monitorare il consumo: 6 passaggi
Video: AcquaShop distributore automatico di pacchi d'acqua minerale 2024, Dicembre
Anonim
Distributore d'acqua automatico per monitorare il consumo
Distributore d'acqua automatico per monitorare il consumo
Distributore d'acqua automatico per monitorare il consumo
Distributore d'acqua automatico per monitorare il consumo

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

Collegamento di tutta l'elettronica
Collegamento di tutta l'elettronica
Collegamento di tutta l'elettronica
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:

  1. sudo apt dist-upgrade --auto-remove -y
  2. sudo apt upgrade
  3. sudo apt update
  4. 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

Creazione del database
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

Configurazione del frontend
Configurazione del frontend
Configurazione del frontend
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

Creare l'involucro
Creare l'involucro
Creare l'involucro
Creare l'involucro
Creare l'involucro
Creare l'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: