Sommario:
- Forniture
- Passaggio 1: configurazione del Raspberry Pi
- Passaggio 2: disporre l'elettronica
- Passaggio 3: progettazione del database
- Passaggio 4: creazione di un account su TTN
- Passaggio 5: configurazione di Arduino
- Passaggio 6: configurazione del backend
- Passaggio 7: configurazione del frontend
- Passaggio 8: aggiunta di un involucro
Video: Cattura la scatola: 8 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:01
Capture The Box è un gioco di team building che puoi giocare con gli amici del tuo quartiere.
L'obiettivo è quello di catturare la scatola e tenerla in tuo possesso il più a lungo possibile mentre altri giocatori cercano di portarla via di nascosto dal tuo portico o dal tuo giardino.
Questo gioco utilizza il GPS per individuare la scatola e i tag RFID per identificare i giocatori. È possibile aggiungere un LDR opzionale per abbinare l'intensità del display a matrice di punti con la percentuale di luce nell'area.
Forniture
Microcontrollori e computer
- Lampone Pi
- Arduino (Mega) Ho scelto un Arduino Mega rispetto a uno normale Uno, perché ha molti più pin. Questo è necessario perché stiamo usando uno scudo Dragino LoRa, che ci lascerebbe con troppi pochi pin digitali quando si utilizza un UNO. SUGGERIMENTO: è meglio usarne uno genuino, perché i cloni cinesi non funzionano sempre come previsto.
Sensori e moduli
- 4 moduli a matrice di punti MAX7219 Collegare DOUT a DIN, CS a CS, CLK a CLK…
- Resistenza dipendente dalla luce (10K) + resistenza (10K)
- Modulo GPS NEO-7M (o simile) Sto usando il VMA430 di Velleman
- Modulo RFID RC522 + alcuni badge/carte RFID
Per l'utilizzo di LoRa (tecnologia wireless)
Dragino Lora Scudo
Sensori e moduli opzionali
Un display LCDPer visualizzare l'indirizzo IP del Raspberry Pi
Per eseguire una configurazione di prova
Una breadboard e cavi Dupont (maschio-maschio
Opzionale (involucro)
- Saldatore
- Una vecchia cassetta degli attrezzi
- Materiali per la stampa 3D
- Alcune sottili assi di legno
- Alcuni bulloni e dadi (che possono essere inseriti nei fori di Arduino). Le mie viti hanno un diametro di circa 3 mm.
Un prezzo stimato può essere trovato nella BOM (Bill of Materials), inclusa di seguito.
Passaggio 1: configurazione del Raspberry Pi
Il Raspberry Pi è il cuore del Progetto.
Verrà eseguito il frontend, il backend e il database. Sarà anche responsabile della comunicazione tra il backend e Arduino.
Per poter utilizzare il Raspberry Pi, dovremo fare quanto segue:
Parte 1: installa Raspbian su un Raspberry Pi
Un tutorial su come farlo può essere trovato qui:
Parte 2: Installa Raspbian su un Raspberry Pi Configurazione del WiFi di casa.
Questo può essere fatto usando wpa_passphrase "YourNetwork" "YourSSID" >> /etc/wpa_supplicant/wpa_supplicant.conf
Riavvia il Pi e dovresti vedere un indirizzo IP quando digiti ifconfig
Parte 3: installa il server web e il database
Una volta che hai il tuo Pi attivo e funzionante, è meglio cambiare la tua password. Questo può essere fatto con il comando passwd.
Una volta fatto, vai avanti e installa Apache, PHP, MariaDB e 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
Non dimenticare di impostare una password MySQL sicura.
Parte 4: installazione delle librerie Python necessarie
Per il backend, avremo bisogno di alcune librerie. Questi possono essere installati utilizzando il comando pip3.
pip3 installa mysql-connector-python
pip3 install flask-socketio
pip3 install flask-cors
pip3 installa geventpip3 installa gevent-websocket
pip3 installa ttn
Passaggio 2: disporre l'elettronica
Per far funzionare questo progetto, dobbiamo collegare tutta l'elettronica.
Lo scudo LoRa può essere facilmente posizionato. Basta allineare i pin con i pin del tuo Arduino.
Le altre connessioni sono descritte nel mio schema di Fritzing. Che può essere scaricato qui:
Passaggio 3: progettazione del database
Per poter memorizzare tutti i dati del gioco e dei sensori, ho realizzato alcune tabelle:
misurazione e sensoreLe misurazioni dei sensori, che si trovano nelle tabelle dei sensori. Contiene un riferimento al sensore, il valore della misurazione (es. coordinate: 51.123456; 3.123456) e un ID gioco opzionale (se un gioco era attivo durante la misurazione).
spelerI nomi dei giocatori e l'UID del loro badge RFID. Viene aggiunto un moderatore di campo opzionale, questa persona può modificare il gioco (ad esempio interrompendolo prima del tempo).
spelLe informazioni sul gioco (ora di inizio e di fine).
spel_has_spelerLa relazione tra spell e speller. Qui è dove i giocatori vengono assegnati a un gioco.
bezitIn questa tabella, il punteggio viene salvato. Contiene l'ID del gioco, l'ID del giocatore, l'ora in cui ha rubato la scatola e l'ora in cui l'ha persa (quando qualcun altro la ruba o quando il gioco finisce). Sottraendo l'ora di inizio dall'ora di fine, puoi calcolare il punteggio che ha ottenuto da quella cattura.
Un'esportazione del database può essere trovata sul mio GitHub (https://github.com/BoussonKarel/CaptureTheBox)
Apri sql in PHPMyAdmin / MySQL Workbench ed eseguilo. Il database dovrebbe ora essere importato.
Passaggio 4: creazione di un account su TTN
Passaggio 1: registrati per un account su TTN e crea un'applicazione
Crea un account su TheThingsNetwork, quindi vai su Console > Aggiungi applicazione.
Scegli un nome per la tua applicazione e fai clic su Aggiungi applicazione.
Passaggio 2: registra un dispositivo
Quando hai fatto la tua domanda, vai su Registra dispositivo.
Scegli un ID dispositivo, questo può essere quello che vuoi (purché sia una custodia a serpente) e fai clic su Registra.
Fai clic sull'icona Genera sotto Device EUI, così TTN ne genererà uno per te.
Passaggio 3: annotare le credenziali
Ora vai al tuo dispositivo e fai clic sull'icona del codice accanto a Device EUI, App EUI e App key. Ora dovrebbe apparire come un array di byte.
Prima di copiare, fai clic sul pulsante Cambia e assicurati che Dev EUI e App EUI siano LSB PRIMA.
La tua chiave app dovrebbe rimanere MSB FIRST (non cambiarla).
Avrai bisogno di queste chiavi nel passaggio successivo: Configurazione di Arduino.
Passaggio 4: annotare la chiave di accesso all'applicazione
Ora avremo bisogno di un'altra chiave per configurare MQTT sul nostro Raspberry Pi.
Vai alla tua applicazione e scorri verso il basso fino a Chiavi di accesso.
Avrai bisogno di questo nel passaggio Backend.
Passaggio 5: configurazione di Arduino
Il codice Arduino può essere trovato anche sul mio GitHub, sotto Arduino (https://github.com/BoussonKarel/CaptureTheBox)
Questo codice è suddiviso in più schede, per mantenerlo organizzato.
main.inoIl codice principale: dichiarazioni pin, setup() e loop()
0_LoRa.inoQuesto codice gestisce la comunicazione tramite LoRa.
Mette i dati dei tag LDR, GPS e RFID in una matrice di 13 byte e li invia a TheThingsNetwork.
1_LDR.inoUtilizzando analogRead(), misura la quantità di tensione sul resistore dipendente dalla luce.
Questo viene quindi convertito in una percentuale di luce (0 è niente, 100 è una torcia del cellulare).
2_GPS.ino Utilizza la comunicazione seriale utilizzando TX1 e RX1 (Serial1).
Utilizza i messaggi NMEA (i messaggi $GPRMC per la precisione) per trovare la latitudine e la longitudine della casella.
3_RFID.inoUtilizzando la libreria MFRC522, questo codice esegue la scansione di nuovi tag RFID. Ogni volta che ne è presente uno, viene archiviato come RFID_lastUID.
4_DotMatrix.inoQuesto codice viene utilizzato per inizializzare e impostare la visualizzazione a matrice di punti. Contiene le definizioni per l'animazione di caricamento ecc.
Configurarlo
Prima di poter caricare questo codice sul tuo Arduino, dovrai installare alcune librerie.
La libreria Arduino-LMIC di matthijskooijman (https://github.com/matthijskooijman/arduino-lmic)
La libreria MFRC522 per il lettore RFID (https://github.com/miguelbalboa/rfid)
Ora vai su main.ino e cambia DEVEUI, APPEUI e APPKEY con quelli che hai copiato nell'ultimo passaggio.
Passaggio 6: configurazione del backend
Il backend per questo progetto può essere trovato sul mio GitHub, sotto RPI > Backend (https://github.com/BoussonKarel/CaptureTheBox).
Come funziona?
- Ogni 10 secondi, il codice cerca un gioco attivo. Se ne trova uno, viene salvato in una variabile chiamata huidigSpel (currentGame)
- Se la modalità è impostata su Seriale, viene utilizzato un cavo tra Arduino e Pi. Il Pi esegue il polling dei valori di LDR e GPS. L'Arduino risponde con un formato JSON. I tag RFID vengono inviati ogni volta che vengono presentati. Questa modalità è stata utilizzata esclusivamente per scopi di sviluppo e non è più necessaria.
- Se la modalità è impostata su LoRa, viene creato un client MQTT che attiva una richiamata ogni volta che i dati LoRa vengono ricevuti da TTN. Questo contiene dati LDR, GPS e RFID.
- Il frontend può recuperare i dati utilizzando gli endpoint API. La maggior parte dei dati viene recuperata utilizzando huidigSpel.id. I dati vengono restituiti in formato JSON utilizzando jsonify()
Modifica le impostazioniVai su secrets.py e inserisci il nome della tua applicazione LoRa e la tua chiave di accesso (che hai scritto prima).
Vai su config.py e inserisci le credenziali del tuo database (come password, utente…)
Configurarlo come servizio Prova a eseguire app.py, una volta confermato che funziona, possiamo usarlo come servizio. Questo avvierà automaticamente il codice in background quando avvii il tuo pi.
Per fare ciò, copia ctb_service.service in /etc/systemd/system/ctb_service.service. sudo cp ctb_service.service /etc/systemd/system/ctb_service.service
Ora abilitalo usando systemctl enable ctb_service.service
Se è necessario apportare alcune modifiche al codice, è possibile interromperlo facilmente utilizzando systemctl stop (questo si riavvierà al riavvio) o disable is (impedisce l'avvio automatico) utilizzando systemctl disable.
Se hai bisogno di consultare i log (a causa di errori), puoi usare journalctl -u ctb_service.service.
Maggiori informazioni sui servizi sono disponibili qui:
Passaggio 7: configurazione del frontend
Come al solito, il frontend può essere trovato sul mio GitHub, sotto RPI> Frontend (https://github.com/BoussonKarel/CaptureTheBox)
Incollalo nella cartella /var/html del tuo Raspberry Pi.
Questo contiene tutte le pagine web necessarie per il gioco.
Contiene anche uno script per comunicare con il backend (sia in tempo reale che utilizzando gli endpoint API).
Passaggio 8: aggiunta di un involucro
Per il caso, ho utilizzato una vecchia cassetta degli attrezzi, insieme ai seguenti materiali/tecniche:
- Stampa 3D
- Schiuma per mantenere la batteria in posizione
- Assi di legno riciclati
- Colla calda
- Viti e dadi
Quello che fai con il tuo caso è una tua scelta! Ti darò la libertà artistica.
Per ispirazione, ho aggiunto alcune foto del mio caso (finito).
Consigliato:
ESP32-CAM Cattura foto e invia tramite e-mail utilizzando la memoria SPIFF. --Nessuna scheda SD richiesta: 4 passaggi
ESP32-CAM Cattura foto e invia tramite e-mail utilizzando la memoria SPIFF. || Nessuna scheda SD richiesta: Ciao gente, la scheda ESP32-CAM è una scheda di sviluppo a basso costo che combina un chip ESP32-S, una fotocamera OV2640, diversi GPIO per collegare periferiche e uno slot per schede microSD. Ha una serie di applicazioni che vanno dal server web di streaming video, bu
Cattura e invia immagini con ESP32-Cam utilizzando ESP8266 WeMos D1 R1 Wifi Processor con Uno: 7 passaggi
Cattura e invia immagini con ESP32-Cam utilizzando ESP8266 WeMos D1 R1 Wifi Processor con Uno: acquisisci l'immagine utilizzando ESP32-Cam (OV2640) utilizzando ESP8266 WeMos D1 R1 WiFI Processor con Uno e invialo a e-mail, salva su Google Drive e invialo a Whatsapp utilizzando Twilio. Requisiti: Processore WiFI ESP8266 WeMos D1 R1 con Uno (https://protosupplies
EF 230 cattura il sole: 6 passaggi
EF 230 cattura il sole: questo Instructable descriverà in dettaglio come utilizzare un kit Arduino/scheda di circuito e MATLAB per creare un prototipo di sistema energetico domestico che si concentra sull'acquisizione di energia eolica e solare. Con i materiali appropriati e utilizzando il codice/configurazione fornito, puoi
[Robot Arduino] Come realizzare un robot per la cattura del movimento - Pollici Robot - Servomotore - Codice sorgente: 26 passaggi (con immagini)
[Robot Arduino] Come realizzare un robot per la cattura del movimento | Pollici Robot | Servomotore | Codice sorgente: Thumb Robot. Usato un potenziometro del servomotore MG90S. È molto divertente e facile! Il codice è molto semplice. Sono solo circa 30 linee. Sembra una cattura del movimento. Si prega di lasciare qualsiasi domanda o feedback! [Istruzioni] Codice sorgente https://github.c
Come utilizzare lo strumento di cattura su Windows 7: 7 passaggi
Come utilizzare lo strumento di cattura su Windows 7: aprire la finestra di cui si desidera uno screenshot