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
2025 Autora: John Day | [email protected]. Última modificació: 2025-01-10 13:46
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.