Სარჩევი:

მცენარეთა მონიტორინგი SMS შეტყობინებით: 5 ნაბიჯი
მცენარეთა მონიტორინგი SMS შეტყობინებით: 5 ნაბიჯი

ვიდეო: მცენარეთა მონიტორინგი SMS შეტყობინებით: 5 ნაბიჯი

ვიდეო: მცენარეთა მონიტორინგი SMS შეტყობინებით: 5 ნაბიჯი
ვიდეო: Justin Shi: Blockchain, Cryptocurrency and the Achilles Heel in Software Developments 2024, დეკემბერი
Anonim
მცენარეთა მონიტორინგი SMS შეტყობინებით
მცენარეთა მონიტორინგი SMS შეტყობინებით

აქ მე ვქმნი მცენარეთა მონიტორინგს SMS გაფრთხილებით. სერვერი არ არის საჭირო ამ გაფრთხილების სისტემისთვის. ეს არის ძალიან იაფი და საიმედო პროექტი.

ნაბიჯი 1: სისტემის ბლოკირების დიაგრამა

ბლოკის სისტემის დიაგრამა
ბლოკის სისტემის დიაგრამა

დღევანდელ სათბურებში ბევრი პარამეტრის გაზომვაა საჭირო

მცენარეების კარგი ხარისხისა და პროდუქტიულობის მონიტორინგი და კონტროლი. მაგრამ სასურველი შედეგის მისაღწევად არის ძალიან მნიშვნელოვანი ფაქტორები, როგორიცაა ტემპერატურა, ტენიანობა, მსუბუქი და კარგი ნიადაგი, რომლებიც აუცილებელია მცენარის უკეთესი ზრდისთვის. ამ პარამეტრების გათვალისწინებით მე შევქმენი ქარხნის მონიტორინგის სისტემა GSM მოდულზე Arduino– ს გამოყენებით. ეს სისტემა ძალიან ეფექტურია კარგი ხარისხის მცენარეების გასაზრდელად. ამ პროექტის სხვა მნიშვნელოვანი ნაწილი ის არის, რომ ის სრულად ავტომატურია და მუშაობს დაბალი ძაბვის მსგავსად; 5-12V DC მიწოდება.

დღეისათვის GSM მოდული ფართოდ გამოიყენება ნებისმიერი სახის მონაცემების SMS სტატუსის გასაგზავნად. აქ ამ პროექტში SIM900A GSM მოდულის გამოყენებით შეგვიძლია შევინარჩუნოთ ინფორმაცია მცენარეებზე კლიმატის გავლენის შესახებ. სისტემამ ასევე უნდა წარმოაჩინოს კლიმატური ცვლილებები, რომლებიც გავლენას მოახდენს მცენარეზე მის პროდუქტიულობასა და ხარისხში და ა.შ. ტენიანობა.

იმის გამო, რომ მე ვარ ინდოეთის მოქალაქე, გამოვიყენე SIM900A (A ნიშნავს აზიის ქსელის) მოდული, მაგრამ თქვენ შეგიძლიათ გამოიყენოთ სხვადასხვა სახის SIM მოდული თქვენი ქვეყნის მიხედვით. AT კოდები შეიძლება განსხვავდებოდეს.

ნაბიჯი 2: კომპონენტის დეტალი

კომპონენტის დეტალი
კომპონენტის დეტალი
კომპონენტის დეტალი
კომპონენტის დეტალი
კომპონენტის დეტალი
კომპონენტის დეტალი

------------------ მე ვზომავ ოთხი ტიპის პარამეტრს, რომლებიც მიდის

ქვემოთ განსახილველად: ------------------

ტემპერატურა და ტენიანობა

DHT11 სენსორი გამოიყენება ტემპერატურისა და ტენიანობის შესაფასებლად. როდესაც ტემპერატურა და ტენიანობა მაღალია, მცენარეების ფესვი დაზიანებულია და მცენარე კარგად არ იზრდება.

სინათლის ინტენსივობა

სინათლის ინტენსივობა მნიშვნელოვანი ფაქტორია მცენარის ზრდისთვის. სინათლის ინტენსივობის დასადგენად გამოიყენება LDR (შუქზე დამოკიდებული რეზისტორი). სინათლის ინტენსივობა იზომება LUX- ში და, შესაბამისად, დემონსტრაციისთვის 100 LUX შუქი გამოიყენება განსაზღვრული ან ზღურბლის დონეზე.

Მიწის ტენიანობა

ნიადაგის ტენიანობა ძალიან მნიშვნელოვანია მცენარეების კარგი ზრდისთვის. აქ ნიადაგის სენსორი გამოიყენება ნიადაგში ტენიანობის გასაზომად. ამ სენსორის გამოყენებით ჩვენ შეგვიძლია გავზომოთ ნიადაგის მონაცემები ორივე გზით, ანალოგური და ციფრული ასევე.

SMS შეტყობინება:

როდესაც რომელიმე ზემოთ ჩამოთვლილი პარამეტრის მნიშვნელობა აღემატება განსაზღვრულ დონეს ან კრიტიკულ დონეს, სისტემა ავტომატურად უგზავნის SMS მფლობელს ან ოპერატორს შესაბამისი პარამეტრების ინფორმაციას და როდესაც მნიშვნელობა ნორმალურ დიაპაზონში მოდის ან განსაზღვრულ დონეზე დაბლა სისტემა კვლავ ავტომატურად გაუგზავნეთ SMS მფლობელს ან ოპერატორს შესაბამისი მონაცემების შესახებ.

შეტყობინება იგზავნება მხოლოდ ერთხელ, სანამ მდგომარეობა არ შეიცვლება, ასე რომ მფლობელს ან ოპერატორს არ ექნება ხშირი SMS. ამიტომ, საჭიროა SMS– ის ქვედა პაკეტი.

ნაბიჯი 3: სქემის დიაგრამა

Წრიული დიაგრამა
Წრიული დიაგრამა

ეს ყველა ნაწილი ადვილად ხელმისაწვდომია ნებისმიერ ონლაინ სავაჭრო საიტზე

ან ცნობილი ელექტრონიკის სათადარიგო ნაწილების დილერთან. ყველა კომპონენტის მონაცემთა ფურცელი ხელმისაწვდომია ინტერნეტში. თუ რაიმე სირთულე მოგერიდებათ დამიკავშირდით ჩემს ფოსტაზე.

ნაბიჯი 4: სამუშაო ვიდეო და კოდის ფაილი

პროექტის საბოლოო სამუშაო ვიდეო

ნაბიჯი 5: პროგრამის კოდი

#ჩართეთ

#ჩართეთ

LiquidCrystal LCD (2, 3, 4, 5, 6, 7);

dht DHT; #განსაზღვრეთ dht_dpin A1 #განსაზღვრეთ LUX A0 #განსაზღვრეთ ნიადაგი A3

float volt, lux, მნიშვნელობა; int output_value; int ტემპერატურა, ტენიანობა; int lightflag = 0; int humflag = 0; int groundflag = 0; int tempflag = 0; int შემოწმება; int ტესტი, test1; ბაიტის ხარისხი [8] = {0b00011, 0b00011, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000};

ბათილად დაყენება ()

{Serial.begin (9600); // სერიის ინიციალიზაცია GSM მოდემთან lcd.begin (16, 2); pinMode (ნიადაგი, შეყვანა); lcd.createChar (1, ხარისხი); lcd.setCursor (0, 0); lcd.print ("მცენარეთა ჯანმრთელობა"); lcd.setCursor (0, 1); lcd.print ("მონიტორინგი"); დაგვიანება (1000); lcd. წმინდა (); lcd.setCursor (0, 0); lcd.print ("AGRI PROJECT"); lcd.setCursor (0, 1); lcd.print ("S K CHHAYA"); დაგვიანება (1000); lcd. წმინდა (); } void loop () {output_value = analogRead (ნიადაგი); output_value = რუკა (output_value, 550, 0, 0, 100); მნიშვნელობა = analogRead (LUX); ვოლტი = (მნიშვნელობა / 1023.0) * 5; ლუქსი = ((2500 / ვოლტი) - 500) / 3.3; დაგვიანება (10000); // მიეცით საკმარისი დრო GSM- ს დარეგისტრირდეს ქსელში DHT.read11 (dht_dpin); lcd. წმინდა (); lcd.setCursor (0, 0); lcd.print ("ტემპი"); lcd.setCursor (0, 1); lcd.print (ტემპერატურა = DHT.temperature); // Temp მონაცემები LCD lcd.write (1); lcd.print ("C"); დაგვიანება (1000); lcd. წმინდა (); lcd.setCursor (0, 0); lcd.print ("ტენიანობა"); lcd.setCursor (0, 1); lcd.print (ტენიანობა = DHT. ტენიანობა); // ტენიანობის მონაცემები LCD lcd.print (" %"); დაგვიანება (1000); lcd. წმინდა (); lcd.setCursor (0, 0); lcd.print ("სინათლე"); lcd.setCursor (0, 1); lcd. ბეჭდვა (ლუქსი); // სინათლის მონაცემები LCD lcd.print ("LUM"); დაგვიანება (1000); lcd. წმინდა (); lcd.setCursor (0, 0); lcd.print ("ტენიანობა"); lcd.setCursor (0, 1); lcd.print (output_value); // ნიადაგის მონაცემები LCD lcd.print (" %"); დაგვიანება (1000); lcd. წმინდა ();

თუ (ტემპერატურა 40) {SendSMS (); // SMS Temp high} if (ტენიანობა 40) {SendSMS2 (); // SMS მაღალი ტენიანობისთვის} if (lux 100) {SendSMS4 (); // SMS მსუბუქი სინათლისთვის} if (output_value == 950) {SendSMS7 (); // SMS მშრალი ნიადაგისთვის} სხვა შემთხვევაში (გამომავალი_ფასი! = 950) {SendSMS6 (); // SMS სველი ნიადაგისთვის}} void SendSMS () {if (tempflag == 0) {Serial.println ("AT+CMGF = 1"); დაგვიანება (500); Serial.println ("AT+CMGS = \"+919979897404 / "\ r"); დაგვიანება (500); Serial.print ("Temp High"); Serial.print ("ტემპი"); სერიული. ბეჭდვა (ტემპერატურა); Serial.println ("ხარისხი C"); Serial.println ((char) 26); lcd.setCursor (0, 0); lcd.print ("მაღალი ტემპერატურა"); დაგვიანება (1000); lcd. წმინდა (); lcd.setCursor (0, 0); lcd.print ("ტემპერატურა"); lcd.setCursor (0, 1); lcd. ბეჭდვა (ტემპერატურა); lcd. დაწერეთ (1); lcd.print ("C"); დაგვიანება (1000); lcd. წმინდა (); lcd.setCursor (0, 0); lcd.print ("SMS- ის გაგზავნა"); დაგვიანება (1000); lcd. წმინდა (); tempflag = 1; შემოწმება = 0; ტესტი = 0; დაგვიანება (10); }} void SendSMS1 () {if (tempflag == 1) {Serial.println ("AT+CMGF = 1"); დაგვიანება (500); Serial.println ("AT+CMGS = \"+919979897404 / "\ r"); დაგვიანება (500); Serial.print ("Temp Low",); Serial.print ("ტემპი"); სერიული. ბეჭდვა (ტემპერატურა); Serial.println ("ხარისხი C"); Serial.println ((char) 26); lcd.setCursor (0, 0); lcd.print ("Temp Low"); დაგვიანება (1000); lcd. წმინდა (); lcd.setCursor (0, 0); lcd.print ("ტემპერატურა"); lcd.setCursor (0, 1); lcd. ბეჭდვა (ტემპერატურა); lcd. დაწერეთ (1); lcd.print ("C"); დაგვიანება (1000); lcd. წმინდა (); lcd.setCursor (0, 0); lcd.print ("SMS- ის გაგზავნა"); დაგვიანება (1000); lcd. წმინდა (); tempflag = 0; შემოწმება = 0; ტესტი = 0; დაგვიანება (10); }} void SendSMS2 () {if (humflag == 0) {Serial.println ("AT+CMGF = 1"); დაგვიანება (500); Serial.println ("AT+CMGS = \"+919979897404 / "\ r"); დაგვიანება (500); Serial.print ("ტენიანობა მაღალი"); სერიული. ბეჭდვა (ტენიანობა); Serial.println (" %"); Serial.println ((char) 26); lcd.setCursor (0, 0); lcd.print ("ტენიანობა მაღალი"); დაგვიანება (1000); lcd.setCursor (0, 1); lcd.print ("ტენიანობა"); lcd. ბეჭდვა (ტენიანობა); lcd.print (" %"); დაგვიანება (1000); lcd. წმინდა (); lcd.setCursor (0, 0); lcd.print ("SMS- ის გაგზავნა"); დაგვიანება (1000); lcd. წმინდა (); humflag = 1; შემოწმება = 0; ტესტი = 0; დაგვიანება (10); }}

ბათილია SendSMS3 () {if (humflag == 1) {Serial.println ("AT+CMGF = 1"); დაგვიანება (500); Serial.println ("AT+CMGS = \"+919979897404 / "\ r"); დაგვიანება (500); Serial.print ("დაბალი ტენიანობა"); Serial.print ("ტენიანობა"); სერიული. ბეჭდვა (ტენიანობა); Serial.println (" %"); Serial.println ((char) 26); lcd.setCursor (0, 0); lcd.print ("დაბალი ტენიანობა"); დაგვიანება (1000); lcd. წმინდა (); lcd.setCursor (0, 0); lcd.print ("ტენიანობა"); lcd.setCursor (0, 1); lcd. ბეჭდვა (ტენიანობა); lcd.print (" %"); დაგვიანება (1000); lcd. წმინდა (); lcd.setCursor (0, 0); lcd.print ("SMS- ის გაგზავნა"); დაგვიანება (1000); lcd. წმინდა (); humflag = 0; შემოწმება = 0; ტესტი = 0; დაგვიანება (10); }} void SendSMS4 () {if (lightflag == 0) {Serial.println ("AT+CMGF = 1"); // SMS- ის გაგზავნა ტექსტის რეჟიმში დაგვიანებით (500); Serial.println ("AT+CMGS = \"+919979897404 / "\ r"); // დანიშნულების ტელეფონის ნომრის გადადება (500); Serial.print ("კარგი შუქი"); Serial.print ("ინტენსივობა"); სერიული. ბეჭდვა (ლუქსი); Serial.println ("LUX"); Serial.println ((char) 26); // შეჩერების სიმბოლო Ctrl+Z lcd.setCursor (0, 0); lcd.print ("კარგი შუქი"); დაგვიანება (1000); lcd. წმინდა (); lcd.setCursor (0, 0); lcd.print ("ინტენსივობა"); lcd.setCursor (0, 1); lcd. ბეჭდვა (ლუქსი); lcd.print ("LUX"); დაგვიანება (1000); lcd. წმინდა (); lcd.setCursor (0, 0); lcd.print ("SMS- ის გაგზავნა"); დაგვიანება (1000); lcd. წმინდა (); სინათლის დროშა = 1; შემოწმება = 0; ტესტი = 0; დაგვიანება (10); }} void SendSMS5 () {if (lightflag == 1) {Serial.println ("AT+CMGF = 1"); დაგვიანება (500); Serial.println ("AT+CMGS = \"+919979897404 / "\ r"); დაგვიანება (500); Serial.print ("დაბალი შუქი"); Serial.print ("ინტენსივობა"); სერიული. ბეჭდვა (ლუქსი); Serial.println ("LUX"); Serial.println ((char) 26); lcd.setCursor (0, 0); lcd.print ("დაბალი შუქი"); დაგვიანება (1000); lcd. წმინდა (); lcd.setCursor (0, 0); lcd.print ("ინტენსივობა"); lcd.setCursor (0, 1); lcd. ბეჭდვა (ლუქსი); lcd.print ("LUX"); დაგვიანება (1000); lcd. წმინდა (); lcd.setCursor (0, 0); lcd.print ("SMS- ის გაგზავნა"); დაგვიანება (1000); lcd. წმინდა (); სინათლის დროშა = 0; შემოწმება = 0; ტესტი = 0; დაგვიანება (10); }} void SendSMS6 () {if (groundflag == 0) {Serial.println ("AT+CMGF = 1"); დაგვიანება (500); Serial.println ("AT+CMGS = \"+919979897404 / "\ r"); დაგვიანება (500); Serial.print ("მშრალი ნიადაგი"); Serial.print ("ტენიანობა"); Serial.print (გამომავალი_ ღირებულება); Serial.println (" %"); Serial.println ((char) 26); lcd.setCursor (0, 0); lcd.print ("მშრალი ნიადაგი"); დაგვიანება (1000); lcd. წმინდა (); lcd.setCursor (0, 0); lcd.print ("ტენიანობა"); lcd.setCursor (0, 1); lcd.print (output_value); lcd.print (" %"); დაგვიანება (1000); lcd. წმინდა (); lcd.setCursor (0, 0); lcd.print ("SMS- ის გაგზავნა"); დაგვიანება (1000); lcd. წმინდა (); ნიადაგის დროშა = 1; შემოწმება = 0; ტესტი = 0; დაგვიანება (10); }} void SendSMS7 () {if (groundflag == 1) {Serial.println ("AT+CMGF = 1"); დაგვიანება (500); Serial.println ("AT+CMGS = \"+919979897404 / "\ r"); დაგვიანება (500); Serial.print ("სველი ნიადაგი"); Serial.print ("ტენიანობა"); Serial.print (გამომავალი_ ღირებულება); Serial.println (" %"); Serial.println ((char) 26); lcd. წმინდა (); lcd.setCursor (0, 0); lcd.print ("სველი ნიადაგი"); დაგვიანება (1000); lcd. წმინდა (); lcd.setCursor (0, 0); lcd.print ("ტენიანობა"); lcd.setCursor (0, 1); lcd.print (output_value); lcd.print (" %"); დაგვიანება (1000); lcd. წმინდა (); lcd.setCursor (0, 0); lcd.print ("SMS- ის გაგზავნა"); დაგვიანება (1000); lcd. წმინდა (); ნიადაგის დროშა = 0; შემოწმება = 0; ტესტი = 0; დაგვიანება (10); }}

გირჩევთ: