Taula de continguts:
- Pas 1: Pas 1: Què necessitaré?
- Pas 2: Pas 2: Creació d'un esquema de base de dades
- Pas 3: Pas 3: Codificació
- Pas 4: Pas 4: Posar Al Code a My Raspberry Pi
- Pas 5: Pas 5: fer un habitatge
- Pas 6: Pas 6: Posar-ho tot a l'habitatge
Vídeo: Keysorter: 6 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:15
Actualment estic estudiant NMCT a Howest. Durant el darrer semestre vam haver de fer un projecte. Així que vaig fer un Keysorter.
Què fa?
A casa tenim moltes claus del cotxe i totes s’assemblen. Així que vaig crear un Keysorter per resoldre aquest problema.
Ha d’escanejar una clau mitjançant RFID i donar-li un lloc a la caixa. Si torno a escanejar la mateixa tecla, mostrarà el lloc assignat anteriorment. També hi ha un botó per mostrar l'últim cotxe rentat.
Tot això s'executarà en un Raspberry Pi que també té l'opció d'afegir una pàgina web mitjançant Flask.
A la pàgina hauria de poder mirar totes les claus, afegir un nom a una clau i eliminar-ne una.
Pas 1: Pas 1: Què necessitaré?
Vaig començar fent una llista de components que necessitaré perquè aquesta cosa funcioni.
Components:
- Raspberry pi
- 2 x registre de majúscules (74hc595)
- Botó 3 x
- 9 x led verd
- Escàner RFID (MFRC522)
- 12 x resistència de 220 ohm
Després vaig posar tot això en el meu esquema desconcertant.
Un cop fet això, ho vaig aconseguir a la vida real.
Pas 2: Pas 2: Creació d'un esquema de base de dades
Per desar totes les meves dades vaig haver de crear una base de dades que pogués executar-se al meu Pi.
Ho vaig fer a Mysql.
Cotxe de taula:
- DNI del cotxe
- ID d'usuari
- Marca (marca de cotxe)
- Tipus
- Darrer rentat
- Clau
- RFID_ID
Pas 3: Pas 3: Codificació
Quan tot això estigués a punt, vaig poder començar a codificar.
Vaig començar creant el codi del meu sensor a Python 3.5.
Per descarregar el codi feu clic aquí.
Utilitzeu l'enllaç per clonar el projecte.
Pas 4: Pas 4: Posar Al Code a My Raspberry Pi
Instal·lació de paquets
Primer vaig instal·lar tots els paquets que necessitava per fer que això funcionés.
me @ my-rpi: ~ $ sudo apt update
me @ my-rpi: ~ $ sudo apt install -y python3-venv python3-pip python3-mysqldb mysql-server uwsgi nginx uwsgi-plugin-python3
Entorn virtual
me @ my-rpi: ~ $ python3 -m pip install --upgrade pip setuptools wheel virtualenvme @ my-rpi: ~ $ mkdir project1 && cd project1 me @ my-rpi: ~ / project1 $ python3 -m venv --system- site-packages env me @ my-rpi: ~ / project1 $ source env / bin / activate (env) me @ my-rpi: ~ / project1 $ python -m pip install mysql-connector-python argon2-cffi Flask Flask-HTTPAuth Flask-MySQL mysql-connector-python passlib
Pengeu el projecte al vostre Pi mitjançant pycharm
Obriu Pycharm i aneu a VCS> Importa des de Control de versions> Github i cloneu el meu fitxer github.
Poseu la configuració de desplegament al directori que acabeu de fer. (/ home / jo / projecte1). Premeu aplicar!
Aneu a la configuració de l'intèrpret i trieu l'entorn virtual que acabeu de crear. (/ home / me / project1 / env / bin / pyhon)
Comproveu si el mapatge de camins és correcte.
Ara podeu penjar el codi al vostre directori mitjançant Pycharm.
Base de dades
Comproveu si la base de dades s’executa. Haureu d’obtenir alguna cosa així:
me @ my-rpi: ~ $ sudo systemctl status mysql ● mariadb.service - Servidor de base de dades MariaDB Carregat: carregat (/lib/systemd/system/mariadb.service; activat; predefinit proveïdor: activat) Actiu: actiu (en execució) des de Sun 2018-06-03 09:41:18 CEST; Fa 1 dia 4 hores PID principal: 781 (mysqld) Estat: "Prenent les vostres sol·licituds SQL ara …" Tasques: 28 (límit: 4915) CGroup: /system.slice/mariadb.service └─781 / usr / sbin / mysqld
03 de juny 09:41:13 my-rpi systemd [1]: Inici del servidor de bases de dades MariaDB … 03 de juny 09:41:15 my-rpi mysqld [781]: 2018-06-03 9:41:15 4144859136 [Nota] / usr / sbin / mysqld (mysqld 10.1.26-MariaDB-0 + deb9u1) 03 de juny 09:41:18 my-rpi systemd [1]: va iniciar el servidor de base de dades MariaDB.
me @ my-rpi: ~ $ ss -lt | grep mysql ESCOLTA 0 80 127.0.0.1:mysql *: *
Creeu usuaris i afegiu la base de dades
me @ my-rpi: ~ $ sudo mariadb
un cop a la base de dades, feu això.
CREA USUARI 'project1-admin' @ 'localhost' IDENTIFICAT PER 'adminpassword'; CREA USUARI 'project1-web' @ 'localhost' IDENTIFICAT PER 'webpassword'; CREA USUARI 'project1-sensor' @ 'localhost' IDENTIFICAT PER 'sensorpassword';
CREATE DATABASE project1;
CONCEDIU TOTS ELS PRIVILEGIS A project1. * A 'project1-admin' @ 'localhost' AMB OPCIÓ DE SUBVENCIÓ; CONCESSIÓ DE SUBVENCIÓ, INSERT, ACTUALITZACIÓ, SUPRIMIT A PROJECTE1. * A 'project1-web' @ 'localhost'; CONCESSIÓ DE SELECCIÓ, INSERT, ACTUALITZACIÓ, SUPRIMIT A PROJECTE1. * A 'project1-sensor' @ 'localhost'; PRIVILEGIS DE FLUSH;
CREA TABLE `user` (` idUser` int (11) NOT NULL, `Password` varchar (45) DEFAULT NULL, CLAU PRIMÀRIA (` idUser`)) MOTOR = InnoDB DEFAULT CHARSET = utf8
CREA TABLE `car` (` idCar` int (11) NOT NULL AUTO_INCREMENT, `idUser` int (11) NOT NULL,` Brand` varchar (45) DEFAULT NULL, `Type` varchar (45) DEFAULT NULL,` LastWashed` datetime DEFAULT NULL, `RFID_Number` varchar (15) DEFAULT NULL,` Key` varchar (5) DEFAULT NULL, CLAU PRIMÀRIA (`idCar`,` idUser`), KEY `fk_Car_User1_idx` (` idUser`), CONSTRAINT `fk_Car_User CLAU EXTERIOR ("idUser") REFERÈNCIES "usuari" ("idUser") EN ELIMINAR SENSE ACCIÓ EN ACTUALITZAR SENSE ACCIÓ) MOTOR = InnoDB AUTO_INCREMENT = 4 DEFAULT CHARSET = utf8
Connecteu la vostra base de dades a Pycharm
Feu clic a la pestanya base de dades de la part dreta. Si no teniu la pestanya oberta, feu això: Veure> Eina Windows> Base de dades.
Feu clic a Afegeix connexió. Trieu Font de dades> MySQL (si hi ha un controlador de baixada de botons, premeu-lo).
Aneu a SSH / SSL i marqueu SSH. Empleneu les vostres credencials de Raspberry pi (amfitrió / usuari / contrasenya). El port hauria de ser 22 i no oblideu comprovar recordeu la contrasenya.
Torna a General. L'amfitrió ha de ser localhost i la base de dades ha de ser project1. Empleneu les credencials de project1-admin i proveu la connexió.
Si la connexió està bé, aneu a la pestanya Esquemes i assegureu-vos que project1 està marcat.
Comproveu si la base de dades és correcta
me @ my-rpi: ~ $ echo 'mostra taules;' | mysql project1 -t -u project1-admin -p Introduïu la contrasenya: + --------------------------- + | Taules_en_projecte1 | + --------------------------- + | sensor | | usuaris | + --------------------------- +
Fitxers de configuració
Al directori conf hi trobareu 4 fitxers. Heu de canviar els noms d'usuari pel vostre nom d'usuari.
Systemd
Per començar tot, heu d'executar aquestes ordres.
me @ my-rpi: ~ / project1 $ sudo cp conf / project1 - *. service / etc / systemd / system /
me @ my-rpi: ~ / project1 $ sudo systemctl daemon-recoad me @ my-rpi: ~ / project1 $ sudo systemctl start project1- * me @ my-rpi: ~ / project1 $ sudo systemctl status project1- * ● project1- flask.service - instància uWSGI per servir la interfície web de project1 Carregada: carregada (/etc/systemd/system/project1-flask.service; desactivada; predefinida del proveïdor: habilitada) Activa: activa (en execució) des del dilluns 2018-06-06 13: 14:56 CEST; Fa 1 s PID principal: 6618 (uwsgi) Tasques: 6 (límit: 4915) CGroup: /system.slice/project1-flask.service ├─6618 / usr / bin / uwsgi --ini / home / me / project1 / conf / uwsgi-flask.ini ├─6620 / usr / bin / uwsgi --ini /home/me/project1/conf/uwsgi-flask.ini ├─6621 / usr / bin / uwsgi --ini / home / me / project1 / conf / uwsgi-flask.ini ├─6622 / usr / bin / uwsgi --ini /home/me/project1/conf/uwsgi-flask.ini ├─6623 / usr / bin / uwsgi --ini / home / me / project1 / conf / uwsgi-flask.ini └─6624 / usr / bin / uwsgi --ini /home/me/project1/conf/uwsgi-flask.ini
04 de juny 13:14:56 my-rpi uwsgi [6618]: mapat de 383928 bytes (374 KB) per a 5 nuclis Jun 04 13:14:56 my-rpi uwsgi [6618]: *** MODE operatiu: preforking ***
● project1-sensor.service - Servei del sensor Projecte 1 Carregat: carregat (/etc/systemd/system/project1-sensor.service; desactivat; predefinit del proveïdor: activat) Actiu: actiu (en execució) des del dilluns 2013-06-06 13: 16:49 CEST; Fa 5 anys PID principal: 6826 (python) Tasques: 1 (límit: 4915) CGroup: /system.slice/project1-sensor.service └─6826 / home / me / project1 / env / bin / python / home / me / project1 /sensor/sensor.py
04 de juny 13:16:49 my-rpi systemd [1]: es va iniciar el servei de sensors del Projecte 1. 04 de juny 13:16:49 my-rpi python [6826]: DEBUG: _ main _: sensor desat process_count = b'217 / n 'a la base de dades Jun 04 13:16:55 my-rpi python [6826]: DEBUG: _ main_: El sensor s'ha desat process_count = b'218 / n 'a la base de dades
nginx
me @ my-rpi: ~ / project1 $ ls -l / etc / nginx / sites- *
/ etc / nginx / sites-available: total 4 -rw-r - r-- 1 arrel arrel 2416 Jul 12 2017 per defecte
/ etc / nginx / sites-enabled: total 0 lrwxrwxrwx 1 root root 34 18 gen 13:25 default -> / etc / nginx / sites-available / default
Per fer que tot sigui per defecte, executeu aquestes ordres.
me @ my-rpi: ~ / project1 $ sudo cp conf / nginx / etc / nginx / sites-available / project1me @ my-rpi: ~ / project1 $ sudo rm / etc / nginx / sites-enabled / default me @ my- rpi: ~ / project1 $ sudo ln -s / etc / nginx / sites-available / project1 / etc / nginx / sites-enabled / project1 me @ my-rpi: ~ / project1 $ sudo systemctl reinicia nginx.service
Inici automàtic
Assegurem-nos que tot s’iniciï automàticament.
Aneu al directori conf i executeu aquestes ordres finals i ja heu acabat.
me @ my-rpi: ~ / project1 $ sudo systemctl enable project1- *
Si reinicieu el Pi, hauria de començar automàticament.
Pas 5: Pas 5: fer un habitatge
Reciclatge
Per fer la meva vivenda vaig utilitzar un armari vell que llençaria la meva mare.
base
Vaig serrar 4 taulons (34 cm x 26 cm). (per tant, és un cub de 34 x 34 x 26).
A la part inferior hi vaig afegir un tros prim de fusta com a fons.
Tauler amb led's
Al mig he posat 2 petits trossos de fusta a cada costat, tots dos a 9 cm de la part superior. Això manté el tauler on estarà el led.
El tauler amb el led és un tauler petit (32 cm x 32 cm).
He forat 9 forats perquè en sortissin els leds.
divisió
Vaig fer la divisió amb el mateix material que la part inferior i el tauler amb led.
4 peces cadascuna amb una incisió a 10,3 cm (9 cm x 31 cm). Ara puc ajuntar-los.
Lectors de botons i RFID
Vaig fer un forat a la base per posar-hi el lector i els botons RFID. Per a la RFID, vaig posar un tros prim de tauler al davant perquè fos més net.
Pas 6: Pas 6: Posar-ho tot a l'habitatge
Això depèn de com vulgueu fer-ho. Personalment he utilitzat molts cables sense soldar perquè vull poder reutilitzar el meu Raspberry Pi.
Vaig enganxar els leds al seu lloc i vaig enganxar el lector RFID i les taules de suport a la caixa.
I així és com fas un Keysorter.
Recomanat:
Disseny de jocs en Flick en 5 passos: 5 passos
Disseny de jocs en Flick en 5 passos: Flick és una manera molt senzilla de fer un joc, sobretot com un trencaclosques, una novel·la visual o un joc d’aventures
Detecció de cares a Raspberry Pi 4B en 3 passos: 3 passos
Detecció de cares a Raspberry Pi 4B en 3 passos: en aquest manual, farem la detecció de cares a Raspberry Pi 4 amb Shunya O / S mitjançant la biblioteca Shunyaface. Shunyaface és una biblioteca de reconeixement / detecció de cares. El projecte té com a objectiu aconseguir una velocitat de detecció i reconeixement més ràpida amb
Com fer un comptador de passos ?: 3 passos (amb imatges)
Com fer un comptador de passos ?: Jo solia tenir un bon rendiment en molts esports: caminar, córrer, anar en bicicleta, jugar a bàdminton, etc. M’encanta viatjar poc després. Bé, mireu el meu ventre corpulent … Bé, de totes maneres, decideixo tornar a començar a fer exercici. Quin equip he de preparar?
Mirall de vanitat de bricolatge en passos senzills (amb llums de tira LED): 4 passos
Mirall de vanitat de bricolatge en passos senzills (amb llums de tires LED): en aquest post vaig crear un mirall de vanitat de bricolatge amb l'ajut de les tires LED. És molt genial i també heu de provar-les
Arduino Halloween Edition: pantalla emergent de zombis (passos amb imatges): 6 passos
Arduino Halloween Edition: pantalla emergent de zombis (passos amb imatges): voleu espantar els vostres amics i fer soroll a Halloween? O simplement voleu fer una bona broma? Aquesta pantalla emergent de Zombies ho pot fer! En aquest instructiu us ensenyaré a fer zombis fàcilment amb Arduino. L'HC-SR0