Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-23 15:03
Tutaj tworzę Monitoring Zakładu z alertem SMS. Serwer nie jest wymagany dla tego systemu alertów. Jest to bardzo tani i niezawodny projekt.
Krok 1: Schemat blokowy systemu
W dzisiejszych szklarniach wymagane są pomiary wielu parametrów
do monitorowania i kontrolowania dobrej jakości i produktywności roślin. Jednak aby uzyskać pożądane rezultaty, należy wziąć pod uwagę kilka bardzo ważnych czynników, takich jak temperatura, wilgotność, światło i dobra gleba, które są niezbędne do lepszego wzrostu roślin. Mając na uwadze te parametry, zbudowałem automatyczny system monitorowania instalacji przez moduł GSM przy użyciu Arduino. Ten system jest bardzo wydajny w uprawie roślin dobrej jakości. Inną ważną częścią tego projektu jest to, że jest w pełni automatyczny i działa na niskim napięciu; Zasilanie 5-12V DC.
Obecnie moduł GSM jest szeroko stosowany do wysyłania SMS o statusie dowolnego rodzaju danych. Tutaj w tym projekcie za pomocą modułu GSM SIM900A możemy przechowywać informacje o wpływie klimatu na rośliny. System będzie również pokazywał zmiany klimatyczne, które wpływają na produktywność i jakość zakładu itp. Głównym celem powstania tego projektu jest zbudowanie Automatycznego Monitoringu Zakładu, w którym moduł GSM przesyła informacje o Temperaturze, Wilgotności, Natężeniu światła, Glebie wilgoć.
Ponieważ jestem obywatelem Indii, użyłem modułu SIM900A (A oznacza sieć azjatycką), ale możesz użyć innego rodzaju modułu SIM, w zależności od kraju. Kody AT mogą się różnić.
Krok 2: Szczegóły komponentu
------------------ Mierzę cztery rodzaje parametrów, które idą
do omówienia poniżej: ------------------
Temperatura i wilgotność
Czujnik DHT11 służy do pomiaru temperatury i wilgotności. Gdy temperatura i wilgotność są wysokie, korzenie roślin są uszkodzone, a wzrost roślin nie jest prawidłowy.
Natężenie światła
Intensywność światła jest ważnym czynnikiem wzrostu roślin. Do wykrywania natężenia światła wykorzystywany jest LDR (Light dependant Resistant). Intensywność światła jest mierzona w luksach i dlatego do demonstracji używa się światła 100 luksów jako określonego lub progowego poziomu.
Wilgotność gleby
Zawartość wilgoci w glebie jest bardzo ważna dla dobrego wzrostu roślin. Tutaj czujnik gleby służy do pomiaru zawartości wilgoci w glebie. Za pomocą tego czujnika możemy mierzyć dane glebowe zarówno w sposób analogowy, jak i cyfrowy.
Powiadomienie SMS:
Gdy wartość któregokolwiek z powyższych parametrów przekroczy określony poziom lub poziom krytyczny, system automatycznie wyśle SMS do właściciela lub operatora z informacją o powiązanych parametrach, a gdy wartość znajdzie się w normalnym zakresie lub ponownie poniżej zdefiniowanego poziomu system automatycznie wyślij SMS do właściciela lub operatora z informacją o powiązanych danych.
Powiadomienie wysyłamy tylko raz, aż stan się nie zmieni, więc właściciel lub operator nie otrzymuje częstych SMS-ów. Dlatego wymagany niższy pakiet SMS.
Krok 3: Schemat obwodu
Wszystkie te części są łatwo dostępne w każdej witrynie zakupów online
lub ze znanym sprzedawcą części zamiennych do elektroniki. Wszystkie karty katalogowe komponentów są dostępne w Internecie. W razie jakichkolwiek trudności zapraszam do kontaktu na mój mail.
Krok 4: Działający plik wideo i kod
Końcowe wideo robocze projektu
Krok 5: Kod programu
#włączać
#włączać
LCD LiquidCrystal (2, 3, 4, 5, 6, 7);
dht DHT; #zdefiniuj dht_dpin A1 #zdefiniuj LUX A0 #zdefiniuj glebę A3
napięcie pływakowe, luks, wartość; int wartość_wyjściowa; temperatura wewnętrzna, wilgotność; int flaga świetlna = 0; int humflag = 0; int flaga gleby = 0; int flaga temp = 0; kontrola wewnętrzna; test int, test1; stopień bajtu[8] = { 0b00011, 0b00011, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000 };
pusta konfiguracja()
{ Szeregowy.początek(9600); //Zainicjuj port szeregowy do komunikacji z modemem GSM lcd.begin(16, 2); pinMode(gleba, INPUT); lcd.createChar(1, stopień); lcd.setCursor(0, 0); lcd.print("Zdrowie roślin"); lcd.setCursor(0, 1); lcd.print("Monitorowanie"); opóźnienie (1000); lcd.clear(); lcd.setCursor(0, 0); lcd.print("PROJEKT AGRI"); lcd.setCursor(0, 1); lcd.print("Autor SK CHHAYA"); opóźnienie (1000); lcd.clear(); } void loop() { output_value = analogRead(gleba); wartość_wyjściowa = mapa(wartość_wyjściowa, 550, 0, 0, 100); wartość = odczyt analogowy (LUX); wolt = (wartość / 1023,0) * 5; luks = ((2500 / wolt) - 500) / 3,3; opóźnienie (10000); //Daj wystarczająco dużo czasu, aby GSM zarejestrował się w sieci DHT.read11(dht_dpin); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Temp"); lcd.setCursor(0, 1); lcd.print(temperatura = DHT.temperatura); // Dane temp. na LCD lcd.write(1); lcd.print("C"); opóźnienie (1000); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Wilgotność"); lcd.setCursor(0, 1); lcd.print(wilgotność = DHT.wilgotność); // Dane wilgotności na LCD lcd.print(" %"); opóźnienie (1000); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Światło"); lcd.setCursor(0, 1); lcd.print(lux); // Jasne dane na LCD lcd.print(" LUM"); opóźnienie (1000); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Wilgoc"); lcd.setCursor(0, 1); lcd.print(wartość_wyjściowa); // Dane gleby na LCD lcd.print(" %"); opóźnienie (1000); lcd.clear();
if (temperatura 40) { WyślijSMS(); // SMS dla temp. wysokiej } if (wilgotność 40) { SendSMS2(); // SMS o wysokiej wilgotności } if (lux 100) { SendSMS4(); // SMS dla światła wysoki } if (wartość_wyjściowa == 950) { SendSMS7(); // SMS dla suchej gleby } else if (wartość_wyjściowa != 950) { SendSMS6(); // SMS dla mokrej gleby } } void SendSMS() { if (tempflag == 0) { Serial.println("AT+CMGF=1"); opóźnienie (500); Serial.println("AT+CMGS=\"+919979897404\"\r"); opóźnienie (500); Serial.print("Temp High, "); Serial.print("Temp"); druk.seryjny(temperatura); Serial.println("stopień C"); Serial.println((char)26); lcd.setCursor(0, 0); lcd.print("Wysoka temperatura"); opóźnienie (1000); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Temperatura"); lcd.setCursor(0, 1); lcd.print(temperatura); lcd.zapis(1); lcd.print("C"); opóźnienie (1000); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Wysyłanie wiadomości SMS"); opóźnienie (1000); lcd.clear(); flaga temp = 1; sprawdź = 0; test = 0; opóźnienie(10); } } void SendSMS1() { if (tempflag == 1) { Serial.println("AT+CMGF=1"); opóźnienie (500); Serial.println("AT+CMGS=\"+919979897404\"\r"); opóźnienie (500); Serial.print("Niska Temp, "); Serial.print("Temp"); druk.seryjny(temperatura); Serial.println("stopień C"); Serial.println((char)26); lcd.setCursor(0, 0); lcd.print("Niska temperatura"); opóźnienie (1000); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Temperatura"); lcd.setCursor(0, 1); lcd.print(temperatura); lcd.zapis(1); lcd.print("C"); opóźnienie (1000); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Wysyłanie wiadomości SMS"); opóźnienie (1000); lcd.clear(); flaga temp = 0; sprawdź = 0; test = 0; opóźnienie(10); } } void SendSMS2() { if (humflag == 0) { Serial.println("AT+CMGF=1"); opóźnienie (500); Serial.println("AT+CMGS=\"+919979897404\"\r"); opóźnienie (500); Serial.print("Wilgotność wysoka"); Serial.print(wilgotność); Serial.println("%"); Serial.println((char)26); lcd.setCursor(0, 0); lcd.print("Wilgotność wysoka"); opóźnienie (1000); lcd.setCursor(0, 1); lcd.print("Wilgotność"); lcd.print(wilgotność); lcd.print("%"); opóźnienie (1000); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Wysyłanie wiadomości SMS"); opóźnienie (1000); lcd.clear(); humflag = 1; sprawdź = 0; test = 0; opóźnienie(10); } }
void SendSMS3() { if (humflag == 1) { Serial.println("AT+CMGF=1"); opóźnienie (500); Serial.println("AT+CMGS=\"+919979897404\"\r"); opóźnienie (500); Serial.print("Niska Wilgotność, "); Serial.print("Wilgotność"); Serial.print(wilgotność); Serial.println("%"); Serial.println((char)26); lcd.setCursor(0, 0); lcd.print("Niska wilgotność"); opóźnienie (1000); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Wilgotność"); lcd.setCursor(0, 1); lcd.print(wilgotność); lcd.print("%"); opóźnienie (1000); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Wysyłanie SMS"); opóźnienie (1000); lcd.clear(); humflag = 0; sprawdź = 0; test = 0; opóźnienie(10); } } void SendSMS4() { if (lightflag == 0) { Serial.println("AT+CMGF=1"); //Aby wysłać SMS w trybie tekstowym delay(500); Serial.println("AT+CMGS=\"+919979897404\"\r"); //Zmień na docelowy numer telefonu delay(500); Serial.print("Dobre ŚWIATŁO, "); Serial.print("Intensywność"); druk.seryjny(lux); Serial.println("LUX"); Serial.println((char)26); //znak zatrzymania Ctrl+Z lcd.setCursor(0, 0); lcd.print("Dobre światło"); opóźnienie (1000); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Intensywność"); lcd.setCursor(0, 1); lcd.print(lux); lcd.print("LUX"); opóźnienie (1000); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Wysyłanie SMS"); opóźnienie (1000); lcd.clear(); flaga świetlna = 1; sprawdź = 0; test = 0; opóźnienie(10); } } void SendSMS5() { if (lightflag == 1) { Serial.println("AT+CMGF=1"); opóźnienie (500); Serial.println("AT+CMGS=\"+919979897404\"\r"); opóźnienie (500); Serial.print("MAŁE ŚWIATŁO, "); Serial.print("Intensywność"); druk.seryjny(lux); Serial.println("LUX"); Serial.println((char)26); lcd.setCursor(0, 0); lcd.print("Słabe oświetlenie"); opóźnienie (1000); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Intensywność"); lcd.setCursor(0, 1); lcd.print(lux); lcd.print("LUX"); opóźnienie (1000); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Wysyłanie SMS"); opóźnienie (1000); lcd.clear(); flaga świetlna = 0; sprawdź = 0; test = 0; opóźnienie(10); } } void SendSMS6() { if (soilflag == 0) { Serial.println("AT+CMGF=1"); opóźnienie (500); Serial.println("AT+CMGS=\"+919979897404\"\r"); opóźnienie (500); Serial.print("Sucha ziemia, "); Serial.print(" Wilgoć "); Serial.print(wartość_wyjściowa); Serial.println("%"); Serial.println((char)26); lcd.setCursor(0, 0); lcd.print("Sucha ziemia"); opóźnienie (1000); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Wilgoc"); lcd.setCursor(0, 1); lcd.print(wartość_wyjściowa); lcd.print("%"); opóźnienie (1000); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Wysyłanie wiadomości SMS"); opóźnienie (1000); lcd.clear(); flaga gleby = 1; sprawdź = 0; test = 0; opóźnienie(10); } } void SendSMS7() { if (gleba == 1) { Serial.println("AT+CMGF=1"); opóźnienie (500); Serial.println("AT+CMGS=\"+919979897404\"\r"); opóźnienie (500); Serial.print("Mokra gleba, "); Serial.print(" Wilgoć "); Serial.print(wartość_wyjściowa); Serial.println("%"); Serial.println((char)26); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Mokra gleba"); opóźnienie (1000); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Wilgoc"); lcd.setCursor(0, 1); lcd.print(wartość_wyjściowa); lcd.print("%"); opóźnienie (1000); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Wysyłanie SMS"); opóźnienie (1000); lcd.clear(); flaga gleby = 0; sprawdź = 0; test = 0; opóźnienie(10); } }
Zalecana:
Jak zbudować monitor instalacji za pomocą Arduino: 7 kroków
Jak zbudować monitor roślin z Arduino: W tym samouczku nauczymy się wykrywać wilgotność gleby za pomocą czujnika wilgotności i migać zieloną diodą LED, jeśli wszystko jest w porządku, oraz wyświetlaczem OLED i Visuino. Obejrzyj wideo
Monitorowanie akceleracji za pomocą Raspberry Pi i AIS328DQTR za pomocą Pythona: 6 kroków
Monitorowanie przyspieszenia za pomocą Raspberry Pi i AIS328DQTR Za pomocą Pythona: Przyspieszenie jest skończone, myślę, że zgodnie z niektórymi prawami fizyki.- Terry Riley Gepard wykorzystuje niesamowite przyspieszenie i szybkie zmiany prędkości podczas pościgu. Najszybsze stworzenie na lądzie od czasu do czasu wykorzystuje swoje najwyższe tempo do łapania zdobyczy. Ten
Tworzenie alertu za pomocą Ubidots+ESP32 i czujnika wibracji: 8 kroków
Tworzenie alertu za pomocą Ubidots+ESP32 i czujnika wibracji: W tym projekcie stworzymy alert e-mail dotyczący wibracji i temperatury maszyny za pomocą czujnika wibracji Ubidots i ESP32. Wibracje są naprawdę ruchem tam i z powrotem - lub oscylacją - z maszyny i komponenty w zmotoryzowanych gadżetach. Wibracje ja
Monitorowanie instalacji i alerty za pomocą ESP8266 i AskSensors IoT Cloud: 6 kroków
Monitorowanie roślin i alerty za pomocą ESP8266 i AskSensors IoT Cloud: Ten projekt ma na celu zbudowanie inteligentnego systemu monitorowania roślin przy użyciu ESP8266 i platformy AskSensors IoT. Ten system może być używany do śledzenia poziomu wilgotności gleby w celu zapewnienia obiektywnych kryteriów decyzji dotyczących nawadniania. które pomagają zapewnić nawadnianie
Utwórz flagę alertu Applescript / Arduino.: 5 kroków (ze zdjęciami)
Utwórz flagę alertu Applescript/Arduino.: Czy kiedykolwiek czułeś, że dźwięk poczty na komputerze Mac po prostu nie wystarczał? Proste dźwięki i alerty po prostu nie pasują do Ciebie? Chcesz czegoś bardziej widocznego i satysfakcjonującego? Jeśli tak, to jest to Instructable, którego szukałeś. W tej instrukcji