Tabla de contenido:

Captura la caja: 8 pasos
Captura la caja: 8 pasos

Video: Captura la caja: 8 pasos

Video: Captura la caja: 8 pasos
Video: Extranjero acusado de matar a un oficial de la policía en Lima fue capturado 2024, Noviembre
Anonim
Captura la caja
Captura la caja
Captura la caja
Captura la caja

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

Disposición de la electrónica
Disposición de la electrónica
Disposición de la electrónica
Disposición 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

Diseño de la base de datos
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?

  1. Cada 10 segundos, el código busca un juego activo, si se encuentra, se guarda en una variable llamada huidigSpel (currentGame)
  2. 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.
  3. 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.
  4. 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

Agregar una carcasa
Agregar una carcasa
Agregar una carcasa
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: