Spisu treści:

Zasilany bateryjnie czujnik poziomu kolektora wody: 7 kroków (ze zdjęciami)
Zasilany bateryjnie czujnik poziomu kolektora wody: 7 kroków (ze zdjęciami)

Wideo: Zasilany bateryjnie czujnik poziomu kolektora wody: 7 kroków (ze zdjęciami)

Wideo: Zasilany bateryjnie czujnik poziomu kolektora wody: 7 kroków (ze zdjęciami)
Wideo: [Webinar] Co nowego w Pepperl+Fuchs? Przegląd nowości produktowych 2024, Listopad
Anonim
Zasilany bateryjnie czujnik poziomu wody w kolektorze
Zasilany bateryjnie czujnik poziomu wody w kolektorze
Zasilany bateryjnie czujnik poziomu wody w kolektorze
Zasilany bateryjnie czujnik poziomu wody w kolektorze

Nasz dom posiada zbiornik na wodę zasilany z deszczu padającego na dach, który służy do toalety, pralki i podlewania roślin w ogrodzie. Przez ostatnie trzy lata lata były bardzo suche, więc obserwowaliśmy poziom wody w zbiorniku. Do tej pory używaliśmy drewnianego patyka, który wkładaliśmy do zbiornika i zaznaczaliśmy poziom. Ale z pewnością musi być możliwe ulepszenie tego!

Tu właśnie pojawia się ten projekt. Pomysł polega na zamontowaniu ultradźwiękowego czujnika odległości na szczycie zbiornika. Czujnik ten działa jak sonar emitujący fale dźwiękowe, które następnie odbijają się od powierzchni wody. Na podstawie czasu powrotu fal i prędkości dźwięku można obliczyć odległość do powierzchni wody i określić stopień napełnienia zbiornika.

Ponieważ nie mam podłączenia do sieci w pobliżu zbiornika, ważne jest, aby całe urządzenie pracowało na bateriach. Oznacza to, że musiałem być świadomy zużycia energii przez wszystkie części. Aby odesłać dane, zdecydowałem się użyć wbudowanego Wi-Fi mikrochipa ESP8266. Chociaż Wifi jest dość energochłonny, ma przewagę nad innym rodzajem połączenia radiowego: możesz bezpośrednio połączyć się z routerem bezprzewodowym w domu bez konieczności budowania innego urządzenia, które działa jako przekaźnik.

Aby oszczędzać energię, przez większość czasu będę umieszczać ESP8266 w głębokim śnie i co godzinę wykonywać pomiary. Dla mojego celu śledzenia poziomu wody to więcej niż wystarcza. Dane zostaną przesłane do ThingSpeak, a następnie można je odczytać na smartfonie za pomocą aplikacji.

Jeszcze jeden szczegół! Niezbędna do pomiaru odległości prędkość dźwięku zależy od temperatury iw mniejszym stopniu od wilgotności. Aby uzyskać dokładny pomiar na zewnątrz w porach roku, dorzucimy czujnik BME280, który mierzy temperaturę, wilgotność i ciśnienie. Jako bonus sprawia to, że nasz czujnik poziomu wody jest również mini stacją pogodową.

Części:

  • 1x ESP8266 ESP-12F.
  • 1x płyta adaptera ESP-12F.
  • 1x FT232RL FTDI: przejściówka USB na szeregowy.
  • 1x HC-SR04-P: ultradźwiękowy moduł pomiaru odległości. Zauważ, że P jest ważne, ponieważ jest to wersja, która ma niskie minimalne napięcie robocze 3V.
  • 1x BME280 wersja 3,3V: czujnik temperatury, ciśnienia i wilgotności.
  • 1x IRL2203N: n-kanałowy tranzystor MOSFET.
  • 1x MCP1700-3302E wersja 3.3V: regulator napięcia.
  • 3x akumulator AA, m.in. 2600mAh.
  • 1x uchwyt na 3 baterie.
  • 1x płytka do krojenia chleba.
  • Rezystory: 1x 470K, 1x 100K, 4x 10K.
  • Kondensatory: 2x ceramiczne 1uF.
  • 3x przełącznik dwustabilny.
  • Przewody płytki stykowej w kształcie litery U.
  • Przewody połączeniowe.
  • Plastikowy pojemnik na zupę 1l.
  • Pierścień mocujący do pojemnika.

Kod udostępniłem na GitHub.

Krok 1: Zapoznanie się z ultradźwiękowym czujnikiem odległości

Zapoznanie się z ultradźwiękowym czujnikiem odległości
Zapoznanie się z ultradźwiękowym czujnikiem odległości
Zapoznanie się z ultradźwiękowym czujnikiem odległości
Zapoznanie się z ultradźwiękowym czujnikiem odległości

Zmierzymy odległość do powierzchni wody za pomocą czujnika ultradźwiękowego HC-SR04-P. Podobnie jak nietoperz, ten czujnik wykorzystuje sonar: wysyła impuls dźwiękowy o częstotliwości zbyt wysokiej dla ludzkiego ucha, a więc ultradźwiękowej, i czeka, aż uderzy w przedmiot, odbije się i wróci. Odległość można następnie obliczyć z czasu potrzebnego na odebranie echa i prędkości dźwięku.

Konkretnie, jeśli trzpień Trig jest wyciągnięty wysoko przez co najmniej 10 μs, czujnik wysyła serię 8 impulsów o częstotliwości 40 Hz. Odpowiedź jest następnie uzyskiwana na pinie Echo w postaci impulsu o czasie trwania równym czasowi między wysłaniem a odebraniem impulsu ultradźwiękowego. Następnie musimy podzielić przez 2, ponieważ impuls ultradźwiękowy biegnie tam iz powrotem i potrzebujemy czasu podróży w jedną stronę, i pomnożyć przez prędkość dźwięku, która wynosi około 340 m/s.

Ale poczekaj chwilę! W rzeczywistości prędkość dźwięku zależy od temperatury iw mniejszym stopniu od wilgotności. Czy szukam dziury w całym, czy to ma znaczenie? Korzystając z narzędzia obliczeniowego stwierdzamy, że zimą (przy -5 °C) mogliśmy mieć 328,5 m/s, a latem (przy 25 °C) 347,1 m/s. Załóżmy więc, że czas podróży w jedną stronę wynosi 3 ms. Zimą oznaczałoby to 98,55 cm, a latem 104,13 cm. To spora różnica! Aby więc uzyskać wystarczającą dokładność przez cały rok, a nawet w dzień i w nocy, musimy dodać do naszego zestawu termometr. Zdecydowałem się dołączyć BME280, który mierzy temperaturę, wilgotność i ciśnienie. W kodzie wykorzystałem w funkcji speedOfSound formułę, która oblicza prędkość dźwięku w odniesieniu do wszystkich trzech parametrów, choć tak naprawdę najważniejszym czynnikiem jest temperatura. Wilgotność nadal ma mniejszy wpływ, ale wpływ ciśnienia jest znikomy. Moglibyśmy użyć prostszej formuły, biorąc pod uwagę tylko temperaturę, którą zaimplementowałem w speedOfSoundSimple.

Jest jeszcze jeden ważny punkt dotyczący HC-SR04. Dostępne są dwie wersje: wersja standardowa działa przy napięciu 5V, natomiast HC-SR04-P może pracować w zakresie napięć od 3V do 5V. Ponieważ 3 akumulatorki AA zapewniają około 3x1,25V=3,75V, ważne jest, aby uzyskać wersję P. Niektórzy sprzedawcy mogą wysłać niewłaściwy. Więc spójrz na zdjęcia, jeśli je kupisz. Obie wersje wyglądają inaczej zarówno z tyłu, jak iz przodu, jak wyjaśniono na tej stronie. Z tyłu w wersji P wszystkie trzy żetony są poziome, podczas gdy w wersji standardowej jeden jest pionowy. Z przodu wersja standardowa ma dodatkowy srebrny element.

W obwodzie elektronicznym użyjemy tranzystora jako przełącznika, aby wyłączyć zasilanie czujnika ultradźwiękowego, gdy nasza konfiguracja przejdzie w głęboki sen, aby oszczędzać baterię. W przeciwnym razie nadal będzie pobierał około 2 mA. Z drugiej strony BME280 zużywa tylko około 5 μ, gdy jest nieaktywny, więc nie ma potrzeby wyłączania go tranzystorem.

Krok 2: Wybór płyty ESP8266

Wybór płytki ESP8266
Wybór płytki ESP8266

Aby czujnik działał jak najdłużej na baterii, musimy oszczędzać na zużyciu energii. Chociaż Wifi ESP8266 zapewnia bardzo wygodny sposób podłączenia naszego czujnika do chmury, jest również dość energochłonny. Podczas pracy ESP8266 pobiera około 80mA. Tak więc z bateriami o pojemności 2600 mAh bylibyśmy w stanie uruchomić nasze urządzenie tylko przez co najwyżej 32 godziny, zanim się wyczerpią. W praktyce będzie mniej, bo nie będziemy mogli wykorzystać pełnej pojemności 2600 mAh, zanim napięcie spadnie do zbyt niskiego poziomu.

Na szczęście ESP8266 ma też tryb głębokiego uśpienia, w którym prawie wszystko jest wyłączone. Plan polega więc na tym, aby przez większość czasu ESP8266 był w głębokim śnie i budził go bardzo często, aby dokonać pomiaru i przesłać dane przez Wifi do ThingSpeak. Według tej strony maksymalny czas głębokiego snu wynosił około 71 minut, ale od rdzenia ESP8266 Arduino 2.4.1 wzrósł do około 3,5 godziny. W moim kodzie rozliczyłem się na godzinę.

Najpierw wypróbowałem wygodną płytkę rozwojową NodeMCU, ale bummer, w głębokim śnie nadal zużywała około 9 mA, co daje nam co najwyżej 12 dni czystego głębokiego snu, nawet nie biorąc pod uwagę interwałów budzenia. Ważnym winowajcą jest regulator napięcia AMS1117, który zużywa energię nawet jeśli próbujesz ją ominąć, podłączając baterię bezpośrednio do pinu 3,3V. Ta strona wyjaśnia, jak usunąć regulator napięcia i USB UART. Jednak nigdy nie udało mi się tego zrobić bez zniszczenia mojej deski. Co więcej, po wyjęciu USB UART nie można już połączyć się z ESP8266, aby dowiedzieć się, co poszło nie tak.

Większość płyt rozwojowych ESP8266 wydaje się korzystać z marnotrawnego regulatora napięcia AMS1117. Jedynym wyjątkiem jest WEMOS D1 mini (zdjęcie po lewej), który jest dostarczany z bardziej ekonomicznym ME6211. Rzeczywiście, odkryłem, że WEMOS D1 mini zużywa około 150 μA w głębokim śnie, co jest bardziej podobne. Większość z nich to prawdopodobnie zasługa USB UART. Przy tej płytce trzeba jednak samemu przylutować nagłówki pod piny.

Dużo lepiej jednak da się zrobić z płytką typu bare-bones, taką jak ESP-12F (zdjęcie po prawej), która nie ma UARTa USB ani regulatora napięcia. Zasilając pin 3,3V stwierdziłem, że zużycie w głębokim śnie wynosi tylko 22 μA!

Ale aby ESP-12F działał, przygotuj się na trochę lutowania i trochę więcej kłopotów z programowaniem! Ponadto, o ile baterie bezpośrednio nie dostarczają prawidłowego napięcia, które wynosi od 3 V do 3,6 V, musimy zapewnić własny regulator napięcia. W praktyce trudno jest znaleźć system akumulatorów, który zapewni napięcie w tym zakresie przez cały cykl rozładowania. Pamiętaj, że musimy również zasilać czujnik HC-SR04-P, który teoretycznie może działać przy napięciu nawet 3 V, ale działa dokładniej, gdy napięcie jest wyższe. Ponadto na moim schemacie HC-SR04-P jest włączany przez tranzystor, który indukuje niewielki dodatkowy spadek napięcia. Użyjemy regulatora napięcia MCP1700-3302E. Maksymalne napięcie wejściowe to 6V więc zasilamy go maksymalnie 4 bateriami AA. Postanowiłem użyć 3 baterii AA.

Krok 3: Utwórz kanał ThingSpeak

Do przechowywania naszych danych użyjemy ThingSpeak, usługi w chmurze IoT. Wejdź na https://thingspeak.com/ i utwórz konto. Po zalogowaniu kliknij przycisk Nowy kanał, aby utworzyć kanał. W ustawieniach kanału wypełnij nazwę i opis, jak chcesz. Następnie nazywamy pola kanałów i aktywujemy je, klikając pola wyboru po prawej stronie. Jeśli użyjesz mojego kodu bez zmian, pola są następujące:

  • Pole 1: poziom wody (cm)
  • Pole 2: poziom naładowania baterii (V)
  • Pole 3: temperatura (°C)
  • Pole 4: wilgotność (%)
  • Pole 5: ciśnienie (Pa)

W celu późniejszego wykorzystania zapisz identyfikator kanału, klucz API odczytu i klucz API zapisu, które można znaleźć w menu Klucze API.

Możesz odczytać dane ThingSpeak na smartfonie za pomocą aplikacji. Na moim telefonie z Androidem korzystam z widżetu IoT ThingSpeak Monitor. Musisz go skonfigurować za pomocą ID kanału i klucza Read API.

Krok 4: Jak zaprogramować ESP-12F

Jak zaprogramować ESP-12F
Jak zaprogramować ESP-12F
Jak zaprogramować ESP-12F
Jak zaprogramować ESP-12F

Potrzebujemy płytki typu bare-bones, aby oszczędzać baterię, ale wadą jest to, że jest nieco trudniejsza do zaprogramowania niż płytka rozwojowa z wbudowanym UARTem USB.

Użyjemy Arduino IDE. Istnieją inne instrukcje wyjaśniające, jak z niego korzystać, więc będę tutaj krótko. Kroki, aby przygotować go do ESP8266, to:

  • Pobierz środowisko Arduino IDE.
  • Zainstaluj wsparcie dla płyty ESP8266. W menu Plik - Preferencje - Ustawienia dodaj adres URL https://arduino.esp8266.com/stable/package_esp8266com_index.json do dodatkowych adresów URL menedżera tablicy. Następnie w menu Tools-Board-Boards Manager zainstaluj esp8266 by esp8266 community.
  • Wybierz jako Płytka: Ogólny moduł ESP8266.

Do obsługi ESP-12F użyłem płytki adaptera, powszechnie dostępnej w sklepach internetowych. Przylutowałem chip do płytki a następnie przylutowałem nagłówki do płytki. Dopiero wtedy odkryłem, że płytka adaptera jest zbyt szeroka na standardową płytkę stykową! Nie pozostawia wolnych pinów z boku do nawiązywania połączeń.

Rozwiązaniem, które wybrałem, jest użycie przewodów w kształcie litery U i połączenie ich jak na zdjęciu po prawej przed umieszczeniem ESP8266 z płytką adaptera na płytce stykowej. Tak więc GND i VCC są połączone z szynami płytki stykowej, a pozostałe piny są dostępne w dalszej części płytki stykowej. Wadą jest to, że po zakończeniu całego obwodu twoja płytka stykowa będzie dość zatłoczona przewodami. Innym rozwiązaniem jest dopasowanie dwóch płytek stykowych, jak pokazano na tym filmie.

Następnie, aby zaprogramować ESP-12F przez port USB komputera, potrzebujemy adaptera USB do portu szeregowego. Użyłem programatora FT232RL FTDI. Programator posiada zworkę do wyboru pomiędzy 3,3V lub 5V. Powinien być ustawiony na 3,3V dla ESP8266. Nie zapomnij o tym, ponieważ napięcie 5 V może usmażyć twój chips! Instalacja sterowników powinna być automatyczna, ale jeśli programowanie nie działa, możesz spróbować zainstalować je ręcznie z tej strony.

ESP8266 posiada tryb programowania do wgrywania nowego oprogramowania do pamięci flash oraz tryb flash do uruchamiania aktualnego oprogramowania z pamięci flash. Aby wybrać jeden z tych trybów, niektóre piny muszą mieć określoną wartość podczas rozruchu:

  • Programowanie: GPIO0: niski, CH-PD: wysoki, GPIO2: wysoki, GPIO15: niski
  • Flash: GPIO0: wysoki, CH-PD: wysoki, GPIO2: wysoki, GPIO15: niski

Płyta adaptera już zajmuje się podciąganiem CH-PD i ściąganiem GPIO15 z rezystorami 10K.

Tak więc w naszym obwodzie elektronicznym nadal musimy podciągać GPIO2. Dostarczamy również przełącznik do przełączania ESP8266 w tryb programowania lub flash oraz przełącznik do resetowania, co odbywa się poprzez podłączenie RST do masy. Ponadto upewnij się, że łączysz pin TX FT232RL z pinem RXD ESP8266 i odwrotnie.

Sekwencja programowania jest następująca:

  • Ustaw GPIO2 na niski, zamykając przełącznik programowania.
  • Zresetuj ESP8266, zamykając, a następnie ponownie otwierając przełącznik resetowania. ESP8266 uruchamia się teraz w trybie programowania.
  • Ustaw GPIO2 z powrotem na wysoki, otwierając przełącznik programowania.
  • Wgraj nowy firmware z Arduino IDE.
  • Zresetuj ESP8266 ponownie, zamykając i ponownie otwierając przełącznik resetowania. ESP8266 uruchamia się teraz w trybie flash i uruchamia nowe oprogramowanie układowe.

Teraz możesz sprawdzić, czy programowanie działa, wgrywając słynny szkic Blink.

Jeśli to wszystko działa, to przynajmniej piny GND, VCC, GPIO2, RST, TXD i RXD są poprawnie przylutowane i połączone. Co za ulga! Ale zanim przejdziesz dalej, polecam również przetestowanie innych pinów za pomocą multimetru. Sam miałem problem z jednym z pinów. Możesz użyć tego szkicu, który ustawia wszystkie piny jeden po drugim na 5 sekund, a następnie wprowadza ESP8266 w głęboki sen na 20 sekund. Aby umożliwić budzenie ESP8266 po głębokim śnie należy podłączyć RST do GPIO16, który daje sygnał wake.

Krok 5: Przesyłanie szkicu

Kod udostępniłem na GitHubie, to tylko jeden plik: Level-Sensor-Deepsleep.ino. Wystarczy go pobrać i otworzyć w Arduino IDE. Możesz też wybrać Plik - Nowy i po prostu skopiuj/wklej kod.

Na początku pliku musisz podać kilka informacji: nazwę i hasło sieci WLAN, której chcesz użyć, dane statycznego adresu IP oraz identyfikator kanału i klucz API zapisu kanału ThingSpeak.

Idąc za wskazówką na tym blogu, zamiast DHCP, gdzie router dynamicznie przypisuje IP, używamy statycznego IP, gdzie samodzielnie ustawiamy adres IP ESP8266. Okazuje się to znacznie szybsze, dzięki czemu oszczędzamy na czasie aktywności, a tym samym na energii baterii. Musimy więc podać dostępny statyczny adres IP, a także adres IP routera (bramy), maskę podsieci i serwer DNS. Jeśli nie masz pewności, co wypełnić, przeczytaj o konfigurowaniu statycznego adresu IP w instrukcji routera. Na komputerze z systemem Windows podłączonym przez Wifi do routera uruchom powłokę (Windows button-r, cmd) i wpisz ipconfig /all. Większość potrzebnych informacji znajdziesz w sekcji Wi-Fi.

Badając kod widać, że w przeciwieństwie do innych kodów Arduino większość akcji odbywa się w funkcji konfiguracji zamiast w funkcji pętli. Dzieje się tak dlatego, że ESP8266 przechodzi w głęboki sen po zakończeniu funkcji konfiguracji (chyba że zaczęliśmy w trybie OTA). Po przebudzeniu jest jak nowy restart i ponownie uruchamia konfigurację.

Oto najważniejsze cechy kodu:

  • Po wybudzeniu kod ustawia switchPin (domyślnie GPIO15) na wysoki. To włącza tranzystor, który z kolei włącza czujnik HC-SR04-P. Przed przejściem w stan głębokiego uśpienia ustawia pin z powrotem na stan niski, wyłączając tranzystor i HC-SR04-P, upewniając się, że nie zużywa więcej cennej energii baterii.
  • Jeśli modePIN (domyślnie GPIO14) jest niski, kod przechodzi w tryb OTA zamiast trybu pomiaru. Dzięki OTA (aktualizacja bezprzewodowa) możemy aktualizować oprogramowanie przez Wifi zamiast portu szeregowego. W naszym przypadku jest to dość wygodne, ponieważ nie musimy już podłączać adaptera szeregowego na USB w celu dalszych aktualizacji. Wystarczy ustawić GPIO14 na stan niski (przełącznikiem OTA w układzie elektronicznym), zresetować ESP8266 (przełącznikiem resetowania) i powinien on stać się dostępny w Arduino IDE do wgrania.
  • Na pinie analogowym (A0) mierzymy napięcie akumulatora. Pozwala nam to na wyłączenie naszego urządzenia, czyli trwałego głębokiego uśpienia, jeśli napięcie spadnie zbyt nisko, poniżej minVoltage, aby chronić akumulatory przed nadmiernym rozładowaniem. Pomiar analogowy nie jest zbyt dokładny, wykonujemy pomiary numMeasuresBattery (domyślnie 10) i bierzemy średnią, aby poprawić dokładność.
  • Pomiar odległości czujnika HC-SR04-P odbywa się w funkcji distanceMeasurement. Aby zwiększyć dokładność, pomiar jest powtarzany numMeasuresDistance (domyślnie 3 razy).
  • Istnieje funkcja obliczania speedOfSound na podstawie pomiaru temperatury, wilgotności i ciśnienia przez czujnik BME280. Domyślny adres I2C BME280 to 0x76, ale jeśli nie działa, być może trzeba go zmienić na 0x77: bool bme280Started=bme280.begin(0x77);
  • Będziemy używać BME280 w trybie wymuszonym, co oznacza, że wykonuje jeden pomiar i wraca do trybu uśpienia, aby oszczędzać energię.
  • Jeśli ustawisz pojemność (l), fullDistance (cm) i powierzchnię (m2), kod obliczy pozostałą objętość zbiornika wody na podstawie pomiaru odległości: podwójna pozostałaVolume=pojemność+10,0*(fullDistance-distance)*powierzchnia; i prześlij to do ThingSpeak. Jeśli zachowasz wartości domyślne, wczytuje odległość do powierzchni wody w cm.

Krok 6: Budowanie obwodu elektronicznego

Budowanie obwodu elektronicznego
Budowanie obwodu elektronicznego

Powyżej znajduje się schemat obwodu elektronicznego. Jest dość duży jak na jedną płytkę stykową, zwłaszcza z przewymiarowaną płytą adaptera i sztuczką z przewodami w kształcie litery U. W pewnym momencie na pewno żałowałem, że nie skorzystałem z alternatywy połączenia dwóch płytek stykowych, ale w końcu się udało.

Oto ważne cechy obwodu:

  • Istnieją dwa napięcia, które odgrywają rolę: napięcie wejściowe z akumulatora (około 3,75 V) i 3,3 V, które zasila ESP8266 i BME280. Umieściłem 3,3V na lewej szynie tablicy rozdzielczej i 3,75V na prawej szynie. Regulator napięcia zamienia napięcie 3,75V na 3,3V. Zgodnie z instrukcjami w arkuszu danych dodałem kondensatory 1 μF do wejścia i wyjścia regulatora napięcia, aby zwiększyć stabilność.
  • GPIO15 ESP8266 jest podłączony do bramki tranzystora. Dzięki temu ESP8266 może włączać tranzystor, a tym samym czujnik ultradźwiękowy, gdy jest aktywny i wyłączać go, gdy przechodzi w głęboki sen.
  • GPIO14 jest podłączony do przełącznika, przełącznika OTA. Zamknięcie przełącznika daje sygnał do ESP8266, że chcemy następnie wystartować w trybie OTA, czyli po wciśnięciu (zamknięciu i otwarciu) przełącznika RESET i wgraniu nowego szkicu over-the-air.
  • Piny RST i GPIO2 są połączone jak na schemacie programowania. Pin RST jest teraz również podłączony do GPIO16, aby umożliwić ESP8266 wybudzenie się z głębokiego snu.
  • Piny TRIG i ECHO czujnika ultradźwiękowego są podłączone do GPIO12 i GPIO13, podczas gdy piny SCL i SDA BME280 są podłączone do GPIO5 i GPIO4.
  • Wreszcie pin analogowy ADC jest przez dzielnik napięcia podłączony do napięcia wejściowego. Pozwala to zmierzyć napięcie wejściowe w celu sprawdzenia stanu naładowania akumulatorów. Pin ADC może mierzyć napięcia od 0V do 1V. Do dzielnika napięcia wybraliśmy rezystory 100K i 470K. Oznacza to, że napięcie na pinie ADC podane jest jako: V_ADC = 100K/(100K+470K) V_in. Przyjmując V_ADC=1V oznacza to, że możemy mierzyć napięcia wejściowe do V_in=570/100 V_ADC = 5,7V. Jeśli chodzi o pobór mocy, przez dzielnik napięcia przepływa również prąd. Przy V_in=3,75V z akumulatorów znajdziemy I_leak=3,75V/570K=6,6 μA.

Nawet gdy obwód jest zasilany z baterii, możliwe jest podłączenie adaptera USB do portu szeregowego. Wystarczy odpiąć VCC adaptera i podłączyć GND, RX i TX jak na schemacie programowania. Umożliwia to otwarcie monitora szeregowego w Arduino IDE w celu odczytania komunikatów debugowania i upewnienia się, że wszystko działa zgodnie z oczekiwaniami.

Dla całego obwodu zmierzyłem pobór prądu 50 μA w głębokim śnie podczas pracy na bateriach. Należą do nich ESP8266, BME280, czujnik ultradźwiękowy (wyłączany przez tranzystor) i wycieki przez dzielnik napięcia i być może inne wycieki. Więc nie jest tak źle!

Odkryłem, że całkowity czas aktywności wynosi około 7 sekund, z czego 4,25 sekundy na połączenie z Wifi i 1,25 sekundy na przesłanie danych do ThingSpeak. Tak więc przy prądzie aktywnym 80mA znalazłem 160 μAh na godzinę dla czasu aktywnego. Dodając 50 μAh na godzinę dla stanu głębokiego snu mamy w sumie 210 μAh na godzinę. Oznacza to, że baterie 2600 mAh teoretycznie wystarczają na 12400 godzin=515 dni. Jest to absolutne maksimum, gdybyśmy mogli wykorzystać pełną pojemność baterii (co nie jest prawdą) i nie ma wycieków, których nie znalazłem przy moich bieżących pomiarach. Więc muszę jeszcze sprawdzić, czy to się naprawdę uda.

Krok 7: Wykończenie czujnika

Wykończenie czujnika
Wykończenie czujnika
Wykończenie czujnika
Wykończenie czujnika
Wykończenie czujnika
Wykończenie czujnika

Czujnik włożyłem do plastikowego 1-litrowego pojemnika, w którym kiedyś była zupa. Na dole zrobiłem dwa otwory pasujące do „oczek” czujnika HC-SR04-P. Poza otworami pojemnik powinien być wodoodporny. Następnie jest przymocowany do ściany zbiornika na wodę za pomocą okrągłego pierścienia, który jest zwykle używany do rury odprowadzającej wodę deszczową.

Życzymy miłej zabawy z projektem!

Zalecana: