Tabla de contenido:
- Paso 1: Paso 1: ¿Qué necesitaré?
- Paso 2: Paso 2: creación de un esquema de base de datos
- Paso 3: Paso 3: Codificación
- Paso 4: Paso 4: Poner todo el código en mi Raspberry Pi
- Paso 5: Paso 5: Hacer una vivienda
- Paso 6: Paso 6: Poner todo en la carcasa
Video: Clasificador de claves: 6 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:43
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é?
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
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
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
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:
Cómo codificar un clasificador de color en Modkit para Vex: 7 pasos
Cómo codificar un clasificador de colores en Modkit para Vex: Hola a todos, En este tutorial aprenderán a codificar un clasificador de bolas de colores en Modkit para Vex ¡Espero que lo hagan y disfruten! ¡Por favor, voten por mí
¡Haga un clasificador de basura Pi con ML !: 8 pasos (con imágenes)
¡Haz un clasificador de basura Pi con ML !: El proyecto del clasificador de basura, conocido cariñosamente como " ¡¿A dónde va?!”, Está diseñado para hacer que tirar cosas sea más rápido y más confiable. entrenado en Lobe, un amigable para principiantes (¡sin código!)
Clasificador de color: 6 pasos
Clasificador de color: el objetivo de este clasificador de color es mover m & ms en diferentes pilas según su color
Clasificador de monedas electrónico: 7 pasos (con imágenes)
Clasificador de monedas electrónico: Hace mucho, mucho tiempo, cuando todavía era posible ir a la escuela, se nos ocurrió una idea interesante para hacer un dispositivo que funciona de una manera bastante simple: después de arrojar la cantidad correcta de dinero, emitirá un producto específico. No puedo revelar
Proyecto de clasificador de color de ladrillos Arduino: 5 pasos
Proyecto de clasificador de color de ladrillos Arduino: en este tutorial de Arduino, aprenderemos cómo detectar los colores de mi ladrillo de juguete utilizando Arduino y el sensor de color TCS3200. Puede leer el tutorial escrito a continuación para obtener más detalles. Materiales: Arduino Leonardo x 1TCS3200 x 1 Un montón de cartón180 Servo