Spisu treści:

Projekt rejestratora stanu drzwi i temperatury: 21 kroków
Projekt rejestratora stanu drzwi i temperatury: 21 kroków

Wideo: Projekt rejestratora stanu drzwi i temperatury: 21 kroków

Wideo: Projekt rejestratora stanu drzwi i temperatury: 21 kroków
Wideo: #policja ❤️ #kia #randka 2024, Lipiec
Anonim
Projekt rejestratora stanu drzwi i temperatury
Projekt rejestratora stanu drzwi i temperatury

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

Skonfiguruj bezpłatne konto IFTTT
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

Utwórz aplet IFTTT
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

Skonfiguruj
Skonfiguruj

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

Dodaj usługę WebHooks do swojego apletu
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

Skonfiguruj wyzwalacz Odbierz żądanie sieci Web
Skonfiguruj wyzwalacz Odbierz żądanie sieci Web

Wybierz wyzwalacz „Odbierz żądanie internetowe”.

Krok 7: Podaj nazwę wydarzenia

Podaj nazwę wydarzenia
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

Skonfiguruj
Skonfiguruj

Kliknij na „to” słowo, które jest w kolorze niebieskim – jak zaznaczono na powyższym rysunku.

Krok 9: Skonfiguruj usługę akcji

Skonfiguruj usługę akcji
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

Połącz z Arkuszami Google
Połącz 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ę

Wybierz akcję
Wybierz akcję

Kliknij „Dodaj wiersz do arkusza kalkulacyjnego”.

Krok 12: Skonfiguruj akcję

Skonfiguruj akcję
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

Przejrzyj i sfinalizuj swój aplet
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

Pobierz informacje o konfiguracji potrzebne później
Pobierz informacje o konfiguracji potrzebne później

Kliknij „Webhooki”, jak zaznaczono powyżej.

Krok 15: Przejdź do dokumentacji Webhooks dla klucza API

Przejdź do dokumentacji Webhooks dla klucza API
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

Zapisz klucz API
Zapisz klucz API
Zapisz klucz API
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

Zbierz składniki
Zbierz składniki
Zbierz składniki
Zbierz składniki
Zbierz składniki
Zbierz składniki

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

Napisz kod Arduino
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

Wyniki
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: