Spisu treści:

Bezprzewodowy system ogrodowy: 7 kroków
Bezprzewodowy system ogrodowy: 7 kroków

Wideo: Bezprzewodowy system ogrodowy: 7 kroków

Wideo: Bezprzewodowy system ogrodowy: 7 kroków
Wideo: Jak zamontować bezprzewodowy system sterowania podłogówką FloorControl krok po kroku? 2024, Listopad
Anonim
Bezprzewodowy system ogrodowy
Bezprzewodowy system ogrodowy

Ten projekt jest oparty na Arduino i wykorzystuje "moduły", aby pomóc Ci podlewać rośliny i rejestrować temperaturę, glebę i deszcz.

System działa bezprzewodowo przez 2, 4 GHz i wykorzystuje moduły NRF24L01 do wysyłania i odbierania danych. Pozwólcie, że wyjaśnię trochę, jak to działa, PS! Przepraszam, jeśli angielski nie jest w 100% poprawny, pochodzę ze Szwecji.

Używam tego systemu do kontrolowania moich roślin, grzechy, że mam różne rośliny, musiałem je rejestrować w inny sposób. Dlatego buduję system dzienników oparty na strefach.

Czujniki gleby, które odczytują wilgotność i temperaturę gleby (działają na baterii), sprawdzają co godzinę i przekazują dane do maszyny podstawowej, która ma połączenie Wi-Fi. Dane są przesyłane na serwer w moim domu i logują się do strony internetowej.

Jeśli gleba potrzebuje wody, uruchomi odpowiednią pompę w zależności od tego, jaki czujnik gleby sprawdził. Ale jeśli pada deszcz, nie będzie podlewać. A jeśli będzie naprawdę gorąco, doda trochę wody.

Załóżmy, że masz jedną ziemię ziemniaczaną, jedną dla tytoniu i jedną dla pomidora, a następnie możesz mieć 3 strefy z 3 różnymi czujnikami i 3 pompami.

Istnieją również czujniki pir, które sprawdzają ruchy, a jeśli zostaną aktywowane na stronie, głośna syrena zacznie straszyć zwierzę lub osobę, która zbliża się do moich roślin.

Mam nadzieję, że trochę rozumiesz. Teraz zacznijmy tworzyć czujniki.

Moja strona GitHub, z której pobierasz wszystko:

Krok 1: Czujniki gleby

Czujniki gleby
Czujniki gleby
Czujniki gleby
Czujniki gleby
Czujniki gleby
Czujniki gleby
Czujniki gleby
Czujniki gleby

Każdy czujnik ma unikalny numer, który jest dodawany do strony internetowej. Tak więc, gdy czujnik gleby przesyła dane z tego czujnika gleby, zostaną dodane do właściwej strefy. Jeśli czujnik nie jest zarejestrowany, żadne dane nie zostaną przesłane.

Do tej kompilacji potrzebujesz:

  • 1x układ Atmega328P-PU
  • 1x moduł nRF24L01
  • 1x100 uf kondensator
  • 1x tranzystor NPN BC547
  • Kondensatory 2x 22 pF
  • 1x kryształ 16.000 MHz
  • 1x czujnik wilgotności gleby;
  • 1x czujnik temperatury DS18B20
  • 1x RGB Led (wspólna anoda jest używana przeze mnie)
  • Rezystory 3x 270 omów
  • 1x opornik 4, 7 kΩ
  • Bateria (używam baterii Li-Po 3,7 V)
  • A jeśli używany jest li-po, moduł ładowarki do akumulatora.

Aby czujniki działały przez długi czas, nie używaj żadnej gotowej płytki Arduino, ponieważ szybko rozładują baterię. Zamiast tego użyj układu Atmega328P.

Podłącz wszystko tak, jak pokazuje mój arkusz elektryczny. (Zobacz zdjęcie lub plik PDF) Zaleca się również dodanie wyłącznika zasilania, dzięki czemu można odciąć zasilanie podczas ładowania.

Wgrywając kod nie zapomnij zdefiniować sensora, aby nadał mu unikalny numer ID, kod jest dostępny na mojej stronie GitHub.

Aby utrzymać czujniki gleby przy życiu przez długi czas, używam tranzystora NPN do ich zasilania, dopiero gdy rozpocznie się odczyt. Czyli nie są one cały czas aktywowane, Każdy czujnik ma numer ID od 45XX do 5000 (można to zmienić) więc każdy czujnik musi mieć unikalne numery, wystarczy zdefiniować w kodzie.

Czujniki pójdą w stan uśpienia, aby oszczędzać baterię.

Krok 2: Czujnik zwierząt

Czujnik zwierząt
Czujnik zwierząt
Czujnik zwierząt
Czujnik zwierząt
Czujnik zwierząt
Czujnik zwierząt
Czujnik zwierząt
Czujnik zwierząt

Czujnik zwierząt to prosty czujnik pir. Wyczuwa ciepło zwierząt lub ludzi. Jeśli czujnik wykrywa ruch. Wyślą do stacji bazowej.

Ale nie pojawi się żaden alarm, aby to zrobić, na stronie musisz go aktywować, lub jeśli masz ustawiony timer, włączy się automatycznie o tym czasie.

Jeśli baza otrzyma sygnał ruchu z czujnika Animal, przekaże go do czujnika syreny i (mam nadzieję) odstraszy zwierzę. Moja syrena ma 119 dB.

Czujnik pir działa na baterii i umieściłem go w starej obudowie czujnika pir ze starego alarmu. Kabel wychodzący z czujnika zwierząt służy tylko do ładowania akumulatora.

Do tego czujnika potrzebujesz:

  • Układ ATMEGA328P-PU
  • 1x16 000 MHz kryształ
  • Kondensator 2 x 22 pF
  • 1 x moduł czujnika Pir
  • 1x100 uF kondensator
  • 1 x moduł NRF24L01
  • 1 x Led (nie używam tutaj żadnej diody RGB)
  • Rezystor 1x220 omów;
  • Jeśli będziesz działał na baterii, potrzebujesz tego (ja używam Li-Po)
  • Moduł ładowarki baterii, jeśli masz baterię doładowującą.
  • Jakiś wyłącznik zasilania.

Połącz wszystko tak, jak widzisz w arkuszu elektrycznym. Sprawdź, czy możesz zasilać czujnik pir z baterii (niektóre wymagają 5 V do działania).

Pobierz kod z mojego GitHuba i zdefiniuj czujnik, którego zamierzasz użyć (np. SENS1, SENS2 itp.), aby otrzymały unikalne numery.

Chip ATMEGA obudzi się dopiero po zarejestrowaniu ruchu. Ponieważ moduł czujnika pir ma wbudowany zegar opóźnienia, w kodzie nie ma nic na to, więc dostosuj garnek na czujniku pir na opóźnienie, w którym się obudzi.

To wszystko dla czujnika zwierząt, ruszamy dalej.

Krok 3: Sterownik pompy wodnej

Sterownik pompy wodnej
Sterownik pompy wodnej
Sterownik pompy wodnej
Sterownik pompy wodnej
Sterownik pompy wodnej
Sterownik pompy wodnej
Sterownik pompy wodnej
Sterownik pompy wodnej

Sterownik pompy wodnej służy do uruchamiania pompy lub zaworu wodnego do podlewania pól. W tym systemie nie potrzebujesz baterii, potrzebujesz zasilania do uruchomienia pompy. Do uruchomienia Arduino używam modułu AC 230 do DC 5 V Nano. Również mam do typów pomp, jeden, który wykorzystuje zawór wody, który działa na 12 V, więc do tego mam moduł AC 230 do DC 12 V do płyty przekaźnika.

Drugi to 230 AC do przekaźnika, dzięki czemu mogę zasilać pompę 230 V AC.

Układ jest dość prosty, każdy sterownik pompy ma unikalne numery identyfikacyjne, więc powiedzmy, że pole ziemniaków jest suche i czujnik jest ustawiony na auto wody, to do tego czujnika dołączona jest moja pompa, która jest dla pola ziemniaków, więc czujnik gleby informuje system podstawowy, że nawadnianie powinno się rozpocząć, więc system podstawowy wysyła sygnał do tej pompy, aby się uruchomiła.

Możesz ustawić jak długo ma działać na stronie (np. 5 minut), ponieważ czujniki sprawdzają tylko co godzinę. Również po zatrzymaniu pompy zapisze on czas w systemie, więc system automatyczny nie uruchomi pompy zbyt szybko. (Możliwe również do ustawienia na stronie internetowej).

Możesz również za pośrednictwem strony internetowej wyłączyć nawadnianie w nocy/dzień, ustawiając specjalne godziny. A także skonfiguruj zegary dla każdej pompy, aby rozpocząć nawadnianie. A jeśli pada deszcz, nie będą podlewać.

Nadzieję, że zrozumiesz:)

Do tego projektu potrzebujesz:

  • 1 x Arduino Nano
  • 1 x moduł NRF24L01
  • 1x100 uF kondensator
  • 1 RGB Led (wspólna anoda jest używana przeze mnie)
  • Rezystory 3 x 270 omów
  • 1 x tablica przekaźnikowa

Podłącz wszystko jak arkusz elektryczny (patrz plik pdf lub obraz) Pobierz kod z GitHub i nie zapomnij zdefiniować numeru czujnika.

A teraz masz sterownik pompy, system może obsługiwać więcej niż jeden.

Krok 4: Czujnik deszczu

Czujnik deszczu
Czujnik deszczu
Czujnik deszczu
Czujnik deszczu
Czujnik deszczu
Czujnik deszczu
Czujnik deszczu
Czujnik deszczu

Czujnik deszczu służy do wykrywania deszczu. Nie potrzebujesz więcej niż jednego. Ale można dodać więcej. Ten czujnik deszczu jest zasilany bateryjnie i co 30 minut sprawdza, czy nie ma deszczu. Mają również unikalny numer do samodzielnej identyfikacji.

Czujnik deszczu wykorzystuje piny analogowe i cyfrowe. Pin cyfrowy służy do sprawdzania czy pada, (cyfrowy tylko wyświetla tak lub nie) i trzeba ustawić garnek na module czujnika deszczu na włączony gdy jest ok aby ostrzegał o "deszczu" (poziom wody na czujniku który wskazuje deszcz.)

Pin analogowy służy do informowania w procentach stopnia zamoczenia czujnika.

Jeśli cyfrowy pin wykryje, że pada deszcz, czujnik prześle go do systemu bazowego. A system bazowy nie podleje roślin tak długo, jak będzie „padało”. Czujnik wysyła również informację o tym, jak jest mokra i jaki jest stan baterii.

Zasilamy czujnik deszczu tylko wtedy, gdy nadszedł czas na odczyt przez tranzystor, który umożliwia pin cyfrowy.

Do tego czujnika potrzebujesz:

  • Układ ATMEGA328P-PU
  • 1x 16 000 MHz kryształ
  • Kondensator 2x 22 pF
  • 1x moduł czujnika deszczu
  • 1x kondensator 100 uF
  • 1x moduł NRF24L01
  • 1x RGB Led (użyłem wspólnej anody, to VCC zamiast GND)
  • Rezystory 3x 270 Ohm
  • 1x tranzystor NPN BC547
  • 1x Bateria (ja używam Li-Po)
  • 1x moduł ładowarki Li-Po (jeśli jest używany akumulator Li-Po)

Podłącz wszystko tak, jak widzisz na arkuszu elektrycznym (w pdf lub na obrazku). Następnie prześlij kod do układu ATMEGA, jak można znaleźć na mojej stronie GitHub pod Czujnik deszczu. Nie zapomnij zdefiniować czujnika, aby uzyskać właściwy numer identyfikacyjny.

A teraz będziesz mieć czujnik deszczu, który uruchamia się co 30 minut. Możesz zmienić czas na tym, jeśli nie chcesz mniej lub więcej.

W funkcji counterHandler() możesz ustawić czas budzenia chipa. Obliczasz w ten sposób: Chipy budzą się co 8 sekund i za każdym razem zwiększają wartość. Tak więc przez 30 minut otrzymasz 225 razy, zanim powinny wykonać działania. Więc jest 1800 sekund na pół godziny. Więc podziel to przez 8 (1800 / 8) otrzymasz 225. To znaczy, że nie sprawdzi czujnika dopóki nie uruchomi się 225 razy, a to będzie około 30 minut. To samo robisz również na czujniku gleby.

Krok 5: syrena zwierząt

Syrena zwierząt
Syrena zwierząt
Syrena zwierząt
Syrena zwierząt
Syrena zwierząt
Syrena zwierząt
Syrena zwierząt
Syrena zwierząt

Syrena dla zwierząt jest prosta, gdy czujnik zwierzęcia wykryje ruch, syrena zostanie aktywowana. Używam prawdziwej syreny, więc mogę nawet straszyć nią ludzi. Ale możesz też użyć syren, które słyszą tylko zwierzęta.

W tym projekcie używam Arduino nano i zasilam go 12v. Syrena ma również napięcie 12 V, więc zamiast przekaźnika użyję tranzystora 2N2222A, aby włączyć syrenę. Jeśli używasz przekaźnika, gdy masz to samo uziemienie, możesz uszkodzić Arduino. Dlatego zamiast tego używam tranzystora, aby włączyć syrenę.

Ale jeśli twoja syrena i Arduino nie używają tego samego uziemienia, możesz zamiast tego użyć przekaźnika. Pomiń tranzystor i rezystor 2,2K i zamiast tego użyj płytki przekaźnika. A także zmień kod Arduino po aktywacji, zmień z WYSOKIEGO na NISKI, a po nieaktywnym zmień z NISKIEGO na WYSOKI i odczyt cyfrowy dla pinu 10, grzech, że przekaźnik używa NISKIEGO do aktywacji, a tranzystor używa WYSOKIEGO, więc musisz to przełączyć.

Do tej kompilacji potrzebujesz:

  • 1x Arduino nano
  • 1x Rezystor 2.2 K (pomiń, jeśli używasz przekaźnika)
  • 1x tranzystor 2N2222
  • 1x syrena
  • Rezystor 3x 270 Ohm
  • 1x RGB Led (używam wspólnej anody, VCC zamiast GND)
  • 1X moduł NRF24L01
  • 1x kondensator 100 uF

Podłącz wszystko tak, jak widzisz na arkuszu elektrycznym w PDF lub na obrazku. Prześlij kod do Arduino, który znajdziesz na mojej stronie GitHub pod Animal Siren. Nie zapomnij zdefiniować czujnika dla prawidłowego numeru ID.

A teraz masz działającą syrenę.

Krok 6: Główny system

Główny system
Główny system
Główny system
Główny system
Główny system
Główny system

Główny system jest najważniejszy ze wszystkich modułów. Bez niego nie można korzystać z tego systemu. Główny system jest podłączony do Internetu za pomocą modułu ESP-01, a do jego połączenia używamy pinów Arduino Megas Serial1. RX na Mega do TX na ESP, ale musimy przejść przez dwa rezystory, aby obniżyć napięcie do 3,3. I TX na Mega do RX na ESP.

Skonfiguruj moduł ESP

Aby korzystać z ESP, musisz najpierw ustawić na nim szybkość transmisji na 9600, to jest to, czego użyłem w tym projekcie i stwierdziłem, że ESP działa najlepiej. Po wyjęciu z pudełka ustawiono szybkość transmisji 115200, możesz spróbować, ale moja nie była tak stabilna. Aby to zrobić, potrzebujesz Arduino (Mega działa dobrze) i musisz podłączyć TX ESP (przez rezystory, jak widać na arkuszu) do Serial TX (nie Serial1, jeśli używasz Mega) i RX na ESP do Arduino Serial RX.

Prześlij migający szkic (lub dowolny szkic, który nie korzysta z portu szeregowego) i otwórz monitor szeregowy i ustaw szybkość transmisji na 115200 oraz NR i CR na liniach

W wierszu poleceń wpisz AT i naciśnij enter. Powinieneś otrzymać odpowiedź, która mówi OK, więc teraz wiemy, że ESP działa. (Jeśli nie, występuje problem z połączeniem lub zły moduł ESP-01)

Teraz w linii poleceń wpisz AT+UART_DEF=9600, 8, 1, 0, 0 i naciśnij enter.

Odpowie OK, co oznacza, że ustawiliśmy prędkość transmisji na 9600. Zrestartuj ESP za pomocą następującego polecenia: AT+RST i naciśnij enter. Zmień szybkość transmisji w monitorze szeregowym na 9600 i wprowadź AT i naciśnij enter. Jeśli wrócisz OK, ESP jest skonfigurowany na 9600 i możesz go użyć do projektu.

Moduł karty SD

Chcę, aby zmiana ustawień WIFI dla systemu była łatwa, w przypadku zmiany nowego hasła lub nazwy Wi-Fi. Dlatego potrzebujemy modułu karty SD. Wewnątrz karty SD utwórz plik tekstowy o nazwie config.txt i do odczytu używamy JSON, więc potrzebujemy formatu JSON. Tak więc plik tekstowy powinien mieć następujący tekst:

{ "ssid": "TWÓJWIFISID", "losen": "TWOJE HASŁO WI-FI"

}

Zmień tekst z DUŻYMI literami, aby dopasować go do sieci Wi-Fi.

Sins używamy NRF24L01, który używa SPI, a czytnik kart SD również używa SPI, musimy użyć biblioteki SDFat, abyśmy mogli użyć SoftwareSPI (możemy dodać czytnik kart SD na dowolnych pinach)

Czujnik DHT

System ten jest umieszczony na zewnątrz i posiada czujnik DHT, dzięki czemu możemy sprawdzić wilgotność i temperaturę powietrza. Służy do dodatkowego podlewania w upalne dni.

Do tej kompilacji potrzebujesz:

  • 1x Arduino Mega
  • 1x moduł NRF24L01
  • 1x moduł ESP-01
  • 1x moduł karty micro sd SPI
  • 1x czujnik DHT-22
  • 1x RGB Led (użyłem wspólnej anody, VCC zamiast GND)
  • Rezystory 3x 270 Ohm
  • Rezystor 1x22 K Ohm
  • Rezystor 2x 10 K Ohm

Należy pamiętać, że jeśli moduł ESP-01 nie jest stabilny, spróbuj zasilić go z zewnętrznego źródła zasilania 3.3V.

Połącz wszystko tak, jak widzisz na arkuszu elektrycznym w pliku PDF lub na obrazie.

Prześlij kod do swojego Arduino Mega i nie zapomnij sprawdzić całego kodu pod kątem komentarzy, ponieważ musisz ustawić hosta na serwerze w wielu miejscach (nie jest to najlepsze rozwiązanie, jakie znam).

Teraz Twój system Base jest gotowy do użycia. Nie musisz zmieniać zmiennych w kodzie dla grzechów wilgotności gleby, możesz to zrobić prosto ze strony internetowej.

Krok 7: System internetowy

System internetowy
System internetowy
System internetowy
System internetowy
System internetowy
System internetowy
System internetowy
System internetowy

Do korzystania z systemu potrzebny jest również serwer WWW. Używam raspberry pi z Apache, PHP, Mysql, Gettext. System internetowy jest wielojęzyczny, więc możesz łatwo zrobić to w swoim języku. Jest dostarczany ze szwedzkim i angielskim (angielski może mieć niepoprawny angielski, moje tłumaczenie nie jest w 100%.) Więc musisz mieć zainstalowany Gettext na swoim serwerze, a także lokalizacje.

Pokazuję wam kilka zrzutów ekranu powyżej z systemu.

Jest wyposażony w prosty system logowania, a główny login to: admin jako użytkownik i woda jako hasło.

Aby z niego skorzystać, musisz skonfigurować trzy zadania cron (znajdziesz je w folderze cronjob)

Plik timer.php, który musisz uruchamiać co sekundę. To zawiera całą automatyzację systemu otworów. Nazwa pliku temperatura.php jest używana, aby powiedzieć systemowi, aby odczytał temperaturę powietrza i zapisał ją. Musisz więc skonfigurować zadanie cron, jak często będziesz je uruchamiać. Mam go co 5 minut. Wtedy plik o nazwie dagstatistik.php powinien uruchomić się tylko raz przed północą (np. 23:30, 23:30). Pobiera wartości raportowane z czujników w ciągu dnia i zapisuje je dla statyki tygodniowej i miesięcznej.

Pamiętaj, że ten system przechowuje temperaturę w stopniach Celsjusza, ale możesz zmienić na Fahrenheita.

W pliku db.php konfigurujesz połączenie z bazą danych mysql dla systemu.

Najpierw dodaj czujniki do systemu. A następnie utwórz strefy i dodaj czujniki do stref.

Jeśli masz pytanie lub znajdziesz błędy w systemie, zgłoś je na stronie GitHub. Możesz korzystać z systemu internetowego i nie możesz go sprzedawać.

Jeśli masz problemy z ustawieniami lokalnymi dla gettext, pamiętaj, że jeśli używasz raspberry jako serwera, często noszą one nazwę en_US. UTF-8, więc musisz dokonać tych zmian w pliku i18n_setup.php oraz w folderze locale. W przeciwnym razie utkniesz w języku szwedzkim.

Pobierasz go na stronie GitHub.

Zalecana: