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

Διαδραστικό Minecraft Do Not Enter Sword/Sign (ESP32-CAM): 15 βήματα (με εικόνες)
Διαδραστικό Minecraft Do Not Enter Sword/Sign (ESP32-CAM): 15 βήματα (με εικόνες)

Βίντεο: Διαδραστικό Minecraft Do Not Enter Sword/Sign (ESP32-CAM): 15 βήματα (με εικόνες)

Βίντεο: Διαδραστικό Minecraft Do Not Enter Sword/Sign (ESP32-CAM): 15 βήματα (με εικόνες)
Βίντεο: Minecraft Live 2020: Full Show 2024, Ιούλιος
Anonim
Image
Image
Τελικό προϊόν
Τελικό προϊόν

Υπάρχουν πραγματικά πολλοί λόγοι για τους οποίους δημιουργήθηκε αυτό το έργο:

1. Ως συγγραφέας της συνεργατικής βιβλιοθήκης πολλαπλών εργασιών TaskScheduler ήμουν πάντα περίεργος πώς να συνδυάσω τα οφέλη της συνεργατικής πολυεργασίας με τα οφέλη της προληπτικής. Και τα δύο έχουν οφέλη και τα δύο έχουν ελλείψεις. Ο συνδυασμός των δύο επιτρέπει μια μοναδική ευκαιρία να αξιοποιήσετε τα οφέλη και να μειώσετε τα ζητήματα είτε με βάση μια συγκεκριμένη περίπτωση χρήσης. Ενδιαφέρων? Συνέχισε να διαβάζεις…

2. Το ίδιο το γεγονός ότι το ESP32 είναι ένας πολυ-πυρήνας μικροελεγκτής είναι συναρπαστικό. Alwaysμουν πάντα περίεργος αν μπορώ να εκμεταλλευτώ αυτήν τη δυνατότητα. Έτσι, το πείραμα εδώ ήταν: μπορεί το ESP32 να μεταδώσει βίντεο ομαλά χρησιμοποιώντας τον έναν πυρήνα ενώ κάνει κάτι άλλο (ουσιαστικό και εύλογα εντατικό κάτι άλλο) στον άλλο πυρήνα. Ακόμα πιο ενδιαφέρον;; Συνέχισε να διαβάζεις…!

3. Χρειαζόμουν ένα πεδίο δοκιμών για τα πρόσφατα έργα μου σχετικά με την παροχή και διαχείριση διαμόρφωσης υλικολογισμικού OTA…

4. Είχα αγοράσει δύο μονάδες LED Dot Matrix πριν από λίγο καιρό και δεν μπορούσα να καταλάβω τι να κάνω με αυτές…

5. Ο γιος μου είναι παίκτης του Minecraft και όπως κάθε μικρό αγόρι λατρεύει να στολίζει την πόρτα του με αφίσες "Μην μπαίνεις"…

Ορίστε λοιπόν - όλοι οι καλοί λόγοι για: Interactive Do Not Enter πόρτα με ESP32 -CAM ροή μιας ροής βίντεο "από πίσω από την κλειστή πόρτα" - ή "Ποιος έρχεται στο δωμάτιό μου;"

Λοιπόν … για τι πρόκειται;

Εάν έχετε την υπομονή να διαβάσετε ολόκληρη την ιστορία, συνειδητοποιείτε ότι αυτό δεν πρόκειται πραγματικά για ένα σπαθί Minecraft. Αυτό το έργο είναι μια απόδειξη πολλών εννοιών:

  • Συνύπαρξη προληπτικών και συνεργατικών πολλαπλών εργασιών
  • Επιλεκτική χρήση πυρήνων ESP32
  • Χρήση νέων βιβλιοθηκών λεξικού και EspBootstrap
  • Παροχή υλικολογισμικού OTA
  • Διαχείριση διαμόρφωσης
  • Ροή βίντεο σε πολλούς πελάτες

και πολλά άλλα.

Απολαμβάνω

Προμήθειες

  • ESP32-CAM
  • MAX7219 Dot Matrix Module 4-in-1 LED Display Module Geekcreit for Arduino
  • Power Bank Attom Tech 2500mAh

Βήμα 1: Τελικό προϊόν

Τελικό προϊόν
Τελικό προϊόν

Θα ξεκινήσω με το πώς φαίνεται το τελικό προϊόν και στη συνέχεια θα εξηγήσω πώς κατασκευάστηκε και πώς να το ελέγξω.

Φαίνεται πιο συναρπαστικό με αυτόν τον τρόπο…

Βήμα 2: Προσωποθήκη ξίφους

Ξιφασκία
Ξιφασκία
Ξιφασκία
Ξιφασκία

Η πρόσοψη του σπαθιού είναι κατασκευασμένη από τον πίνακα, σημειωμένη με ένα μολύβι και χρωματισμένη με δείκτες Crayola. Αυτό από μόνο του θα μπορούσε να είναι ένα ενδιαφέρον έργο με το παιδί σας:

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

Έχω συμπεριλάβει ένα ανοιχτό έγγραφο γραφείου με ένα δείγμα εικόνας από ένα διαμαντένιο σπαθί που μπορείτε να κολλήσετε επάνω στον πίνακα αν προτιμάτε συντομεύσεις … Μόλις γίνουν όλα, μπορείτε είτε να κολλήσετε θερμά την πρόσοψη στο υπόλοιπο συγκρότημα είτε να χρησιμοποιήσετε διπλό- μονόπλευρη ταινία.

Βήμα 3: Οθόνη LED Dot Matrix

Οθόνη LED Dot Matrix
Οθόνη LED Dot Matrix
Οθόνη LED Dot Matrix
Οθόνη LED Dot Matrix
Οθόνη LED Dot Matrix
Οθόνη LED Dot Matrix

Είχα 2 από αυτά, 4 τμήματα το καθένα, οπότε αποφάσισα να φτιάξω ένα από 8 τμήματα.

Βολικά υπάρχει μια αρσενική κεφαλίδα 5 ακίδων στη μία πλευρά και αντιστοιχεί σε 5 οπές στην αντίθετη πλευρά. Λυγίζοντας την αντρική κεφαλίδα σε σχήμα συρραφής], μπόρεσα να συνδέσω τις δύο μονάδες τόσο ηλεκτρικά όσο και μηχανικά! Σκότωσε δύο πουλιά με μια πέτρα (ή δύο μύγες με ένα σπάτουλα, να σταματήσουν δύο στόματα με ένα μπουκάλι, να κάνουν δύο φίλους με ένα δώρο, να έχουν δύο χορδές σε ένα τόξο, ποια είναι τα άλλα ιδιώματα σε αυτό το θέμα - σκέφτηκες; Συγγνώμη, αποτραβήχθηκα).

Η αντίθετη αρσενική κεφαλίδα θα χρησιμοποιηθεί για τη σύνδεση μιας ταιριαστής γυναικείας κεφαλίδας από το veroboard με το ESP32-Cam και άλλα εξαρτήματα.

Τα δύο εξαρτήματα συνδέονται με μια γέφυρα τρισδιάστατης εκτύπωσης, η οποία διαθέτει επίσης έναν διακόπτη για να ενεργοποιήσετε και να απενεργοποιήσετε. Τα αρχεία 3d STL για γέφυρα και άλλα εξαρτήματα βρίσκονται στο φάκελο αρχείων/τρισδιάστατων στοιχείων στο GitHub.

Βήμα 4: Ισχύς

Εξουσία
Εξουσία

Το Sword τροφοδοτείται από τροφοδοτικό USB 2500 mAh - το μικρότερο και λεπτότερο που θα μπορούσα να βρω. Το Powerbank μεταφέρεται σε μια θήκη με τρισδιάστατη εκτύπωση, η οποία προσαρτάται επίσης στις μονάδες dot matrix, συγκρατώντας έτσι ολόκληρο το αντικείμενο μαζί.

Υπάρχουν δύο στρογγυλοί μαγνήτες κολλημένοι στη θήκη του power bank και έτσι το σπαθί είναι προσαρτημένο στην πόρτα (έτσι θα μπορούσε να αποκολληθεί τόσο εύκολα για συντήρηση).

Βήμα 5: Σχηματικό

Σχηματικός
Σχηματικός
Σχηματικός
Σχηματικός
Σχηματικός
Σχηματικός

Το πραγματικό σχήμα βρίσκεται στο GitHub, αλλά μια εικόνα αξίζει 1000 λέξεις (1024 στην Πληροφορική), οπότε εδώ είστε:

Αυτό είναι αρκετά απλό εάν γνωρίζετε τον τρόπο με ένα πιστόλι συγκόλλησης. ΣΗΜΕΙΩΣΗ: Το τρισδιάστατο τμήμα γέφυρας έχει σχεδιαστεί για ένα πολύ συγκεκριμένο μέγεθος veroboard: 30 x 70 mm. Εάν αποφασίσετε να χρησιμοποιήσετε ένα διαφορετικό, πρέπει να επανασχεδιάσετε το εξάρτημα γέφυρας.

Βήμα 6: Τρισδιάστατη εκτύπωση

Τρισδιάστατη εκτύπωση
Τρισδιάστατη εκτύπωση
Τρισδιάστατη εκτύπωση
Τρισδιάστατη εκτύπωση
Τρισδιάστατη εκτύπωση
Τρισδιάστατη εκτύπωση

Η θήκη της μπαταρίας και μια γέφυρα που συνδέει το veroboard ESP32-CAM με το συγκρότημα οθόνης dot-matrix σχεδιάστηκαν και εκτυπώθηκαν 3d.

Η θήκη της μπαταρίας διατίθεται σε 2 μέρη, τα οποία πρέπει να κολληθούν μεταξύ τους μετά την εκτύπωση για να δημιουργηθεί μια "τσέπη" για την μπαταρία. Η γέφυρα πρέπει απλώς να καθαριστεί από όλες τις δομές στήριξης (δυστυχώς δεν υπάρχει καλός προσανατολισμός που να τις ελαχιστοποιεί). Τα αρχεία STL βρίσκονται στο GitHub και τα πρωτότυπα TinkerCad βρίσκονται εδώ.

Ο τρισδιάστατος σχεδιασμός στο TinkerCad περιλαμβάνει επίσης το σχηματικό σχήμα προσομοίωσης του τρόπου με τον οποίο τα μέρη ταιριάζουν μεταξύ τους και πρέπει να συνδεθούν.

Βήμα 7: Προγραμματισμός

Πολλαπλές εργασίες

Αυτός ο σχεδιασμός χρησιμοποιεί το FreeRTOS για προληπτικές πολλαπλές εργασίες και τη βιβλιοθήκη TaskScheduler για συνεργατική. Η συμπεριφορά και τα μηνύματα του Sword ελέγχονται μέσω της εφαρμογής Blynk. Μετά τη ρύθμιση (καρφίτσες, προετοιμασία κάμερας και κουκκίδας, σύνδεση με WiFi κ.λπ.), δημιουργούνται δύο κύριες εργασίες RTOS:

  • Εργασία ροής βίντεο RTOS, καρφιτσωμένη στον πυρήνα εφαρμογών του ESP32 (πυρήνας 1)
  • Εμφάνιση κειμένου και έλεγχος Blynk εργασίας RTOS, καρφιτσωμένη στο Power Core του ESP32 (πυρήνας 0), η οποία είναι επίσης υπεύθυνη για όλες τις εργασίες που σχετίζονται με το WiFi. Η διαχείριση της εκτέλεσης κειμένου και του Blynk γίνεται μέσω εργασιών TaskScheduler.

Διαπίστωσα ότι 4K χώρου στοίβας είναι αρκετά για εργασίες RTOS, αλλά υπάρχει πιθανότητα να εξαντληθεί η στοίβα, οπότε αν προτιμάτε, κάντε το 8K - υπάρχει αρκετή μνήμη RAM στο ESP32.

Όλη η λήψη και η ροή βίντεο πραγματοποιείται στο Core 1. Όλα τα άλλα - στον Core 0.

Το ESP32 έχει αρκετή δύναμη για να το χειριστεί όλο αυτό με λίγο ιδρώτα (ο πίνακας ζεσταίνεται κατά τη ροή βίντεο).

ΑΥΤΟΣ ήταν ο κύριος στόχος του έργου: ειρηνική και παραγωγική συνύπαρξη προληπτικών και συνεργατικών πολλαπλών εργασιών!

Βήμα 8: Έλεγχος μήτρας κουκκίδων

Χρησιμοποιώ πολύ ισχυρές βιβλιοθήκες MD_Parola και MD_MAX72xx, επίσης διαθέσιμες στο Arduino IDE Library manager.

Όλα τα ειδικά εφέ κειμένου γίνονται μέσω αυτών των βιβλιοθηκών. Χρειάστηκε λίγη προσπάθεια για να προσδιοριστεί ο σωστός τύπος υλικού MAX72XX (MD_MAX72XX:: ICSTATION_HW στην περίπτωσή μου, η δική σας μπορεί να είναι διαφορετική), μετά από αυτό, ο έλεγχος κειμένου είναι ένα αεράκι.

Το σπαθί επιτρέπει τα ακόλουθα χειριστήρια:

  • Λάμψη
  • Αναβοσβήνει
  • Λάμψη
  • Κύλιση ταχύτητας και κατεύθυνσης (πάνω/κάτω, αριστερά/δεξιά, σταθερά)
  • Μπορείτε επίσης να το μετατρέψετε σε ρολόι τοίχου

Βήμα 9: Ροή βίντεο

Η εφαρμογή Blynk διαθέτει ένα μικρό widget για ροή βίντεο, αλλά μπορείτε να κάνετε ροή στο πρόγραμμα περιήγησης, στη συσκευή αναπαραγωγής VLC ή σε οτιδήποτε υποστηρίζει το πρότυπο MJPEG.

Υποστηρίζονται έως και 10 συνδεδεμένοι πελάτες.

Θα πρέπει να μάθετε τη διεύθυνση IP του ESP32-CAM για να μπορέσετε να συνδεθείτε σε αυτήν. Μπορείτε να το αναζητήσετε στο δρομολογητή σας ή να συντάξετε αυτό το σκίτσο με την επιλογή _DEBUG_ πρώτα ενεργοποιημένη και να διαβάσετε τη διεύθυνση IP του τερματικού όταν συνδέεται στο δίκτυό σας.

ΣΗΜΑΝΤΙΚΟ: Είναι πολύ σκόπιμο να εκχωρήσετε μια μόνιμη διεύθυνση IP ή να δημιουργήσετε μια κράτηση DHCP για τη μονάδα ESP32-CAM, ώστε η διεύθυνσή της να μην αλλάξει όταν λήξει η μίσθωση. Μπορείτε επίσης να τροποποιήσετε την εφαρμογή Blynk για να ενημερώσετε τη διεύθυνση IP στη διεύθυνση ροής - μια ενδιαφέρουσα εργασία για το σπίτι, αν είστε έτοιμοι.

Το τρέχον σκίτσο χρησιμοποιεί ανάλυση QVGA: 320x240 εικονοστοιχεία, γεγονός που το καθιστά αρκετά γρήγορο. Είστε ελεύθεροι και ενθαρρύνεστε να παίξετε με άλλες αναλύσεις και να αποφασίσετε τι λειτουργεί για εσάς.

Η μνήμη RAM δεν πρέπει να αποτελεί πρόβλημα καθώς το σκίτσο εκμεταλλεύεται το PSRAM.

Βήμα 10: Διαμόρφωση

Το σκίτσο εκμεταλλεύεται τις βιβλιοθήκες του Λεξικού και του EspBootstrap για να φορτώσει τις παραμέτρους διαμόρφωσης από τον διακομιστή διαμόρφωσης κατά την εκκίνηση.

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

Μπορείτε επίσης να χρησιμοποιήσετε οποιαδήποτε από τις διαθέσιμες διαδικτυακές υπηρεσίες για την εργασία: (OTADrive, Microsoft Azure, AWS IoT κ.λπ.). Σε αυτήν την περίπτωση, αλλάξτε τη μέθοδο String makeConfig (διαδρομή συμβολοσειράς) για να δημιουργήσετε κατάλληλα μια διεύθυνση URL που δείχνει την πηγή διαμόρφωσής σας. Εναλλακτικά, μπορείτε να αποθηκεύσετε το αρχείο ρύθμισης παραμέτρων στο σύστημα αρχείων SPIFFS στο ESP32-CAM και να το διαβάσετε από εκεί ή απλώς να κάνετε σκληρό κώδικα όλες τις καταχωρήσεις. Ανατρέξτε στο README της βιβλιοθήκης EspBootstrap για τις επιλογές σας.

Ένα παράδειγμα αρχείου διαμόρφωσης παρέχεται στο GitHub.

Εάν προτιμάτε τις παραμέτρους σκληρού κώδικα, ένα παράδειγμα είναι παρακάτω:

pd ("Title", "DND Sword Setup");

pd ("ssid", "your wifi ssid"); pd ("κωδικός πρόσβασης", "ο κωδικός πρόσβασης wifi"); pd ("msg", "Hello!"); pd ("devices", "8"); pd ("blynk_auth", "your blynk AUTH UUID"); // εάν εκτελείτε μόνο τον δικό σας διακομιστή: pd ("blynk_host", "ο διακομιστής IP του blynk"); pd ("blynk_port", "η θύρα του διακομιστή σας");

Βήμα 11: Ενημερώσεις υλικολογισμικού OTA

Το σκίτσο είναι επίσης ενεργοποιημένη η ενημέρωση υλικολογισμικού OTA (Over The Air) και ελέγχει για νέο υλικολογισμικό σε κάθε εκκίνηση.

Και πάλι, τρέχω τον δικό μου διακομιστή ενημέρωσης OTA, τον οποίο μπορείτε να κάνετε και εσείς (είναι ένας απλός διακομιστής ιστού Apache2 με λίγο σενάριο PHP που εξυπηρετεί δυαδικά αρχεία).

Μπορείτε επίσης να χρησιμοποιήσετε οποιαδήποτε από τις διαδικτυακές υπηρεσίες IoT που είναι διαθέσιμες για την εργασία: (OTADrive, Microsoft Azure, AWS IoT, κ.λπ.). Σε αυτήν την περίπτωση, αλλάξτε τη μέθοδο ελέγχου άκυρου ελέγχου () για να δημιουργήσετε κατάλληλα μια διεύθυνση URL ενημέρωσης που δείχνει την πηγή δυαδικού αρχείου.

Αυτό είναι προαιρετικό - μπορείτε να επιλέξετε να ανεβάσετε απλά δυαδικά μέσω σειριακής σύνδεσης.

Βήμα 12: Διακομιστής MJPEG

Αυτό το θέμα περιγράφεται λεπτομερώς εδώ.

Βήμα 13: Εφαρμογή Blynk

Εφαρμογή Blynk
Εφαρμογή Blynk
Εφαρμογή Blynk
Εφαρμογή Blynk
Εφαρμογή Blynk
Εφαρμογή Blynk

Το Blynk είναι μια πλατφόρμα IoT που βασίζεται σε σύννεφο και επιτρέπει γρήγορη ανάπτυξη εφαρμογών. Είναι δωρεάν για προσωπική χρήση και έχει ακόμη την επιλογή να τρέχετε τον δικό σας διακομιστή Blynk.

Εγώ (όπως ίσως ήδη μαντέψατε) τρέχω τον δικό μου διακομιστή Blynk, αλλά μπορεί να είναι ευκολότερο για εσάς να χρησιμοποιήσετε την έκδοση cloud. Εγκαταστήστε την εφαρμογή Blynk iOS ή Android και ακολουθήστε τις παρακάτω εικόνες για να ανακατασκευάσετε την εφαρμογή στο τηλέφωνό σας.

Θα χρειαστεί να παράσχετε το δικό σας BUYNU BUYN Buth για να λειτουργεί η εφαρμογή με την εφαρμογή σας. Αυτός είναι ο λόγος για τον οποίο χρησιμοποιώ αρχεία διαμόρφωσης. Ωστόσο, για ένα εφάπαξ έργο, μια σκληρή κωδικοποιημένη τιμή θα λειτουργούσε εξίσου καλά.

ΣΗΜΑΝΤΙΚΟ: Βεβαιωθείτε ότι το έργο Blynk έχει οριστεί σε Ειδοποίηση συσκευών όταν συνδέεται η εφαρμογή.

ΣΗΜΕΙΩΣΗ για το γραφικό στοιχείο ροής βίντεο: μερικές φορές το βίντεο δεν ξεκινά. Δεν φαίνεται να είναι πρόβλημα με το ESP32, αλλά με το γραφικό στοιχείο βίντεο της εφαρμογής Blynk. Δοκιμάστε να κλείσετε και να ανοίξετε ξανά την εφαρμογή ή να σταματήσετε/ξεκινήσετε ξανά το έργο. Τελικά, αρχίζει. Αυτό το πρόβλημα δεν φαίνεται να υπάρχει στο πρόγραμμα περιήγησης ή στη συσκευή αναπαραγωγής VLC (για παράδειγμα).

Βήμα 14: Απολαύστε

Funταν πολύ διασκεδαστικό να δημιουργείται αυτό και να αποδεικνύεται ότι μια συσκευή μεγέθους ταχυδρομικής κάρτας όπως το ESP32 μπορεί να κάνει πολλά περισσότερα από τη ροή βίντεο. Πολλές έννοιες από αυτό το έργο θα μπορούσαν να επαναχρησιμοποιηθούν σε άλλες εφαρμογές.

Βήμα 15: Βιβλιοθήκες και κώδικας

Βιβλιοθήκες:

  • Διακομιστής Blynk
  • Βιβλιοθήκη EspBootstrap
  • Βιβλιοθήκη TaskScheduler
  • Λεξικό βιβλιοθήκη
  • Βιβλιοθήκη μήτρας LED
  • Βιβλιοθήκη για οθόνες κυλιόμενης οθόνης κειμένου μήτρας

Πραγματικό αποθετήριο:

Minecraft Interactive Do Not Enter Sword/Sign (ESP32-CAM)

Συνιστάται: