- Wyrzutnia rakiet sterowana głosem Alexa - działa
- Launchpad dla naszego kontrolera wystrzeliwania rakiet NodeMCU
- Komponenty wymagane dla wyrzutni rakiet sterowanych przez Alexę
- Schemat obwodu wyrzutni rakiet Arduino
- Tworzenie obwodu na platformie PerfBoard
- Programowanie NodeMCU dla wyrzutni rakiet kontrolowanych przez Alexę
- Konfiguracja Alexa z aplikacją Alexa na Androida
- Wyrzutnia rakiet kontrolowana przez Alexę - testowanie
W miarę zbliżania się sezonu zimowego; przychodzi ta pora roku, kiedy obchodzone jest święto świateł. Tak, mówimy o Diwali, które jest prawdziwym indyjskim świętem obchodzonym na całym świecie. W tym roku Diwali już się skończyło i widząc ludzi z petardami, wpadłem na pomysł zbudowania sterowanej głosowo wyrzutni rakiet lub zapalnika, która może wystrzelić rakiety za pomocą polecenia głosowego, dzięki czemu jest bardzo bezpieczna i przyjemna dla dzieci.
Żeby było jasne, nie jestem tutaj po to, aby zachęcać ludzi do strzelania z krakersów w Diwali, rząd Indii nałożył ograniczenia na krakersy w celu ograniczenia zanieczyszczenia i naszym obowiązkiem jest ich przestrzeganie. Chodzi o to, że zamiast spędzać cały dzień na strzelaniu z krakersów, zbudujmy fajny sterowany głosem zapalnik rakiet Arduino i wystrzelmy kilka rakiet w dobrym stylu. Uważam to za wygraną.
Ta wyrzutnia rakiet Arduino będzie bardzo różna od innych. Ma bardzo solidne podwozie wykonane ze sklejki, niezawodny mechanizm sterujący oparty na przekaźnikach i bardzo unikalny mechanizm wystrzeliwania i przeładowywania rakiet, więc bez dalszych opóźnień przejdźmy od razu do procesu budowy.
Wyrzutnia rakiet sterowana głosem Alexa - działa
Mechanizm roboczy obwodu jest bardzo prosty, głównym elementem odpowiedzialnym za wystrzelenie rakiety jest drut nichromowy w postaci cewki grzejnej. Ten drut nichromowy będzie działał jako zapalnik rakiety. W jaki sposób? Pokażę ci później.
Jak widać na powyższym obrazku, drut nichromowy występuje w postaci cewki grzejnej, dla mnie był to najłatwiejszy sposób na jego uzyskanie. Musimy wyciągnąć go prosto i zgiąć, aby utworzyć kształt, który wygląda jak na poniższym obrazku.
Gdy to zrobimy, zasilimy go akumulatorem kwasowo-ołowiowym 12 V i będzie świecić na czerwono. To wystarczy, aby zapalić czarny proch wewnątrz rakiety i zadziała jak normalna dawka bezpiecznika. Należy pamiętać, że jest to kontroler wystrzeliwania rakiet o dużej mocy, a prąd wymagany do rozgrzania przewodu jest wysoki. Przestrzegaj wskazówek dotyczących bezpieczeństwa podczas pracy z wysokimi prądami.
Po zakończeniu testów pozostaje tylko proces kontrolowania, który będziemy robić w dalszej części artykułu.
Launchpad dla naszego kontrolera wystrzeliwania rakiet NodeMCU
W przypadku tej kompilacji zróbmy starter. Po ukończeniu startera możemy łatwo przeładować niektóre crackery i bardzo łatwo je uruchomić. Zbudowałem starter, który wygląda jak ten pokazany na poniższym obrazku.
Przejdźmy krok po kroku przez proces tworzenia wyrzutni. Z dwóch stron ramy użyłem dwóch kawałków sklejki (25X3X1,5) cala. W górnej części użyłem sklejki o długości (20X3X1,5) cala, a do podstawy użyłem kawałka sklejki (20X6X1,5) cala, co zapewni jej trochę większą stabilność. Poniższy obrazek da ci jasny pomysł.
Teraz nadszedł czas, aby wykonać włókna na bazie drutu nichromowego, które będą służyć jako lont dla naszej rakiety. W tym celu kupiłem cewkę grzewczą z drutu nichromowego o mocy 1000 W, wyprostowałem ją i wykonałem konstrukcję pokazaną poniżej. Musiałem użyć dwóch szczypiec i bocznych obcinaków, aby uformować drut nichromowy, jak pokazano poniżej.
Gdy to zrobiłem, podzieliłem 20-calowy kawałek sklejki na siedem części, zmierzyłem go i wywierciłem otwory, aby umieścić w nim włókna z drutu nichromowego, a po zakończeniu wyglądało to tak, jak na poniższych ilustracjach.
Ale przed umieszczeniem włókien, przymocowałem drut miedziany o grubości 1 mm2 do każdego zacisku i przepuściłem je przez otwory, gdy wszystko było zrobione, wyglądało to jak na poniższym obrazku.
Jak widać, włożyłem również dwuskładnikowy klej, aby zabezpieczyć drut i włókna na miejscu. Po wykonaniu tych czynności nasz starter jest gotowy. I jak widać na pierwszym zdjęciu w tym dziale, przewody żarnikowe podłączyłem bezpośrednio do płytki drukowanej, ponieważ mamy do czynienia z bardzo dużymi prądami, więc nie zawracałem sobie głowy umieszczeniem zacisku śrubowego, a to oznacza koniec naszego podwozia proces budowy.
Komponenty wymagane dla wyrzutni rakiet sterowanych przez Alexę
Jeśli chodzi o sprzęt, użyliśmy bardzo ogólnych części, które można łatwo kupić w lokalnym sklepie hobbystycznym, pełna lista przedmiotów znajduje się poniżej.
- Przekaźnik 12V - 3
- Tranzystor BD139 - 3
- Dioda 1N4004 - 3
- Zacisk śrubowy 5,08 mm - 1
- LM7805 - regulator napięcia - 1
- Kondensator odsprzęgający 100 uF - 2
- Dioda Zenera 5,1 V - 1
- Płytka NodeMCU (ESP8266-12E) - 1
- Kropkowana deska do perfekcji - ½
- Przewód połączeniowy - 10
Schemat obwodu wyrzutni rakiet Arduino
Pełny schemat wyrzutni rakiet sterowanych przez Alexę znajduje się poniżej. Użyłem tagów, aby połączyć jeden pin z drugim. Jeśli przyjrzysz się wystarczająco blisko, zinterpretowanie schematu nie powinno być trudne.
Konstrukcja obwodu jest dość prosta, więc nie będę zbytnio wchodził w szczegóły.
Po pierwsze, mamy układ IC1, który jest regulatorem napięcia LM7805, z kondensatorami odsprzęgającymi 100 uF oznaczonymi jako C1 i C2. Następnie mamy serce naszego projektu, płytkę NodeMCU, na której znajduje się moduł ESP-12E. Ponieważ używamy akumulatora kwasowo-ołowiowego 12 V do zasilania całego obwodu, dlatego musimy najpierw użyć LM7805, aby najpierw zamienić go na 12 V na 5 V, aby zasilić płytkę NodeMCU. Robimy to, ponieważ wbudowany regulator napięcia AMS1117 nie wystarcza do konwersji bezpośrednio 12 V na 3,3 V, dlatego 7805 jest konieczny.
Idąc dalej, mamy trzy przekaźniki 12V, do tej demonstracji używamy trzech przekaźników, ale jak już wspomnieliśmy, wyrzutnia ma miejsce na 7 rakiet. Możesz trochę zmodyfikować kod i umieścić wszystkie siedem rakiet, aby w ogóle wystartowały. Trzy przekaźniki są sterowane przez T1, T2 i T3, które są trzema tranzystorami NPN i są wystarczające, aby napędzać obciążenie rzeczywiste. Wreszcie mamy trzy diody gaszące, które chronią obwód przed skokami wysokiego napięcia generowanymi przez przekaźnik.
Tworzenie obwodu na platformie PerfBoard
Jak widać na głównym obrazie, pomysł polegał na wykonaniu prostego obwodu, który może obsłużyć ogromną ilość prądu przez krótki czas, zgodnie z naszymi testami 800 milisekund wystarczy, aby rozświetlić kartkę papieru. Dlatego tworzymy obwód na kawałku perfboardu i łączymy wszystkie główne połączenia drutem miedzianym o grubości 1 mm2. Po zakończeniu lutowania płytki. Kiedy skończyliśmy, wyglądało to jak coś, co pokazano poniżej.
Programowanie NodeMCU dla wyrzutni rakiet kontrolowanych przez Alexę
Teraz, gdy sprzęt jest gotowy, czas rozpocząć kodowanie dla naszej wyrzutni rakiet sterowanej głosem Alexa. Cały kod można znaleźć na końcu tej strony, ale zanim zaczniemy, ważne jest, aby dodać wymagane biblioteki do swojego Arduino IDE. Upewnij się, że dodajesz odpowiednie biblioteki z linku podanego poniżej, w przeciwnym razie kod będzie generował błędy podczas kompilacji.
- Pobierz bibliotekę Espalexa
Po dodaniu wymaganych bibliotek, możesz bezpośrednio przesłać kod podany na dole tej strony, aby sprawdzić, czy obwód działa. Jeśli chcesz wiedzieć, jak działa kod, czytaj dalej.
Jak zawsze zaczynamy program od dodania wymaganych plików nagłówkowych i zdefiniowania nazw pinów i danych uwierzytelniających dla naszego hotspotu.
#zawierać
Kontynuując nasz kod, mamy prototypy funkcji i definicje funkcji zwrotnych.
Funkcja connectToWiFi () służy do łączenia się z siecią Wi-Fi i ta funkcja zwraca wartość true, gdy Wi-Fi zostanie pomyślnie podłączony.
Następnie mamy nasze funkcje zwrotne , te funkcje zostaną wywołane, gdy wydamy polecenie Alexa, API espalexa obsługuje te funkcje
void allrockets (jasność uint8_t); void firstrocket (jasność uint8_t); void secondrocket (jasność uint8_t); void thirdrocket (jasność uint8_t);
Następnie definiujemy nazwy urządzeń. Te zdefiniowane nazwy urządzeń zostaną odzwierciedlone w aplikacji Alexa, a kiedy wypowiemy polecenie, Alexa rozpozna urządzenia po tych nazwach. Więc te imiona są bardzo ważne.
// Nazwy urządzeń String First_Device_Name = "Wszystkie rakiety"; String Secound_Device_Name = "Rocket One"; String Third_Device_Name = "Rakieta druga"; String Forth_Device_Name = "Rocket Three";
Następnie definiujemy zmienną logiczną wifiStatus, która będzie przechowywać stan połączenia Wi-Fi. Na koniec tworzymy obiekt Espalexa espalexa. Będziemy używać tego obiektu do konfigurowania NodeMCU.
// sprawdzenie statusu wifi boolean wifiStatus = false; // Obiekt Espalexa Espalexa espalexa;
Następnie mamy sekcję void setup () . W tej sekcji inicjalizujemy komunikację szeregową do debugowania za pomocą funkcji Serial.begin () . Ustawiamy wszystkie wcześniej zdefiniowane piny jako wyjście z funkcją pinMode () , następnie wywołujemy funkcję connectToWiFi () , spróbuje połączyć się z Wi-Fi piętnaście razy, jeśli jest podłączony, zwróci true, jeśli nie get connected, zwróci false, a kod wykona pętlę while () w nieskończoność. Jeśli połączenie Wi-Fi powiedzie się, dodajemy wcześniej zdefiniowane urządzenia do obiektu Alexa za pomocą funkcji espalexa.addDevice (), która przyjmuje dwa argumenty, pierwszy to nazwa urządzenia, druga to nazwa funkcji zwrotnej, kiedy wyślemy polecenie do Alexy, zostanie wywołana sąsiednia funkcja. Gdy skończymy robić to dla wszystkich czterech naszych urządzeń, wywołujemy metody begin () dla obiektu espalexa.
void setup () {Serial.begin (115200); // Włącz port szeregowy do debugowania wiadomości pinMode (ROCKET_1_PIN, OUTPUT); // ustawianie pinów ESP jako wyjściowych pinMode (ROCKET_2_PIN, OUTPUT); // ustawianie pinów ESP jako wyjściowych pinMode (ROCKET_3_PIN, OUTPUT); // ustawianie pinów ESP jako danych wyjściowych wifiStatus = connectToWiFi (); // Połącz się z lokalną siecią Wi-Fi if (wifiStatus) {// skonfiguruj wszystkie urządzenia espalexa // Zdefiniuj tutaj swoje urządzenia. espalexa.addDevice (First_Device_Name, allrockets); // najprostsza definicja, domyślny stan wyłączony espalexa.addDevice (nazwa_urządzenia_druga, firstrocket); espalexa.addDevice (Third_Device_Name, secondrocket); espalexa.addDevice (Forth_Device_Name, thirdrocket); espalexa.begin (); } else {while (1) {Serial. println ("Nie można połączyć się z WiFi. Sprawdź dane i zresetuj ESP."); opóźnienie (2500); }}}
W sekcji loop wywołujemy metodę loop () obiektu espalexa, która zawsze sprawdza, czy nie ma przychodzącej komendy, i wywołuje funkcję zwrotną, jeśli uzna ją za prawdziwą.
void loop () {espalexa.loop (); opóźnienie (1); }
Następnie definiujemy wszystkie nasze funkcje zwrotne, w tej sekcji zdefiniujemy, co się stanie, gdy ta funkcja zwrotna zostanie wywołana. Po wywołaniu funkcji allrockets () wszystkie rakiety zostaną wystrzelone razem. W tym celu włączymy przekaźnik na 00 ms, a następnie przekaźniki będziemy wyłączać. W moich testach odkryłem, że dla określonej długości drutu nichromu potrzebuję 800 ms opóźnienia, aby całkowicie podgrzać drut, może to być lub nie w przypadku ciebie. Więc wybierz odpowiednio opóźnienie.
void allrockets (uint8_t jasność) {if (jasność == 255) {digitalWrite (ROCKET_1_PIN, HIGH); digitalWrite (ROCKET_2_PIN, HIGH); digitalWrite (ROCKET_3_PIN, HIGH); opóźnienie (800); digitalWrite (ROCKET_1_PIN, LOW); digitalWrite (ROCKET_2_PIN, LOW); digitalWrite (ROCKET_3_PIN, LOW); Serial.println ("Wszystkie rakiety wystrzelone"); }}
Następnie mamy naszą pierwszą rakietę (), która jest wywoływana, gdy dzwonimy do Alexy i mówimy polecenie tie, aby wystrzelić pierwszą rakietę. Proces jest bardzo podobny, włączamy przekaźnik na 800ms i wyłączamy.
void firstrocket (jasność uint8_t) {if (jasność == 255) {digitalWrite (ROCKET_1_PIN, HIGH); opóźnienie (800); digitalWrite (ROCKET_1_PIN, LOW); Serial.println ("Pierwsza rakieta wystrzelona"); }}
Wreszcie mamy funkcję connectToWiFi () . Ta funkcja jest dość ogólna i nie wymaga objaśnień, więc nie będę wchodzić w szczegóły dotyczące tej funkcji. Ta funkcja łączy ESP z Wi-Fi i zwraca stan połączenia.
boolean connectToWiFi () {boolean state = true; int i = 0; WiFi.mode (WIFI_STA); WiFi.begin (ssid, hasło); Serial.println (""); Serial.println („Łączenie z WiFi”); // Czekaj na połączenie Serial.print ("Łączenie…"); while (WiFi.status ()! = WL_CONNECTED) {opóźnienie (500); Serial.print („.”); if (i> 15) {stan = fałsz; przerwa; } i ++; } Serial.println („”); if (stan) {Serial.print ("Połączony z"); Serial.println (ssid); Serial.print ("adres IP:"); Serial.println (WiFi.localIP ()); } else {Serial.println ("Połączenie nie powiodło się."); } stan powrotu; }
Ta zdefiniowana funkcja oznacza koniec części kodującej.
Konfiguracja Alexa z aplikacją Alexa na Androida
Alexa akceptuje polecenia tylko wtedy i tylko wtedy, gdy rozpoznaje urządzenie esp8866. W tym celu musimy skonfigurować Alexę za pomocą aplikacji Alexa na Androida. Jedną ważną rzeczą do zrobienia, zanim przejdziemy dalej, jest to, że musimy upewnić się, że Alexa jest skonfigurowana z naszą aplikacją na Androida.
Aby to zrobić, przejdź do sekcji Więcej aplikacji Alexa i kliknij opcję Dodaj urządzenie, kliknij opcję Światło, a następnie przewiń w dół na dole strony i kliknij Inne.
Następnie kliknij ODKRYJ URZĄDZENIE i poczekaj chwilę, po czym Alexa znajdzie nowe urządzenia. Gdy Alexa znajdzie urządzenia, musisz je kliknąć i dodać je do odpowiednich miejsc / kategorii, i gotowe.
Wyrzutnia rakiet kontrolowana przez Alexę - testowanie
W celu przeprowadzenia testów poszedłem do swojego ogrodu, wyciągnąłem z rakiety wszystkie bezpieczniki, umieściłem je w odpowiednich miejscach i krzyknąłem Alexa…! Włącz wszystkie Rockets, trzymając kciuki. Wszystkie rakiety poleciały, co oznacza, że moje wysiłki odniosły ogromny sukces. Wyglądało to mniej więcej tak.
Na koniec jeszcze raz powiedziałem Alexa…! Włącz wszystkie rakiety, aby uzyskać niesamowity obraz włókien, który możesz zobaczyć poniżej.
Aby uzyskać bardziej epickie wrażenia, gorąco polecam obejrzenie wideo.