Πίνακας περιεχομένων:

Αποτυπώστε το κουτί: 8 βήματα
Αποτυπώστε το κουτί: 8 βήματα

Βίντεο: Αποτυπώστε το κουτί: 8 βήματα

Βίντεο: Αποτυπώστε το κουτί: 8 βήματα
Βίντεο: Αγιογραφία: τα σαρκώματα-ψιμμύθια και γραψίμματα 2024, Νοέμβριος
Anonim
Αποτυπώστε το κουτί
Αποτυπώστε το κουτί
Αποτυπώστε το κουτί
Αποτυπώστε το κουτί

Το Capture The Box είναι ένα παιχνίδι teambuilding που μπορείτε να παίξετε με φίλους στη γειτονιά σας.

Ο στόχος είναι να πιάσετε το κουτί και να το κρατήσετε στην κατοχή σας όσο το δυνατόν περισσότερο, ενώ άλλοι παίκτες προσπαθούν να πάνε και να γλιστρήσουν μακριά από τη βεράντα ή τον μπροστινό κήπο σας.

Αυτό το παιχνίδι χρησιμοποιεί GPS για τον εντοπισμό του κουτιού και ετικέτες RFID για τον εντοπισμό των παικτών. Ένα προαιρετικό LDR μπορεί να προστεθεί για να ταιριάζει με την ένταση της οθόνης κουκκίδων με το ποσοστό φωτός στην περιοχή.

Προμήθειες

Μικροελεγκτές και υπολογιστές

  • Raspberry Pi
  • Arduino (Mega) Διάλεξα ένα Arduino Mega από ένα κανονικό Uno, γιατί έχει πολύ περισσότερες καρφίτσες. Αυτό είναι απαραίτητο επειδή χρησιμοποιούμε ασπίδα Dragino LoRa, η οποία θα μας άφηνε με πολύ λίγες ψηφιακές ακίδες όταν χρησιμοποιούμε UNO. ΣΥΜΒΟΥΛΗ: Είναι καλύτερο να χρησιμοποιήσετε ένα γνήσιο, επειδή οι κινεζικοί κλώνοι δεν λειτουργούν πάντα όπως αναμενόταν.

Αισθητήρες και μονάδες

  • 4 μονάδες MAX7219 Dot MatrixΣύνδεση DOUT με DIN, CS σε CS, CLK σε CLK…
  • Αντίσταση εξαρτώμενης από το φως (10Κ) + Αντίσταση (10Κ)
  • NEO-7M (ή παρόμοια) μονάδα GPS Χρησιμοποιώ το VMA430 από το Velleman
  • RC522 RFID Module+ μερικά σήματα/κάρτες RFID

Για χρήση LoRa (ασύρματη τεχνολογία)

Dragino Lora Shield

Προαιρετικοί αισθητήρες και μονάδες

Οθόνη LCD Για την εμφάνιση της διεύθυνσης IP του Raspberry Pi

Για να κάνετε μια δοκιμαστική ρύθμιση

Μια πλάκα ψωμιού και καλώδια Dupont (αρσενικό-αρσενικό

Προαιρετικό (περίβλημα)

  • Συγκολλητικό σίδερο
  • Μια παλιά θήκη εργαλείων
  • Υλικά για τρισδιάστατη εκτύπωση
  • Μερικές λεπτές ξύλινες σανίδες
  • Μερικά μπουλόνια και παξιμάδια (που μπορούν να χωρέσουν στις οπές Arduino). Οι βίδες μου έχουν διάμετρο περίπου 3mm.

Μια εκτιμώμενη τιμή μπορείτε να βρείτε στο BOM (Bill of Materials), που περιλαμβάνεται παρακάτω.

Βήμα 1: Ρύθμιση του Raspberry Pi

Το Raspberry Pi είναι η καρδιά του Έργου.

Θα τρέξει το frontend, το backend και τη βάση δεδομένων. Θα είναι επίσης υπεύθυνο για την επικοινωνία μεταξύ του backend και του Arduino.

Για να χρησιμοποιήσουμε το Raspberry Pi, θα πρέπει να κάνουμε τα εξής:

Μέρος 1: Εγκαταστήστε το Raspbian σε ένα Raspberry Pi

Ένα σεμινάριο για το πώς να το κάνετε αυτό μπορείτε να βρείτε εδώ:

Μέρος 2: Εγκαταστήστε το Raspbian σε ένα Raspberry Pi Ρυθμίστε το WiFi του σπιτιού σας.

Αυτό μπορεί να γίνει χρησιμοποιώντας wpa_passphrase "YourNetwork" "YourSSID" >> /etc/wpa_supplicant/wpa_supplicant.conf

Επανεκκινήστε το Pi και θα πρέπει να δείτε μια διεύθυνση IP όταν πληκτρολογείτε το ifconfig

Μέρος 3: Εγκαταστήστε τον διακομιστή ιστού και τη βάση δεδομένων

Μόλις τεθεί σε λειτουργία το Pi σας, είναι καλύτερο να αλλάξετε τον κωδικό πρόσβασής σας. Αυτό μπορεί να γίνει με την εντολή passwd.

Μόλις γίνει αυτό, προχωρήστε και εγκαταστήστε Apache, PHP, MariaDB και 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 επανεκκίνηση apache2.service

PHPMyAdminsudo apt install phpmyadmin -y

Μην ξεχάσετε να ορίσετε έναν ασφαλή κωδικό πρόσβασης MySQL.

Μέρος 4: Εγκατάσταση των απαραίτητων βιβλιοθηκών Python

Για το backend, θα χρειαστούμε κάποιες βιβλιοθήκες. Αυτά μπορούν να εγκατασταθούν χρησιμοποιώντας την εντολή pip3.

pip3 εγκαταστήστε mysql-connector-python

pip3 install flask-socketio

pip3 εγκαταστήστε φιάλη-κορμούς

pip3 install geventpip3 install gevent-websocket

pip3 εγκατάσταση ttn

Βήμα 2: Τοποθέτηση των ηλεκτρονικών

Τοποθέτηση των ηλεκτρονικών
Τοποθέτηση των ηλεκτρονικών
Τοποθέτηση των ηλεκτρονικών
Τοποθέτηση των ηλεκτρονικών

Για να λειτουργήσει αυτό το έργο, πρέπει να συνδέσουμε όλα τα ηλεκτρονικά.

Η ασπίδα LoRa μπορεί εύκολα να τοποθετηθεί. Απλώς ευθυγραμμίστε τις καρφίτσες με τις καρφίτσες στο Arduino σας.

Οι άλλες συνδέσεις περιγράφονται στο σχήμα μου Fritzing. Τα οποία μπορείτε να κατεβάσετε εδώ:

Βήμα 3: Σχεδιασμός της βάσης δεδομένων

Σχεδιασμός της βάσης δεδομένων
Σχεδιασμός της βάσης δεδομένων

Για να μπορέσω να αποθηκεύσω όλα τα δεδομένα του παιχνιδιού και των αισθητήρων, έφτιαξα μερικούς πίνακες:

μετρήσεις και αισθητήρας Οι μετρήσεις από τους αισθητήρες, που βρίσκονται στους πίνακες αισθητήρων. Περιέχει μια αναφορά στον αισθητήρα, την τιμή της μέτρησης (π.χ. συντεταγμένες: 51.123456; 3.123456) και ένα προαιρετικό αναγνωριστικό παιχνιδιού (εάν ένα παιχνίδι ήταν ενεργό κατά τη μέτρηση) Το

spelerΤα ονόματα των παικτών και το UID του σήματος RFID. Προστίθεται ένας προαιρετικός συντονιστής πεδίου, ο οποίος μπορεί να τροποποιήσει το παιχνίδι (π.χ. να το διακόψει πριν από την ώρα).

spelΟι πληροφορίες παιχνιδιού (ώρα έναρξης και λήξης).

spel_has_spelerΗ σχέση μεταξύ spel και speler. Αυτό είναι όπου οι παίκτες ανατίθενται σε ένα παιχνίδι.

bezitΣε αυτόν τον πίνακα, το σκορ αποθηκεύεται. Περιέχει το αναγνωριστικό παιχνιδιού, το αναγνωριστικό παίκτη, τον χρόνο που έκλεψε το κουτί και τον χρόνο που το έχασε (όταν κάποιος άλλος το κλέψει ή όταν τελειώσει το παιχνίδι). Αφαιρώντας την ώρα έναρξης από την ώρα λήξης, μπορείτε να υπολογίσετε τη βαθμολογία που πήρε από εκείνη τη σύλληψη.

Μπορείτε να βρείτε εξαγωγή της βάσης δεδομένων στο GitHub μου (https://github.com/BoussonKarel/CaptureTheBox)

Ανοίξτε το sql στο PHPMyAdmin / MySQL Workbench και εκτελέστε το. Η βάση δεδομένων πρέπει τώρα να εισαχθεί.

Βήμα 4: Δημιουργία λογαριασμού στο TTN

Βήμα 1: Εγγραφείτε για λογαριασμό στο TTN και δημιουργήστε μια εφαρμογή

Εγγραφείτε για λογαριασμό στο TheThingsNetwork και μετά μεταβείτε στην επιλογή Κονσόλα> Προσθήκη εφαρμογής.

Επιλέξτε ένα όνομα για την εφαρμογή σας και κάντε κλικ στην επιλογή Προσθήκη εφαρμογής.

Βήμα 2: Καταχωρήστε μια συσκευή

Όταν υποβάλετε την αίτησή σας, μεταβείτε στην επιλογή Εγγραφή συσκευής.

Επιλέξτε ένα αναγνωριστικό συσκευής, αυτό μπορεί να είναι ό, τι θέλετε (αρκεί να είναι θήκη φιδιού) και κάντε κλικ στην επιλογή Εγγραφή.

Κάντε κλικ στο εικονίδιο Δημιουργία κάτω από το Device EUI, ώστε το TTN να δημιουργήσει ένα για εσάς.

Βήμα 3: Καταγράψτε τα διαπιστευτήριά σας

Τώρα μεταβείτε στη Συσκευή σας και κάντε κλικ στο εικονίδιο Κωδικός δίπλα στο Συσκευή EUI, Εφαρμογή EUI και Κλειδί εφαρμογής. Θα πρέπει τώρα να εμφανίζεται ως πίνακας byte.

Πριν από την αντιγραφή, κάντε κλικ στο κουμπί Εναλλαγή και βεβαιωθείτε ότι το Dev EUI και η εφαρμογή EUI σας είναι LSB FIRST.

Το κλειδί εφαρμογής σας θα πρέπει να παραμείνει MSB FIRST (μην το αλλάξετε).

Θα χρειαστείτε αυτά τα κλειδιά στο επόμενο βήμα: Ρύθμιση του Arduino.

Βήμα 4: Καταγράψτε το κλειδί πρόσβασης στην εφαρμογή σας

Τώρα θα χρειαστούμε ένα ακόμη κλειδί για να ρυθμίσουμε το MQTT στο Raspberry Pi.

Μεταβείτε στην εφαρμογή σας και μετακινηθείτε προς τα κάτω στα πλήκτρα πρόσβασης.

Θα το χρειαστείτε στο βήμα Backend.

Βήμα 5: Ρύθμιση του Arduino

Ο κώδικας Arduino μπορεί επίσης να βρεθεί στο GitHub μου, κάτω από το Arduino (https://github.com/BoussonKarel/CaptureTheBox)

Αυτός ο κώδικας χωρίζεται σε πολλές καρτέλες, για να διατηρείται οργανωμένος.

main.inoΟ κύριος κωδικός: δηλώσεις pin, setup () και loop ()

0_LoRa.inoΑυτός ο κωδικός χειρίζεται την επικοινωνία χρησιμοποιώντας το LoRa.

Βάζει τα δεδομένα των ετικετών LDR, GPS και RFID σε μια σειρά 13 byte και τα στέλνει στο TheThingsNetwork.

1_LDR.inoΧρησιμοποιώντας το analogRead (), μετρά την ποσότητα τάσης στην αντίσταση που εξαρτάται από το φως.

Στη συνέχεια μετατρέπεται σε ποσοστό φωτός (0 δεν είναι τίποτα, 100 είναι φακός κινητού τηλεφώνου).

2_GPS.inoΑυτή χρησιμοποιεί σειριακή επικοινωνία χρησιμοποιώντας TX1 και RX1 (Serial1).

Χρησιμοποιεί μηνύματα NMEA (τα μηνύματα $ GPRMC για την ακρίβεια) για να βρει το γεωγραφικό πλάτος και το γεωγραφικό μήκος του κουτιού.

3_RFID.inoΧρησιμοποιώντας τη βιβλιοθήκη MFRC522, αυτός ο κώδικας σαρώνει για νέες ετικέτες RFID. Κάθε φορά που υπάρχει, αποθηκεύεται ως RFID_lastUID.

4_DotMatrix.inoΑυτός ο κωδικός χρησιμοποιείται αρχικοποίηση και ρύθμιση της οθόνης κουκκίδων. Περιλαμβάνει ορισμούς για τη φόρτωση κινούμενων εικόνων κλπ…

Στήνοντας το

Προτού μπορέσετε να ανεβάσετε αυτόν τον κώδικα στο Arduino σας, θα χρειαστεί να εγκαταστήσετε μερικές βιβλιοθήκες.

Η βιβλιοθήκη Arduino-LMIC από τον matthijskooijman (https://github.com/matthijskooijman/arduino-lmic)

Η βιβλιοθήκη MFRC522 για τον αναγνώστη RFID (https://github.com/miguelbalboa/rfid)

Τώρα, μεταβείτε στο main.ino και αλλάξτε το DEVEUI, το APPEUI και το APPKEY σε αυτά που αντιγράψατε το τελευταίο βήμα.

Βήμα 6: Ρύθμιση του Backend

Το backend για αυτό το έργο μπορείτε να το βρείτε στο GitHub μου, στο πλαίσιο RPI> Backend (https://github.com/BoussonKarel/CaptureTheBox).

Πώς λειτουργεί;

  1. Κάθε 10 δευτερόλεπτα, ο κώδικας αναζητά ενεργό παιχνίδι. Εάν βρεθεί, αποθηκεύεται σε μια μεταβλητή που ονομάζεται huidigSpel (currentGame)
  2. Εάν η λειτουργία έχει οριστεί σε Serial, χρησιμοποιείται ένα καλώδιο μεταξύ του Arduino και του Pi. Το Pi ψηφίζει για τις τιμές του LDR και του GPS. Το Arduino ανταποκρίνεται με μορφή JSON. Οι ετικέτες RFID αποστέλλονται όποτε παρουσιάζονται. Αυτή η λειτουργία χρησιμοποιήθηκε αποκλειστικά για σκοπούς ανάπτυξης και δεν είναι πλέον απαραίτητη πλέον.
  3. Εάν η λειτουργία έχει οριστεί σε LoRa, δημιουργείται ένα πρόγραμμα -πελάτης MQTT που ενεργοποιεί μια επανάκληση κάθε φορά που τα δεδομένα LoRa λαμβάνονται από το TTN. Περιέχει δεδομένα LDR, GPS και RFID.
  4. Το frontend μπορεί να ανακτήσει δεδομένα χρησιμοποιώντας τα τελικά σημεία API. Τα περισσότερα από τα δεδομένα ανακτώνται χρησιμοποιώντας το huidigSpel.id. Τα δεδομένα επιστρέφονται σε μορφή JSON χρησιμοποιώντας jsonify ()

Τροποποιήστε τις ρυθμίσεις Μεταβείτε στα secrets.py και συμπληρώστε το όνομα της εφαρμογής LoRa και το κλειδί πρόσβασης (γράψατε νωρίτερα).

Μεταβείτε στο config.py και συμπληρώστε τα διαπιστευτήριά σας στη βάση δεδομένων (όπως κωδικός πρόσβασης, χρήστης …)

Δοκιμάστε να εκτελέσετε το app.py, αφού επιβεβαιώσετε ότι λειτουργεί, μπορούμε να το χρησιμοποιήσουμε ως υπηρεσία. Αυτό θα ξεκινήσει αυτόματα τον κώδικα στο παρασκήνιο κατά την εκκίνηση του pi σας.

Για να το κάνετε αυτό, αντιγράψτε το ctb_service.service στο /etc/systemd/system/ctb_service.service. sudo cp ctb_service.service /etc/systemd/system/ctb_service.service

Τώρα ενεργοποιήστε το χρησιμοποιώντας το systemctl enable ctb_service.service

Εάν πρέπει να κάνετε κάποιες αλλαγές στον κώδικα, μπορείτε εύκολα να τον σταματήσετε χρησιμοποιώντας το systemctl stop (αυτό θα ξεκινήσει ξανά κατά την επανεκκίνηση) ή απενεργοποιήστε το (σταματήστε να ξεκινά αυτόματα) χρησιμοποιώντας το systemctl απενεργοποίηση.

Εάν πρέπει να συμβουλευτείτε τα αρχεία καταγραφής (λόγω σφαλμάτων), μπορείτε να χρησιμοποιήσετε το journalctl -u ctb_service.service.

Περισσότερες πληροφορίες για τις υπηρεσίες μπορείτε να βρείτε εδώ:

Βήμα 7: Ρύθμιση του Frontend

Ως συνήθως, το frontend μπορεί να βρεθεί στο GitHub μου, στο πλαίσιο RPI> Frontend (https://github.com/BoussonKarel/CaptureTheBox)

Επικολλήστε το στο φάκελο /var /html του Raspberry Pi.

Περιέχει όλες τις απαραίτητες ιστοσελίδες για το παιχνίδι.

Περιέχει επίσης ένα σενάριο επικοινωνίας με το backend (τόσο σε πραγματικό χρόνο όσο και χρησιμοποιώντας τα τελικά σημεία API).

Βήμα 8: Προσθήκη περιβλήματος

Προσθήκη περιβλήματος
Προσθήκη περιβλήματος
Προσθήκη περιβλήματος
Προσθήκη περιβλήματος

Για την περίπτωση, χρησιμοποίησα μια παλιά θήκη εργαλείων, μαζί με τα ακόλουθα υλικά/τεχνικές:

  • Τρισδιάστατη εκτύπωση
  • Αφρός για τη διατήρηση της μπαταρίας στη θέση του
  • Ανακυκλωμένες ξύλινες σανίδες
  • Ζεστή κόλλα
  • Βίδες και παξιμάδια

Αυτό που κάνετε με τη θήκη σας είναι δική σας επιλογή! Θα σας δώσω καλλιτεχνική ελευθερία.

Για έμπνευση, πρόσθεσα μερικές φωτογραφίες της (τελειωμένης) θήκης μου.

Συνιστάται: