Spisu treści:

IDC2018IOT Powiedz mi, kiedy wyłączyć klimatyzację: 7 kroków
IDC2018IOT Powiedz mi, kiedy wyłączyć klimatyzację: 7 kroków

Wideo: IDC2018IOT Powiedz mi, kiedy wyłączyć klimatyzację: 7 kroków

Wideo: IDC2018IOT Powiedz mi, kiedy wyłączyć klimatyzację: 7 kroków
Wideo: PIOSENKA O MYCIU ZĘBÓW-TIK TOK#7 #short #shorts 2024, Listopad
Anonim
Image
Image

Wielu z nas, szczególnie w okresie letnim, korzysta z klimatyzacji prawie bez przerwy, podczas gdy w rzeczywistości o określonych porach dnia możemy po prostu otworzyć okno i cieszyć się przyjemnym powiewem wiatru. Ponadto osobiście zauważyliśmy, że czasami po prostu zapominamy o wyłączeniu klimatyzacji wychodząc z pokoju, marnując energię i pieniądze.

Rozwiązanie, które zbudujemy, będzie porównywało temperaturę wewnątrz z temperaturą na zewnątrz, a gdy będą wystarczająco blisko, poinformuje nas przez Facebook Messanger, że czas otworzyć okno i dać klimatowi trochę odpoczynku.

Stworzymy również inny mechanizm powiadamiający nas, gdy zapomnimy o włączonej klimatyzacji i opuścimy pokój.

Krok 1: Nieco więcej szczegółów

Zbieramy dane z 4 różnych czujników:

  • Dwa czujniki DHT mierzą temperaturę wewnątrz i na zewnątrz domu.
  • Jeden czujnik PIR wykrywa ruch w pomieszczeniu.
  • Jeden mikrofon elektretowy służy do wykrywania wiatru wydobywającego się z otworu wentylacyjnego AC, co jest prostym i niezawodnym sposobem ustalenia, czy AC jest włączony.

Dane pochodzące z czujników zostaną przetworzone i wysłane do Blynk, gdzie zostaną wyświetlone w utworzonym przez nas interfejsie. Ponadto wyzwolimy zdarzenia IFTTT, aby powiadomić użytkownika, kiedy może otworzyć okno zamiast klimatyzacji oraz kiedy zapomniał o włączonej klimatyzacji i opuścił pokój na określony czas.

Interfejs Blynk da nam również możliwość zmiany odpowiednich ustawień zgodnie z preferencjami użytkownika, co omówimy bardziej szczegółowo później.

Wymagane części:

  1. Moduł WiFi - ESP8266
  2. Czujnik PIR.
  3. Czujniki temperatury DHT11/DHT22 x2.
  4. Rezystory 10k/4,7k (DHT11 - 4,7k, DHT22 - 10k, PIR - 10k).
  5. Mikrofon elektretowy.
  6. Zworki.
  7. Długie kable (przewód telefoniczny świetnie się spisuje).

Pełny kod projektu jest dołączony na końcu z komentarzami w całym kodzie.

Logicznie rzecz biorąc, ma kilka różnych warstw funkcjonalności:

  • Dane z czujników są odczytywane w odstępach co 3 sekundy, ponieważ okazuje się, że są dokładniejsze i nie ma potrzeby więcej.
  • Jedną z części kodu jest śledzenie stanu AC przez wartości pochodzące z mikrofonu elektretowego, który jest umieszczony nad otworem AC.
  • Kolejną częścią jest śledzenie odczytów pochodzących z czujników temperatury i różnicy w użyciu zdefiniowanej jako dopuszczalne, aby zamiast tego włączyć AC i otworzyć okno. Szukamy momentu, kiedy temperatury zbliżą się do siebie.
  • Trzecia część to śledzenie ruchu w pomieszczeniu. Jeśli nie wykryje żadnego większego ruchu (sposób sprawdzania głównego zostanie wyjaśniony wkrótce) w przedziale czasowym zdefiniowanym przez użytkownika, a stan AC jest włączony, do użytkownika zostanie wysłane powiadomienie.
  • Powiadomienia są obsługiwane poprzez wyzwalanie webhooków IFTTT, które wysyłają predefiniowane wiadomości do użytkownika za pośrednictwem Facebook Messenger
  • Ostatnią wartą uwagi częścią jest część, która obsługuje interfejs Blynk, zarówno poprzez pobieranie zmian wprowadzanych przez użytkownika w zmiennych, jak i z drugiej strony - przesyłanie danych do interfejsu Blynk, aby użytkownik mógł je zobaczyć.

Krok 2: Więcej szczegółów - czujniki

Więcej szczegółów - czujniki
Więcej szczegółów - czujniki
Więcej szczegółów - czujniki
Więcej szczegółów - czujniki

Zaczynajmy.

Po pierwsze, musimy upewnić się, że oba nasze czujniki DHT odczytują tę samą temperaturę po umieszczeniu w tym samym miejscu. W tym celu wykonaliśmy prosty szkic załączony na końcu tej sekcji (CompareSensors.ino). Podłącz oba czujniki i upewnij się, że zmieniłeś typ czujników DHT na szkicu zgodnie z tymi, które masz (domyślnie jeden DHT11 i jeden DHT22, więc możesz zobaczyć, jak oba są traktowane w kodzie). Otwórz monitor szeregowy i pozwól mu pracować przez chwilę, zwłaszcza jeśli używasz czujników DHT11, ponieważ zwykle potrzebują więcej czasu na dostosowanie się do zmian temperatury.

Zwróć uwagę na różnicę między czujnikami i wstaw ją później w kodzie głównym w zmiennej "offset".

Rozmieszczenie czujników:

Jeden czujnik DHT powinien być umieszczony na zewnętrznej ścianie domu, więc podłącz go do kilku długich kabli, wystarczająco długich, aby dotrzeć do twojego ESP8266 w pomieszczeniu i umieść go na zewnątrz (można to łatwo zrobić przez okno). Drugi czujnik DHT należy umieścić na płytce stykowej, w pomieszczeniu, w którym korzystamy z klimatyzacji.

Mikrofon elektretowy powinien być również podłączony do wystarczająco długich kabli i umieszczony w miejscu, w którym uderzy w niego wiatr wydobywający się z prądu zmiennego.

Wreszcie czujnik PIR należy umieścić w miejscu skierowanym na środek pomieszczenia, aby wychwytywał każdy ruch w pomieszczeniu. Zauważ, że czujnik ma dwa małe pokrętła, jedno kontrolujące opóźnienie (jak długo sygnał HIGH wykrycia ruchu jest utrzymywany na wysokim poziomie), a drugie kontroluje czułość (patrz rysunek).

Być może będziesz musiał się z tym pobawić, aż dostaniesz czytanie, z którego jesteś zadowolony. Dla nas najlepszym rezultatem było opóźnienie do samego końca w lewo (najniższa wartość) i czułość w samym środku. Kod zapewnia wydruki seryjne zawierające odczyty ze wszystkich czujników, co znacznie ułatwi debugowanie takich problemów.

Podłączanie czujników:

Użyte przez nas numery pinów są następujące (i można je zmienić w kodzie głównym):

Czujnik zewnętrzny DHT - D2.

Wewnętrzny czujnik DHT - D3.

Elektret - A0 (pin analogowy).

PIR - D5.

Schematy podłączenia każdego z nich można łatwo znaleźć za pomocą wyszukiwarki obrazków google z czymś w rodzaju "schematu rezystora PIR Arduino" (nie chcielibyśmy ich tutaj kopiować i przecinać żadnych linii autorskich:)).

Dołączyliśmy również zdjęcie naszej płytki prototypowej, prawdopodobnie ciężko jest naprawdę śledzić połączenia, ale może to dać dobre wrażenie.

Jak zapewne wiesz, rzeczy rzadko, jeśli w ogóle działają, gdy łączymy je po raz pierwszy. Dlatego stworzyliśmy funkcję, która drukuje odczyty z czujników w łatwy do odczytania sposób, dzięki czemu możesz debugować swój sposób, aby działały. Jeśli nie chcesz, aby kod próbował połączyć się z Blynk podczas debugowania, po prostu skomentuj „Blynk.begin(auth, ssid, pass);” z części konfiguracyjnej kodu, uruchom go i otwórz monitor szeregowy, aby zobaczyć wydruki. Dołączyliśmy również zdjęcie nadruków.

Krok 3: Dużo więcej szczegółów - sekwencja IFTTT

Więcej szczegółów - sekwencja IFTTT
Więcej szczegółów - sekwencja IFTTT

Dlatego chcemy otrzymywać powiadomienia w dwóch scenariuszach:

1. Temperatura zewnętrzna jest wystarczająco zbliżona do tej, którą mamy w środku, gdy działa klimatyzacja.

2. Opuściliśmy pokój na dłuższy czas, a klimatyzacja nadal działa.

IFTTT umożliwia nam łączenie w bardzo prosty sposób wielu różnych usług, które zwykle nie wchodzą w interakcje. W naszym przypadku pozwala nam to bardzo łatwo wysyłać powiadomienia za pośrednictwem wielu usług. Wybraliśmy Facebook Messanger, ale po uruchomieniu go z Facebook Messanger będziesz mógł łatwo zmienić go na dowolną inną wybraną przez siebie usługę.

Proces:

Na stronie IFTTT kliknij swoją nazwę użytkownika (prawy górny róg), a następnie „Nowy aplet” wybierz „Webhooks” jako wyzwalacz („to”) i wybierz „Odbierz żądanie sieciowe”. Ustaw nazwę wydarzenia (np. empty_room).

W przypadku wyzwolonej usługi, akcja („ta”), wybierz Facebook Messenger > Wyślij wiadomość i wpisz wiadomość, którą chcesz otrzymać, gdy nastąpi to zdarzenie (np. „Cześć, wygląda na to, że zapomniałeś AC w dniu:).

Skoro tu jesteśmy, powinieneś również znaleźć swój tajny klucz, który będziesz musiał wstawić w odpowiednie miejsce w kodzie.

Aby znaleźć swój tajny klucz, przejdź do https://ifttt.com/services/maker_webhooks/settings Tam znajdziesz adres URL z Twoim kluczem w następującym formacie:

Krok 4: Więcej szczegółów - Blynk

Image
Image
Więcej szczegółów - Blynk
Więcej szczegółów - Blynk
Więcej szczegółów - Blynk
Więcej szczegółów - Blynk

Chcemy również interfejsu, który będzie miał następujące funkcje:

1. Możliwość ustawienia, jak długo pokój powinien być pusty, gdy klimatyzacja działa, zanim otrzymamy powiadomienie

2. Możliwość wyboru, jak blisko powinna być temperatura zewnętrzna do wnętrza.

3. Wyświetlacz do odczytów z czujników temperatury

4. Dioda informująca nas o stanie klimatyzacji (wł./wył.).

5. A co najważniejsze, wyświetlacz pokazujący, ile zaoszczędziliśmy $$$ i energii.

Jak stworzyć interfejs Blynk:

Jeśli nie masz jeszcze aplikacji Blynk, pobierz ją na swój telefon. Kiedy otwierasz aplikację i tworzysz nowy projekt, upewnij się, że wybrałeś odpowiednie urządzenie (np. ESP8266).

Otrzymasz wiadomość e-mail z tokenem uwierzytelniającym, który wstawisz w kodzie w odpowiednim miejscu (możesz go też ponownie wysłać do siebie z ustawień później, jeśli go zgubisz).

Umieść nowe widżety na ekranie, kliknij znak + u góry. Wybierz widżety, a następnie kliknij widżet, aby wprowadzić jego ustawienia. Dodaliśmy zdjęcia ustawień dla wszystkich używanych widżetów, w celach informacyjnych.

Po zakończeniu pracy z aplikacją i gdy w końcu zechcesz z niej skorzystać, po prostu kliknij ikonę „odtwórz” w prawym górnym rogu, aby uruchomić aplikację Blynk. Będziesz mógł również zobaczyć, kiedy Twój ESP8266 się łączy.

Uwaga - przycisk „Aktualizuj” służy do pobierania temperatury i stanu klimatyzacji, abyśmy mogli zobaczyć w aplikacji. Nie jest to wymagane przy zmianie ustawień (takich jak różnica temperatur), ponieważ są one wciskane automatycznie.

Krok 5: Kodeks

Włożyliśmy wiele wysiłku w udokumentowanie każdej części kodu w taki sposób, aby jak najłatwiej było go zrozumieć.

Części w kodzie, które należy zmienić przed użyciem (jako klucz uwierzytelniania dla Blynk, identyfikator SSID Wi-Fi i hasło itp.), są poprzedzone komentarzem //*zmień*, dzięki czemu można je łatwo wyszukać.

Będziesz potrzebował bibliotek użytych w kodzie, możesz je zainstalować za pomocą Arduino IDE, klikając Szkic> Dołącz biblioteki> Zarządzaj bibliotekami. Tam możesz wyszukać nazwę biblioteki i ją zainstalować. Upewnij się również, że umieściłeś plik generic8266_ifttt.h w tej samej lokalizacji, co ACsaver.ino.

Jedną z części kodu, którą wyjaśnimy tutaj, ponieważ nie chcieliśmy zaśmiecać kodu, jest sposób, w jaki decydujemy, kiedy zmienić stan klimatyzacji z włączenia na wyłączony, a stan pokoju z pustego na niepusty.

Odczytujemy z czujników co 3 sekundy, ale ponieważ czujniki nie są w 100% dokładne, nie chcemy, aby pojedynczy odczyt zmienił stan, który naszym zdaniem jest teraz w pomieszczeniu. Aby rozwiązać ten problem, kod robi to, że mamy licznik, który wykonujemy ++, gdy otrzymujemy odczyt na korzyść „AC jest włączone” i -- w przeciwnym razie. Następnie, gdy dochodzimy do wartości zdefiniowanej w SWITCHAFTER (domyślnie na 4), zmieniamy stan na „AC jest włączone”, gdy dochodzimy do -SWITCHAFTER (ujemna ta sama wartość), zmieniamy stan na „AC jest wyłączone”.

Wpływ na czas potrzebny do przełączenia jest znikomy i uważamy, że jest bardzo niezawodny w wykrywaniu tylko poprawnych zmian.

Krok 6: Złóż wszystko razem

Ok, więc wszystkie czujniki są na miejscu i działają prawidłowo. Interfejs Blynk jest ustawiony (z prawidłowymi wirtualnymi pinami!). A wydarzenia IFTTT czekają na nasz wyzwalacz.

Umieściłeś w kodzie tajny klucz IFTTT, klucz uwierzytelniania z Blynk, identyfikator SSID Wi-Fi i hasło, a nawet sprawdziłeś, czy czujniki DHT są skalibrowane, a jeśli nie, odpowiednio zmieniłeś przesunięcie (na przykład nasz na zewnątrz DHT odczytał temperatury wyższe o 1 stopień Celsjusza niż te, które powinien mieć, więc użyliśmy offset = -1).

Upewnij się, że masz włączone Wi-Fi, uruchom aplikację Blynk i załaduj kod do swojego ESP8266.

Otóż to. Jeśli wszystko zostało zrobione poprawnie, możesz się teraz pobawić i zobaczyć to w akcji.

A jeśli chcesz po prostu zobaczyć to w akcji bez trudu zestawiania wszystkiego w całość… Cóż… Przewiń w górę i obejrzyj wideo. (Obejrzyj z napisami! Bez głosu)

Krok 7: Myśli

Mieliśmy tutaj dwa główne wyzwania.

Po pierwsze, skąd wiemy, że klimatyzacja jest włączona? Próbowaliśmy użyć odbiornika podczerwieni, który będzie "nasłuchiwał" komunikacji między AC a pilotem. Wydawało się to zbyt skomplikowane, ponieważ dane były bardzo niechlujne i nie były wystarczająco spójne, aby zrozumieć "ok, to jest sygnał ON". Więc szukaliśmy innych sposobów. Jednym z pomysłów było użycie małego śmigła, które będzie generować mały prąd, gdy porusza się z wiatru AC, innym pomysłem, który próbowaliśmy, było mieć akcelerometr mierzący kąt obracających się skrzydeł na otworach wentylacyjnych i wykrywający ich ruch z pozycji OFF.

W końcu zdaliśmy sobie sprawę, że najprostszym sposobem na to jest mikrofon elektretowy, który bardzo niezawodnie wykrywa wiatr wydobywający się z AC

Uruchomienie czujników DHT było dziecinnie proste;), ale dopiero później zdaliśmy sobie sprawę, że jeden z nich trochę odbiegał od rzeczywistej temperatury. Czujnik PIR również wymagał pewnych regulacji, jak opisano wcześniej.

Drugim wyzwaniem było uczynienie całego rozwiązania prostym i niezawodnym. W pewnym sensie, że powinno być denerwujące w użyciu, powinno po prostu tam być i szturchać, kiedy potrzebujesz. W przeciwnym razie sami prawdopodobnie przestalibyśmy go używać.

Dlatego zastanowiliśmy się, co powinno być w interfejsie Blynk, i staraliśmy się, aby kod był jak najbardziej niezawodny, dbając o każdy przypadek krawędzi, jaki możemy wymyślić.

Kolejnym wyzwaniem, którego nie udało nam się rozwiązać do czasu pisania tej instrukcji, było dodanie blastera IR, który pozwoli nam wyłączyć AC z interfejsu Blynk. Jaki jest sens wiedzieć, że zapomniałeś o włączonej klimatyzacji bez możliwości jej wyłączenia? (cóż… możesz zapytać kogoś, czy jest w domu).

Niestety mieliśmy pewne trudności z odtworzeniem sygnałów, które nagraliśmy z pilota, z powrotem na AC za pomocą ESP8266. Udało nam się kontrolować AC za pomocą Arduino Uno, postępując zgodnie z instrukcją:

www.instructables.com/id/How-to-control-th…

Wkrótce spróbujemy ponownie i zaktualizujemy instrukcje z naszymi odkryciami i, miejmy nadzieję, instrukcjami, jak dodać tę funkcję.

Kolejnym ograniczeniem, które widzimy, jest fakt, że musimy podłączyć czujnik za oknem, co w pewnych sytuacjach może nie być możliwe, a także oznacza konieczność wyprowadzenia na zewnątrz długiego kabla. Rozwiązaniem może być pobranie danych o pogodzie Twojej lokalizacji z Internetu. Ponadto czujnik elektretowy, który działa z AC, można zastąpić odbiornikiem podczerwieni, który opisaliśmy powyżej, w przypadku modeli AC z bardziej znanymi lub łatwiejszymi do dekodowania kodami IR.

Projekt można rozbudować na wiele sposobów. Jak wspomniano powyżej, postaramy się znaleźć sposób na włączenie kontroli IR nad klimatyzacją, która następnie otwiera zupełnie nowy świat możliwości włączania i wyłączania klimatyzacji z dowolnego miejsca na świecie lub ustawiania czasu włączania i wyłączania przez Blynk jako kolejny przykład. Po ustaleniu technicznych trudności z IR, dodanie kodu jest dość proste i proste i nie powinno zająć dużo czasu.

Jeśli naprawdę chcemy marzyć o wielkich rzeczach… Projekt można przekształcić w kompletny moduł, dzięki któremu każdy AC stanie się inteligentnym AC. I nie potrzebuje dużo więcej niż my. Po prostu więcej kodu, większe wykorzystanie podczerwieni, a jeśli chcemy, aby było produkowane masowo, może upewnij się, że pobieramy dane pogodowe według lokalizacji, wtedy możemy umieścić całość w małym pudełku.

Tak naprawdę wszystko, czego potrzebujemy, to czujnik temperatury do pomiaru temperatury wewnętrznej, czujnik PIR do wykrywania ruchu i dioda IR jako blaster oraz odbiornik podczerwieni do „słuchania” komunikacji między AC a używanym przez nas pilotem.

Blynk zapewnia wszystkie możliwości potrzebne do sterowania magicznym pudełkiem w bardzo prosty i niezawodny sposób.

Wykonanie takiego pełnego projektu zajmie trochę czasu, zwłaszcza z punktu widzenia uczynienia go wystarczająco wszechstronnym, aby sam się skonfigurować i automatycznie wykryć i zrozumieć większość AC.

Ale zrobienie tego dla siebie, cóż, jeśli robisz to w wolnym czasie, przybliżenie nie powinno zająć więcej niż tydzień lub dwa. Zależy od tego, ile masz wolnego czasu… Głównym wyzwaniem byłoby zapisanie wszystkich różnych sygnałów, które może wysyłać pilot AC, i zrozumienie ich. (Chociaż samo odtworzenie ich powinno być jeszcze łatwiejsze).

Zalecana: