Jak zrobić własny przycisk połączenia Wi-Fi z ESP8266?

Jak zrobić własny przycisk połączenia Wi-Fi z ESP8266?

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





Czasami jednak chcesz czegoś prostego. Bez dzwonków i 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, aby zmienić kolejność codziennych artykułów gospodarstwa domowego.





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





Co będziesz potrzebował

Będziesz potrzebować:

  • 1 x płyta NodeMCU (ESP8266), dostępna dla -3 na AliExpress
  • 1 x przycisk
  • 1 x LED (opcjonalnie)
  • 1 x rezystor 220 Ohm (opcjonalnie)
  • Płytka do krojenia chleba i przewody przyłączeniowe
  • Micro USB do programowania
  • Komputer z zainstalowanym Arduino IDE

Oprócz NodeMCU, większość tych części powinieneś znaleźć w każdym zestawie startowym Arduino. Ten samouczek zakłada, ż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ą planszę zgodnie z tym diagramem.

Fioletowy drut dołącza kołek D0 z jednej strony przycisku. Zielony przewód łączy drugą stronę przycisku z Kołek RST . Niebieski przewód biegnie od kołek D1 do rezystora i diody LED. Ujemna noga diody LED łączy się z Pin GND NodeMCU.





Po skonfigurowaniu płytki prototypowej powinno wyglądać mniej więcej tak:

jak odinstalować podwójny rozruch Ubuntu

Jeśli zastanawiasz się, w jaki sposób moja dioda LED łączy się z kołkiem uziemiającym za pomocą tych maleńkich kawałków kabla, nasz szybki kurs awaryjny na płytce prototypowej powinno pomóc to wyjaśnić! Sprawdź konfigurację i podłącz NodeMCU do komputera przez USB.





Krok 2: Konfiguracja IDE

Zanim przystąpisz do kodowania, musisz poczynić pewne przygotowania. Jeśli jeszcze tego nie zrobiłeś, skonfiguruj Arduino IDE, aby rozpoznało twoją płytę NodeMCU. Możesz dodać go do swojej listy tablic poprzez Plik > Preferencje .

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

Do tego projektu potrzebne są dwie biblioteki. Nawigować do Szkic > Dołącz bibliotekę > Zarządzaj bibliotekami . Szukaj ESP8266WIFI przez Ivana Grokhotkova i zainstaluj go. Ta biblioteka jest napisana do tworzenia połączeń Wi-Fi z płytą NodeMCU.

Następne wyszukiwanie IFTTTWebhook przez Johna Romkeya i zainstaluj najnowszą wersję. Ta biblioteka ma na celu uproszczenie procesu wysyłania webhooków do IFTTT.

To wszystko czego potrzebujemy, kodujemy!

Jak będzie działał kod

Użyjemy ESP8266WIFI bibliotekę do nawiązania połączenia Wi-Fi. ten IFTTTWebhook biblioteka wysyła żądanie do IFTTT --- w tym przypadku o post na Twitterze. Następnie poinstruuj płytę NodeMCU, aby uśpiła, gdy nie jest używana, aby oszczędzać energię.

Po naciśnięciu przycisku połączy się D0 oraz RST szpilki. Spowoduje to zresetowanie tablicy i proces powtórzy się.

Większość kodu w tym samouczku jest wystarczająco prosta dla początkujących. To powiedziawszy, jeśli zaczynasz, znacznie łatwiej będzie Ci to zrozumieć, postępując zgodnie z naszymi Przewodnik dla początkujących Arduino .

Ten samouczek omawia kod w kawałkach, aby pomóc w zrozumieniu. Jeśli chcesz od razu przejść do biznesu, możesz znaleźć: kompletny kod w Pastebin . Pamiętaj, że nadal będziesz musiał podać swoje dane uwierzytelniające Wi-Fi i IFTTT w tym kodzie, aby działał!

Krok 3: Testowanie głębokiego snu

Na początek stworzymy prosty test, który pokaże, jak działa głęboki sen. Otwórz nowy szkic w Arduino IDE. Wprowadź następujące dwie porcje 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_NAME 'IFTTT_EVENT_NAME_HERE'

Tutaj dołączamy nasze biblioteki, wraz z określeniem kilku zmiennych, których będziemy potrzebować w naszym szkicu. Zauważysz, że ledPin i wakePin są tutaj ponumerowane inaczej niż na powyższym diagramie Fritzing. NodeMCU ma inne wyprowadzenia niż płyty Arduino. Nie stanowi to jednak problemu ze względu na poręczny schemat:

Teraz utwórz funkcję konfiguracji:

void setup() {
Serial.begin(115200);
while(!Serial) {
}
Serial.println(' ');// print an empty line before and after Button Press
Serial.println('Button Pressed');
Serial.println(' ');// print an empty line
ESP.deepSleep(wakePin);
}

Tutaj ustawiamy 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 przeszedł w głęboki sen, aż do przycisku łączącego wakePin do RST pin jest wciśnięty.

Na koniec, w celu przetestowania, dodaj to do swojego pętla() metoda:

void loop(){
//if deep sleep is working, this code will never run.
Serial.println('This shouldn't get printed');
}

Zazwyczaj szkice Arduino uruchamiają funkcję pętli w sposób ciągły po konfiguracji. Ponieważ usypiamy tablicę przed zakończeniem konfiguracji, pętla nigdy się nie uruchamia.

Zapisz swój szkic i prześlij go na tablicę. Otwórz monitor szeregowy i powinieneś zobaczyć „Przycisk wciśnięty”. Za każdym razem, gdy przycisk jest wyzwalany, tablica resetuje się i komunikat jest ponownie drukowany. To działa!

Uwaga na temat monitora szeregowego

Być może zauważyłeś jakieś bezsensowne znaki na monitorze szeregowym podczas niektórych swoich projektów. Jest to zwykle spowodowane tym, że monitor szeregowy nie jest ustawiony na taką samą szybkość transmisji jak Serial.początek(XXXX) wskaźnik.

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

wyszukiwarki, które nie cenzurują

Jeśli masz problemy z monitorem szeregowym, wypróbuj różne szybkości transmisji i sprawdź, która jest dla Ciebie najlepsza.

Krok 4: Łączenie się z Wi-Fi

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

void connectToWifi() {
Serial.print('Connecting to: SSID NAME'); //uncomment next line to show SSID name
//Serial.print(ssid);
WiFi.begin(ssid, password);
Serial.println(' ');// print an empty line
Serial.print('Attempting to connect: ');
//try to connect for 10 seconds
int i = 10;
while(WiFi.status() != WL_CONNECTED && i >=0) {
delay(1000);
Serial.print(i);
Serial.print(', ');
i--;
}
Serial.println(' ');// print an empty line
//print connection result
if(WiFi.status() == WL_CONNECTED){
Serial.print('Connected.');
Serial.println(' ');// print an empty line
Serial.print('NodeMCU ip address: ');
Serial.println(WiFi.localIP());
}
else {
Serial.println('Connection failed - check your credentials or connection');
}
}

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

Krok 5: Wywołanie metody połączenia

W tej chwili PołączZWifi() nigdy się nie nazywa. Dodaj połączenie do funkcji konfiguracji między komunikatem „Naciśnięty przycisk” a uśpieniem tablicy.

connectToWifi();

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

W górnej części szkicu zastąp ssid oraz hasło zmienne z Twoimi danymi logowania Wi-Fi. Zapisz swój szkic i prześlij na tablicę.

Teraz, gdy płyta się uruchomi, spróbuje połączyć się z siecią Wi-Fi, zanim powró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 Wi-Fi PC, aby wysłać alert za każdym razem, gdy otrzymamy nową wiadomość e-mail. Dzisiaj użyjemy go do wysłania tweeta za naciśnięciem jednego przycisku.

Przejdź do Moje aplety stronę i wybierz Nowy aplet

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

Teraz wybierz +to . Wyszukaj Świergot i połącz się z nią --- będziesz musiał zezwolić jej na publikowanie na swoim koncie na Twitterze. Wybierz „Opublikuj tweeta” i wybierz swoją wiadomość.

Następny ekran poprosi o przejrzenie apletu. Kliknij Zakończ. Otóż ​​to!

Krok 7: Dodawanie poświadczeń IFTTT do kodu

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

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

#define IFTTT_API_KEY 'IFTTT_KEY_GOES_HERE'
#define IFTTT_EVENT_NAME 'IFTTT_EVENT_NAME_HERE'

Uwaga, cudzysłów musi pozostać, tylko zastąpić tekst.

Pomiędzy dzwonieniem do PołączZWifi() i wysyłając tablicę w stan uśpienia, utwórz instancję obiektu biblioteki IFTTTWebhook. Dioda LED sygnalizuje zakończenie zadania przed ponownym rozpoczęciem głębokiego snu.

hurtowe przedmioty na sprzedaż luzem
//just connected to Wi-Fi
IFTTTWebhook hook(IFTTT_API_KEY, IFTTT_EVENT_NAME);
hook.trigger();
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, HIGH);
delay(200);
digitalWrite(ledPin, LOW);
//now sending board to sleep

Wywołanie wyzwalacza na hak obiekt uruchamia się z apletu IFTTT i powinien publikować na Twoim koncie na Twitterze. Zapisz swój szkic i prześlij go. Teraz powinieneś mieć w pełni funkcjonalny przycisk tweetowania.

Jeśli wydaje się, że to nie działa, dokładnie sprawdź swój 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 ulepszyć?

Jest to podstawowa wersja przycisku Wi-Fi, ale można ją ulepszyć na wiele sposobów. Dla uproszczenia połączenie USB jest tutaj używane do zasilania. Bateria sprawiłaby, że byłaby całkowicie mobilna, a obudowa z obwodem byłaby idealnym projektem dla początkujących do druku 3D.

Pomimo głębokiego snu może się okazać, że bateria dość szybko się wyczerpie. Jest wiele Wskazówki dotyczące oszczędzania energii Arduino które pomagają w tego typu projektach. Chociaż jest to trudniejsze niż ten samouczek, jeśli zbudowałeś własne Arduino od zera, przycisk Wi-Fi zasilany bateryjnie może działać przez wiele miesięcy!

Ten projekt byłby idealnym pilotem do inteligentnych aplikacji domowych. Istnieje już znaczna ilość aplety automatyki domowej dostępne na IFTTT. Po zapoznaniu się z podstawami możesz użyć prawie każdego czujnika lub przełącznika, aby uruchomić praktycznie każdą usługę, jaką możesz sobie wyobrazić.

Źródło obrazu: Vadmary / Depositphotos

Udział Udział Ćwierkać E-mail 6 dźwiękowych alternatyw: najlepsze darmowe lub tanie aplikacje do audiobooków

Jeśli nie masz ochoty płacić za audiobooki, oto kilka świetnych aplikacji, które pozwolą Ci ich słuchać bezpłatnie i legalnie.

Czytaj dalej
Powiązane tematy
  • majsterkowanie
  • Arduino
  • Samouczki dotyczące projektów DIY
O autorze Ian Buckley(216 opublikowanych artykułów)

Ian Buckley jest niezależnym dziennikarzem, muzykiem, performerem i producentem wideo mieszkającym w Berlinie w Niemczech. Kiedy nie pisze ani nie występuje na scenie, majstruje przy elektronice DIY lub kodowaniu w nadziei, że zostanie szalonym naukowcem.

Więcej od Iana Buckleya

Zapisz się do naszego newslettera

Dołącz do naszego newslettera, aby otrzymywać porady techniczne, recenzje, bezpłatne e-booki i ekskluzywne oferty!

Kliknij tutaj, aby zasubskrybować