Jak zrobić własny przycisk Wi-Fi podłączony za pomocą ESP8266

  • Owen Little
  • 0
  • 1556
  • 281
Reklama

Internet przedmiotów ma ogromny potencjał dla majsterkowiczów. Mając wystarczającą wiedzę i kilka tanich komponentów, możesz zbudować złożony system połączonych urządzeń.

Czasami jednak potrzebujesz czegoś prostego. Żadnych dzwonków ani gwizdków, tylko przycisk, który wykonuje jedno zadanie. Być może znasz już coś takiego, jeśli kiedykolwiek używałeś przycisku Amazon Dash do zmiany kolejności codziennych artykułów gospodarstwa domowego.

Dzisiaj zrobimy przycisk z obsługą Wi-Fi za pomocą NodeMCU i zaprogramujemy go, aby używał IFTTT do robienia… cóż, wszystkiego! Pisemne instrukcje po filmie, jeśli wolisz.

Co będziesz potrzebował

Będziesz potrzebować:

  • 1 x płyta NodeMCU (ESP8266), dostępna za 2-3 USD w AliExpress
  • 1 x przycisk
  • 1 x LED (opcjonalnie)
  • 1 x rezystor 220 omów (opcjonalnie)
  • Druty do krojenia i łączenia
  • Micro USB do programowania
  • Komputer z zainstalowanym Arduino IDE

Oprócz NodeMCU powinieneś być w stanie znaleźć większość tych części w dowolnym zestawie startowym Arduino 4 Najlepsze zestawy startowe dla początkujących Arduino 4 Najlepsze zestawy startowe dla początkujących Arduino Istnieje wiele świetnych projektów Arduino dla początkujących, których możesz użyć, aby rozpocząć, ale najpierw potrzebujesz Arduino i niektórych komponentów. Oto nasz wybór 4 najlepszych zestawów startowych do… W tym samouczku założono, że używasz opcjonalnej diody LED i rezystora, ale nie są one niezbędne.

Krok 1: Konfiguracja obwodu

Konfiguracja sprzętu jest bardzo prosta dla tego projektu. Ustaw swoją tablicę zgodnie z tym schematem.

Dołączony jest fioletowy drut pin D0 po jednej stronie przycisku. Zielony przewód łączy drugą stronę przycisku z Pin RST. Niebieski przewód biegnie od pin D1 do rezystora i diody LED. Ujemna noga diody LED jest przymocowana do Pin GND NodeMCU.

Po skonfigurowaniu płyty powracającej powinna ona wyglądać mniej więcej tak:

Jeśli zastanawiasz się, w jaki sposób doprowadziłem diodę LED do styku uziemienia za pomocą tych maleńkich kawałków kabla, nasz szybki kurs awaryjny „Breadboard” Czym jest Breadboard i jak to działa? Szybki kurs zderzeniowy Co to jest deska do krojenia chleba i jak to działa? Kurs szybkiej awarii Chcesz nauczyć się elektroniki dla majsterkowiczów? Być może otrzymałeś płytkę ścienną w zestawie startowym. Ale co to jest deska do krojenia i jak to działa? powinno pomóc to wyjaśnić! Sprawdź konfigurację i podłącz NodeMCU do komputera przez USB.

Krok 2: Konfiguracja IDE

Przed przystąpieniem do kodowania musisz się przygotować. Jeśli jeszcze tego nie zrobiłeś, skonfiguruj Arduino IDE do rozpoznawania twojej płyty NodeMCU. Możesz dodać go do listy forów za pośrednictwem Plik> Preferencje.

Bardziej szczegółowe wyjaśnienie tego kroku można znaleźć w naszym artykule wprowadzającym do NodeMCU.

Do tego projektu wymagane są dwie biblioteki. Nawigować do Szkic> Uwzględnij bibliotekę> Zarządzaj bibliotekami. Szukać ESP8266WIFI autor: Ivan Grokhotkov i zainstaluj go. Ta biblioteka została napisana do nawiązywania połączeń Wi-Fi z płytą NodeMCU.


Następnie wyszukaj IFTTTWebhook John Romkey i zainstaluj najnowszą wersję. Ta biblioteka została zaprojektowana w celu uproszczenia procesu wysyłania haków internetowych do IFTTT.

To wszystko, czego potrzebujemy, niech kod!

Jak będzie działał kod

Użyjemy ESP8266WIFI biblioteka do ustanowienia połączenia Wi-Fi. The IFTTTWebhooks biblioteka zwraca się do IFTTT-w tym przypadku o opublikowanie na Twitterze. Następnie poinstruuj kartę NodeMCU, aby śpiła, gdy nie jest używana, aby oszczędzać energię.

Po naciśnięciu przycisku nastąpi połączenie D0 i RST szpilki. Spowoduje to zresetowanie płyty i proces powtórzy się.

Większość kodu w tym samouczku jest wystarczająco prosta dla początkujących. To powiedziawszy, jeśli zaczynasz, zrozumienie go po zapoznaniu się z naszym przewodnikiem dla początkujących Arduino będzie o wiele łatwiejsze.

Ten samouczek zawiera fragment kodu, aby pomóc w zrozumieniu. Jeśli chcesz od razu przejść do biznesu, możesz znaleźć pełny kod w Pastebin. Pamiętaj, że nadal będzie trzeba podać w tym kodzie dane uwierzytelniające Wi-Fi i IFTTT!

Krok 3: Testowanie głębokiego snu

Na początek stworzymy prosty test, aby pokazać, jak działa głęboki sen. Otwórz nowy szkic w Arduino IDE. Wprowadź następujące dwa fragmenty kodu.

#include #include #define ledPin 5 #define wakePin 16 #define ssid "YOUR_WIFI_SSID" #define password "YOUR_WIFI_PASSWORD" #define IFTTT_API_KEY "IFTTT_KEY_GOES_HERE" #define IFTTT_EVENT 

W tym miejscu uwzględniamy nasze biblioteki, a także definiujemy kilka zmiennych, których będziemy potrzebować w naszym szkicu. Zauważysz, że ledPin i wakePin są tutaj ponumerowane inaczej niż na powyższym schemacie Fritzinga. NodeMCU ma inny pinout niż płyty Arduino. Nie jest to jednak problem ze względu na ten przydatny schemat:

Teraz utwórz funkcję konfiguracji:

void setup () Serial.begin (115200); while (! Serial)  Serial.println (""); // wydrukuj pusty wiersz przed i po naciśnięciu przycisku Naciśnij Serial.println ("Button Pressed"); Serial.println (""); // wydrukuj pusty wiersz ESP.deepSleep (wakePin);  

Tutaj skonfigurowaliśmy nasz port szeregowy i używamy pętli while, aby poczekać, aż się zacznie. Ponieważ ten kod zostanie uruchomiony po naciśnięciu przycisku resetowania, drukujemy “Przycisk wciśnięty” do monitora szeregowego. Następnie mówimy NodeMCU, aby wszedł w głęboki sen, dopóki przycisk łączący wakePin do RST pin jest wciśnięty.

Wreszcie, do testowania, dodaj to do swojego pętla() metoda:

void loop () // jeśli działa tryb głębokiego uśpienia, ten kod nigdy się nie uruchomi. Serial.println („To nie powinno zostać wydrukowane”);  

Zwykle szkice Arduino uruchamiają funkcję pętli w sposób ciągły po instalacji. Ponieważ wysyłamy płytę do trybu uśpienia przed zakończeniem instalacji, pętla nigdy nie działa.

Zapisz szkic i prześlij go na tablicę. Otwórz monitor szeregowy i powinieneś zobaczyć “Przycisk wciśnięty.” Za każdym razem, gdy przycisk zostanie uruchomiony, płyta resetuje się, a komunikat drukuje się ponownie. To działa!

Uwaga na temat monitora szeregowego

Być może zauważyłeś niektóre nonsensowne znaki na monitorze szeregowym podczas niektórych swoich projektów. Jest to zwykle spowodowane tym, że monitor szeregowy nie jest ustawiony na taką samą prędkość transmisji, jak Serial.begin (XXXX) oceniać.

Wiele przewodników sugeruje rozpoczęcie połączenia szeregowego z szybkością 115200 w przypadku takiego projektu. Próbowałem wielu kombinacji i wszystkie miały różne stopnie bełkotu przed i po wiadomościach seryjnych. Według różnych postów na forum może to być przyczyną wadliwej płyty lub problemu ze zgodnością oprogramowania. Ponieważ nie wpływa to zbytnio na projekt, postanowiłem udawać, że tak się nie dzieje.

Jeśli masz problemy z monitorem szeregowym, wypróbuj różne prędkości transmisji i sprawdź, która z nich jest najlepsza.

Krok 4: Łączenie z Wi-Fi

Teraz utwórz funkcję łączenia się z siecią Wi-Fi.

void connectToWifi () Serial.print („Łączenie z: NAZWA SSID”); // odkomentuj następny wiersz, aby wyświetlić nazwę SSID //Serial.print(ssid); WiFi.begin (ssid, hasło); Serial.println („”); // wydrukuj pusty wiersz Serial.print („Próba połączenia:”); // spróbuj połączyć się przez 10 sekund int i = 10; while (WiFi.status ()! = WL_CONNECTED && i> = 0) delay (1000); Serial.print (i); Serial.print (","); ja--;  Serial.println („”); // wydrukuj pusty wiersz // wydrukuj wynik połączenia, jeśli (WiFi.status () == WL_CONNECTED) Serial.print („Connected.”); Serial.println („”); // wydrukuj pusty wiersz Serial.print („adres IP NodeMCU:”); Serial.println (WiFi.localIP ());  else Serial.println („Połączenie nieudane - sprawdź swoje dane uwierzytelniające lub połączenie”);  

Ta metoda próbuje połączyć się z siecią dziesięć razy z sekundą pomiędzy nimi. Powodzenie lub awaria połączenia drukuje się na monitorze szeregowym.

Krok 5: Wywołanie metody połączenia

W tej chwili connectToWifi () nigdy nie jest nazywany. Dodaj połączenie do funkcji konfiguracji między “Przycisk wciśnięty” wiadomość i wysłanie tablicy do snu.

connectToWifi (); 

Jeśli zastanawiasz się, gdzie to pasuje, powinno to wyglądać następująco:


W górnej części szkicu zastąp ssid i hasło zmienne z poświadczeniami Wi-Fi. Zapisz szkic i prześlij na tablicę.

Teraz, gdy płyta się uruchomi, spróbuje połączyć się z siecią Wi-Fi, zanim wróci do funkcji konfiguracji. Teraz skonfigurujmy integrację IFTTT.

Krok 6: Konfiguracja integracji IFTTT

IFTTT umożliwia integrację z szeroką gamą usług internetowych. Użyliśmy go w naszym samouczku LED wieży komputerowej Wi-Fi, aby wysłać alert za każdym razem, gdy otrzymany zostanie nowy e-mail. Dzisiaj będziemy go używać do wysyłania tweeta za naciśnięciem jednego przycisku.

Przejdź do Moje aplety stronę i wybierz Nowy aplet

Kliknij +to i połącz się z Haki. Wybierz “Odbierz żądanie internetowe” i nazwij swoje wydarzenie. Nie komplikuj! Zanotuj nazwę wydarzenia, później musisz dodać ją do kodu NodeMCU. Kliknij “Utwórz wyzwalacz”.


Teraz wybierz +że. Wyszukaj Świergot usługi i połącz się z nim - musisz autoryzować go do publikowania na swoim koncie Twitter. Wybierz “Opublikuj tweeta” i wybierz swoją wiadomość.


Następny ekran poprosi o sprawdzenie apletu. Kliknij koniec. To jest to!

Krok 7: Dodanie poświadczeń IFTTT do kodu

Po powrocie do Arduino IDE musisz dodać klucz API IFTTT i nazwę zdarzenia do zdefiniowanych zmiennych. Aby znaleźć klucz API, przejdź do Moje aplety i wybierz Haki pod Usługi patka. Wybierz Dokumentacja aby uzyskać dostęp do swojego klucza.

Skopiuj klucz i nazwę zdarzenia do swojego kodu, zastępując ustawione dla nich nazwy tymczasowe.

# zdefiniować IFTTT_API_KEY "IFTTT_KEY_GOES_HERE" # zdefiniować IFTTT_EVENT_NAME "IFTTT_EVENT_NAME_HERE" 

Uwaga: odwrócone przecinki muszą pozostać, zastępują tylko tekst.

Między dzwonieniem na connectToWifi () i wysyłając płytę do trybu uśpienia, utwórz instancję obiektu biblioteki IFTTTWebhook. Dioda LED sygnalizuje zakończenie zadania przed głębokim snem.

// właśnie podłączony do Wi-Fi IFTTT Hak zaczepu (IFTTT_API_KEY, IFTTT_EVENT_NAME); hook.trigger (); pinMode (ledPin, OUTPUT); digitalWrite (ledPin, HIGH); opóźnienie (200); digitalWrite (ledPin, LOW); // teraz wysyła tablicę do spania 

Wywoływanie wyzwalacza na hak Obiekt odpala aplet IFTTT i powinien opublikować na Twoim koncie Twitter. Zapisz szkic i prześlij go. Powinieneś teraz mieć w pełni funkcjonalny przycisk tweetowania.

Jeśli wydaje się, że nie działa, sprawdź dokładnie kod i poświadczenia pod kątem błędów. Jeśli naprawdę utkniesz, pobierz pełny kod z góry i porównaj go z własnym.

Gotowe! Jak możesz to jeszcze poprawić??

Jest to podstawowa wersja przycisku Wi-Fi, ale można ją ulepszyć na wiele sposobów. Dla uproszczenia do zasilania służy tutaj złącze USB. Bateria sprawiłaby, że byłby całkowicie mobilny, a obudowa utrzymująca obwód byłaby idealnym projektem dla początkujących w zakresie drukowania 3D.

Mimo korzystania z głębokiego snu może się okazać, że bateria wyczerpie się dość szybko. Istnieje wiele porad dotyczących oszczędzania energii Arduino, które pomagają w tego typu projektach. Chociaż trudniejsze niż ten samouczek, jeśli od samego początku stworzyłeś własne Arduino o dużej mocy, przycisk Wi-Fi zasilany baterią może trwać miesiące!

Ten projekt idealnie sprawdzi się jako pilot do inteligentnych aplikacji domowych. Istnieje już znaczna liczba apletów automatyki domowej 10 najlepszych przepisów IFTTT dla inteligentnej automatyki domowej 10 najlepszych przepisów IFTTT dla inteligentnej automatyki domowej Właściwe przepisy IFTTT dla inteligentnego domu mogą zaoszczędzić czas, wysiłek i energię. Oto dziesięć naszych ulubionych na początek. dostępne na IFTTT. Po opanowaniu podstaw możesz użyć niemal dowolnego czujnika lub przełącznika, aby uruchomić praktycznie dowolną usługę, jaką możesz sobie wyobrazić.

Źródło obrazu: Vadmary / Depositphotos




Jeszcze bez komentarzy

O nowoczesnej technologii, prostej i niedrogiej.
Twój przewodnik w świecie nowoczesnych technologii. Dowiedz się, jak korzystać z technologii i gadżetów, które nas otaczają każdego dnia i dowiedz się, jak odkrywać ciekawe rzeczy w Internecie.