Taula de continguts:

Font d'aigua sense contacte: 9 passos (amb imatges)
Font d'aigua sense contacte: 9 passos (amb imatges)

Vídeo: Font d'aigua sense contacte: 9 passos (amb imatges)

Vídeo: Font d'aigua sense contacte: 9 passos (amb imatges)
Vídeo: Раскрываю секрет сочного мяса! Рецепт приготовления баранины с содой в помпейской печи 2024, De novembre
Anonim
Font d'aigua sense contacte
Font d'aigua sense contacte

Al final del meu primer any com a estudiant de MCT, em van encarregar de fer un projecte que contenia totes les habilitats que havia agafat dels cursos durant tot l'any.

Buscava un projecte que comprovés tots els requisits establerts pels meus professors i, al mateix temps, fos divertit de fer. Quan buscava un tema, no podia deixar de sentir-me inspirat per Covid-19 (va ser just abans que es produís un brot a tot el món.) Vaig escollir una font / dispensador d’aigua sense contacte, ja que oferiria una forma de beure aigua sense tocar alguns botons abans que surti aigua.

Aquest projecte utilitza un sensor de distància per detectar si s’ha posat una tassa o un got sota la sortida d’aigua, la font procedirà a la sortida d’aigua durant 60 segons (100 ml / minut). Això és per fer-lo més coherent, ja que detectar si el vidre s’ha estirat ha demostrat ser massa difícil / lent d’una tasca, motiu pel qual s’ha posat en marxa un temporitzador. Després d’omplir el got amb 100 ml d’aigua, podeu esperar 5 segons i, si el got encara està davant del sensor de distància, s’omplirà un altre cop (això significa que també hi ha un temps d’espera de 5 segons entre omplir dos diferents articles).

Subministraments

Components

- 1x RaspberryPi (he utilitzat la quarta versió, però també poden funcionar versions anteriors) - 1x transistor S8050 o 1x transistor PN2222 també poden funcionar - 1x fotoresistor - 1x HC-SR04 (sensor de distància ultrasònic) - 1x RFID-RC522- 3x diferents LEDs de colors (blau, groc, vermell) - 1x LCD1602- 1x buzzer actiu- 1x PCF8574- 1x MCP3008- 1x bomba d'aigua (s'ha utilitzat una bomba peristàltica de 12v, enllaç a aquest element)

- 1 alimentació de corrent continu (12v, 600mAh) - 1x maó d’alimentació amb 3 taules - 3x taules de pa (probablement en podríeu fer servir menys) - Cobbler T per a pins RaspberryPi GPIO - Cable cobbler T (per connectar entre pi i cobbler)

Materials i eines utilitzades

- Un trepant amb les broques següents:

- 4 mm (per foradar prèviament els cargols) - 15 mm (per forar el sensor de distància)

- Qualsevol tornavís- 30 cargols de 45 mm de llarg- 6 cargols de 20 mm- 2 frontisses per a la porta- Una placa de MDF d’uns 130 cm per 80 cm- Un parell de fitxers

Pas 1: Muntatge del circuit

Muntatge del circuit
Muntatge del circuit
Muntatge del circuit
Muntatge del circuit
Muntatge del circuit
Muntatge del circuit

Per al circuit disposem de 2 sensors, un sensor de distància i un fotoresistor. El sensor de distància s’utilitza per detectar si s’ha posat una tassa a l’abast de la font d’aigua i, opcionalment, he afegit un fotoresistor, aquest s’utilitza per detectar si la carcassa ha estat oberta per algú que no se suposa que l’ha d’obrir. A més, tenim un lector RFID que es pot utilitzar per autenticar un mecànic que necessita obrir la caixa per omplir el dipòsit d’aigua o per qualsevol altre problema mecànic.

Per als elements actius tenim el LCD1602, el brunzidor actiu i una bomba peristàltica, el LCD s’utilitza per mostrar l’estat com si la carcassa estigui oberta o la bomba estigui en funcionament, així com es mostrarà l’adreça IP del dispositiu, solia fer un so alarmant quan s’ha obert el cas sense que algú ho autoritzi.

A continuació he afegit la taula de visualització i les vistes esquemàtiques del circuit.

Pas 2: Configuració del nostre RaspberryPi

Per configurar el nostre RaspberryPi, descarregarem el programari d’imatges del lloc Raspberry, amb el qual podeu descarregar la versió de Raspbian que desitgeu i obtenir la vostra targeta SDC. Un cop feta aquesta eina, podeu obrir la targeta SDCARD a l'Explorador de Windows i podreu veure la partició d'arrencada del vostre RaspberryPi. Aquí trobarem un fitxer anomenat cmdline.txt (no obriu aquest fitxer al bloc de notes, obriu-lo al Notepad ++ o qualsevol altre IDE). Afegirem ip = 169.254.10.1 al final d’aquest fitxer per assegurar-nos que ens podem connectar al nostre dispositiu per Ethernet (assegureu-vos que no afegiu cap ENTERS al final del fitxer o tindreu problemes).

Ara podeu posar la targeta SDC al RaspberryPi i arrencar-la, connectar el Pi a l'ordinador i utilitzar Putty per connectar-vos al Pi mitjançant SSH. Utilitzo l'ordre següent per connectar-me al meu Pi en lloc d'utilitzar Putty. "ssh [email protected]" pot trigar, així que tingueu paciència i espereu a que s'iniciï el Pi. Un cop se us demani una contrasenya, emplenarem la contrasenya per defecte de "raspberry". Assegureu-vos de canviar aquesta contrasenya després d’haver iniciat la sessió per evitar que qualsevol persona amb mala intenció pugui accedir al vostre Raspberry Pi.

Ara configurarem el nostre Pi per proporcionar la funcionalitat necessària per al nostre codi. Utilitzeu "sudo raspi-config" per obrir el menú de configuració i aquí anirem a Opcions d'interfície.

A continuació, activarem les següents opcions: - SPI- I2C

Seguiu aquesta guia per configurar una connexió a Internet sense fils al vostre Pi; després d’haver-ho fet amb èxit, podrem instal·lar els paquets necessaris.

Paquets: (executeu les ordres en l'ordre tal com s'indica aquí)

El següent per obtenir les darreres actualitzacions de la nostra actualització de Pi-sudo apt && apt upgrade -y

Instal·leu el nostre servidor MySQL i el servidor web: sudo apt install mariadb-server apache2

Utilitzaré MySQL Workbench per configurar la base de dades més endavant en aquesta guia. Si no utilitzeu això i preferiu phpmyadmin, podeu instal·lar-lo amb l'ordre següent; podeu utilitzar qualsevol altre client MySQL sempre que podem importar correctament la base de dades. - sudo apt install phpmyadmin

Un cop fet tot això, hem de crear un usuari per a la nostra base de dades. Utilitzeu "sudo mysql -u root" per iniciar sessió al vostre servidor MySQL, aquí crearem un usuari anomenat db_admin amb la seva contrasenya respectiva. aquesta contrasenya es va assenyalar en algun lloc per a més endavant a les instruccions. CONCEDIU TOTS ELS PRIVILEGIS ACTIVATS *. * A "db_admin" @ "%" IDENTIFICAT PER "yourPasswordHere" AMB OPCIÓ DE SUBVENCIÓ;

Utilitzeu l'ordre "\ q" per sortir del terminal MySQL.

Paquets Python: encara hem d’instal·lar alguns paquets Python abans de continuar, executeu l’ordre següent per assegurar-vos que hi hagi tot per a una experiència impecable.

sudo pip3 instal·lar Flask Flask-Cors Flask-SocketIO gevent gevent-websocket greenlet spi SPI-Pyspidev

A més dels paquets següents de MySQL connect python, apt apt install python3-mysql.connector -y

Si tot va bé, ara podeu visitar el vostre Pi al navegador amb la següent adreça

Pas 3: Configuració del backend

Configuració del backend
Configuració del backend

Aquí us explicaré com podeu configurar el dorsal, descarregueu primer el fitxer rar des de baix, descomprimiu-lo a algun directori temporal. Connecteu-vos al vostre RaspberryPi amb FileZilla o WinSCP amb les credencials següents:

IP: 169.254.10.1 Usuari: piPassword: raspberry (si heu canviat la contrasenya, feu-la també aquí)

A continuació, podeu procedir a transferir els fitxers que no heu estrenat a qualsevol directori que vulgueu al directori inicial de l'usuari pi. Per motius de simplicitat, assumirem en aquesta configuració que hem carregat tots els nostres fitxers al directori de documents.

Mantingueu obert el programa FTP per al següent pas.

Ara torneu a obrir l’indicatiu d’ordres amb la vostra connexió SSH perquè haurem de fer alguns canvis al servidor web perquè el frontend pugui comunicar-se amb el backend. Obrirem el fitxer de configuració Apache2 per defecte i el modificarem lleugerament: sudo nano /etc/apache2/sites-available/000-default.conf

Afegiu les línies següents a DocumentRoot al fitxer de configuració que acabem d’obrir: ProxyPass / api / https://127.0.0.1:5000/api/ProxyPassReverse / api /

Podeu fer un cop d'ull a la imatge adjunta com a exemple.

Pas 4: Configuració del frontend

Abans de transferir els nostres fitxers, haurem de fer alguna cosa abans de començar a transferir els nostres fitxers frontend. Obriu el símbol del sistema amb la connexió SSH que heu fet anteriorment i utilitzeu l'ordre següent per canviar a l'usuari root del nostre RaspberryPi: "sudo su -"

Després d'això, podem canviar la contrasenya del nostre usuari root amb l'ordre següent: "passwd" Això us demanarà que introduïu una nova contrasenya; després d'haver-ho fet, podeu tornar al vostre programa FTP i iniciar la sessió amb les vostres credencials root:

IP: 169.254.10.1 Usuari: root Contrasenya:

Descarregueu el fitxer rar des de baix i desregueu-lo en una carpeta temporal. Podeu moure aquests fitxers al vostre RaspberryPi al directori següent / var / www / html /, un cop hàgiu fet això, podeu visitar el frontend a http: / /169.254.10.1, encara no podeu interactuar perquè el dorsal encara no s’executa, més endavant us mostraré en aquesta guia com fer-ho.

Pas 5: importació de la base de dades per al nostre projecte

Importació de la base de dades per al nostre projecte
Importació de la base de dades per al nostre projecte
Importació de la base de dades per al nostre projecte
Importació de la base de dades per al nostre projecte

Obriu el programa de gestió de servidors MySQL preferit i connecteu-vos al vostre Raspberry Pi amb les credencials que vam crear al pas 2.

Descarregueu el buidatge de la base de dades des de baix i importeu-lo com ho faríeu normalment, MySQL workbench aniríeu a Fitxer> Obre l'script SQL i seleccioneu el buidatge de la base de dades que heu baixat. A continuació, premeu CTRL + MAJÚS + ENTRAR i s'hauria d'executar el script SQL i l'estructura per a la base de dades s'ha de crear.

He afegit les credencials que he fet servir per al meu RaspberryPi com a exemple a continuació, així com diverses imatges de l'estructura de la base de dades. Podeu fer-hi un cop d'ull i provar-vos una idea general de com funciona tot.

Pas 6: iniciar el nostre projecte

Inici del nostre projecte
Inici del nostre projecte
Inici del nostre projecte
Inici del nostre projecte

Abans de poder iniciar el nostre projecte, hem de canviar les credencials de la base de dades al fitxer config.py, si seguiu les instruccions exactament com deia aquesta guia, les podreu trobar a /home/pi/Documents/Backend/src/config.py aquí heu de canviar les credencials de la variable db_config perquè coincideixin amb les que hem creat anteriorment per a la nostra base de dades. He afegit un exemple del que veureu en aquest fitxer a continuació.

Després, afegirem un fitxer.service, aquest fitxer ens assegurarà que el nostre projecte s'iniciï quan s'iniciï RaspberryPi, assegureu-vos de canviar el directori adequadament d'on heu instal·lat els fitxers de fons. Utilitzeu l'ordre següent per crear el fitxer de servei: sudo nano /etc/systemd/system/dispenser.service Això crearà un fitxer de servei i copiarà enganxar el codi següent en aquest fitxer.

[Unitat] Descripció = Water DispenserAfter = mysql.service

[Servei] Type = simpleRestart = alwaysRestartSec = 1User = piExecStart = / usr / bin / python3 /home/pi/Documents/Backend/index.py

[Instal·lar] WantedBy = multi-user.target

Modifiqueu la línia on diu /home/pi/Documents/Backend/index.py a on heu instal·lat els fitxers del backend, si no ho feu correctament, el projecte no s'iniciarà correctament. Afegiré un fitxer d'exemple a continuació.

Després d’haver-ho fet i sortir de l’editor de text, podem habilitar el servei amb les ordres següents: - sudo systemctl daemon-reload- sudo systemctl enable dispenser- sudo systemctl start dispenser

I, com a addicional, podem executar: sudo systemctl status dispenser. Això mostrarà informació sobre el nostre servei, si està actiu o no, …

Pas 7: el cas

El cas
El cas
El cas
El cas
El cas
El cas
El cas
El cas

Enhorabona, gairebé hi som, afegiré algunes imatges que mostraran amb precisió les dimensions que he utilitzat per al meu projecte, he utilitzat plaques MDF de 18 mm de gruix, opcionalment es pot utilitzar un gruix diferent. La meva carcassa es pot utilitzar com a pauta per dissenyar la vostra o podeu recrear el que he fet. (Si utilitzeu un gruix diferent de MDF, els meus dibuixos ja no us permetran fer el meu disseny, assegureu-vos d’adaptar-lo!) Els panells que he fet: - 2 panells de 32cm per 42cm (panells laterals) - 1 panell de 24cm per 32cm (placa inferior) - 2 panells de 16cm per 24cm (placa frontal on es manté la pantalla LCD i placa veïna) - 1 panell de 28cm per 24cm (placa central vista des de la part frontal) - 1 panell de 30cm per 24cm (placa superior)

Pas 8: admireu el producte final

Admireu el producte final
Admireu el producte final
Admireu el producte final
Admireu el producte final

Ja heu arribat al final i, amb sort, heu aconseguit que tot sigui una realitat. Si només sou un transeünt que llegiu, també us donem la benvinguda, us agraeixo la vostra lectura fins l’últim pas.

He gastat molta sang, suor i llàgrimes en aquest projecte, així que agrairia que deixéssiu algun comentari, és benvinguda qualsevol crítica sobre la seva millora.

Pas 9: els problemes

Posaria el projecte en el seu estat actual com un prototip de treball que pot veure moltes més millores.

La base de codi del dorsal s’estructura de manera que es pot fer perfectament una relació d’esclau mestre on una font actuaria com a interfície principal i totes les altres fonts impulsarien dades i canvis sobre l’API REST del mestre. També hi ha restes d’un sistema de token API al codi, ja que es pretenia que s’implementés però es retallés més endavant a causa de restriccions de temps.

He penjat el meu codi al meu servidor Gitlab i allà podeu fer una ullada al codi en general:

Recomanat: