Tabla de contenido:
- Suministros
- Paso 1: Configurar la Raspberry Pi
- Paso 2: diseño de la electrónica
- Paso 3: diseño de la base de datos
- Paso 4: configurar una cuenta en TTN
- Paso 5: Configuración del Arduino
- Paso 6: configurar el backend
- Paso 7: Configuración de la interfaz
- Paso 8: agregar una carcasa
Video: Captura la caja: 8 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:41
Capture The Box es un juego de trabajo en equipo que puedes jugar con amigos en tu vecindario.
El objetivo es capturar la caja y mantenerla en tu posesión el mayor tiempo posible mientras otros jugadores intentan ir y escabullirse de tu porche o jardín delantero.
Este juego utiliza GPS para localizar la caja y etiquetas RFID para identificar a los jugadores. Se puede agregar un LDR opcional para hacer coincidir la intensidad de la pantalla de matriz de puntos con el porcentaje de luz en el área.
Suministros
Microcontroladores y ordenadores
- Frambuesa pi
- Arduino (Mega) Elegí un Arduino Mega sobre un Uno normal, porque tiene muchos más pines. Esto es necesario porque estamos usando un escudo Dragino LoRa, lo que nos dejaría con muy pocos pines digitales al usar un UNO. SUGERENCIA: Es mejor usar uno genuino, porque los clones chinos no siempre funcionan como se espera.
Sensores y módulos
- 4 módulos de matriz de puntos MAX7219 Conecte DOUT a DIN, CS a CS, CLK a CLK …
- Resistencia dependiente de la luz (10 K) + Resistencia (10 K)
- Módulo GPS NEO-7M (o similar) Estoy usando el VMA430 de Velleman
- Módulo RFID RC522 + algunas insignias / tarjetas RFID
Para usar LoRa (tecnología inalámbrica)
Escudo Dragino Lora
Sensores y módulos opcionales
Una pantalla LCD para mostrar la dirección IP de la Raspberry Pi
Para realizar una configuración de prueba
Una placa de pruebas y cables Dupont (macho-macho
Opcional (carcasa)
- Soldador
- Una vieja caja de herramientas
- Materiales para impresión 3D
- Algunas planchas de madera delgadas
- Algunos pernos y tuercas (que pueden caber en los orificios de Arduino). Mis tornillos tienen un diámetro de alrededor de 3 mm.
Puede encontrar un precio estimado en la lista de materiales (BOM), que se incluye a continuación.
Paso 1: Configurar la Raspberry Pi
La Raspberry Pi es el corazón del proyecto.
Ejecutará el frontend, el backend y la base de datos. También será responsable de la comunicación entre el backend y Arduino.
Para que podamos usar la Raspberry Pi, tendremos que hacer lo siguiente:
Parte 1: instalar Raspbian en una Raspberry Pi
Puede encontrar un tutorial sobre cómo hacerlo aquí:
Parte 2: Instale Raspbian en una Raspberry Pi Configuración de la red WiFi de su hogar.
Esto se puede hacer usando wpa_passphrase "YourNetwork" "YourSSID" >> /etc/wpa_supplicant/wpa_supplicant.conf
Reinicie el Pi y debería ver una dirección IP al escribir ifconfig
Parte 3: instalar el servidor web y la base de datos
Una vez que tenga su Pi en funcionamiento, lo mejor es cambiar su contraseña. Esto se puede hacer con el comando passwd.
Una vez hecho esto, continúe e instale Apache, PHP, MariaDB y PHPMyAdmin.
Apache, PHP sudo apt install apache2 -y sudo apt install php libapache2-mod-php -y
MariaDB sudo apt install mariadb-server mariadb-client -y sudo apt install php-mysql -y sudo systemctl restart apache2.service
PHPMyAdminsudo apt install phpmyadmin -y
No olvide establecer una contraseña segura de MySQL.
Parte 4: Instalar las bibliotecas de Python necesarias
Para el backend, necesitaremos algunas bibliotecas. Estos se pueden instalar usando el comando pip3.
pip3 instalar mysql-connector-python
pip3 instalar flask-socketio
pip3 instalar flask-cors
pip3 instalar geventpip3 instalar gevent-websocket
pip3 instalar ttn
Paso 2: diseño de la electrónica
Para que este proyecto funcione, necesitamos conectar todos los componentes electrónicos.
El escudo LoRa se puede colocar fácilmente. Simplemente alinee los pines con los pines de su Arduino.
Las otras conexiones se describen en mi esquema de Fritzing. Que se puede descargar aquí:
Paso 3: diseño de la base de datos
Para poder almacenar todos los datos del juego y de los sensores, hice algunas tablas:
medición y sensor Las mediciones de los sensores, que se encuentran en las tablas de sensores. Contiene una referencia al sensor, el valor de la medición (por ejemplo, coordenadas: 51.123456; 3.123456) y una identificación de juego opcional (si un juego estaba activo durante la medición).
speler Los nombres de los jugadores y el UID de su placa RFID. Se agrega un moderador de campo opcional, esta persona puede modificar el juego (por ejemplo, detenerlo antes de tiempo).
spel La información del juego (hora de inicio y finalización).
spel_has_speler La relación entre spel y speler. Aquí es donde los jugadores se asignan a un juego.
bezit En esta tabla, se guarda la puntuación. Contiene la identificación del juego, la identificación del jugador, la hora en que robó la caja y la hora en que la perdió (cuando alguien más la roba o cuando termina el juego). Al restar la hora de inicio de la hora de finalización, puede calcular la puntuación que obtuvo de esa captura.
Se puede encontrar una exportación de la base de datos en mi GitHub (https://github.com/BoussonKarel/CaptureTheBox)
Abra el sql en PHPMyAdmin / MySQL Workbench y ejecútelo. La base de datos debería importarse ahora.
Paso 4: configurar una cuenta en TTN
Paso 1: Regístrese para obtener una cuenta en TTN y cree una aplicación
Regístrese para obtener una cuenta en TheThingsNetwork, luego vaya a Consola> Agregar aplicación.
Elija un nombre para su aplicación y haga clic en Agregar aplicación.
Paso 2: registrar un dispositivo
Cuando haya realizado su solicitud, vaya a Registrar dispositivo.
Elija una identificación de dispositivo, esto puede ser lo que desee (siempre que sea un caso de serpiente) y haga clic en Registrarse.
Haga clic en el icono Generar debajo de Device EUI, para que TTN genere uno para usted.
Paso 3: anote sus credenciales
Ahora vaya a su Dispositivo y haga clic en el ícono de Código al lado de Dispositivo EUI, App EUI y App key. Ahora debería aparecer como una matriz de bytes.
Antes de copiar, haga clic en el botón Cambiar y asegúrese de que su Dev EUI y App EUI sean LSB PRIMERO.
La clave de la aplicación debe ser MSB PRIMERO (no la cambie).
Necesitará estas claves en el siguiente paso: Configurar el Arduino.
Paso 4: Anote su clave de acceso a la aplicación
Ahora necesitaremos una clave más para configurar MQTT en nuestra Raspberry Pi.
Vaya a su Aplicación y desplácese hacia abajo hasta Teclas de acceso.
Lo necesitará en el paso Backend.
Paso 5: Configuración del Arduino
El código de Arduino también se puede encontrar en mi GitHub, en Arduino (https://github.com/BoussonKarel/CaptureTheBox)
Este código se divide en varias pestañas para mantenerlo organizado.
main.ino El código principal: declaraciones pin, setup () y loop ()
0_LoRa.ino Este código maneja la comunicación usando LoRa.
Coloca los datos de las etiquetas LDR, GPS y RFID en una matriz de 13 bytes y los envía a TheThingsNetwork.
1_LDR.ino Usando analogRead (), mide la cantidad de voltaje sobre la resistencia dependiente de la luz.
Esto luego se convierte en un porcentaje de luz (0 es nada, 100 es una linterna de teléfono celular).
2_GPS.ino Esto usa comunicación serial usando TX1 y RX1 (Serial1).
Utiliza mensajes NMEA (los mensajes $ GPRMC para ser precisos) para encontrar la latitud y longitud del cuadro.
3_RFID.ino Utilizando la biblioteca MFRC522, este código busca nuevas etiquetas RFID. Siempre que haya una, se almacena como RFID_lastUID.
4_DotMatrix.ino Este código se usa para inicializar y configurar la pantalla de matriz de puntos. Contiene definiciones para la animación de carga, etc.
Configurándolo
Antes de que pueda cargar este código en su Arduino, deberá instalar algunas bibliotecas.
La biblioteca Arduino-LMIC de matthijskooijman (https://github.com/matthijskooijman/arduino-lmic)
La biblioteca MFRC522 para el lector RFID (https://github.com/miguelbalboa/rfid)
Ahora, vaya a main.ino y cambie DEVEUI, APPEUI y APPKEY por los que copió en el último paso.
Paso 6: configurar el backend
El backend de este proyecto se puede encontrar en mi GitHub, en RPI> Backend (https://github.com/BoussonKarel/CaptureTheBox).
¿Como funciona?
- Cada 10 segundos, el código busca un juego activo, si se encuentra, se guarda en una variable llamada huidigSpel (currentGame)
- Si el modo está configurado en Serial, se usa un cable entre el Arduino y el Pi. El Pi sondea los valores de LDR y GPS. El Arduino responde con un formato JSON, las etiquetas RFID se envían siempre que se presentan, este modo se usó únicamente para fines de desarrollo y ya no es realmente necesario.
- Si el modo se establece en LoRa, se crea un cliente MQTT que activa una devolución de llamada cada vez que TTN recibe datos de LoRa. Contiene datos LDR, GPS y RFID.
- La interfaz puede recuperar datos utilizando los puntos finales de la API. La mayoría de los datos se recuperan usando huidigSpel.id. Los datos se devuelven en formato JSON usando jsonify ()
Modifique la configuración Vaya a secrets.py y complete el nombre de su aplicación LoRa y su Clave de acceso (que anotó anteriormente).
Vaya a config.py y complete las credenciales de su base de datos (como contraseña, usuario …)
Configurarlo como un servicio Intente ejecutar app.py, una vez que haya confirmado que esto funciona, podemos usarlo como un servicio. Esto iniciará automáticamente el código en segundo plano cuando inicie su pi.
Para hacer esto, copie ctb_service.service en /etc/systemd/system/ctb_service.service. sudo cp ctb_service.service /etc/systemd/system/ctb_service.service
Ahora habilítelo usando systemctl enable ctb_service.service
Si necesita hacer algunos cambios en el código, puede detenerlo fácilmente usando systemctl stop (esto se iniciará nuevamente al reiniciar) o deshabilitarlo (evitar que se inicie automáticamente) usando systemctl disable.
Si necesita consultar los registros (debido a errores), puede usar journalctl -u ctb_service.service.
Puede encontrar más información sobre los servicios aquí:
Paso 7: Configuración de la interfaz
Como de costumbre, la interfaz se puede encontrar en mi GitHub, en RPI> Frontend (https://github.com/BoussonKarel/CaptureTheBox)
Pegue esto en la carpeta / var / html de su Raspberry Pi.
Este contiene todas las páginas web necesarias para el juego.
También contiene un script para comunicarse con el backend (tanto en tiempo real como usando los puntos finales de la API).
Paso 8: agregar una carcasa
Para el caso, utilicé una caja de herramientas antigua, junto con los siguientes materiales / técnicas:
- Impresión 3d
- Espuma para mantener la batería en su lugar
- Tablones de madera reciclada
- Pegamento caliente
- Tornillos y tuercas
¡Lo que hagas con tu caso es tu elección! Te voy a dar libertad artística.
Para inspirarme, agregué algunas fotos de mi estuche (terminado).
Recomendado:
Captura de imágenes activada por movimiento y correo electrónico: 6 pasos
Captura de imágenes activadas por movimiento y correo electrónico: nos basamos en los proyectos ESP32-CAM anteriores y creamos un sistema de captura de imágenes activadas por movimiento que también envía un correo electrónico con la imagen como archivo adjunto. Esta compilación utiliza la placa ESP32-CAM junto con un módulo de sensor PIR que se basa en el AM312
Captura de video usando la placa ESP32-CAM: 4 pasos
Captura de video usando la placa ESP32-CAM: echamos un vistazo a un repositorio de GitHub muy interesante que permite la grabación de video en la placa ESP32-CAM. Un video no es más que una serie de imágenes cuidadosamente cronometradas, y este boceto se basa en eso. El equipo también ha añadido la funcionalidad FTP a la
Caja de sonido de la caja del reproductor Mp3: 5 pasos
Caja de sonido para reproductor de MP3: este es mi primer instructivo, así que sry si no lo obtiene. materiales: 1.mp3 estuche (el estuche que obtienes cuando compras el mp3 si no sabes a qué me refiero ver imagen 2) 2. cuchillo exacto 3. altavoz ya hecho con conector de audio ver paso eso es todo lo que necesitas
Caja de cedro (¿cigarro?) Caja de altavoz: 8 pasos (con imágenes)
Caja de altavoz de cedro (¿cigarro?): Inspirado en los altavoces de Munny, pero sin estar dispuesto a gastar más de $ 10, aquí está mi instructable con altavoces de computadora viejos, una caja de madera de la tienda de segunda mano y mucho pegamento caliente
Mostrar caja de luz de una caja de madera: 9 pasos (con imágenes)
Mostrar caja de luz de una caja de madera: Mi esposa y yo le regalamos a mi mamá una escultura de vidrio para Navidad. Cuando mi mamá lo abrió, mi hermano dijo: "¡RadBear (bueno, en realidad dijo mi nombre) podría construirte una caja de luz!". Dijo esto porque, como coleccionista de vidrio, yo