Tabla de contenido:

Clasificador de claves: 6 pasos
Clasificador de claves: 6 pasos

Video: Clasificador de claves: 6 pasos

Video: Clasificador de claves: 6 pasos
Video: CODIGOS UNSPSC / Clasificador de Bienes y Servicios / Webinar 2024, Mes de julio
Anonim
Clasificador de claves
Clasificador de claves
Clasificador de claves
Clasificador de claves

Actualmente estoy estudiando NMCT en Howest. Para nuestro último semestre tuvimos que hacer un proyecto. Así que hice un Keysorter.

¿Qué hace?

Tenemos muchas llaves del auto en casa y todas se parecen. Así que hice un Keysorter para resolver este problema.

Tiene que escanear una clave a través de RFID y darle un lugar en la caja. Si escaneo la misma clave nuevamente, mostrará su lugar asignado previamente. También hay un botón para mostrar el último auto lavado.

Todo esto se ejecutará en una Raspberry Pi que también tiene la opción de agregar una página web a través de Flask.

En la página debería poder ver todas las claves, agregar un nombre a una clave y eliminar una clave.

Paso 1: Paso 1: ¿Qué necesitaré?

Paso 1: ¿Qué necesito?
Paso 1: ¿Qué necesito?
Paso 1: ¿Qué necesito?
Paso 1: ¿Qué necesito?

Comencé haciendo una lista de componentes que necesitaré para que esto funcione.

Componentes:

  • Frambuesa pi
  • 2 x registro de cambio (74hc595)
  • 3 x botón
  • 9 x led verde
  • Escáner RFID (MFRC522)
  • 12 x resistencia 220 ohmios

Luego puse todo esto en mi fritzing esquemático.

Una vez hecho esto, lo hice en la vida real.

Paso 2: Paso 2: creación de un esquema de base de datos

Paso 2: hacer un esquema de base de datos
Paso 2: hacer un esquema de base de datos

Para guardar todos mis datos, tuve que crear una base de datos que pudiera ejecutarse en mi Pi.

Lo hice en Mysql.

Carro de mesa:

  • Identificación del coche
  • ID de usuario
  • Marca (marca de automóvil)
  • Escribe
  • Último lavado
  • Llave
  • RFID_ID

Paso 3: Paso 3: Codificación

Paso 3: codificación
Paso 3: codificación

Cuando todo esto estuvo listo, pude empezar a codificar.

Comencé creando el código para mi sensor en Python 3.5.

Para descargar el código haga clic aquí.

Utilice el enlace para clonar el proyecto.

Paso 4: Paso 4: Poner todo el código en mi Raspberry Pi

Instalar paquetes

Primero instalé todos los paquetes que necesitaba para que esto funcionara.

yo @ my-rpi: ~ $ sudo apt update

yo @ my-rpi: ~ $ sudo apt install -y python3-venv python3-pip python3-mysqldb mysql-server uwsgi nginx uwsgi-plugin-python3

Ambiente 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 / active (env) me @ my-rpi: ~ / project1 $ python -m pip install mysql-connector-python argon2-cffi Flask Flask-HTTPAuth Flask-MySQL mysql-conector-python passlib

Sube el proyecto a tu Pi usando pycharm

Abra Pycharm y vaya a VCS> Importar desde Control de versiones> Github y clone mi archivo github.

Coloque la configuración de implementación en el directorio que acaba de crear. (/ inicio / me / proyecto1). Presione aplicar!

Vaya a la configuración del intérprete y elija el entorno virtual que acaba de crear. (/ inicio / me / proyecto1 / env / bin / pyhon)

Compruebe si el mapeo de la ruta es correcto.

Ahora puede cargar el código en su directorio usando Pycharm.

Base de datos

Compruebe si la base de datos se está ejecutando. Debería obtener algo como esto:

me @ my-rpi: ~ $ sudo systemctl status mysql ● mariadb.service - Servidor de base de datos MariaDB Cargado: cargado (/lib/systemd/system/mariadb.service; habilitado; preset del proveedor: habilitado) Activo: activo (en ejecución) desde Sun 2018-06-03 09:41:18 CEST; Hace 1 día 4 horas PID principal: 781 (mysqld) Estado: "Tomando sus solicitudes SQL ahora …" Tareas: 28 (límite: 4915) CGroup: /system.slice/mariadb.service └─781 / usr / sbin / mysqld

03 de junio 09:41:13 my-rpi systemd [1]: Iniciando el servidor de base de datos MariaDB… 03 de junio 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 junio 09:41:18 my-rpi systemd [1]: Se inició el servidor de base de datos MariaDB.

yo @ my-rpi: ~ $ ss -lt | grep mysql ESCUCHAR 0 80127.0.0.1:mysql *: *

Crear usuarios y agregar la base de datos

yo @ my-rpi: ~ $ sudo mariadb

una vez que esté en la base de datos, haga esto.

CREAR USUARIO 'project1-admin' @ 'localhost' IDENTIFICADO POR 'adminpassword'; CREAR USUARIO 'project1-web' @ 'localhost' IDENTIFICADO POR 'webpassword'; CREAR USUARIO 'project1-sensor' @ 'localhost' IDENTIFICADO POR 'sensorpassword';

CREAR BASE DE DATOS project1;

OTORGAR TODOS LOS PRIVILEGIOS EN project1. * A 'project1-admin' @ 'localhost' CON OPCIÓN DE GRANT; GRANT SELECT, INSERT, UPDATE, DELETE ON project1. * TO 'project1-web' @ 'localhost'; GRANT SELECT, INSERT, UPDATE, DELETE ON project1. * TO 'project1-sensor' @ 'localhost'; PRIVILEGIOS DE FLUSH;

CREATE TABLE `user` (` idUser` int (11) NOT NULL, `Password` varchar (45) DEFAULT NULL, PRIMARY KEY (` idUser`)) ENGINE = InnoDB DEFAULT CHARSET = utf8

CREATE 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, PRIMARY KEY (`idCar`,` idUser`), KEY `fk_Car_User1_idx` (` idUser`), CONSTRAINT `fk_Car_User1` FOREIGN KEY (`idUser`) REFERENCIAS` user` (`idUser`) ON BORRAR SIN ACCIÓN ON ACTUALIZAR SIN ACCIÓN) ENGINE = InnoDB AUTO_INCREMENT = 4 DEFAULT CHARSET = utf8

Conecte su base de datos a Pycharm

Haga clic en la pestaña de la base de datos en el lado derecho. Si no tiene una pestaña abierta, haga esto: Ver> Ventanas de herramientas> Base de datos.

Haga clic en agregar conexión. Elija Fuente de datos> MySQL (si hay un botón para descargar el controlador, presiónelo).

Vaya a SSH / SSL y marque SSH. Complete las credenciales de su Raspberry pi (host / usuario / contraseña). El puerto debe ser 22 y no olvide comprobar la contraseña para recordar.

Vuelve a General. El host debe ser localhost y la base de datos debe ser project1. Complete las credenciales de project1-admin y pruebe la conexión.

Si la conexión es correcta, vaya a la pestaña Esquemas y asegúrese de que proyecto1 esté marcado.

Verifique si la base de datos es correcta

me @ my-rpi: ~ $ echo 'mostrar tablas;' | mysql project1 -t -u project1-admin -pIntroduzca la contraseña: + --------------------------- + | Tables_in_project1 | + --------------------------- + | sensor | | usuarios | + --------------------------- +

Archivos de configuración

En el directorio conf encontrará 4 archivos. Debe cambiar los nombres de usuario a su nombre de usuario.

Systemd

Para comenzar todo, debe ejecutar estos comandos.

yo @ my-rpi: ~ / project1 $ sudo cp conf / project1 - *. service / etc / systemd / system /

me @ my-rpi: ~ / project1 $ sudo systemctl daemon-reload me @ my-rpi: ~ / project1 $ sudo systemctl start project1- * me @ my-rpi: ~ / project1 $ sudo systemctl status project1- * ● project1- flask. 14:56 CEST; Hace 1s PID principal: 6618 (uwsgi) Tareas: 6 (límite: 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 junio 13:14:56 my-rpi uwsgi [6618]: 383928 bytes asignados (374 KB) para 5 núcleos 04 de junio 13:14:56 my-rpi uwsgi [6618]: *** MODO operativo: bifurcación previa ***

● project1-sensor.service - Project 1 sensor service Cargado: cargado (/etc/systemd/system/project1-sensor.service; deshabilitado; preset del proveedor: habilitado) Activo: activo (en ejecución) desde el lunes 4 de junio de 2018 13: 16:49 CEST; Hace 5s PID principal: 6826 (python) Tareas: 1 (límite: 4915) CGroup: /system.slice/project1-sensor.service └─6826 / home / me / project1 / env / bin / python / home / me / project1 /sensor/sensor.py

Jun 04 13:16:49 my-rpi systemd [1]: Se inició el servicio del sensor del Proyecto 1. 04 de junio 13:16:49 my-rpi python [6826]: DEBUG: _ main _: Sensor guardado process_count = b'217 / n 'en la base de datos 04 de junio 13:16:55 my-rpi python [6826]: DEBUG: _ main_: Sensor guardado process_count = b'218 / n 'en la base de datos

nginx

yo @ my-rpi: ~ / project1 $ ls -l / etc / nginx / sites- *

/ etc / nginx / sites-available: total 4 -rw-r - r-- 1 root root 2416 12 de julio de 2017 predeterminado

/ etc / nginx / sites-enabled: total 0 lrwxrwxrwx 1 root root 34 18 de enero 13:25 predeterminado -> / etc / nginx / sites-available / default

Para que todo sea predeterminado, ejecute estos comandos.

yo @ 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 restart nginx.service

Autoencendido

Asegurémonos de que todo comience automáticamente.

¡Vaya al directorio conf y ejecute estos comandos finales y listo!

yo @ my-rpi: ~ / project1 $ sudo systemctl enable project1- *

Si reinicia su Pi, debería iniciarse automáticamente.

Paso 5: Paso 5: Hacer una vivienda

Paso 5: Hacer una vivienda
Paso 5: Hacer una vivienda
Paso 5: Hacer una vivienda
Paso 5: Hacer una vivienda
Paso 5: Hacer una vivienda
Paso 5: Hacer una vivienda
Paso 5: Hacer una vivienda
Paso 5: Hacer una vivienda

Reciclaje

Para hacer mi vivienda usé un armario viejo que mi mamá tiraba.

base

Corté 4 tablas (34 cm x 26 cm). (entonces es un cubo de 34 x 34 x 26).

En la parte inferior agregué un trozo delgado de madera como fondo.

Tablero con led's

En el medio he puesto 2 pequeños trozos de madera a cada lado ambos a 9 cm de la parte superior. Esto sostiene el tablero donde se colocarán los LED.

El tablero con los leds es un tablero pequeño (32 cm x 32 cm).

Perforé 9 agujeros para que salieran los leds.

división

Hice la división con el mismo material que el fondo y el tablero con leds.

4 piezas cada una con una incisión a 10,3 cm (9 cm x 31 cm). Ahora puedo juntarlos.

Botones y lector RFID

Hice un agujero en la base para colocar mi lector de RFID y los botones. Para el RFID, puse un pedazo delgado de tablero delante para que se vea más limpio.

Paso 6: Paso 6: Poner todo en la carcasa

Depende de cómo quieras hacerlo. Personalmente, utilicé muchos cables sin soldar porque quiero poder reutilizar mi Raspberry Pi.

Pegué los leds en su lugar y pegué el lector RFID y las placas de prueba a la carcasa.

¡Y así es como se hace un clasificador de claves!

Recomendado: