Spisu treści:
- Krok 1: Zastrzeżenie
- Krok 2: Skonfiguruj bezpłatne konto IFTTT
- Krok 3: Utwórz aplet IFTTT
- Krok 4: Skonfiguruj „tę” część swojego apletu
- Krok 5: Dodaj usługę WebHooks do swojego apletu
- Krok 6: Skonfiguruj wyzwalacz odbierania żądania internetowego
- Krok 7: Podaj nazwę wydarzenia
- Krok 8: Skonfiguruj „tę” część swojego apletu
- Krok 9: Skonfiguruj usługę akcji
- Krok 10: Połącz się z Arkuszami Google
- Krok 11: Wybierz akcję
- Krok 12: Skonfiguruj akcję
- Krok 13: Przejrzyj i sfinalizuj swój aplet
- Krok 14: Pobierz informacje o konfiguracji potrzebne później
- Krok 15: Przejdź do dokumentacji Webhooks dla klucza API
- Krok 16: Zapisz klucz API
- Krok 17: Zbierz komponenty
- Krok 18: Złóż komponenty
- Krok 19: Napisz kod Arduino
- Krok 20: Wyniki
- Krok 21: Kredyty
Wideo: Projekt rejestratora stanu drzwi i temperatury: 21 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:31
Ten instruktaż pokaże Ci, jak zrobić prosty rejestrator stanu drzwi i temperatury za mniej niż 10 USD za pomocą ESP8266 NodeMCU, czujnika temperatury i wilgotności DHT11, kontaktronu drzwi/okna, rezystora 10 kiloomów i trochę przewodu połączeniowego.
Geneza tego projektu wzięła się z mojego pragnienia, aby zrobić więcej automatyki domowej z płytą Arduino. Ponieważ dużo czytałem o kompatybilnej z Arduino EPS8266 NodeMCU, zdecydowałem, że ta płyta będzie idealną tanią płytą do eksperymentowania. Po przeszukaniu Internetu w poszukiwaniu projektów automatyki domowej za pomocą płyt ESP8266, zdecydowałem się na połączenie rejestratora temperatury i stanu drzwi w mojej pierwszej próbie. Ostatecznie ten projekt zostanie połączony z serwomechanizmami, czujnikami wilgoci i inną elektroniką, aby zautomatyzować małą szklarnię, którą mój dziadek zaprojektował i zbudował 50 lat temu. Czujnik temperatury będzie używany do określenia, czy system grzewczy powinien być włączony, czy wyłączony, a także do sygnalizowania serwomechanizmom otwarcia i zamknięcia systemu odpowietrzania w razie potrzeby. Stan układu odpowietrzającego będzie monitorowany za pomocą kontaktronów magnetycznych. Wreszcie czujniki wilgoci zostaną wykorzystane do automatyzacji systemu nawadniania.
Krok 1: Zastrzeżenie
Tylko szybkie zastrzeżenie, aby stwierdzić, że NIE ponosimy ŻADNEJ odpowiedzialności za wszystko, co dzieje się w wyniku przestrzegania tej instrukcji. Zawsze najlepiej jest postępować zgodnie z instrukcjami producenta i arkuszami bezpieczeństwa podczas budowania czegokolwiek, więc zapoznaj się z tymi dokumentami w celu uzyskania informacji o częściach i narzędziach, których używasz do budowy własnego. Po prostu przekazujemy informacje o krokach, które zastosowaliśmy do stworzenia naszego. Nie jesteśmy profesjonalistami. W rzeczywistości 2 na 3 osoby, które brały udział w tej kompilacji to dzieci.
Krok 2: Skonfiguruj bezpłatne konto IFTTT
Jeśli jeszcze go nie masz, nadszedł czas, aby założyć bezpłatne konto IFTTT, przechodząc do ich strony głównej. IFTTT oznacza If This Then That i jest darmową platformą, która umożliwia łączenie usług internetowych na nowe sposoby umożliwiają korzystanie z tych usług na nowe sposoby. W tym projekcie użyjemy IFTTT, aby umożliwić ESP8266 rejestrowanie stanu drzwi za pomocą kontaktronu oraz temperatury i wilgotności za pomocą czujnika DHT11 w dokumencie Arkuszy Google.
Krok 3: Utwórz aplet IFTTT
Będąc nadal w IFTTT, przejdź do sekcji „Moje aplety” i utwórz nowy aplet, klikając przycisk „Nowy aplet”.
Krok 4: Skonfiguruj „tę” część swojego apletu
Kliknij na „to” słowo, które jest w kolorze niebieskim – jak zaznaczono na powyższym rysunku.
Krok 5: Dodaj usługę WebHooks do swojego apletu
Na pasku wyszukiwania wyszukaj usługę „Webhooki” i wybierz ikonę Webhooki.
Po znalezieniu usługi „Webhooks” kliknij ją.
Krok 6: Skonfiguruj wyzwalacz odbierania żądania internetowego
Wybierz wyzwalacz „Odbierz żądanie internetowe”.
Krok 7: Podaj nazwę wydarzenia
W polu tekstowym podaj nowy aplet z nazwą zdarzenia. Wybrałem „Data Logger”, ale możesz wybrać, co chcesz.
Krok 8: Skonfiguruj „tę” część swojego apletu
Kliknij na „to” słowo, które jest w kolorze niebieskim – jak zaznaczono na powyższym rysunku.
Krok 9: Skonfiguruj usługę akcji
W polu wyszukiwania wyszukaj usługę „Arkusze Google” i kliknij ikonę Arkusze Google.
Krok 10: Połącz się z Arkuszami Google
Jeśli jeszcze tego nie zrobiłeś, musisz połączyć swoje konto IFTTT z Arkuszami Google. Naciśnij przycisk Połącz pokazany powyżej i postępuj zgodnie z instrukcjami wyświetlanymi na ekranie.
Krok 11: Wybierz akcję
Kliknij „Dodaj wiersz do arkusza kalkulacyjnego”.
Krok 12: Skonfiguruj akcję
Podaj nazwę w polu tekstowym „Nazwa arkusza kalkulacyjnego”. Zdecydowałem się użyć "Data_Logger" dla spójności. Pozostaw resztę ustawienia w spokoju (możesz poeksperymentować z tymi ustawieniami w innym czasie), a następnie naciśnij przycisk „Utwórz działanie” u dołu ekranu.
Krok 13: Przejrzyj i sfinalizuj swój aplet
Gdy jesteś zadowolony z konfiguracji apletu, naciśnij przycisk „Zakończ”.
Krok 14: Pobierz informacje o konfiguracji potrzebne później
Kliknij „Webhooki”, jak zaznaczono powyżej.
Krok 15: Przejdź do dokumentacji Webhooks dla klucza API
Może się to wydawać dziwne, ale kliknij link Dokumentacja w prawym górnym rogu, aby przejść do strony z unikalnym kluczem API.
Krok 16: Zapisz klucz API
Pierwsza linia ekranu Dokumentacja wyświetla unikalny klucz API. Skopiuj i zapisz ten klucz do późniejszego wykorzystania.
Dobrym pomysłem jest również przetestowanie apletu tutaj. Pamiętaj, aby zmienić {event} na Data_Logger lub jakkolwiek nazwałeś swoje wydarzenie i dodać trochę danych do 3 pustych wartości, a następnie kliknij przycisk „Test It” u dołu strony. Powinieneś zobaczyć zielony komunikat „Wydarzenie zostało wywołane”. Jeśli tak, przejdź do Dokumentów Google i potwierdź, że dane wprowadzone na stronie testowej pojawiły się w dokumencie Arkuszy Google.
Krok 17: Zbierz komponenty
Potrzebujesz tylko kilku części.
1) Płytka rozwojowa NodeMcu ESP8266
2) Czujnik temperatury/wilgotności DHT11
3) Kontaktron drzwiowy/okienny
4) Rezystor 10k Ohm
5) Przewód przyłączeniowy
Krok 18: Złóż komponenty
1) Podłącz jeden z pinów 3v3 w ESP8266 do pinu vcc w DHT11.
2) Podłącz jeden z kołków uziemienia w ESP8266 do kołka uziemienia w DHT11.
3) Podłącz pin D4 (aka pin 2 w IDE) na ESP8266 do pinu danych na DHT11.
4) Podłącz kolejny styk 3v3 w ESP8266 z jednej strony kontaktronu drzwi/okna.
5) Podłącz pin D5 (aka pin 14 w IDE) na ESP8266 do drugiej strony kontaktronu drzwi/okna, a także podłącz go do jednej strony rezystora 10 kΩ.
6) Podłącz drugą stronę rezystora 10 kΩ do innego styku uziemienia w ESP8266.
W przypadku wyboru pinów ESP8266 zapoznaj się z tym pomocnym schematem lub bardzo pomocnym filmem.
Krok 19: Napisz kod Arduino
Skopiuj i wklej poniższy kod do swojego Arduino IDE.
#include #include #include "DHT.h"
#define DHTPIN 2 // do jakiego pinu cyfrowego jesteśmy podłączeni
#define DOORPIN 14 // jaki pin cyfrowy jest włączony.
#define DHTTYPE DHT11 // DHT11
DHT dht(DHTPIN, DHTTYPE);
liczba int = 1;
const char* ssid = "jakiś_ssid"; // zmień to, aby użyć swojego ssid const char* password = "some_password"; // zmień to na hasło int sleepTime = 100;
// Tworzenie webhooków IFTTT
const char* server = "maker.ifttt.com";
// Zasób URL IFTTT
const char* resource = "/trigger/SOME_SERVICE_NAME/with/key/SOME_API_KEY"; //Upewnij się, że używasz nazwy usługi i klucza API.
String doorStatus = "Zamknięty";
volatile bool stateChanged = false;
// Jeśli śpisz godzinami, ustaw interwał o godz. * 60 minut * 60 sekund * 1000 milisekund
const długi interwał = 1,0 * 60 * 60 * 1000; // 1 godzina unsigned long previousMillis = 0 - (2 * interwał);
pusta konfiguracja () {
Serial.początek(115200); attachInterrupt(digitalPinToInterrupt(DOORPIN), eventTriggered, CHANGE); pinMode(DOORPIN, INPUT); //Czujnik drzwi dht.begin(); WiFi.begin(SSid, hasło);
Serial.print("\nŁączenie..");
while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.print("."); } Serial.print("\n"); }
void eventTriggered(){
stanZmieniony = prawda; Serial.println("Sprawdzam drzwi!"); if (digitalRead(DOORPIN)==HIGH) // Sprawdź, czy drzwi są otwarte { Serial.println("Drzwi są zamknięte!"); doorStatus = "Zamknięty"; } else { Serial.println("Drzwi są otwarte!"); doorStatus = "Otwarte"; } }
nieważne sprawdzanie stanu() {
if (WiFi.status() == WL_CONNECTED) { //Sprawdź stan połączenia WiFi // Odczyt temperatury lub wilgotności zajmuje około 250 milisekund! // Odczyty czujnika mogą być również „stare” do 2 sekund (jest to bardzo powolny czujnik) float h = dht.readHumidity(); // Odczytaj temperaturę w stopniach Celsjusza (domyślnie) float t = dht.readTemperature(); // Odczytaj temperaturę w stopniach Fahrenheita (isFahrenheit = true) float f = dht.readTemperature(true); // Sprawdź, czy jakiekolwiek odczyty nie powiodły się i wyjdź wcześniej (aby spróbować ponownie). if (isnan(h) || isnan(t) || isnan(f)) { Serial.println("Nie udało się odczytać z czujnika DHT!"); //Serial.print("."); //Nie udało się odczytać z czujnika DHT! powrót; } // Oblicz indeks ciepła w stopniach Fahrenheita (domyślnie) float hif = dht.computeHeatIndex(f, h); // Oblicz indeks ciepła w stopniach Celsjusza (isFahreheit = false) float hic = dht.computeHeatIndex(t, h, false);
Serial.print("\n");
Serial.print("Temperatura: "); druk.seryjny(f); Serial.print(" *F ("); Serial.print(t); Serial.print(" *C)"); Serial.print("\t"); Serial.print("Wskaźnik ciepła: "); Serial.print(hif); Serial.print(" *F ("); Serial.print(hic); Serial.print("*C)%"); Serial.print("\t"); Serial.print("Wilgotność: "); Serial.println(h);
if (digitalRead(DOORPIN)==HIGH) // Sprawdź, czy drzwi są otwarte
{ Serial.println("Drzwi są zamknięte!"); doorStatus = "Zamknięty"; } else { Serial.println("Drzwi są otwarte!"); doorStatus = "Otwarte"; } String jsonObject = String("{"value1\":\"") + f +"*F (" + t + "*C) / "+ hif +"*F (" + hic + "*C) " + "\", \"value2\":\"" + h + "\", \"value3\":\"" + doorStatus + " \"}"; HTTPKlient http; String completeUrl = "https://maker.ifttt.com/trigger/bme280_readings/with/key/cZFasEvy5_3JlrUSVAxQK9"; http.begin(kompletny adres URL); // http.begin(serwer); http.addHeader("Typ treści", "aplikacja/json"); http. POST(jsonObject); http.writeToStream(&Serial); http.end(); //Zamknij połączenie
stateChanged = fałsz;
int sleepTimeInMinutes = interwał / 1000 / 60; Serial.print("\n\nIdź spać na "); Serial.print(czas uśpienia w minutach); Serial.println(" minuta(y) …"); } }
pusta pętla () {
unsigned long currentMillis = millis(); opóźnienie (4000); //Jeśli przekroczyliśmy czas, który upłynął, wymuś sprawdzenie drzwi i temp. if(currentMillis - previousMillis >= interwał){ stateChanged = true; poprzedni Millis = obecny Millis; Serial.print(liczba++); Serial.println() Sprawdzanie z powodu upływu czasu!"); }else if(stateChanged){ Serial.print(count++); Serial.println() Sprawdzanie z powodu zmiany stanu!"); }
//Jeśli stan się zmienił, sprawdź drzwi i temp.
if(stanZmieniono){ checkStatus(); }
opóźnienie (czas snu);
}
Krok 20: Wyniki
Po przesłaniu kodu źródłowego w poprzednim kroku powinieneś otrzymać wyniki takie jak w powyższym przykładzie.
Krok 21: Kredyty
Znalazłem wiele pomocnych wskazówek i wskazówek w Poradnikach Random Nerd i chciałbym im podziękować za całą ich pomoc. Zwłaszcza ich doskonały samouczek na temat ESP32 ESP8266 Publikuj odczyty z czujników w Arkuszach Google, na których oparte są główne części tej instrukcji.
Dodatkowo, DHT11 Instructable od TheCircuit pomógł mi zrozumieć, jak korzystać z tego bardzo niedrogiego, ale interesującego małego czujnika.
Ponadto istnieje wiele samouczków dotyczących monitorowania twoich drzwi, takich jak Monitor drzwi garażowych i kolejny z samouczków Random Nerd. Użyłem ich fragmentów, aby pomóc mi zrozumieć, jak sprawić, by mój kontaktron działał prawidłowo.
Wreszcie dzięki tym informacjom, a także innym szczegółom, które znalazłem w Internecie, udało mi się stworzyć system, który spełnił moje potrzeby. Mam nadzieję, że ta instrukcja okaże się przydatna i zbudujesz własną.
Zalecana:
Pracuj z domowego rejestratora czasu za pomocą Raspberry Pi: 7 kroków
Rejestrator czasu pracy w domu przy użyciu Raspberry Pi: W ciągu ostatniego roku miałem okazję pracować w domu. W tym celu musiałem śledzić godziny, w których pracuję. Zaczynając od korzystania z arkusza kalkulacyjnego Excel i ręcznego wprowadzania godzin „włączenia” i „wyłączenia”, wkrótce okazało się, że jest to
Jak zrobić rejestrator danych wilgotności i temperatury w czasie rzeczywistym za pomocą Arduino UNO i karty SD - Symulacja rejestratora danych DHT11 w Proteus: 5 kroków
Jak zrobić rejestrator danych wilgotności i temperatury w czasie rzeczywistym za pomocą Arduino UNO i karty SD | Symulacja rejestratora danych DHT11 w Proteus: Wstęp: cześć, tu Liono Maker, tutaj link do YouTube. Tworzymy kreatywne projekty z Arduino i pracujemy na systemach wbudowanych.Data-Logger: Rejestrator danych (również rejestrator danych lub rejestrator danych) to urządzenie elektroniczne, które rejestruje dane w czasie w
Sygnalizacja stanu drzwi garażowych: 3 kroki
Sygnalizacja stanu drzwi garażowych: Mieszkam w domu, w którym nie jest łatwo sprawdzić, czy drzwi garażowe są otwarte, czy zamknięte. Mamy przycisk w domu, ale drzwi nie widać. Myśl o inżynierii jakiegoś przełącznika i zasilacza była niepożądana ze względu na wysoki pr
Czujnik dzwonka do drzwi i czujnik temperatury: 6 kroków
Czujnik nacisku i temperatury dzwonka do drzwi: Ulepsza standardowy dzwonek przewodowy do drzwi z modułem esp-12F (esp8266). Instaluje się w samym dzwonku, aby uniknąć jakichkolwiek zmian w okablowaniu. Zapewnia następujące funkcje Wykrywanie przyciśnięć dzwonka do drzwiWysyła powiadomienia na telefon za pośrednictwem sklepów IFTTTS
Automatyczne światła połączone z monitorowaniem drzwi i drzwi.: 5 kroków
Automatyczne światła połączone z monitorowaniem drzwi i drzwi: Wydaje się, że bardzo trudno jest znaleźć tablicę rozdzielczą w ciemności, ale ten projekt jest naprawdę pomocny w rozwiązaniu tego problemu. Wykonaj poniższe czynności, aby poznać rozwiązanie tego problemu