- Alexa-baseret stemmestyret raketstarter - arbejder
- Launchpad til vores NodeMCU Rocket Launch Controller
- Komponenter, der kræves til Alexa-styret raketstarter
- Arduino Rocket Launcher Circuit Diagram
- Opbygning af kredsløbet på PerfBoard
- Programmering af NodeMCU til Alexa Controlled Rocket Launcher
- Konfiguration af Alexa med Alexa Android-applikation
- Alexa Controlled Rocket Launcher - Testing
Når vintersæsonen nærmer sig; kommer den tid på året, hvor lysfesten fejres. Ja, vi taler om Diwali, som er en ægte indisk festival fejret over hele kloden. I år er Diwali allerede forbi, og da jeg så folk fyrværkeri, kom jeg op med ideen om at opbygge den Alexa-baserede Voice Controlled Rocket Launcher eller Igniter, som kan starte raketter med bare stemmekommando, hvilket gør det meget sikkert og sjovt for børn.
For at gøre det klart er jeg ikke her for at tilskynde folk til at skyde krakkere på Diwali, den indiske regering har håndhævet begrænsninger for krakkere til at begrænse forurening, og det er vores ansvar at overholde den. Ideen her er, at i stedet for at bruge hele dagen på at skyde kiks, lad os bygge en cool stemmestyret Arduino-raketænding og skyde et par raketter med stil. Jeg ser det som en win-win.
Denne Arduino raketstarter vil være meget forskellig fra andre. Det har et meget robust chassis lavet af krydsfiner, en pålidelig relæbaseret kontrolmekanisme og en meget unik mekanisme til at starte og genindlæse raketterne, så lad os uden videre forsinke lige ind i byggeprocessen.
Alexa-baseret stemmestyret raketstarter - arbejder
Kredsløbets arbejdsmekanisme er meget enkel, hovedkomponenten, der er ansvarlig for lanceringen af raketten, er nichromtråden, og den kommer i form af en varmespole. Denne nichrome ledning fungerer som raketantænderen. Hvordan? Jeg viser dig senere.
Som du kan se på billedet ovenfor, kommer nichrome ledningen i form af en varmelegeme, for mig var det den nemmeste måde at få det på. Vi er nødt til at trække det lige og bøje det for at danne en form, der ser ud som vist på billedet nedenfor.
Når vi har gjort dette, forsyner vi det med et 12V blybatteri, og det lyser rødglødende. Dette vil være nok til at antænde det sorte pulver inde i raketten, og det fungerer ligesom en normal sikringsdosis. Vær opmærksom på, at dette er en højeffekt raketstartcontroller, den nødvendige strøm for at gøre ledningen rødglødende er høj. Følg sikkerhedsanvisningerne, når du arbejder med høje strømme.
Når testen er færdig, er det eneste, der er tilbage, kontrolprocessen, som vi vil gøre, når vi går videre i artiklen.
Launchpad til vores NodeMCU Rocket Launch Controller
Lad os lave en startplade til denne build. Når startpladen er færdig, kan vi nemt genindlæse nogle crackere og starte dem meget let. Jeg har bygget en launchpad, der ligner den, der er vist på billedet vist nedenfor.
Lad os gennemgå den trinvise proces med at oprette startpladen. Til de to sider af rammen har jeg brugt to (25X3X1.5) tomme lange stykker krydsfiner. Til den øverste del har jeg brugt en (20X3X1.5) tommer lang del af krydsfiner, og til basen har jeg brugt et (20X6X1.5) tommer langt stykke krydsfiner, hvilket giver det lidt mere stabilitet. Billedet nedenfor giver dig en klar idé.
Nu er det tid til at fremstille de nichrome trådbaserede filamenter, som vil fungere som en sikring for vores raket. Til det har jeg købt en 1000W nichrome wire base varmespole, rettet den op og lavet strukturen som vist nedenfor. Jeg var nødt til at bruge to tænger og sideskærere til at forme nichrometråden som vist nedenfor.
Når dette var gjort, delte jeg 20 ”stykke krydsfinerblok i syv stykker, målte det og borede huller for at sætte de nichrome trådbaserede filamenter i, og når det var gjort, lignede det billederne nedenfor.
Men inden jeg placerede filamenterne, har jeg fastgjort en kvadratmeter tykk kobbertråd i hver terminal og ført dem gennem hullerne, når alt var gjort, lignede det billedet nedenfor.
Som du kan se, har jeg også sat i to-komponent klæbemiddel for at sikre ledningen og filamenterne på plads. Med det gjort er vores startplade komplet. Og som du kan se fra det første billede i dette afsnit, har jeg direkte knyttet glødetrådene til printkortet, fordi vi har at gøre med meget høje strømme, så jeg gider ikke placere en skrueterminal, og det markerer slutningen på vores chassis byggeproces.
Komponenter, der kræves til Alexa-styret raketstarter
Til hardware-siden af tingene har vi brugt meget generiske dele, som du nemt kan få fra din lokale hobbybutik. En komplet liste over varer er angivet nedenfor.
- 12V-relæ - 3
- BD139 Transistor - 3
- 1N4004 Diode - 3
- 5,08 mm skrueterminal - 1
- LM7805 - Spændingsregulator - 1
- 100uF afkoblingskondensator - 2
- 5.1V Zener-diode - 1
- NodeMCU (ESP8266-12E) Board - 1
- Prikket Perf Board - ½
- Tilslutningsledning - 10
Arduino Rocket Launcher Circuit Diagram
Det komplette skema for Alexa Controlled Rocket Launcher er angivet nedenfor. Jeg har brugt tags til at forbinde en pin til en anden. Hvis du ser tæt nok på, bør det ikke være svært at fortolke skematisk.
Circuit Construction er ret ligetil, så jeg vil ikke gå meget ind på detaljerne.
For det første har vi IC1, som er en LM7805 spændingsregulator, med dens 100uF afkoblingskondensatorer betegnet med C1 og C2. Derefter har vi kernen i vores projekt, NodeMCU-kortet, der huser ESP-12E-modulet. Da vi bruger et 12V blysyrebatteri til at drive hele kredsløbet, er det derfor, at vi skal bruge LM7805 til først at konvertere det til 12V til 5V for at drive NodeMCU-kortet. Vi gør det, fordi den indbyggede AMS1117 spændingsregulator ikke er tilstrækkelig til at konvertere 12V direkte til 3,3V, hvorfor 7805 er nødvendig.
Når vi fortsætter, har vi tre 12V-relæer, til denne demonstration bruger vi tre relæer, men som vi tidligere har nævnt, har startpladen en pladsholder til 7 raketter. Du kan tilpasse koden en smule og placere alle syv raketter til at starte helt. De tre relæer drives af en T1, T2 og T3, som er tre NPN-transistorer, og de er tilstrækkelige til at drive belastningen på en reel. Endelig har vi tre fritgående dioder, der beskytter kredsløbet mod højspændingsspidser genereret af relæet.
Opbygning af kredsløbet på PerfBoard
Som du kan se fra hovedbilledet, var ideen at lave et simpelt kredsløb, der kan håndtere en enorm mængde strøm i en kort periode, ifølge vores test er 800 millisekunder nok til at lyse et stykke papir. Så vi bygger kredsløbet på et stykke perfboard og forbinder alle større forbindelser med 1 m² tykt kobbertråd. Efter at vi var færdige med at lodde brættet. Når vi var færdige, lignede det noget, der er vist nedenfor.
Programmering af NodeMCU til Alexa Controlled Rocket Launcher
Nu hvor hardwaren er klar, er det tid til at begynde at kode for vores Alexa-baserede stemmestyrede raketstarter. Den komplette kode kan findes i slutningen af denne side, men inden vi starter, er det vigtigt at tilføje de nødvendige biblioteker til din Arduino IDE. Sørg for at tilføje de rigtige biblioteker fra nedenstående link, ellers koden kaster fejl, når de kompileres.
- Download Espalexa-biblioteket
Efter tilføjelse af de krævede biblioteker kan du uploade koden direkte nederst på denne side for at kontrollere, om kredsløbet fungerer. Hvis du vil vide, hvordan koden fungerer, skal du fortsætte med at læse.
Som altid begynder vi programmet med at tilføje de nødvendige headerfiler og definere pinnavne og legitimationsoplysninger til vores hotspot.
#omfatte
Når vi fortsætter med vores kode, har vi vores funktionsprototyper og definitioner af tilbagekaldsfunktioner.
Function connectToWiFi () bruges til at oprette forbindelse til Wi-Fi-netværket, og denne funktion returnerer sandt, når Wi-Fi bliver tilsluttet korrekt.
Dernæst har vi vores tilbagekaldsfunktioner , disse funktioner kaldes, når vi giver Alexa en kommando, espalexa API håndterer disse funktioner
ugyldige allrockets (uint8_t lysstyrke); ugyldigt førstehjul (uint8_t lysstyrke); ugyldigt sekundært tandhjul (uint8_t lysstyrke); ugyldigt tredjehjul (uint8_t lysstyrke);
Dernæst definerer vi enhedsnavne. Disse definerede enhedsnavne afspejles i Alexa-appen, og når vi siger en kommando, genkender Alexa enhederne ved disse navne. Så disse navne er meget vigtige.
// Enhedsnavne String First_Device_Name = "Alle raketter"; String Secound_Device_Name = "Rocket One"; String Third_Device_Name = "Rocket Two"; String Forth_Device_Name = "Raket tre";
Dernæst definerer vi en boolsk variabel wifiStatus, som holder forbindelsesstatus for Wi-Fi. Endelig opretter vi et Espalexa-objekt espalexa. Vi bruger dette objekt til at konfigurere NodeMCU.
// wifi status check boolsk wifiStatus = false; // Espalexa Objekt Espalexa espalexa;
Dernæst har vi vores ugyldige opsætning () sektion. I dette afsnit initialiserer vi seriel kommunikation til fejlfinding med funktionen Serial.begin () . Vi indstiller alle de tidligere definerede stifter som output med pinMode () -funktion, næste kalder vi connectToWiFi () -funktionen, den vil forsøge at oprette forbindelse til Wi-Fi i femten gange, hvis den er tilsluttet, vil den vende tilbage, hvis den ikke få forbindelse, vil det returnere falsk, og koden vil udføre en while () loop for evigt. Hvis Wi-Fi-forbindelsen lykkes, tilføjer vi de tidligere definerede enheder til Alexa-objektet ved hjælp af espalexa.addDevice () -funktionen. Denne funktion tager to argumenter, først er enhedsnavnet, for det andet er navnet på tilbagekaldsfunktionen, når vi udsender en kommando til Alexa, kaldes den tilstødende funktion. Når vi er færdige med at gøre det for alle fire af vores enheder, kalder vi start () -metoderne til espalexa-objektet.
ugyldig opsætning () {Serial.begin (115200); // Aktivér Serial for fejlfinding af meddelelser pinMode (ROCKET_1_PIN, OUTPUT); // opsæt ESP-ben som output pinMode (ROCKET_2_PIN, OUTPUT); // opsæt ESP-ben som output pinMode (ROCKET_3_PIN, OUTPUT); // opsæt ESP-ben som output wifiStatus = connectToWiFi (); // Opret forbindelse til lokalt Wi-Fi-netværk, hvis (wifiStatus) {// opsæt alle espalexa-enheder // Definer dine enheder her. espalexa.addDevice (First_Device_Name, allrockets); // enkleste definition, standardtilstand fra espalexa.addDevice (Secound_Device_Name, firstrocket); espalexa.addDevice (Third_Device_Name, secondrocket); espalexa.addDevice (Forth_Device_Name, thirdrocket); espalexa.begin (); } andet {mens (1) {Seriel. println ("Kan ikke oprette forbindelse til WiFi. Kontroller data og nulstil ESP."); forsinkelse (2500); }}}
I løkken sektion, vi kalder løkke () metoden i espalexa objekt, der altid vil tjekke for enhver indkommende kommando og kalder funktionen tilbagekald, hvis den finder det sandt.
ugyldig sløjfe () {espalexa.loop (); forsinkelse (1); }
Dernæst definerer vi alle vores tilbagekaldsfunktioner, i dette afsnit definerer vi, hvad der sker, når denne tilbagekaldsfunktion kaldes. Når allrockets () -funktionen kaldes, vil alle raketter blive lanceret sammen. Til det vil vi tænde relæet i 00 ms, og derefter skal vi slukke relæerne. I mine tests har jeg fundet ud af, at jeg har brug for 800 ms forsinkelse for den specificerede længde af nichrometråd for at opvarme ledningen fuldstændigt, dette er måske ikke tilfældet for dig. Så vælg forsinkelsen i overensstemmelse hermed.
ugyldige allrockets (uint8_t lysstyrke) {if (lysstyrke == 255) {digitalWrite (ROCKET_1_PIN, HIGH); digitalWrite (ROCKET_2_PIN, HIGH); digitalWrite (ROCKET_3_PIN, HIGH); forsinkelse (800); digitalWrite (ROCKET_1_PIN, LOW); digitalWrite (ROCKET_2_PIN, LOW); digitalWrite (ROCKET_3_PIN, LOW); Serial.println ("Alle raketter lanceret"); }}
Dernæst har vi vores første raket (), dette kaldes, når vi ringer til Alexa og siger tie-kommando for at starte den første raket. Processen er meget ens, vi tænder relæet i 800 ms og slukker.
ugyldigt første kædehjul (uint8_t lysstyrke) {if (lysstyrke == 255) {digitalWrite (ROCKET_1_PIN, HIGH); forsinkelse (800); digitalWrite (ROCKET_1_PIN, LOW); Serial.println ("Første raket lanceret"); }}
Endelig har vi vores connectToWiFi () funktion. Denne funktion er ret generisk og selvforklarende, så jeg vil ikke gå i detaljer om denne funktion. Denne funktion forbinder ESP med Wi-Fi og returnerer forbindelsesstatus.
boolsk connectToWiFi () {boolsk tilstand = sand; int i = 0; WiFi.mode (WIFI_STA); WiFi.begin (ssid, password); Serial.println (""); Serial.println ("Opretter forbindelse til WiFi"); // Vent på forbindelse Serial.print ("Forbinder…"); mens (WiFi.status ()! = WL_CONNECTED) {forsinkelse (500); Serial.print ("."); hvis (i> 15) {state = false; pause; } i ++; } Serial.println (""); hvis (tilstand) {Serial.print ("Forbundet til"); Serial.println (ssid); Serial.print ("IP-adresse:"); Serial.println (WiFi.localIP ()); } andet {Serial.println ("Forbindelse mislykkedes."); } returstatus; }
Denne definerede funktion markerer slutningen af den kodende del.
Konfiguration af Alexa med Alexa Android-applikation
Alexa accepterer kun kommandoer, hvis og kun hvis den genkender esp8866-enheden. Til det er vi nødt til at konfigurere Alexa ved hjælp af Alexa-appen på Android. En vigtig ting at gøre, før vi fortsætter, er, at vi skal sørge for, at Alexa er konfigureret med vores Android-applikation.
For at gøre det skal du gå til den mere sektion af Alexa-appen og klikke på indstillingen Tilføj en enhed, klikke på Lys, derefter rulle ned i bunden af siden og klikke på Andet.
Klik derefter på OPDAG ENHED og vent et øjeblik, efter at Alexa finder nye enheder. Når Alexa finder enhederne, skal du klikke på dem og tilføje dem til deres respektive steder / kategorier, og du er færdig.
Alexa Controlled Rocket Launcher - Testing
Til testprocessen gik jeg til min have, trak alle sikringerne fra raketten, placerede dem på deres respektive steder, og jeg råbte Alexa…! Tænd for alle raketter med korsede fingre. Og alle raketterne fløj ved at markere min indsats som en kæmpe succes. Det så ud som dette.
Endelig sagde jeg endnu en gang Alexa…! Tænd for alle raketter for at få et episk billede af filamenterne, som du kan se nedenfor.
For en mere episk oplevelse anbefaler jeg dig at se videoen.