Taula de continguts:

Keysorter: 6 passos
Keysorter: 6 passos

Vídeo: Keysorter: 6 passos

Vídeo: Keysorter: 6 passos
Vídeo: Creed - One Last Breath 2024, De novembre
Anonim
Keysorter
Keysorter
Keysorter
Keysorter

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é?

Pas 1: què necessitaré?
Pas 1: què necessitaré?
Pas 1: què necessitaré?
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

Pas 2: fer un esquema de base de dades
Pas 2: fer 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ó

Pas 3: Codificació
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

Pas 5: fer un habitatge
Pas 5: fer un habitatge
Pas 5: fer un habitatge
Pas 5: fer un habitatge
Pas 5: fer un habitatge
Pas 5: fer un habitatge
Pas 5: fer un habitatge
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: