- Op Alexa gebaseerde spraakgestuurde raketwerper - werkt
- Launchpad voor onze NodeMCU Rocket Launch Controller
- Vereiste componenten voor Alexa Controlled Rocket Launcher
- Schakelschema Arduino Rocket Launcher
- Het circuit bouwen op PerfBoard
- NodeMCU programmeren voor Alexa Controlled Rocket Launcher
- Alexa configureren met Alexa Android-applicatie
- Alexa Controlled Rocket Launcher - Testen
Als het winterseizoen nadert; komt die tijd van het jaar waarin het lichtfestival wordt gevierd. Ja, we hebben het over Diwali, een echt Indiaas festival dat over de hele wereld wordt gevierd. Dit jaar is Diwali al voorbij en toen ik mensen vuurwerk zag, kwam ik op het idee om de op Alexa gebaseerde Voice Controlled Rocket Launcher of Igniter te bouwen, die raketten kan lanceren met alleen spraakopdrachten, waardoor het erg veilig en leuk is voor kinderen.
Om het duidelijk te maken, ik ben hier niet om mensen aan te moedigen om crackers op Diwali af te vuren, de Indiase regering heeft beperkingen opgelegd aan crackers om vervuiling tegen te gaan en het is onze verantwoordelijkheid om ons eraan te houden. Het idee hier is dat we in plaats van de hele dag crackers af te vuren, een coole, spraakgestuurde Arduino-raketontsteker bouwen en een paar raketten in stijl afvuren. Ik zie dat als een win-win.
Deze Arduino-raketwerper zal heel anders zijn dan andere. Het heeft een zeer stevig chassis gemaakt van multiplex, een betrouwbaar relaisgebaseerd bedieningsmechanisme en een zeer uniek mechanisme voor het lanceren en herladen van de raketten, dus laten we zonder verder uitstel meteen aan het bouwproces beginnen.
Op Alexa gebaseerde spraakgestuurde raketwerper - werkt
Het werkingsmechanisme van het circuit is heel eenvoudig, het belangrijkste onderdeel dat verantwoordelijk is voor het lanceren van de raket is de nichroomdraad en deze komt in de vorm van een verwarmingsspiraal. Deze nichrome draad zal fungeren als de raketontsteker. Hoe? Ik zal het je later laten zien.
Zoals je in de bovenstaande afbeelding kunt zien, heeft de nichrome-draad de vorm van een verwarmingsspiraal, voor mij was dit de gemakkelijkste manier om deze te krijgen. We moeten het recht trekken en buigen om een vorm te krijgen die eruitziet zoals in de onderstaande afbeelding.
Zodra we dit hebben gedaan, zullen we hem voeden met een 12V-loodzuuraccu en hij zal roodgloeiend gloeien. Dit is voldoende om het zwarte poeder in de raket aan te steken en het werkt net als een normale dosis lont. Houd er rekening mee dat dit een krachtige raketlanceringscontroller is, de stroom die nodig is om de draad roodgloeiend te maken, is hoog. Volg het veiligheidsadvies bij het werken met hoge stromen.
Zodra het testen is voltooid, is het enige dat overblijft het controleproces, dat we zullen doen terwijl we verder gaan in het artikel.
Launchpad voor onze NodeMCU Rocket Launch Controller
Laten we voor deze build een lanceerplatform maken. Nu het launchpad klaar is, kunnen we gemakkelijk enkele crackers opnieuw laden en ze heel gemakkelijk starten. Ik heb een lanceerplatform gebouwd dat eruitziet als in de onderstaande afbeelding.
Laten we het stapsgewijze proces doorlopen om het startpunt te bouwen. Voor de twee zijden van het frame heb ik twee (25X3X1.5) inch lange stukken multiplex gebruikt. Voor het bovenste deel heb ik een (20X3X1.5) inch lang stuk triplex gebruikt en voor de basis heb ik een (20X6X1.5) inch lang stuk triplex gebruikt, wat het een beetje meer stabiliteit geeft. Onderstaande afbeelding geeft u een duidelijk idee.
Nu is het tijd om de op nichrome draad gebaseerde filamenten te maken, die als een lont voor onze raket zullen fungeren. Daarvoor heb ik een verwarmingsspiraal met nichroomdraad van 1000 W gekocht, deze recht gemaakt en de structuur gemaakt die hieronder wordt weergegeven. Ik moest twee tangen en zijsnijders gebruiken om de nichroomdraad vorm te geven zoals hieronder weergegeven.
Toen dit eenmaal was gedaan, verdeelde ik het stuk multiplex van 20 inch in zeven stukken, mat het af en boorde gaten om de op nichrome draad gebaseerde filamenten in te doen, en toen het klaar was, zag het eruit als de onderstaande afbeeldingen.
Maar voordat ik de filamenten plaatste, heb ik 1 vierkante mm dikke koperdraad in elke terminal bevestigd en deze door de gaten geleid, zodra alles klaar was, zag het eruit als op de onderstaande afbeelding.
Zoals u kunt zien, heb ik ook de tweecomponentenlijm aangebracht om de draad en filamenten op hun plaats te houden. Als dat klaar is, is ons launchpad compleet. En zoals je kunt zien op de eerste foto in deze sectie, heb ik de gloeidraaddraden direct op de print bevestigd omdat we te maken hebben met zeer hoge stromen dus ik heb niet de moeite genomen om een schroefklem te plaatsen, en dat markeert het einde van ons chassis bouwproces.
Vereiste componenten voor Alexa Controlled Rocket Launcher
Voor de hardwarekant hebben we zeer algemene onderdelen gebruikt die u vrij gemakkelijk bij uw plaatselijke hobbywinkel kunt krijgen, hieronder vindt u een volledige lijst met items.
- 12V-relais - 3
- BD139 transistor - 3
- 1N4004 Diode - 3
- 5,08 mm schroefaansluiting - 1
- LM7805 - Spanningsregelaar - 1
- 100uF ontkoppelingscondensator - 2
- 5,1V zenerdiode - 1
- NodeMCU (ESP8266-12E) kaart - 1
- Gestippelde Perf Board - ½
- Verbindingsdraad - 10
Schakelschema Arduino Rocket Launcher
Het volledige schema voor Alexa Controlled Rocket Launcher wordt hieronder gegeven. Ik heb tags gebruikt om de ene pin met de andere te verbinden. Als je goed genoeg kijkt, zou het niet moeilijk moeten zijn om het schema te interpreteren.
De constructie van het circuit is vrij eenvoudig, dus ik zal niet veel op de details ingaan.
Ten eerste hebben we IC1, een LM7805-spanningsregelaar, met zijn 100uF-ontkoppelingscondensatoren aangeduid met C1 en C2. Daarna hebben we het hart van ons project, het NodeMCU-bord, waarin de ESP-12E-module is ondergebracht. Omdat we een 12V-loodzuuraccu gebruiken om het hele circuit van stroom te voorzien, moeten we daarom de LM7805 gebruiken om deze eerst om te zetten naar 12V naar 5V om het NodeMCU-bord van stroom te voorzien. We doen dit omdat de AMS1117-spanningsregelaar aan boord niet voldoende is om 12V direct om te zetten naar 3,3V, daarom is 7805 nodig.
Verderop hebben we drie 12V-relais, voor deze demonstratie gebruiken we drie relais, maar zoals we eerder hebben vermeld, heeft het lanceerplatform een tijdelijke aanduiding voor 7 raketten. Je kunt de code een beetje aanpassen en alle zeven raketten plaatsen om helemaal te lanceren. De drie relais worden aangestuurd door een T1, T2 en T3, dit zijn drie NPN-transistors, en ze zijn voldoende om de belasting van een real aan te sturen. Ten slotte hebben we drie vrijloopdiodes die het circuit beschermen tegen hoogspanningspieken die door het relais worden gegenereerd.
Het circuit bouwen op PerfBoard
Zoals je op de hoofdafbeelding kunt zien, was het idee om een eenvoudig circuit te maken dat gedurende een korte periode een enorme hoeveelheid stroom kan verwerken, volgens onze tests is 800 milliseconden voldoende om een stuk papier te verlichten. Dus we bouwen het circuit op een stuk perfboard en verbinden alle belangrijke verbindingen met 1 vierkante mm dik koperdraad. Nadat we klaar waren met het solderen van het bord. Toen we klaar waren, zag het eruit als iets dat hieronder wordt weergegeven.
NodeMCU programmeren voor Alexa Controlled Rocket Launcher
Nu de hardware klaar is, is het tijd om te beginnen met coderen voor onze op Alexa gebaseerde spraakgestuurde raketwerper. De volledige code is te vinden aan het einde van deze pagina, maar voordat we beginnen, is het belangrijk om de vereiste bibliotheken toe te voegen aan je Arduino IDE. Zorg ervoor dat u de juiste bibliotheken toevoegt via de onderstaande link, anders zal de code fouten genereren bij het compileren.
- Download Espalexa Bibliotheek
Nadat u de vereiste bibliotheken heeft toegevoegd, kunt u direct de code onderaan deze pagina uploaden om te controleren of het circuit werkt. Als je wilt weten hoe de code werkt, lees dan verder.
Zoals altijd beginnen we het programma door de vereiste headerbestanden toe te voegen en de pincodes en inloggegevens voor onze hotspot te definiëren.
# omvatten
Als we verder gaan met onze code, hebben we onze functieprototypes en callback-functiedefinities.
Functie connectToWiFi () wordt gebruikt om verbinding te maken met het Wi-Fi-netwerk en deze functie keert terug naar true wanneer Wi-Fi succesvol is verbonden.
Vervolgens hebben we onze callback- functies, deze functie wordt aangeroepen wanneer we een commando aan Alexa geven, de espalexa API verwerkt deze functies
void allrockets (uint8_t helderheid); leegte firstrocket (uint8_t helderheid); leegte secondrocket (uint8_t helderheid); ongeldige derde raket (uint8_t helderheid);
Vervolgens definiëren we de apparaatnamen. Deze gedefinieerde apparaatnamen worden weergegeven in de Alexa-app en wanneer we een commando zeggen, herkent Alexa de apparaten aan deze namen. Deze namen zijn dus erg belangrijk.
// Apparaatnamen String First_Device_Name = "All Rockets"; String Secound_Device_Name = "Rocket One"; String Third_Device_Name = "Rocket Two"; String Forth_Device_Name = "Rocket Three";
Vervolgens definiëren we een booleaanse variabele wifiStatus, die de verbindingsstatus van de wifi vasthoudt. Ten slotte maken we een Espalexa-object espalexa. We zullen dit object gebruiken om de NodeMCU te configureren.
// wifi status check boolean wifiStatus = false; // Espalexa Object Espalexa espalexa;
Vervolgens hebben we onze void setup () sectie. In deze sectie initialiseren we seriële communicatie voor foutopsporing met de functie Serial.begin () . We stellen alle eerder gedefinieerde pinnen in als uitvoer met de functie pinMode () , vervolgens noemen we de functie connectToWiFi () , het zal vijftien keer proberen verbinding te maken met wifi als het is verbonden, het zal true retourneren als dat niet het geval is verbinding maken, het zal false retourneren en de code zal voor altijd een while () lus uitvoeren . Als de Wi-Fi-verbinding succesvol is, voegen we de eerder gedefinieerde apparaten toe aan het Alexa-object met behulp van de functie espalexa.addDevice () Deze functie heeft twee argumenten nodig, de eerste is de apparaatnaam, de tweede is de naam van de callback-functie, wanneer we een commando naar Alexa sturen, wordt de aangrenzende functie aangeroepen. Als we klaar zijn met het doen voor alle vier onze apparaten, noemen we de begin () - methoden voor het espalexa-object.
ongeldige setup () {Serial.begin (115200); // Schakel serieel in voor het debuggen van berichten pinMode (ROCKET_1_PIN, OUTPUT); // stel ESP-pinnen in als output pinMode (ROCKET_2_PIN, OUTPUT); // stel ESP-pinnen in als output pinMode (ROCKET_3_PIN, OUTPUT); // stel ESP-pinnen in als output wifiStatus = connectToWiFi (); // Maak verbinding met het lokale wifi-netwerk als (wifiStatus) {// stel alle espalexa-apparaten in // Definieer hier uw apparaten. espalexa.addDevice (First_Device_Name, allrockets); // eenvoudigste definitie, standaard staat uit espalexa.addDevice (Secound_Device_Name, firstrocket); espalexa.addDevice (Third_Device_Name, secondrocket); espalexa.addDevice (Forth_Device_Name, thirdrocket); espalexa.begin (); } else {while (1) {Serial. println ("Kan geen verbinding maken met wifi. Controleer de gegevens en reset de ESP."); vertraging (2500); }}}
In de loop- sectie noemen we de loop () -methode van het espalexa-object dat altijd zal controleren op een inkomend commando en de callback-functie aanroepen als het waar is.
leegte lus () {espalexa.loop (); vertraging (1); }
Vervolgens definiëren we al onze callback-functies, in deze sectie zullen we definiëren wat er gebeurt wanneer deze callback-functie wordt aangeroepen. Wanneer de functie allrockets () wordt aangeroepen, worden alle raketten samen gelanceerd. Daarvoor gaan we het relais 00 ms aanzetten en daarna gaan we de relais uitschakelen. In mijn tests heb ik geconstateerd dat ik voor de gespecificeerde lengte van nichroomdraad 800 ms vertraging nodig heb om de draad volledig te verwarmen, dit kan wel of niet het geval zijn voor jou. Kies dus de vertraging dienovereenkomstig.
void allrockets (uint8_t helderheid) {if (helderheid == 255) {digitalWrite (ROCKET_1_PIN, HIGH); digitalWrite (ROCKET_2_PIN, HIGH); digitalWrite (ROCKET_3_PIN, HIGH); vertraging (800); digitalWrite (ROCKET_1_PIN, LOW); digitalWrite (ROCKET_2_PIN, LOW); digitalWrite (ROCKET_3_PIN, LOW); Serial.println ("Alle raketten gelanceerd"); }}
Vervolgens hebben we onze eerste raket (), deze wordt gebeld wanneer we Alexa bellen en tie-commando zeggen om de eerste raket te lanceren. Het proces lijkt erg op elkaar, we schakelen het relais 800 ms in en schakelen uit.
void firstrocket (uint8_t helderheid) {if (helderheid == 255) {digitalWrite (ROCKET_1_PIN, HIGH); vertraging (800); digitalWrite (ROCKET_1_PIN, LOW); Serial.println ("Eerste raket gelanceerd"); }}
Eindelijk hebben we onze connectToWiFi () -functie. Deze functie is vrij algemeen en spreekt voor zich, dus ik zal niet ingaan op de details over deze functie. Deze functie verbindt de ESP met Wi-Fi en geeft de verbindingsstatus terug.
boolean connectToWiFi () {boolean state = true; int i = 0; WiFi.mode (WIFI_STA); WiFi.begin (ssid, wachtwoord); Serial.println (""); Serial.println ("Verbinding maken met wifi"); // Wacht op verbinding Serial.print ("Bezig met verbinden…"); while (WiFi.status ()! = WL_CONNECTED) {vertraging (500); Serial.print ("."); if (i> 15) {state = false; breken; } i ++; } Serial.println (""); if (state) {Serial.print ("Verbonden met"); Serial.println (ssid); Serial.print ("IP-adres:"); Serial.println (WiFi.localIP ()); } else {Serial.println ("Verbinding mislukt."); } terugkeerstatus; }
Deze gedefinieerde functie markeert het einde van het coderingsgedeelte.
Alexa configureren met Alexa Android-applicatie
Alexa accepteert alleen opdrachten als en alleen als het het esp8866-apparaat herkent. Daarvoor moeten we Alexa configureren met behulp van de Alexa-app op Android. Een belangrijk ding om te doen voordat we verder gaan, is dat we ervoor moeten zorgen dat Alexa is geconfigureerd met onze Android-applicatie.
Om dat te doen, ga je naar het meer-gedeelte van de Alexa-app en klik je op de optie Add a Device, klik je op Light, scrol je naar beneden onder aan de pagina en klik je op Other.
Klik vervolgens op ONTDEK DEVICE en wacht even daarna Alexa zal nieuwe apparaten vinden. Zodra Alexa de apparaten heeft gevonden, moet je erop klikken en ze toevoegen aan hun respectievelijke plaatsen / categorieën, en je bent klaar.
Alexa Controlled Rocket Launcher - Testen
Voor het testproces ging ik naar mijn tuin, trok alle lonten uit de raket, plaatste ze op hun respectievelijke plaatsen, en ik riep Alexa…! Zet alle raketten aan, met mijn vingers gekruist. En alle raketten vlogen door mijn inspanningen als een groot succes te markeren. Het zag er ongeveer zo uit.
Eindelijk zei ik nogmaals Alexa…! Zet alle raketten aan om een episch beeld te krijgen van de filamenten die je hieronder kunt zien.
Voor een meer epische ervaring raad ik je ten zeerste aan om de video te bekijken.