- Alexa alapú hangvezérelt rakétaindító - működik
- Indítópult a NodeMCU rakétaindító vezérlőnkhöz
- Az Alexa által vezérelt rakétaindítóhoz szükséges elemek
- Arduino rakétaindító áramköri rajza
- Az áramkör felépítése a PerfBoard-ra
- NodeMCU programozása az Alexa által vezérelt rakétaindítóhoz
- Alexa beállítása az Alexa Android alkalmazással
- Alexa vezérelt rakétaindító - tesztelés
A téli szezon közeledtével; az évnek akkor jön el, amikor a fényfesztivált ünneplik. Igen, Diwaliról beszélünk, amely egy igazi indiai fesztivál, amelyet világszerte ünnepelnek. Idén Diwali már véget ért, és petárdákat látva az embereknek az ötlete támadt, hogy megépítsem az Alexa alapú hangvezérelt rakétakilövőt vagy gyújtót, amely csak hangparancsokkal képes rakétákat indítani, ezáltal nagyon biztonságos és szórakoztató a gyermekek számára.
Világossá téve, nem azért vagyok itt, hogy arra ösztönözzem az embereket, hogy Diwaliban kekszet lőjenek, az indiai kormány a szennyezés visszaszorítása érdekében korlátozásokat hajtott végre a kekszekkel szemben, és mi felelősségünk ezt betartani. Az ötlet az, hogy ahelyett, hogy egész nap crackerek lövöldözésével töltenénk, építsünk egy jó hangvezérelt Arduino rakétagyújtót, és stílusosan lőjünk ki néhány rakétát. Úgy látom, hogy ez win-win.
Ez az Arduino rakétavető nagyon különbözni fog a többitől. Nagyon masszív, furnérlemezből készült alvázzal rendelkezik, megbízható relé-alapú vezérlő mechanizmussal és nagyon egyedi mechanizmussal a rakéták kilövésére és újratöltésére, így további késedelem nélkül menjünk bele közvetlenül az építési folyamatba.
Alexa alapú hangvezérelt rakétaindító - működik
Az áramkör működési mechanizmusa nagyon egyszerű, a rakéta indításáért felelős fő alkatrész a nikrom huzal, amely fűtőtekercs formájában jön létre. Ez a nikrom huzal rakétagyújtóként fog működni . Hogyan? Később megmutatom.
Mint látható a fenti képen, a Nikrómhuzal formájában érkezik egy fűtőtekercs, nekem ez volt a legegyszerűbb módja, hogy azt. Egyenesen kell meghúznunk és meg kell hajlítanunk, hogy olyan alakot alkossunk, amely az alábbi képen látható módon néz ki.
Miután ezt megtettük, 12 V-os ólom-savas akkumulátorral működtetjük, és vörösen izzik. Ez elég lesz a rakéta belsejében lévő fekete por meggyulladásához, és ugyanúgy fog működni, mint egy normál biztosítékadag. Felhívjuk figyelmét, hogy ez egy nagy teljesítményű rakétaindító vezérlő, a vezeték vörös forróvá tételéhez szükséges áram nagy. Kövesse a biztonsági tanácsokat, ha nagy áram mellett dolgozik.
Miután a tesztelés megtörtént, az egyetlen dolog marad a kontrolling folyamat, amelyet a cikkben folytatva folytatunk.
Indítópult a NodeMCU rakétaindító vezérlőnkhöz
Ehhez az összeállításhoz készítsünk egy indítópultot. A startpad elkészültével könnyen feltölthetünk néhány kekszet, és nagyon könnyen elindíthatjuk őket. Építettem egy indítópultot, amely úgy néz ki, mint az alábbi képen látható.
Menjünk át az indítópult felépítésének lépésről lépésre. A keret két oldalához két (25X3X1,5) hüvelyk hosszú rétegelt lemezt használtam. A felső részhez egy (20X3X1,5) hüvelyk hosszú rétegelt lemezt használtam, az aljhoz pedig egy (20X6X1,5) hüvelyk hosszú rétegelt lemezt használtam, ami egy kicsit nagyobb stabilitást kölcsönöz neki. Az alábbi kép világos képet fog adni.
Itt az ideje elkészíteni a nichrom huzal alapú szálakat, amelyek biztosítékul szolgálnak a rakétánk számára. Ehhez vettem egy 1000 W-os nichrom huzal alapú fűtőtekercset, kiegyenesítettem és elkészítettem az alább látható szerkezetet. Két fogót és oldalvágót kellett használnom a nichrom huzal alakításához az alábbiak szerint.
Miután ez megtörtént, a 20 hüvelykes rétegelt lemeztömböt hét darabra osztottam, megmértem, és lyukakat fúrtam a nikrom huzal alapú szálak behelyezéséhez, és ha ez megtörtént, úgy nézett ki, mint az alábbi képek.
De az izzószálak elhelyezése előtt minden terminálhoz 1 négyzetméter vastag rézhuzalt csatlakoztattam, és átengedtem a lyukakon, miután minden elkészült, úgy nézett ki, mint az alábbi kép.
Mint látható, a kétkomponensű ragasztót is behelyeztem a huzal és az izzószálak rögzítésére. Ezzel elkészült az indítópultunk. És amint az ebben a szakaszban látható első képen látható, közvetlenül csatlakoztattam az izzószálakat a NYÁK-hoz, mert nagyon nagy áramokkal van dolgunk, ezért nem zavartam magam egy csavaros terminál elhelyezésével, és ez jelzi az alvázunk végét építési folyamat.
Az Alexa által vezérelt rakétaindítóhoz szükséges elemek
A dolgok hardveres oldalán nagyon általános alkatrészeket használtunk, amelyeket meglehetősen könnyen beszerezhet a helyi hobbiboltból. A cikkek teljes listája az alábbiakban található.
- 12V-relé - 3
- BD139 tranzisztor - 3
- 1N4004 Dióda - 3
- 5,08 mm-es csavaros kapocs - 1
- LM7805 - Feszültségszabályozó - 1
- 100uF leválasztó kondenzátor - 2
- 5,1 V-os Zener-dióda - 1
- NodeMCU (ESP8266-12E) alaplap - 1
- Pontozott Perf Board - ½
- Csatlakozó vezeték - 10
Arduino rakétaindító áramköri rajza
Az Alexa Controlled Rocket Launcher teljes vázlata az alábbiakban látható. Címkékkel csatlakoztattam az egyik csapot a másikhoz. Ha elég közelről nézel ki, akkor nem lehet nehéz a sémát értelmezni.
Az áramköri konstrukció meglehetősen egyszerű, ezért nem nagyon foglalkozom a részletekkel.
Először is van IC1, amely egy LM7805 feszültségszabályozó, a 100uF leválasztó kondenzátorokkal, amelyeket C1 és C2 jelöl. Ezt követően megvan a projektünk szíve, a NodeMCU kártya, amely az ESP-12E modult tartalmazza. Mivel egy 12 V-os ólom-savas akkumulátort használunk az egész áramkör ellátására, ezért az LM7805-öt kell használnunk, hogy először 12 V-ról 5 V-ra alakítsuk át a NodeMCU kártya áramellátását. Tesszük ezt, mert a fedélzeti AMS1117 feszültségszabályozó nem elegendő ahhoz, hogy a 12 V-ot közvetlenül 3,3 V-ra alakítsuk, ezért szükséges a 7805.
Továbbhaladva három 12 V-os relénk van, ehhez a bemutatóhoz három relét használunk, de mint korábban említettük, az indítópulton 7 rakétának van helyőrzője. Kicsit módosíthatja a kódot, és mind a hét rakétát elhelyezheti, hogy összesen elinduljon. A három relét egy T1, T2 és T3 hajtja, amelyek három NPN tranzisztor, és elegendőek egy valós terhelésének meghajtására. Végül három szabadonfutó diódánk van, amelyek megvédik az áramkört a relé által generált nagyfeszültségű tüskéktől.
Az áramkör felépítése a PerfBoard-ra
Amint a fő képből látható, az ötlet egy egyszerű áramkör készítése volt, amely rövid ideig hatalmas mennyiségű áramot képes kezelni, tesztjeink szerint 800 milliszekundum elegendő egy papír megvilágításához. Tehát egy áramköri darabra építjük az áramkört, és az összes fő csatlakozást 1 négyzetméter vastag rézhuzallal kössük össze. Miután befejeztük a tábla forrasztását. Miután végeztünk, úgy nézett ki, mint valami, ami alább látható.
NodeMCU programozása az Alexa által vezérelt rakétaindítóhoz
Most, hogy a hardver készen áll, itt az ideje elkezdeni az Alexa alapú hangvezérelt rakétavető kódolását. A teljes kód megtalálható ennek az oldalnak a végén, de mielőtt elkezdenénk, fontos, hogy hozzáadjuk a szükséges könyvtárakat az Arduino IDE-hez. Győződjön meg róla, hogy a megfelelő könyvtárakat adta-e meg az alább megadott linkről, különben a kód hibákat dob a fordítás során.
- Töltse le az Espalexa könyvtárat
A szükséges könyvtárak hozzáadása után közvetlenül feltöltheti az oldal alján megadott kódot, hogy ellenőrizze, működik-e az áramkör. Ha tudni szeretné a kód működését, olvassa tovább.
Mint mindig, a programot úgy is elindítjuk, hogy hozzáadjuk a szükséges fejlécfájlokat, és meghatározzuk a hotspotunkhoz tartozó pin neveket és hitelesítő adatokat.
#include
Tovább haladva a kódunkkal, megvan a függvény prototípusunk és a visszahívási függvény meghatározása.
A connectToWiFi () funkcióval csatlakozni lehet a Wi-Fi hálózathoz, és ez a funkció igaz lesz, ha a Wi-Fi sikeresen csatlakozik.
Ezután megvannak a visszahívási függvényeink, ezeket a függvényeket akkor hívjuk meg, amikor parancsot adunk az Alexának, az espalexa API kezeli ezeket a függvényeket
void allrockets (uint8_t fényerő); void firstrocket (uint8_t fényerő); void secondrocket (uint8_t fényerő); void thirdrocket (uint8_t fényerő);
Ezután meghatározzuk az Eszközneveket. Ezek a meghatározott eszköznevek tükröződnek az Alexa alkalmazásban, és amikor kimondunk egy parancsot, az Alexa ezen nevek alapján fogja felismerni az eszközöket. Tehát ezek a nevek nagyon fontosak.
// Eszköznevek String First_Device_Name = "Minden rakéta"; String Secound_Device_Name = "Rakéta egy"; String Third_Device_Name = "Két rakéta"; String Forth_Device_Name = "Harmadik rakéta";
Ezután meghatározzuk a wifiStatus logikai változót , amely megtartja a Wi-Fi kapcsolat állapotát. Végül létrehozunk egy Espalexa objektumot. Ezt az objektumot fogjuk használni a NodeMCU konfigurálásához.
// wifi állapot ellenőrzése logikai wifiStatus = hamis; // Espalexa objektum Espalexa espalexa;
Ezután megkapjuk a void setup () részt. Ebben a szakaszban inicializáljuk a soros kommunikációt a Serial.begin () függvény hibakereséséhez. Az összes korábban definiált csapot kimenetként állítottuk be pinMode () függvénnyel, majd a connectToWiFi () függvényt hívjuk meg, tizenötször megpróbálja csatlakozni a Wi-Fi-hez, ha csatlakozik, akkor igaz lesz, ha nem csatlakozzon, hamis értéket ad vissza, és a kód egy darab () ciklust fog végleg végrehajtani. Ha a Wi-Fi kapcsolat sikeres, akkor hozzáadjuk a korábban definiált eszközöket az Alexa objektumhoz az espalexa.addDevice () függvény használatával. Ez a függvény két argumentumot igényel, az első az Eszköz neve, a második a visszahívási függvény neve, amikor parancsot adunk ki Alexának, a szomszédos függvény lesz meghívva. Miután mind a négy eszközünkkel megcsináltuk, meghívjuk az espalexa objektum start () metódusait.
void setup () {Soros.kezdés (115200); // Soros engedélyezése az üzenetek hibakereséséhez pinMode (ROCKET_1_PIN, OUTPUT); // ESP csapok beállítása kimeneti pinMode-ként (ROCKET_2_PIN, OUTPUT); // ESP csapok beállítása kimeneti pinMode-ként (ROCKET_3_PIN, OUTPUT); // az ESP csapok beállítása kimenetként wifiStatus = connectToWiFi (); // Csatlakozás a helyi Wi-Fi hálózathoz, ha (wifiStatus) {// az összes espalexa eszköz beállítása // Itt definiálja eszközeit. espalexa.addDevice (First_Device_Name, allrockets); // a legegyszerűbb meghatározás, alapértelmezett állapot ki van kapcsolva espalexa.addDevice (Secound_Device_Name, firstrocket); espalexa.addDevice (harmadik_eszköz_neve, secondrocket); espalexa.addDevice (Forth_Device_Name, thirdrocket); espalexa.begin (); } else {while (1) {Soros. println ("Nem lehet csatlakozni a WiFi-hez. Kérjük, ellenőrizze az adatokat és állítsa vissza az ESP-t."); késés (2500); }}}
A ciklus szakaszban meghívjuk az espalexa objektum loop () metódusát, amely mindig ellenőrzi az esetleges bejövő parancsokat, és meghívja a visszahívási függvényt, ha igaznak találja.
void loop () {espalexa.loop (); késés (1); }
Ezután meghatározzuk az összes visszahívási függvényünket, ebben a részben meghatározzuk, mi történik, ha ezt a visszahívási funkciót meghívjuk. Az allrockets () függvény meghívásakor az összes rakétát együtt indítják. Ehhez be kell kapcsolnunk a relét 00 ms-ig, majd ezt követően kikapcsoljuk a reléket. Tesztjeim során azt tapasztaltam, hogy a meghatározott hosszúságú nikrom huzalhoz 800 ms késleltetésre van szükségem, hogy teljesen felmelegítsem a vezetéket, ez lehet vagy nem. Válassza tehát a késleltetést.
void allrockets (uint8_t fényerő) {if (fényerő == 255) {digitalWrite (ROCKET_1_PIN, HIGH); digitalWrite (ROCKET_2_PIN, HIGH); digitalWrite (ROCKET_3_PIN, HIGH); késés (800); digitalWrite (ROCKET_1_PIN, LOW); digitalWrite (ROCKET_2_PIN, LOW); digitalWrite (ROCKET_3_PIN, LOW); Serial.println ("Minden rakétát elindítottak"); }}
Ezután megvan az első rakétánk (), ezt hívják, amikor felhívjuk Alexát, és megadjuk a tie parancsot az első rakéta elindításához. A folyamat nagyon hasonló, bekapcsoljuk a relét 800 ms-ra és kikapcsoljuk.
void firstrocket (uint8_t fényerő) {if (fényerő == 255) {digitalWrite (ROCKET_1_PIN, HIGH); késés (800); digitalWrite (ROCKET_1_PIN, LOW); Serial.println ("Elindult az első rakéta"); }}
Végül megvan a connectToWiFi () függvény. Ez a funkció meglehetősen általános és magától értetődő, ezért nem térek ki a funkció részleteire. Ez a funkció összekapcsolja az ESP-t a Wi-Fi-vel, és visszaadja a kapcsolat állapotát.
logikai kapcsolódásToWiFi () {logikai állapot = igaz; int i = 0; WiFi.mode (WIFI_STA); WiFi.begin (ssid, jelszó); Soros.println (""); Serial.println ("Csatlakozás WiFi-hez"); // Várja meg a kapcsolatot a Serial.print ("Csatlakozás…"); while (WiFi.status ()! = WL_CONNECTED) {késleltetés (500); Soros.nyomtatás ("."); if (i> 15) {állapot = hamis; szünet; } i ++; } Soros.println (""); if (állapot) {Serial.print ("Csatlakoztatva"); Soros.println (ssid); Serial.print ("IP-cím:"); Serial.println (WiFi.localIP ()); } else {Serial.println ("Nem sikerült a kapcsolat."); } visszatérési állapot; }
Ez a meghatározott funkció jelöli a kódoló rész végét.
Alexa beállítása az Alexa Android alkalmazással
Az Alexa csak akkor fogadja el a parancsokat, ha felismeri az esp8866 eszközt. Ehhez be kell állítanunk az Alexát az Android Alexa alkalmazásának segítségével. Az egyik fontos dolog, mielőtt továbblépnénk, az, hogy meg kell győződnünk arról, hogy Alexa konfigurálva van-e androidos alkalmazásunkkal.
Ehhez lépjen az Alexa alkalmazás további szakaszába, és kattintson az Eszköz hozzáadása lehetőségre, kattintson a Fény elemre , majd görgessen lefelé az oldal alján, és kattintson az Egyéb elemre.
Ezután kattintson a DISCOVER DEVICE elemre, és várjon egy percet, majd Alexa új eszközöket talál. Miután Alexa megtalálta az eszközöket, rájuk kell kattintania, és hozzá kell adnia őket a megfelelő helyekhez / kategóriákhoz, és kész.
Alexa vezérelt rakétaindító - tesztelés
A teszteléshez elmentem a kertembe, kihúztam az összes biztosítékot a rakétából, a helyükre helyeztem, és Alexát kiabáltam… Kapcsolja be az összes rakétát, keresztbe tett ujjaimmal. És az összes rakéta úgy repült, hogy erőfeszítéseimet hatalmas sikernek minősítette. Valahogy így nézett ki.
Végül még egyszer mondtam Alexának…! Kapcsolja be az összes rakétát, hogy epikus képet kapjon az izzószálakról, amelyeket alább láthat.
Az epikusabb élmény érdekében nagyon ajánlom, hogy nézze meg a videót.