Taula de continguts:
- Subministraments
- Pas 1: Configuració del Raspberry Pi
- Pas 2: distribució de l'electrònica
- Pas 3: dissenyar la base de dades
- Pas 4: configurar un compte a TTN
- Pas 5: Configuració de l'Arduino
- Pas 6: Configuració del backend
- Pas 7: Configuració del frontend
- Pas 8: afegir una carcassa
Vídeo: Capture the Box: 8 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:12
Capture The Box és un joc de formació en equip que podeu jugar amb amics del vostre barri.
L'objectiu és capturar la caixa i mantenir-la en la seva possessió el major temps possible, mentre que altres jugadors intenten anar-la a escapar del seu porxo o jardí davanter.
Aquest joc utilitza GPS per localitzar la caixa i etiquetes RFID per identificar els jugadors. Es pot afegir un LDR opcional per fer coincidir la intensitat de la pantalla de matriu de punts amb el percentatge de llum de la zona.
Subministraments
Microcontroladors i ordinadors
- Raspberry Pi
- Arduino (Mega) He triat un Arduino Mega sobre un Uno normal, perquè té molts més pins. Això és necessari perquè estem utilitzant un escut Dragino LoRa, que ens deixaria massa pocs pins digitals en utilitzar un UNO. CONSELL: El millor és utilitzar-ne un de genuí, perquè els clons xinesos no sempre funcionen com s’esperava.
Sensors i mòduls
- 4 mòduls MAX7219 Dot Matrix Connecteu DOUT a DIN, CS a CS, CLK a CLK …
- Resistència dependent de la llum (10 K) + resistència (10 K)
- Mòdul GPS NEO-7M (o similar) Estic fent servir el VMA430 de Velleman
- Mòdul RFID RC522 + algunes targetes / insígnies RFID
Per utilitzar LoRa (tecnologia sense fils)
Escut Dragino Lora
Sensors i mòduls opcionals
Pantalla LCD Per mostrar l'adreça IP del Raspberry Pi
Per fer una configuració de prova
Una taula de treball i cables Dupont (home-home
Opcional (carcassa)
- Soldador
- Una antiga caixa d’eines
- Materials per a la impressió 3D
- Uns taulons de fusta prims
- Alguns cargols i femelles (que poden cabre en forats Arduino). Els meus cargols tenen un diàmetre d’uns 3 mm.
Es pot trobar un preu estimat a la llista de materials (llista de materials), inclosa a continuació.
Pas 1: Configuració del Raspberry Pi
El Raspberry Pi és el cor del projecte.
Executarà el frontend, el backend i la base de dades. També s’encarregarà de la comunicació entre el backend i l’Arduino.
Per tal que puguem utilitzar el Raspberry Pi, haurem de fer el següent:
Primera part: instal·leu Raspbian en un Raspberry Pi
Aquí es pot trobar un tutorial sobre com fer-ho:
Part 2: Instal·leu Raspbian en un Raspberry Pi Configuració del WiFi de casa.
Això es pot fer amb wpa_passphrase "YourNetwork" "YourSSID" >> /etc/wpa_supplicant/wpa_supplicant.conf
Reinicieu el Pi i hauríeu de veure una adreça IP quan escriviu ifconfig
Part 3: Instal·leu el servidor web i la base de dades
Un cop tingueu el Pi en funcionament, és millor canviar la vostra contrasenya, cosa que es pot fer amb l’ordre passwd.
Un cop fet això, seguiu instal·lant Apache, PHP, MariaDB i 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 reinicia apache2.service
PHPMyAdminsudo apt instal·la phpmyadmin -y
No oblideu establir una contrasenya segura de MySQL.
Part 4: Instal·lació de les biblioteques Python necessàries
Per al backend, necessitarem algunes biblioteques. Es poden instal·lar mitjançant l'ordre pip3.
pip3 instal·la mysql-connector-python
pip3 instal·la flask-socketio
pip3 instal·lar flask-cors
pip3 install geventpip3 install gevent-websocket
pip3 instal·la ttn
Pas 2: distribució de l'electrònica
Per fer funcionar aquest projecte, hem de connectar tota l’electrònica.
L'escut LoRa es pot posar fàcilment al seu lloc. Només cal alinear els pins amb els pins del vostre Arduino.
Les altres connexions es descriuen al meu esquema de Fritzing. Es pot descarregar aquí:
Pas 3: dissenyar la base de dades
Per poder emmagatzemar totes les dades del joc i dels sensors, he fet unes quantes taules:
mesurament i sensor Les mesures dels sensors, que es troben a les taules de sensors. Conté una referència al sensor, el valor de la mesura (per exemple, coordenades: 51.123456; 3.123456) i un identificador de joc opcional (si un joc estava actiu durant la mesura).
speler Els noms dels jugadors i l’ID de la seva insígnia RFID. S'afegeix un moderador de camp opcional, aquesta persona pot modificar el joc (per exemple, aturar-lo abans de l'hora).
spelLa informació del joc (hora d’inici i finalització).
spel_has_speler La relació entre spel i speler. Aquí és on els jugadors estan assignats a un joc.
bezit En aquesta taula, es desa la puntuació. Conté la identificació del joc, la identificació del jugador, el temps en què va robar la caixa i el temps en què la va perdre (quan algú la roba o quan finalitza la partida). Restant l'hora d'inici de l'hora final, podeu calcular la puntuació que va obtenir d'aquesta captura.
Es pot trobar una exportació de la base de dades al meu GitHub (https://github.com/BoussonKarel/CaptureTheBox)
Obriu el sql a PHPMyAdmin / MySQL Workbench i executeu-lo. Ara s’hauria d’importar la base de dades.
Pas 4: configurar un compte a TTN
Pas 1: registreu-vos per obtenir un compte a TTN i creeu una aplicació
Registreu-vos per obtenir un compte a TheThingsNetwork i, a continuació, aneu a Consola> Afegeix aplicació.
Trieu un nom per a la vostra aplicació i feu clic a Afegeix una aplicació.
Pas 2: registreu un dispositiu
Quan hàgiu fet la sol·licitud, aneu a Registrar dispositiu.
Trieu un identificador de dispositiu, pot ser el que vulgueu (sempre que sigui un cas de serp) i feu clic a Registra.
Feu clic a la icona Generar a Dispositiu EUI, de manera que TTN en generarà una.
Pas 3: escriviu les vostres credencials
Ara aneu al dispositiu i feu clic a la icona de codi al costat de Dispositiu EUI, Aplicació EUI i Clau d'aplicació. Ara hauria d'aparèixer com una matriu de bytes.
Abans de copiar, feu clic al botó Canvia i assegureu-vos que el Dev EUI i l'aplicació EUI siguin LSB FIRST.
La vostra clau d'aplicació hauria de romandre MSB FIRST (no canvieu això).
Necessitareu aquestes claus al següent pas: Configuració de l'Arduino.
Pas 4: escriviu la clau d'accés a l'aplicació
Ara necessitarem una clau més per configurar MQTT al nostre Raspberry Pi.
Aneu a la vostra aplicació i desplaceu-vos cap avall fins a Tecles d'accés.
Ho necessitareu al pas de Backend.
Pas 5: Configuració de l'Arduino
El codi Arduino també es pot trobar al meu GitHub, a Arduino (https://github.com/BoussonKarel/CaptureTheBox)
Aquest codi es divideix en diverses pestanyes per mantenir-lo organitzat.
main.ino El codi principal: declaracions de pins, setup () i loop ()
0_LoRa.ino Aquest codi gestiona la comunicació mitjançant LoRa.
Posa les dades de les etiquetes LDR, GPS i RFID en una matriu de 13 bytes i les envia a TheThingsNetwork.
1_LDR.ino Utilitzant analogRead (), mesura la quantitat de voltatge sobre la resistència dependent de la llum.
Tot seguit, es converteix en un percentatge de llum (0 no és res, 100 és una llanterna de mòbil).
2_GPS.ino: utilitza la comunicació sèrie mitjançant TX1 i RX1 (Serial1).
Utilitza missatges NMEA (els missatges $ GPRMC per ser precisos) per trobar la latitud i la longitud del quadre.
3_RFID.ino Utilitzant la biblioteca MFRC522, aquest codi busca noves etiquetes RFID. Sempre que n’hi hagi, s’emmagatzema com a RFID_lastUID.
4_DotMatrix.inoAquest codi s'utilitza per inicialitzar i configurar la visualització de matriu de punts. Conté definicions per a l'animació de càrrega, etc.
Configuració
Abans de poder carregar aquest codi al vostre Arduino, haureu d’instal·lar algunes biblioteques.
La biblioteca Arduino-LMIC de matthijskooijman (https://github.com/matthijskooijman/arduino-lmic)
La biblioteca MFRC522 per al lector RFID (https://github.com/miguelbalboa/rfid)
Ara aneu a main.ino i canvieu DEVEUI, APPEUI i APPKEY per les que heu copiat el darrer pas.
Pas 6: Configuració del backend
El backend d’aquest projecte es pot trobar al meu GitHub, a RPI> Backend (https://github.com/BoussonKarel/CaptureTheBox).
Com funciona?
- Cada 10 segons, el codi busca un joc actiu. Si se’n troba un, es desa en una variable anomenada huidigSpel (currentGame)
- Si el mode s’estableix en sèrie, s’utilitzarà un cable entre l’Arduino i el Pi. El Pi examina els valors del LDR i del GPS. L'Arduino respon amb un format JSON. Les etiquetes RFID s'envien sempre que es presenten. Aquest mode només s'ha utilitzat amb finalitats de desenvolupament i ja no és necessari.
- Si el mode s'estableix en LoRa, es crea un client MQTT que activa una devolució de trucada sempre que TTN rep dades LoRa. Conté dades LDR, GPS i RFID.
- El frontend pot recuperar dades mitjançant els punts finals de l'API. La majoria de les dades es recuperen mitjançant huidigSpel.id. Les dades es retornen en format JSON mitjançant jsonify ()
Modifiqueu la configuració Aneu a secrets.py i empleneu el nom de la vostra aplicació LoRa i la vostra clau d’accés (heu anotat anteriorment).
Aneu a config.py i empleneu les vostres credencials de base de dades (com ara contrasenya, usuari …)
Configurar-lo com a servei Proveu d’executar app.py, un cop hàgiu confirmat que funciona, el podem utilitzar com a servei. Això iniciarà automàticament el codi en segon pla quan inicieu el vostre pi.
Per fer-ho, còpia ctb_service.service a /etc/systemd/system/ctb_service.service. sudo cp ctb_service.service /etc/systemd/system/ctb_service.service
Ara activeu-lo mitjançant systemctl enable ctb_service.service
Si heu de fer alguns canvis al codi, podeu aturar-lo fàcilment mitjançant systemctl stop (es reiniciarà en reiniciar-lo) o desactivar-lo (impedir que s’iniciï automàticament) mitjançant la desactivació de systemctl.
Si heu de consultar els registres (a causa d’errors), podeu utilitzar journalctl -u ctb_service.service.
Podeu trobar més informació sobre els serveis aquí:
Pas 7: Configuració del frontend
Com és habitual, frontend es pot trobar al meu GitHub, a RPI> Frontend (https://github.com/BoussonKarel/CaptureTheBox)
Enganxeu-lo a la carpeta / var / html del vostre Raspberry Pi.
Conté totes les pàgines web necessàries per al joc.
També conté un script per comunicar-se amb el backend (tant en temps real com mitjançant l'ús dels punts finals de l'API).
Pas 8: afegir una carcassa
Per al cas, he utilitzat una caixa d’eines antiga, juntament amb els següents materials / tècniques:
- Impressió 3D
- Escuma per mantenir la bateria al seu lloc
- Taulons de fusta reciclats
- Cola calenta
- Cargols i femelles
El que feu amb el vostre cas és la vostra elecció! Et donaré llibertat artística.
Per inspiració, he afegit algunes fotografies del meu cas (acabat).
Recomanat:
Tecla Arduino Joystick Extender Box i controlador de so amb Deej: 8 passos
Amb el teclat Arduino Joystick Extender Box i el controlador de so Utilitzant Deej: Per què fa temps que volia afegir un petit joystick al meu teclat per controlar els elements de la interfície o altres tasques més petites en jocs i simuladors (MS Flight Sim, Elite: Dangerous, Star Wars: esquadrons, etc.). A més, per a Elite: Dangerous, he estat
Feu un TARDIS Infinity Box: 9 passos (amb imatges)
Feu un TARDIS Infinity Box: prèviament he construït un model TARDIS. Una de les característiques que defineixen el TARDIS és que és més gran per dins que per fora. Viouslybviament no puc fer-ho, però en aquest instructiu adapto el model per intentar que sembli gran
Mission Control Box V3.0: 4 passos
Mission Control Box V3.0: Hola a tothom! Aquesta és una versió actualitzada del meu quadre de control de missió original. Aquesta versió és la mateixa idea bàsica: llums, interruptors, un temporitzador de compte enrere i un divertit gràfic de barres LED "mesurador de potència". tot amb un tema de transbordador espacial. La principal diferència
Una Juke Box per als més joves Aka Raspi-Music-Box: 5 passos
A Juke Box for the Very Young … Aka Raspi-Music-Box: inspirat en el instructiu "Raspberry-Pi-based-RFID-Music-Robot" descrivint un reproductor de música fabricat per ROALDH per als seus tres anys, vaig decidir construir una caixa de seguretat per als meus fills encara més petits. Bàsicament és una caixa amb 16 botons i un Raspi 2 i
Cedar (Cigar?) Box Box Speaker: 8 passos (amb imatges)
Cedar (Cigar?) Box Speaker Box: inspirat en els altaveus de Munny, però no disposat a gastar més de 10 dòlars, aquí teniu el meu instructiu fent servir altaveus d'ordinador vells, una caixa de fusta de la botiga de segona mà i molta cola calenta