Spisu treści:

Solarny miernik wilgotności gleby z ESP8266: 10 kroków (ze zdjęciami)
Solarny miernik wilgotności gleby z ESP8266: 10 kroków (ze zdjęciami)

Wideo: Solarny miernik wilgotności gleby z ESP8266: 10 kroków (ze zdjęciami)

Wideo: Solarny miernik wilgotności gleby z ESP8266: 10 kroków (ze zdjęciami)
Wideo: Polski Kongres Rolniczy: Pogoda dla rolnika - stacje pogodowe 2024, Czerwiec
Anonim

W tej instrukcji tworzymy monitor wilgotności gleby zasilany energią słoneczną. Wykorzystuje mikrokontroler Wi-Fi ESP8266 o niskim poborze mocy, a wszystko jest wodoodporne, więc można je pozostawić na zewnątrz. Możesz dokładnie przestrzegać tego przepisu lub czerpać z niego przydatne techniki do własnych projektów.

Jeśli jesteś nowicjuszem w programowaniu mikrokontrolerów, sprawdź moją klasę Arduino i klasę Internetu rzeczy, aby zapoznać się z podstawami okablowania, kodowania i łączenia się z Internetem.

Ten projekt jest częścią mojej bezpłatnej Klasy Solar, w której możesz dowiedzieć się więcej o sposobach wykorzystania energii słonecznej poprzez grawerowanie i panele słoneczne.

Aby być na bieżąco z tym, nad czym pracuję, śledź mnie na YouTube, Instagramie, Twitterze, Pintereście i subskrybuj mój newsletter.

Krok 1: Czego potrzebujesz

Co będziesz potrzebował
Co będziesz potrzebował

Będziesz potrzebować płytki do ładowania baterii słonecznych i wyłącznika ESP8266, takiego jak NodeMCU ESP8266 lub Huzzah, a także czujnika gleby, baterii, wyłącznika zasilania, przewodu i obudowy, aby umieścić obwód wewnątrz.

Oto komponenty i materiały użyte do monitora wilgotności gleby:

  • ESP8266 mikrokontroler NodeMCU (lub podobny, Vin musi tolerować do 6V)
  • Ładowarka słoneczna Adafruit z opcjonalnym termistorem i rezystorem 2,2 kΩ
  • Akumulator litowo-jonowy 2200 mAh;
  • Płyta Perma-proto
  • Czujnik wilgotności/temperatury gleby
  • 2 dławiki kablowe
  • Wodoodporna obudowa
  • Wodoodporna para kabli zasilających DC
  • Rurki termokurczliwe
  • Panel słoneczny o mocy 3,5 W
  • Przycisk wyłącznika zasilania
  • Podwójna taśma piankowa

Oto narzędzia, których będziesz potrzebować:

  • Lutownica i lut
  • Pomocne dłonie narzędzie
  • Narzędzia do ściągania izolacji
  • Nożyce do płukania
  • Pęsety (opcjonalnie)
  • Opalarka lub zapalniczka
  • Multimetr (opcjonalny, ale przydatny do rozwiązywania problemów)
  • Kabel USB A-microB
  • Nożyce
  • Wiertło krokowe

Będziesz potrzebować bezpłatnych kont w witrynach z danymi w chmurze io.adafruit.com i IFTTT.

Jako partner Amazon zarabiam na kwalifikujących się zakupach, których dokonujesz za pomocą moich linków afiliacyjnych.

Krok 2: Prototyp płyty chlebowej

Prototyp płyty chlebowej
Prototyp płyty chlebowej

Dla takich projektów ważne jest stworzenie prototypu płytki stykowej bez lutowania, aby upewnić się, że czujnik i kod działają przed wykonaniem jakichkolwiek trwałych połączeń.

Obraz
Obraz
Obraz
Obraz
Obraz
Obraz
Obraz
Obraz

W tym przypadku czujnik gleby ma przewody linkowe, więc konieczne było tymczasowe przymocowanie solidnych głowic do końców przewodów czujnika za pomocą lutu, pomocnych dłoni i niektórych rurek termokurczliwych.

Obraz
Obraz

Postępuj zgodnie ze schematem obwodu, aby podłączyć zasilanie czujnika, uziemienie, zegar i piny danych (dane otrzymują również rezystor podciągający 10K, który jest dostarczany z czujnikiem gleby).

  • Zielony przewód czujnika do GND
  • Czerwony przewód czujnika do 3,3 V
  • Żółty przewód czujnika do NodeMCU pin D5 (GPIO 14)
  • Niebieski przewód czujnika do NodeMCU pin D6 (GPIO 12)
  • Rezystor podciągający 10K między niebieskim pinem danych a 3,3 V

Możesz to przetłumaczyć na preferowany mikrokontroler. Jeśli używasz Arduino Uno lub podobnego, Twoja płyta jest już obsługiwana przez oprogramowanie Arduino. Jeśli używasz ESP8266, zapoznaj się z moją klasą Internetu rzeczy, aby uzyskać pomoc krok po kroku, jak skonfigurować ESP8266 w Arduino (dodając dodatkowe adresy URL do pola Adresy URL menedżera dodatkowych płyt w preferencjach Arduino, a następnie wyszukując i wybieranie nowych tablic z menedżera tablic). Zwykle używam płyty typu Adafruit ESP8266 Huzzah do programowania płyty NodeMCU ESP8266, ale można również zainstalować i używać wsparcia płyty Generic ESP8266. Potrzebny będzie również sterownik układu komunikacyjnego USB SiLabs (dostępny dla Mac/Windows/Linux).

Aby uruchomić czujnik z moją płytą kompatybilną z Arduino, pobrałem bibliotekę Arduino SHT1x ze strony github Practical Arduino, a następnie rozpakowałem plik i przeniosłem folder biblioteki do mojego folderu Arduino/libraries, a następnie zmieniłem jego nazwę na SHT1x. Otwórz przykładowy szkic ReadSHT1xValues i zmień numery pinów na 12 (dataPin) i 14 (clockPin) lub skopiuj zmodyfikowany szkic tutaj:

#włączać

#define dataPin 12 // NodeMCU pin D6 #define clockPin 14 // NodeMCU pin D5 SHT1x sht1x(dataPin, clockPin); // tworzenie instancji obiektu SHT1x void setup() { Serial.begin(38400); // Otwórz połączenie szeregowe, aby zgłosić wartości do hosta Serial.println("Uruchamianie"); } void loop() { float temp_c; pływak temp_f; wilgotność pływaka; temp_c = sht1x.odczytTemperaturaC(); // Odczytaj wartości z czujnika temp_f = sht1x.readTemperatureF(); wilgotność = sht1x.odczytWilgotność(); Serial.print("Temperatura: "); // Wydrukuj wartości na porcie szeregowym Serial.print(temp_c, DEC); Serial.print("C / "); Serial.print(temp_f, DEC); Serial.print("F. Wilgotność: "); Serial.print(wilgotność); Serial.println("%"); opóźnienie (2000); }

Prześlij ten kod na swoją tablicę i otwórz monitor szeregowy, aby zobaczyć strumień danych czujnika.

Jeśli twój kod nie skompiluje się i narzeka na brak SHT1x.h, oznacza to, że nie masz poprawnie zainstalowanej wymaganej biblioteki czujników. Sprawdź folder Arduino/libraries pod kątem nazwy SHT1x, a jeśli jest gdzieś indziej, na przykład folder pobierania, przenieś go do folderu bibliotek Arduino i zmień nazwę, jeśli to konieczne.

Jeśli twój kod się kompiluje, ale nie można go przesłać na twoją tablicę, dokładnie sprawdź ustawienia tablicy, upewnij się, że twoja tablica jest podłączona i wybierz odpowiedni port z menu Narzędzia.

Jeśli Twój kod jest przesyłany, ale wejście monitora szeregowego jest nierozpoznawalne, sprawdź dokładnie, czy prędkość transmisji jest zgodna z określoną w szkicu (w tym przypadku 38400).

Jeśli wejście monitora szeregowego nie wydaje się prawidłowe, dokładnie sprawdź okablowanie względem schematu obwodu. Czy twój rezystor podciągający 10K znajduje się między pinem danych a 3,3 V? Czy dane i zegar są podłączone do właściwych pinów? Czy zasilanie i uziemienie są podłączone tak, jak powinny być w całym obwodzie? Nie kontynuuj, dopóki ten prosty szkic nie zadziała!

Następny krok jest specyficzny dla ESP8266 i konfiguruje opcjonalną część raportowania czujnika bezprzewodowego przykładowego projektu. Jeśli używasz standardowego (niebezprzewodowego) mikrokontrolera zgodnego z Arduino, kontynuuj opracowywanie ostatniego szkicu Arduino i przejdź do przygotowania płytki ładowania słonecznego.

Krok 3: Konfiguracja oprogramowania

Konfiguracja oprogramowania
Konfiguracja oprogramowania

Aby skompilować kod dla tego projektu za pomocą ESP8266, musisz zainstalować kilka dodatkowych bibliotek Arduino (dostępnych za pośrednictwem menedżera bibliotek):

  • Adafruit IO Arduino
  • Adafruit MQTT
  • ArduinoHttpClient

Pobierz kod dołączony do tego kroku, a następnie rozpakuj plik i otwórz Solar_Powered_Soil_Moisture_Monitor_Tutorial w oprogramowaniu Arduino.

#włączać

#include #include #include #include // Określ połączenia danych i zegara oraz utwórz instancję obiektu SHT1x #define dataPin 12 // NodeMCU pin D6 #define clockPin 14 // NodeMCU pin D5 SHT1x sht1x(dataPin, clockPin); // skonfiguruj kanał AdafruitIO_Feed *humidity = io.feed("wilgotność"); AdafruitIO_Feed *temperatura = io.feed("temperatura"); const int sleepTime = 15; // 15 minut

pusta konfiguracja()

{ Numer seryjny.początek(115200); // Otwórz połączenie szeregowe, aby zgłosić wartości do hosta Serial.println("Uruchamianie"); // połącz się z io.adafruit.com Serial.print("Łączenie z IO Adafruit"); io.connect(); // czekaj na połączenie while(io.status() < AIO_CONNECTED) { Serial.print("."); opóźnienie (500); } // jesteśmy połączeni Serial.println(); Serial.println(io.statusText()); }

pusta pętla()

{ io.uruchom(); // io.run(); utrzymuje połączenie klienta i jest wymagany dla wszystkich szkiców. pływak temp_c; pływak temp_f; unosić wilgoć; temp_c = sht1x.odczytTemperaturaC(); // Odczytaj wartości z czujnika temp_f = sht1x.readTemperatureF(); wilgotność = sht1x.odczytWilgotność(); Serial.print("Temperatura: "); // Wydrukuj wartości na porcie szeregowym Serial.print(temp_c, DEC); Serial.print("C / "); Serial.print(temp_f, DEC); Serial.print("F. Wilgotność: "); Serial.print(wilgoć); Serial.println("%"); wilgotność -> oszczędzaj (wilgoć); temperatura->zapisz(temp_f); Serial.println("ESP8266 śpi…"); ESP.deepSleep(czas snu * 1000000 * 60); // Spać }

Ten kod jest mieszanką kodu czujnika z wcześniejszej części tego samouczka i podstawowym przykładem z usługi danych w chmurze Adafruit IO. Program przechodzi w tryb niskiego poboru mocy i przez większość czasu śpi, ale budzi się co 15 minut, aby odczytać temperaturę i wilgotność gleby i zgłasza swoje dane do Adafruit IO. Przejdź do zakładki config.h i wpisz nazwę użytkownika i klucz Adafruit IO, a także nazwę i hasło lokalnej sieci Wi-Fi, a następnie prześlij kod do mikrokontrolera ESP8266.

Obraz
Obraz

Będziesz musiał trochę się przygotować na io.adafruit.com. Po utworzeniu kanałów dotyczących temperatury i wilgotności możesz utworzyć pulpit nawigacyjny dla swojego monitora z wykresem wartości czujników i danych obu przychodzących kanałów. Jeśli potrzebujesz odświeżenia na temat rozpoczęcia pracy z Adafruit IO, zapoznaj się z tą lekcją w mojej klasie Internet of Things.

Krok 4: Przygotuj tablicę do ładowania słonecznego

Przygotuj tablicę do ładowania słonecznego
Przygotuj tablicę do ładowania słonecznego

Przygotuj płytkę do ładowania słonecznego, przylutowując jej kondensator i kilka przewodów do podkładek wyjściowych obciążenia. Dostosowuję moją do szybszego ładowania za pomocą opcjonalnego dodatkowego rezystora (2,2K lutowane przez PROG) i dzięki czemu bezpieczniej jest pozostawić bez nadzoru, zastępując rezystor do montażu powierzchniowego termistorem 10K podłączonym do samej baterii. Ograniczy to ładowanie do bezpiecznego zakresu temperatur. Omówiłem te modyfikacje bardziej szczegółowo w moim projekcie Solar USB Charger.

Krok 5: Zbuduj obwód mikrokontrolera

Zbuduj obwód mikrokontrolera
Zbuduj obwód mikrokontrolera
Obraz
Obraz
Obraz
Obraz

Przylutuj płytkę mikrokontrolera i przełącznik zasilania do płyty perma-proto.

Obraz
Obraz

Podłącz wyjście zasilania ładowarki słonecznej do wejścia przełącznika, które powinno mieć wartość znamionową co najmniej 1 ampera.

Obraz
Obraz

Utwórz i przylutuj połączenia przewodów płytki stykowej opisane na powyższym schemacie obwodu (lub zgodnie ze specyfikacjami wersji osobistej), w tym rezystor podciągający 10K na linii danych czujnika.

Styki ładowania ładowarki słonecznej zapewniają zasilanie akumulatora 3,7 V, gdy nie ma energii słonecznej, ale będą zasilane bezpośrednio z panelu słonecznego, jeśli jest podłączony i słonecznie. Dlatego mikrokontroler musi być w stanie tolerować różne napięcia, od 3,7 V do 6 V DC. Dla tych wymagających 5 V, PowerBoost (500 lub 1000, w zależności od wymaganego prądu) może być użyty do modulowania napięcia obciążenia do 5 V (jak pokazano w projekcie Solar USB Charger). Oto kilka popularnych płyt i ich zakresy napięcia wejściowego:

  • NodeMCU ESP8266 (użyty tutaj): 5V USB lub 3,7V-10V Vin
  • Arduino Uno: 5V USB lub 7-12V Vin
  • Adafruit Huzzah ESP8266 Breakout: 5V USB lub 3,4-6V VBat

Aby osiągnąć jak najdłuższy czas pracy baterii, należy poświęcić trochę czasu na rozważenie i zoptymalizowanie całkowitego prądu pobieranego przez użytkownika. ESP8266 ma funkcję głębokiego uśpienia, której użyliśmy w szkicu Arduino, aby radykalnie zmniejszyć jego zużycie energii. Budzi się, aby odczytać czujnik i pobiera więcej prądu, gdy łączy się z siecią, aby zgłosić wartość czujnika, a następnie wraca do stanu uśpienia na określony czas. Jeśli twój mikrokontroler pobiera dużo energii i nie można go łatwo uśpić, rozważ przeniesienie projektu na kompatybilną płytę, która pobiera mniej energii. Zadaj pytanie w komentarzach poniżej, jeśli potrzebujesz pomocy w określeniu, która tablica może być odpowiednia dla Twojego projektu.

Krok 6: Zainstaluj dławiki kablowe

Obraz
Obraz

Aby zapewnić odporne na warunki atmosferyczne punkty wejścia dla kabla panelu słonecznego i kabla czujnika, zainstalujemy dwa dławiki kablowe z boku obudowy odpornej na warunki atmosferyczne.

Obraz
Obraz
Obraz
Obraz

Przetestuj dopasowanie komponentów, aby określić idealne rozmieszczenie, a następnie zaznacz i wywierć otwory w wodoodpornej obudowie za pomocą wiertła stopniowego. Zainstaluj dwa dławiki kablowe.

Obraz
Obraz

Krok 7: Kompletny montaż obwodu

Kompletny zespół obwodu
Kompletny zespół obwodu

Włóż stronę portu wodoodpornego kabla zasilającego do jednego i przylutuj go do wejścia DC ładowarki słonecznej (czerwony do + i czarny do -).

Obraz
Obraz

Włóż czujnik gruntu przez drugą dławnicę i podłącz go do perma-proto zgodnie ze schematem obwodu.

Obraz
Obraz

Przymocuj sondę termistorową do akumulatora. Ograniczy to ładowanie do bezpiecznego zakresu temperatur, gdy projekt zostanie pozostawiony bez nadzoru na zewnątrz.

Obraz
Obraz

Ładowanie przy zbyt wysokiej lub zbyt niskiej temperaturze może uszkodzić akumulator lub wywołać pożar. Ekspozycja na ekstremalne temperatury może spowodować uszkodzenie i skrócić żywotność baterii, więc włóż ją do środka, jeśli jest poniżej zera lub powyżej 45℃/113F.

Obraz
Obraz

Dokręć dławiki kablowe, aby zapewnić odporną na warunki atmosferyczne uszczelkę wokół odpowiednich kabli.

Krok 8: Przygotuj panel słoneczny

Przygotuj panel słoneczny
Przygotuj panel słoneczny

Postępuj zgodnie z instrukcjami, aby połączyć kabel do panelu słonecznego ze stroną wtyczki wodoodpornego zestawu kabli zasilających DC.

Krok 9: Przetestuj to

Sprawdź to
Sprawdź to

Podłącz baterię i włącz obwód, naciskając wyłącznik zasilania.

Obraz
Obraz

Przetestuj go i upewnij się, że przesyła raport do Internetu przed zamknięciem obudowy i zainstalowaniem czujnika w ogrodzie ziołowym, cennej roślinie doniczkowej lub innej glebie w zasięgu sygnału sieci Wi-Fi.

Obraz
Obraz

Gdy dane z czujnika są rejestrowane online, łatwo jest skonfigurować przepis na alerty e-mailowe lub SMS-owe na stronie bramki API If This Then That. Skonfigurowałem mój, aby wysyłał mi e-mail, jeśli poziom wilgotności gleby spadnie poniżej 50.

Aby przetestować to bez czekania, aż moja roślina wyschnie, ręcznie wprowadziłem punkt danych do mojej paszy wilgotnościowej na Adafruit IO, który spadł poniżej progu. Kilka chwil później nadchodzi e-mail! Jeśli poziom gleby spadnie poniżej mojego określonego poziomu, dostanę e-maila za każdym razem, gdy kanał zostanie zaktualizowany, dopóki nie podleję gleby. Aby zachować zdrowy rozsądek, zaktualizowałem swój kod, aby pobierać próbki gleby znacznie rzadziej niż co 15 minut.

Krok 10: Użyj go na zewnątrz

Użyj go na zewnątrz!
Użyj go na zewnątrz!
Użyj go na zewnątrz!
Użyj go na zewnątrz!

Jest to fajny projekt, który można dostosować do potrzeb związanych z nawodnieniem Twojej rośliny, i łatwo wymienić lub dodać czujniki lub zintegrować funkcje energii słonecznej z innymi projektami Arduino.

Dziękujemy za śledzenie! Chciałbym usłyszeć, co myślisz; proszę pisać w komentarzach. Ten projekt jest częścią mojej bezpłatnej Klasy Solar, gdzie można znaleźć proste projekty podwórkowe i więcej lekcji na temat pracy z panelami słonecznymi. Sprawdź i zapisz się!

Jeśli podoba Ci się ten projekt, możesz zainteresować się niektórymi z moich innych:

  • bezpłatna klasa Internetu Rzeczy
  • Licznik subskrybentów YouTube z ESP8266
  • Wyświetlacz śledzenia statystyk społecznościowych z ESP8266
  • Wyświetlacz pogodowy WiFi z ESP8266
  • Internetowe Walentynki

Aby być na bieżąco z tym, nad czym pracuję, obserwuj mnie na YouTube, Instagramie, Twitterze, Pintereście i Snapchacie.

Zalecana: