- Εκτοξευτής πυραύλων με ελεγχόμενη φωνή Alexa - Λειτουργεί
- Launchpad για το NodeMCU Rocket Launch Controller
- Απαιτούνται στοιχεία για το Alexa Controlled Rocket Launcher
- Διάγραμμα κυκλώματος εκκίνησης Arduino Rocket
- Χτίζοντας το κύκλωμα στο PerfBoard
- Προγραμματισμός NodeMCU για Alexa Controlled Rocket Launcher
- Διαμόρφωση Alexa με εφαρμογή Alexa Android
- Alexa Controlled Rocket Launcher - Δοκιμή
Καθώς πλησιάζει η χειμερινή περίοδος. έρχεται εκείνη η εποχή του χρόνου όταν γιορτάζεται το φεστιβάλ των φώτων. Ναι, μιλάμε για το Diwali που είναι ένα αληθινό ινδικό φεστιβάλ που γιορτάζεται σε όλο τον κόσμο. Φέτος, το Diwali έχει ήδη τελειώσει, και βλέποντας τους ανθρώπους να πυροδοτούν κροτίδες, ήρθα με την ιδέα να κατασκευάσω το Voice Controlled Rocket Launcher ή το Igniter που βασίζεται στην Alexa, το οποίο μπορεί να εκτοξεύσει ρουκέτες με φωνητική εντολή, καθιστώντας το πολύ ασφαλές και διασκεδαστικό για τα παιδιά.
Για να το καταστήσω σαφές, δεν είμαι εδώ για να ενθαρρύνω τους ανθρώπους να πυροδοτούν κροτίδες στο Diwali, η ινδική κυβέρνηση έχει επιβάλει περιορισμούς στους κροτίδες για τον περιορισμό της ρύπανσης και είναι δική μας ευθύνη να τηρούμε. Η ιδέα εδώ είναι ότι αντί να ξοδεύουμε ολόκληρη την ημέρα πυροβολισμό κροτίδων, ας φτιάξουμε έναν δροσερό πυροσβεστήρα Arduino που ελέγχεται με φωνή και πυροδοτούμε μερικούς ρουκέτες με στυλ. Το βλέπω ως win-win.
Αυτός ο εκτοξευτής πυραύλων Arduino θα είναι πολύ διαφορετικός από τους άλλους. Διαθέτει ένα πολύ ανθεκτικό πλαίσιο κατασκευασμένο από κόντρα πλακέ, έναν αξιόπιστο μηχανισμό ελέγχου που βασίζεται σε ρελέ και έναν πολύ μοναδικό μηχανισμό για την εκτόξευση και την επαναφόρτωση των πυραύλων, οπότε χωρίς περαιτέρω καθυστέρηση, ας περάσουμε στη διαδικασία κατασκευής.
Εκτοξευτής πυραύλων με ελεγχόμενη φωνή Alexa - Λειτουργεί
Ο μηχανισμός λειτουργίας του κυκλώματος είναι πολύ απλός, το κύριο συστατικό που είναι υπεύθυνο για την εκτόξευση του πυραύλου είναι το σύρμα nichrome και έρχεται με τη μορφή θερμαντικού πηνίου. Αυτό το σύρμα nichrome θα λειτουργήσει ως αναφλεκτήρας πυραύλων. Πως? Θα σου δείξω αργότερα.
Όπως μπορείτε να δείτε στην παραπάνω εικόνα, το σύρμα nichrome έρχεται με τη μορφή θερμαντικού πηνίου, για μένα, ήταν ο ευκολότερος τρόπος για να το πάρετε. Πρέπει να το τραβήξουμε ευθεία και να το λυγίσουμε για να σχηματίσουμε ένα σχήμα που μοιάζει με την παρακάτω εικόνα.
Μόλις το κάνουμε αυτό, θα το τροφοδοτήσουμε με μια μπαταρία μολύβδου-οξέος 12V και θα ανάψει κόκκινο. Αυτό θα είναι αρκετό για την ανάφλεξη της μαύρης σκόνης μέσα στον πύραυλο και θα λειτουργήσει ακριβώς όπως μια κανονική δόση ασφάλειας. Λάβετε υπόψη ότι πρόκειται για έναν ελεγκτή εκτόξευσης πυραύλων υψηλής ισχύος, το απαιτούμενο ρεύμα για να γίνει το κόκκινο καλώδιο ζεστό είναι υψηλό. Ακολουθήστε τις συμβουλές ασφαλείας όταν εργάζεστε με υψηλά ρεύματα.
Μόλις ολοκληρωθεί ο έλεγχος, το μόνο που απομένει είναι η διαδικασία ελέγχου, την οποία θα κάνουμε καθώς προχωράμε περαιτέρω στο άρθρο.
Launchpad για το NodeMCU Rocket Launch Controller
Για αυτό το build, ας δημιουργήσουμε ένα launchpad. Με την εκτόξευση εκτόξευσης, μπορούμε εύκολα να φορτώσουμε εκ νέου μερικά κράκερ και να τα ξεκινήσουμε πολύ εύκολα. Έχω δημιουργήσει ένα launchpad που μοιάζει με αυτό που φαίνεται στην παρακάτω εικόνα.
Ας περάσουμε τη βήμα προς βήμα διαδικασία κατασκευής του launchpad. Για τις δύο πλευρές του πλαισίου, έχω χρησιμοποιήσει κομμάτια κόντρα πλακέ μήκους δύο (25Χ3Χ1,5) ίντσας. Για το πάνω μέρος, έχω χρησιμοποιήσει ένα κομμάτι κόντρα πλακέ μήκους (20Χ3Χ1,5) ίντσας και για τη βάση, έχω χρησιμοποιήσει ένα κομμάτι κόντρα πλακέ μήκους (20Χ6Χ1,5) ίντσας, το οποίο θα του δώσει λίγο περισσότερη σταθερότητα. Η παρακάτω εικόνα θα σας δώσει μια σαφή ιδέα.
Τώρα, ήρθε η ώρα να φτιάξουμε τα νήματα που βασίζονται σε σύρμα nichrome, τα οποία θα λειτουργούν ως ασφάλεια για τον πύραυλο μας. Γι 'αυτό, έχω αγοράσει ένα θερμαντικό πηνίο βάσης καλωδίου 1000W νικελίου, το ισιώνω και έκανα τη δομή που φαίνεται παρακάτω. Έπρεπε να χρησιμοποιήσω δύο πένσες και πλευρικούς κόφτες για να διαμορφώσω το σύρμα νικελίου όπως φαίνεται παρακάτω.
Μόλις έγινε αυτό, χώρισα το κομμάτι κόντρα πλακέ 20 ιντσών σε επτά κομμάτια το μέτρησα και τρυπήσαμε τρύπες για να βάλω τα νήματα με βάση το σύρμα nichrome και μόλις έγινε, έμοιαζε με τις παρακάτω εικόνες.
Αλλά πριν τοποθετήσω τα νήματα, έχω συνδέσει χάλκινο σύρμα πάχους 1 τετραγωνικών mm σε κάθε ακροδέκτη και τα πέρασα μέσα από τις τρύπες, αφού όλα γίνονταν, έμοιαζε με την παρακάτω εικόνα.
Όπως μπορείτε να δείτε, έβαλα επίσης την κόλλα δύο συστατικών για να στερεώσω το σύρμα και τα νήματα στη θέση τους. Με αυτόν τον τρόπο, το launchpad μας έχει ολοκληρωθεί. Και όπως μπορείτε να δείτε από την πρώτη εικόνα σε αυτήν την ενότητα, έχω συνδέσει απευθείας τα καλώδια του νήματος στο PCB επειδή ασχολούμαστε με πολύ υψηλά ρεύματα, οπότε δεν έχω τον κόπο να τοποθετήσω ένα ακροδέκτη βίδας και αυτό σηματοδοτεί το τέλος του πλαισίου μας διαδικασία οικοδόμησης.
Απαιτούνται στοιχεία για το Alexa Controlled Rocket Launcher
Για την πλευρά του υλικού, χρησιμοποιήσαμε πολύ γενικά εξαρτήματα τα οποία μπορείτε να πάρετε πολύ εύκολα από το τοπικό κατάστημα χόμπι σας, μια πλήρη λίστα αντικειμένων δίνεται παρακάτω.
- 12V-ρελέ - 3
- Τρανζίστορ BD139 - 3
- 1N4004 Δίοδος - 3
- Ακροδέκτης βίδας 5,08 mm - 1
- LM7805 - Ρυθμιστής τάσης - 1
- Πυκνωτής αποσύνδεσης 100uF - 2
- 5.1V Δίοδος Zener - 1
- Πίνακας NodeMCU (ESP8266-12E) - 1
- Διακεκομμένος πίνακας Perf - ½
- Καλώδιο σύνδεσης - 10
Διάγραμμα κυκλώματος εκκίνησης Arduino Rocket
Το πλήρες σχήμα για το Alexa Controlled Rocket Launcher δίνεται παρακάτω. Έχω χρησιμοποιήσει ετικέτες για να συνδέσω τη μια καρφίτσα στην άλλη. Αν κοιτάξετε αρκετά κοντά, δεν πρέπει να είναι δύσκολο να ερμηνεύσετε το σχηματικό.
Η κατασκευή κυκλωμάτων είναι αρκετά απλή, οπότε δεν θα αναφερθώ στις λεπτομέρειες.
Πρώτον, έχουμε το IC1 που είναι ένας ρυθμιστής τάσης LM7805, με τους πυκνωτές αποσύνδεσης 100uF που υποδηλώνονται με C1 και C2. Μετά από αυτό, έχουμε την καρδιά του έργου μας, τον πίνακα NodeMCU, ο οποίος στεγάζει τη μονάδα ESP-12E. Δεδομένου ότι χρησιμοποιούμε μια μπαταρία μολύβδου-οξέος 12V για να τροφοδοτήσουμε ολόκληρο το κύκλωμα, γι 'αυτό πρέπει να χρησιμοποιήσουμε το LM7805 για να το μετατρέψουμε πρώτα σε 12V έως 5V για να τροφοδοτήσουμε την πλακέτα NodeMCU. Το κάνουμε αυτό επειδή ο ενσωματωμένος ρυθμιστής τάσης AMS1117 δεν επαρκεί για να μετατρέψει 12V απευθείας σε 3.3V, γι 'αυτό είναι απαραίτητο το 7805.
Προχωρώντας, έχουμε τρία ρελέ 12V, για αυτήν την επίδειξη, χρησιμοποιούμε τρία ρελέ, αλλά όπως έχουμε αναφέρει προηγουμένως, το launchpad έχει ένα placeholder για 7 ρουκέτες. Μπορείτε να τροποποιήσετε λίγο τον κώδικα και να τοποθετήσετε και τους επτά ρουκέτες για να ξεκινήσουν εντελώς. Τα τρία ρελέ οδηγούνται από T1, T2 και T3 που είναι τρία τρανζίστορ NPN και είναι αρκετά επαρκή για να οδηγήσουν το φορτίο ενός πραγματικού. Τέλος, έχουμε τρεις διόδους ελεύθερης περιστροφής που προστατεύουν το κύκλωμα από αιχμές υψηλής τάσης που δημιουργούνται από το ρελέ.
Χτίζοντας το κύκλωμα στο PerfBoard
Όπως μπορείτε να δείτε από την κύρια εικόνα, η ιδέα ήταν να φτιάξετε ένα απλό κύκλωμα που μπορεί να χειριστεί ένα τεράστιο ρεύμα για σύντομο χρονικό διάστημα, σύμφωνα με τις δοκιμές μας, 800 χιλιοστά του δευτερολέπτου αρκούν για να ανάψετε ένα κομμάτι χαρτί. Κατασκευάζουμε λοιπόν το κύκλωμα σε ένα κομμάτι αρωματοποιίας και συνδέουμε όλες τις μεγάλες συνδέσεις με χάλκινο σύρμα πάχους 1 τετραγωνικών mm. Αφού ολοκληρώσαμε τη συγκόλληση του χαρτονιού. Μόλις τελειώσαμε, έμοιαζε με κάτι που φαίνεται παρακάτω.
Προγραμματισμός NodeMCU για Alexa Controlled Rocket Launcher
Τώρα που το υλικό είναι έτοιμο, ήρθε η ώρα να ξεκινήσετε την κωδικοποίηση για τον εκτοξευτή πυραύλων ελεγχόμενης με φωνή Alexa. Ο πλήρης κωδικός βρίσκεται στο τέλος αυτής της σελίδας, αλλά πριν ξεκινήσουμε, είναι σημαντικό να προσθέσετε τις απαιτούμενες βιβλιοθήκες στο Arduino IDE σας. Βεβαιωθείτε ότι έχετε προσθέσει τις σωστές βιβλιοθήκες από τον παρακάτω σύνδεσμο αλλιώς ο κώδικας θα εμφανίσει σφάλματα κατά τη σύνταξη.
- Λήψη της βιβλιοθήκης Espalexa
Αφού προσθέσετε τις απαιτούμενες βιβλιοθήκες, μπορείτε να ανεβάσετε απευθείας τον κωδικό που δίνεται στο κάτω μέρος αυτής της σελίδας για να ελέγξετε εάν το κύκλωμα λειτουργεί. Αν θέλετε να μάθετε πώς λειτουργεί ο κώδικας, συνεχίστε να διαβάζετε.
Όπως πάντα, ξεκινάμε το πρόγραμμα προσθέτοντας τα απαιτούμενα αρχεία κεφαλίδας και καθορίζοντας τα ονόματα των pin και τα διαπιστευτήρια για το hotspot μας.
#περιλαμβάνω
Προχωρώντας με τον κωδικό μας, έχουμε τους πρωτότυπους λειτουργιών και τους ορισμούς της συνάρτησης επανάκλησης.
Η λειτουργία connectToWiFi () χρησιμοποιείται για σύνδεση στο δίκτυο Wi-Fi και αυτή η λειτουργία επιστρέφει αληθινή όταν το Wi-Fi συνδεθεί επιτυχώς.
Στη συνέχεια, έχουμε τις λειτουργίες επανάκλησης , αυτές οι συναρτήσεις θα κληθούν όταν δώσουμε μια εντολή στην Alexa, το API espalexa χειρίζεται αυτές τις λειτουργίες
άκυρη allrockets (uint8_t φωτεινότητα); void firstrocket (φωτεινότητα uint8_t); void secondrocket (φωτεινότητα uint8_t); άκυρο Thirdrocket (uint8_t φωτεινότητα);
Στη συνέχεια, ορίζουμε τα ονόματα συσκευών. Αυτά τα καθορισμένα ονόματα συσκευών θα αντικατοπτρίζονται στην εφαρμογή Alexa και όταν λέμε μια εντολή, η Alexa θα αναγνωρίσει τις συσκευές από αυτά τα ονόματα. Έτσι αυτά τα ονόματα είναι πολύ σημαντικά.
// Όνομα συσκευής String First_Device_Name = "All Rockets"; String Secound_Device_Name = "Rocket One"; Συμβολοσειρά Third_Device_Name = "Rocket Two"; String Forth_Device_Name = "Rocket Three";
Στη συνέχεια, ορίζουμε μια boolean μεταβλητή wifiStatus, η οποία θα διατηρεί την κατάσταση σύνδεσης του Wi-Fi. Τέλος, δημιουργούμε ένα αντικείμενο Espalexa espalexa. Θα χρησιμοποιήσουμε αυτό το αντικείμενο για να διαμορφώσουμε το NodeMCU.
// έλεγχος κατάστασης wifi boolean wifiStatus = false; // Espalexa Object Espalexa espalexa;
Στη συνέχεια, έχουμε την ενότητα κενής ρύθμισης () . Σε αυτήν την ενότητα, αρχίζουμε την σειριακή επικοινωνία για εντοπισμό σφαλμάτων με τη λειτουργία Serial.begin () . Ορίσαμε όλες τις προηγούμενες καθορισμένες ακίδες ως έξοδο με τη λειτουργία pinMode () , στη συνέχεια καλούμε τη συνάρτηση connectToWiFi () , θα προσπαθήσει να συνδεθεί στο Wi-Fi για δεκαπέντε φορές εάν είναι συνδεδεμένη, θα επιστρέψει αληθής εάν δεν συνδεθείτε, θα επιστρέψει ψευδής και ο κώδικας θα εκτελέσει για λίγο () βρόχο για πάντα. Εάν η σύνδεση Wi-Fi είναι επιτυχής, προσθέτουμε τις συσκευές που έχουν οριστεί προηγουμένως στο αντικείμενο Alexa χρησιμοποιώντας τη συνάρτηση espalexa.addDevice (). Αυτή η συνάρτηση απαιτεί δύο ορίσματα, πρώτα είναι το Όνομα συσκευής, Το δεύτερο είναι το όνομα της συνάρτησης επανάκλησης, όταν βάζουμε μια εντολή στην Alexa, θα καλείται η παρακείμενη συνάρτηση. Μόλις το κάνουμε και για τις τέσσερις συσκευές μας, καλούμε τις μεθόδους start () για το αντικείμενο espalexa.
άκυρη ρύθμιση () {Serial.begin (115200); // Ενεργοποίηση Serial για εντοπισμό σφαλμάτων μηνυμάτων pinMode (ROCKET_1_PIN, OUTPUT). // ρυθμίστε τις καρφίτσες ESP ως pinMode εξόδου (ROCKET_2_PIN, OUTPUT); // Ρύθμιση καρφίτσες ESP ως έξοδος pinMode (ROCKET_3_PIN, OUTPUT); // ρύθμιση καρφίτσες ESP ως έξοδος wifiStatus = connectToWiFi (); // Συνδεθείτε στο τοπικό δίκτυο Wi-Fi εάν (wifiStatus) {// ρυθμίστε όλες τις συσκευές espalexa // Ορίστε τις συσκευές σας εδώ. espalexa.addDevice (First_Device_Name, allrockets); // απλούστερος ορισμός, προεπιλεγμένη κατάσταση εκτός του espalexa.addDevice (Secound_Device_Name, firstrocket); espalexa.addDevice (Third_Device_Name, secondrocket); espalexa.addDevice (Forth_Device_Name, Thirdrocket); espalexa.begin (); } αλλιώς {ενώ (1) {Σειριακό. println ("Δεν είναι δυνατή η σύνδεση στο WiFi. Ελέγξτε τα δεδομένα και επαναφέρετε το ESP."); καθυστέρηση (2500) }}}
Στην ενότητα βρόχου , καλούμε τη μέθοδο loop () του αντικειμένου espalexa που θα ελέγχει πάντα για οποιαδήποτε εισερχόμενη εντολή και θα καλεί τη συνάρτηση callback εάν το θεωρεί αληθινό.
void loop () {espalexa.loop (); καθυστέρηση (1) }
Στη συνέχεια, θα ορίσουμε όλες τις λειτουργίες επανάκλησης, σε αυτήν την ενότητα, θα καθορίσουμε τι θα συμβεί όταν καλείται αυτή η συνάρτηση επανάκλησης. Όταν καλείται η συνάρτηση allrockets () , όλοι οι πύραυλοι πρόκειται να ξεκινήσουν μαζί. Για αυτό, πρόκειται να ενεργοποιήσουμε το ρελέ για 00 ms και μετά από αυτό, θα κλείσουμε τα ρελέ. Στις δοκιμές μου, έχω διαπιστώσει ότι για το καθορισμένο μήκος του σύρματος νικολίου, χρειάζομαι 800ms καθυστέρησης για να θερμάνω εντελώς το καλώδιο, αυτό μπορεί να ισχύει ή όχι για εσάς. Επιλέξτε λοιπόν την καθυστέρηση ανάλογα.
άκυρο allrockets (uint8_t brightness) {if (brightness == 255) {digitalWrite (ROCKET_1_PIN, HIGH). digitalWrite (ROCKET_2_PIN, ΥΨΗΛΟ); digitalWrite (ROCKET_3_PIN, ΥΨΗΛΟ); καθυστέρηση (800); digitalWrite (ROCKET_1_PIN, LOW); digitalWrite (ROCKET_2_PIN, LOW); digitalWrite (ROCKET_3_PIN, LOW); Serial.println ("Όλα τα ρουκέτα ξεκίνησαν"); }}
Στη συνέχεια, έχουμε τον πρώτο μας πύραυλο (), αυτό καλείται όταν καλέσουμε την Alexa και λέμε γραβάτα εντολή για να ξεκινήσουμε τον πρώτο πύραυλο. Η διαδικασία είναι πολύ παρόμοια, ενεργοποιούμε το ρελέ για 800ms και απενεργοποιούμε.
void firstrocket (uint8_t brightness) {if (φωτεινότητα == 255) {digitalWrite (ROCKET_1_PIN, HIGH). καθυστέρηση (800); digitalWrite (ROCKET_1_PIN, LOW); Serial.println ("First Rocket Launched"); }}
Τέλος, έχουμε τη λειτουργία connectToWiFi () . Αυτή η λειτουργία είναι αρκετά γενική και αυτονόητη, επομένως δεν θα αναφερθώ στις λεπτομέρειες σχετικά με αυτήν τη λειτουργία. Αυτή η λειτουργία συνδέει το ESP με Wi-Fi και επιστρέφει την κατάσταση σύνδεσης.
boolean connectToWiFi () {boolean state = true; int i = 0; WiFi.mode (WIFI_STA); WiFi.begin (SSD, κωδικός πρόσβασης); Serial.println (""); Serial.println ("Σύνδεση σε WiFi"); // Περιμένετε για σύνδεση Serial.print ("Σύνδεση…"); ενώ (WiFi.status ()! = WL_CONNECTED) {καθυστέρηση (500); Serial.print ("."); αν (i> 15) {state = false; Διακοπή; } i ++; } Serial.println (""); if (κατάσταση) {Serial.print ("Connected to"); Serial.println (SSD); Serial.print ("Διεύθυνση IP:"); Serial.println (WiFi.localIP ()); } αλλιώς {Serial.println ("Η σύνδεση απέτυχε."); } κατάσταση επιστροφής; }
Αυτή η συνάρτηση ορίζεται σηματοδοτεί το τέλος του κωδικοποιητικού τμήματος.
Διαμόρφωση Alexa με εφαρμογή Alexa Android
Η Alexa θα δέχεται εντολές μόνο εάν και μόνο αν αναγνωρίζει τη συσκευή esp8866. Για αυτό, πρέπει να διαμορφώσουμε την Alexa με τη βοήθεια της εφαρμογής Alexa σε Android. Ένα σημαντικό πράγμα που πρέπει να κάνουμε προτού προχωρήσουμε περαιτέρω είναι ότι πρέπει να βεβαιωθούμε ότι η Alexa έχει ρυθμιστεί με την εφαρμογή μας Android.
Για να το κάνετε αυτό, μεταβείτε στην περισσότερη ενότητα της εφαρμογής Alexa και κάντε κλικ στην επιλογή Προσθήκη συσκευής, κάντε κλικ στο Φως και, στη συνέχεια , κάντε κύλιση προς τα κάτω στο κάτω μέρος της σελίδας και κάντε κλικ στο Άλλο.
Στη συνέχεια, κάντε κλικ στο DISCOVER DEVICE και περιμένετε λίγο μετά από αυτό το Alexa θα βρει νέες συσκευές. Μόλις η Alexa εντοπίσει τις συσκευές, πρέπει να κάνετε κλικ σε αυτές και να τις προσθέσετε στις αντίστοιχες θέσεις / κατηγορίες και τελειώσατε.
Alexa Controlled Rocket Launcher - Δοκιμή
Για τη διαδικασία των δοκιμών, πήγα στον κήπο μου, έβγαλα όλες τις ασφάλειες από τον πύραυλο, τις έβαλα στις αντίστοιχες θέσεις τους και φώναξα την Alexa…! Ενεργοποιήστε όλους τους ρουκέτες, με τα δάχτυλά μου σταυρωμένα. Και όλοι οι πύραυλοι πέταξαν σηματοδοτώντας τις προσπάθειές μου ως τεράστια επιτυχία. Φαινόταν κάπως έτσι.
Τελικά, για άλλη μια φορά είπα Alexa…! Ενεργοποιήστε όλους τους πύραυλους για να λάβετε μια επική εικόνα των νημάτων που μπορείτε να δείτε παρακάτω.
Για μια πιο επική εμπειρία, σας συνιστώ ανεπιφύλακτα να παρακολουθήσετε το βίντεο.