Układ i działanie
Na rysunku 1 pokazano schemat blokowy. Oprócz układu IoT, układ składa się z nadajnika i odbiornika, których schematy przedstawiono odpowiednio na rysunku 2 i rysunku 3.
Nadajnik
Nadajnik zbudowany jest z modułu nadajnika RF 433 MHz (TX1), enkodera HT12E (IC1) oraz tranzystora BC547 (T1). Jest on instalowany na polu wraz z czujnikiem wilgotności gleby (SS1). Sygnał z czujnika jest przesyłany przez TX1 do odbiornika, który jest zainstalowany w pobliżu - w odległości kilku metrów od nadajnika. Nadajnik pracuje z zasilaniem 5 V DC.
Poziom progowy wilgotności gleby można ustawić za pomocą wbudowanego w moduł czujnika glebowego potencjometru. Gdy wilgotność gleby na polu spadnie poniżej poziomu progowego, czujnik wytwarza sygnał aktywny niski (0 V), który trafia do bazy tranzystora odwracającego T1. Enkoder IC1 odbiera sygnał aktywny wysoki na pin 10 (AD8) z kolektora T1 i generuje dane szeregowe na pin 17 (DOUT), przy czym jego piny adresowe A0 do A7 są połączone z masą.
Zmodulowany sygnał ASK RF z DOUT jest transmitowany przez moduł TX1 na częstotliwości 433 MHz. J1 jest używany do opcjonalnego wejścia czujnika dla opcjonalnego silnika w obwodzie odbiornika.
Odbiornik
Odbiornik składa się z modułu odbiornika RF 433 MHz (RX1), dekodera HT12D (IC2), dwóch tranzystorów BC317 (T2 i T3), przekaźnika 5 V z pojedynczą zmianą (RL1) oraz NodeMCU (Board1). Odbiornik ten działa również z zasilaniem 5 V DC.
Sygnał z nadajnika jest odbierany przez moduł odbiornika 433 MHz RX1. Dekoder HT12D, którego piny adresowe A0 do A7 są połączone z masą, odbiera dane szeregowe na swoim pinie 14 z RX1. Pin danych D8 układu IC2 napędza przekaźnik poprzez tranzystory T2 i T3.
Dioda 1N4007 (D2) podłączona w trybie odwrotnego biasu jest używana do ochrony obwodu przed skokami napięcia podczas włączania/wyłączania pompy wodnej. LED3 służy do sygnalizacji włączenia zasilania, LED4 do sygnalizacji sygnału RF, a LED1 do sygnalizacji stanu pracy silnika pompy wodnej. W przypadku zastosowania opcjonalnego czujnika na J1 w nadajniku, LED2 sygnalizuje stan opcjonalnego silnika.
System IoT
Sercem systemu IoT jest moduł Wi-Fi NodeMCU ESP32/8266. Pin danych D8 układu IC2 jest połączony z pinem D0 modułu NodeMCU (Board1), aby przekazywać stan włączenia/wyłączenia silnika na zdalny komputer lub smartfon poprzez chmurę. Platforma IoT firmy Adafruit jest używana do monitorowania stanu pompy wodnej online.
Wyłączanie pompy
Gdy gleba jest odpowiednio wilgotna, na wyjściu SS1 pin D0 jest niski, co powoduje, że tranzystor T1 przestaje przewodzić. Napięcie na kolektorze T1 staje się wysokie (5 V), które jest podłączone do pinu AD8 układu IC1. Nadajnik TX1 nadaje ten sygnał, który jest odbierany przez odbiornik RX1, dekodowany i przekazywany do tranzystora T2 przez rezystor R10. Tranzystor T2 przewodzi, przez co jego kolektor jest w stanie niskim, co powoduje wyłączenie tranzystora T3. Powoduje to odłączenie przekaźnika RL1 i wyłączenie podłączonej do niego pompy.
Włączenie pompy
Gdy gleba jest sucha, na wyjściu SS1 na styku D0 jest stan wysoki, co powoduje przewodzenie tranzystora T1. Napięcie kolektora T1 staje się niskie (0 V), jest podłączone do styku AD8 układu IC1.
Nadajnik TX1 nadaje ten sygnał, który jest odbierany przez odbiornik RX1, dekodowany i przekazywany do tranzystora T2. Dzięki temu tranzystor T3 przewodzi i załącza przekaźnik RL1, co powoduje włączenie pompy.
Platforma IoT firmy Adafruit
NodeMCU Wi-Fi jest podłączony do Adafruit.io open source cloud service, aby dostarczać dane w czasie rzeczywistym online. Kroki do zorganizowania panelu na platformie Adafruit.io IoT to:
- Otwórz stronę io.adafruit.com. Utwórz konto z unikalną nazwą użytkownika. Zapisz tę nazwę użytkownika, ponieważ będzie ona później używana w kodzie Arduino (program_soil.ino).
- Wygeneruj klucz i zanotuj go. Jest to długi, unikalny identyfikator, którego używasz do uwierzytelniania każdego urządzenia korzystającego z Twojego konta. Otrzymujesz jeden klucz na konto, ale w każdej chwili możesz go cofnąć i zregenerować.
- Po utworzeniu konta, musisz zarządzać swoimi kanałami do publikowania na pulpicie nawigacyjnym. (Feeds to w zasadzie zestaw danych, które możesz odczytywać lub zapisywać, jak określono w programie, zgodnie z Twoją aplikacją). W tym projekcie użyliśmy Relay1 na dashboardzie, jak pokazano na rysunkach 6 i 7.
Więcej szczegółów dotyczących konfiguracji z Adafruit IoT i NodeMCU jest podane w pliku dokumentu 'Interfacing with Adafruit and NodeMCU' w folderze z kodem źródłowym.
Oprogramowanie
Arduino IDE jest używane do programowania płytki NodeMCU (Board1). Kod Arduino 'program_soil.ino' należy wgrać na płytkę NodeMCU przed podłączeniem jej do obwodu odbiornika.
Podłącz NodeMCU do komputera PC/laptopa i wybierz odpowiedni port COM oraz nazwę płytki z menu Narzędzia w Arduino IDE. Nazwa płytki, której użyto w tym projekcie to "NodeMCU 1.0 ESP-12E Module". Nazwa płytki będzie zależała od modelu, który jest używany.
Przed kompilacją i załadowaniem kodu źródłowego, nie zapomnij dołączyć bibliotek ESP8266WiFi.h, Adafruit i MQTT z Library Manager. Należy również dodać pakiet 'package_esp8266com_index.json' w Preferencjach w Arduino IDE, jak pokazano na rysunku 8.
Następnie otwórz kod program_soil.ino z Arduino IDE i wprowadź kilka zmian, takich jak Wifi SSID, hasło, nazwę użytkownika Adafruit i klucz z własnymi danymi, jak pokazano w poniższym kodzie:
#include
#include
#include “Adafruit_MQTT.h”
#include “Adafruit_MQTT_Client.h”
#define S0 D0
#define WLAN_SSID “Samsungi” //
**Your wifi name ssid** change it(1)
#define WLAN_PASS “abcd123456” //
**Your WIFI password*** change it(2)
#define aio_server “io.adafruit.com”
//adafruit server
#define AIO_SERVERPORT 1883
#define aio_username “jitendra41085”
//** adafruit username** change it (3)
#define aio_key
“859813f4cb144ee5b0f9e124a239a3f4”
//**adafruit auth key**change it (4)
wificlient client;
Adafruit_MQTT_Client mqtt(&client, AIO_
SERVER, AIO_SERVERPORT, AIO_USERNAME,
AIO_KEY);
Adafruit_MQTT_Publish photocel3 =
Adafruit_MQTT_Publish(&mqtt, AIO_
USERNAME “/feeds/
Relay1”);
void MQTT_connect();
void setup(void)
Następnie należy skompilować i wgrać kod źródłowy na płytkę NodeMCU klikając na przycisk Upload.
Budowa i testowanie
Schemat ideowy płytki drukowanej dla przetwornika pokazano na rysunku 9, a rozmieszczenie jego elementów na rysunku 10. Po zmontowaniu układu na płytce należy podłączyć zasilanie 5 V do złącza CON1.
Na rysunku 11 przedstawiono schemat ideowy odbiornika, a na rysunku 12 - schemat ideowy jego elementów. Po zmontowaniu układu na płytce należy podłączyć kolejne zasilanie 5 V do złącza CON3. Jako przekaźnika RL1 użyć przekaźnika o napięciu 5 V i prądzie znamionowym 10 A. Ponieważ przekaźnik RL1 nie jest montowany na płytce drukowanej, podłącz jego cewkę do płytki drukowanej w miejscu oznaczonym RL1. Podłączyć włącznik/wyłącznik pompy wodnej do styków biegunowych i zwiernych przekaźnika.
Włącz obwody nadajnika i odbiornika. Zaloguj się na stronie io.adafruit.com i otwórz utworzony wcześniej panel. W zależności od poziomu wilgotności gleby na polu, zobaczysz stan przekaźników na panelu, jak pokazano na rysunkach 6 i 7. Gdy stan Relay1 wynosi 1, silnik jest włączony, a gdy stan Relay1 wynosi 0, silnik jest wyłączony. Stan przekaźnika będzie się zmieniał automatycznie w zależności od poziomu wilgotności gleby na polu.
Do testowania/sprawdzania sygnałów
w obwodach nadajnika i odbiornika (rysunek 2 i rysunek 3), oczekiwane sygnały w różnych punktach są wymienione w tabeli 1.