- Απαιτούμενα στοιχεία
- Διάγραμμα κυκλώματος
- Προγραμματισμός ESP8266 NodeMCU για αυτόματο σύστημα άρδευσης
Οι περισσότεροι από τους αγρότες χρησιμοποιούν μεγάλα τμήματα γεωργικής γης και καθίσταται πολύ δύσκολο να φτάσετε και να παρακολουθήσετε κάθε γωνιά μεγάλων εκτάσεων. Κάποτε υπάρχει πιθανότητα άνισων ψεκασμών νερού. Αυτό έχει ως αποτέλεσμα τις καλλιέργειες κακής ποιότητας που οδηγούν περαιτέρω σε οικονομικές απώλειες. Σε αυτό το σενάριο, το έξυπνο σύστημα άρδευσης που χρησιμοποιεί την τελευταία τεχνολογία IoT είναι χρήσιμο και οδηγεί στην ευκολία της καλλιέργειας.
Το έξυπνο σύστημα άρδευσης έχει ευρύ πεδίο για την αυτοματοποίηση του πλήρους συστήματος άρδευσης. Εδώ κατασκευάζουμε ένα σύστημα άρδευσης με βάση το IoT χρησιμοποιώντας το ESP8266 NodeMCU Module και τον αισθητήρα DHT11. Δεν θα ποτίζει μόνο αυτόματα το νερό με βάση το επίπεδο υγρασίας στο έδαφος, αλλά και θα στέλνει τα δεδομένα στον ThingSpeak Server για να παρακολουθεί την κατάσταση της γης. Το Σύστημα θα αποτελείται από μια αντλία νερού που θα χρησιμοποιείται για να ψεκάζει νερό στη γη, ανάλογα με την περιβαλλοντική κατάσταση της γης, όπως υγρασία, θερμοκρασία και υγρασία.
Προηγουμένως κατασκευάσαμε παρόμοιο αυτόματο σύστημα άρδευσης εγκαταστάσεων που στέλνει ειδοποιήσεις σε κινητά αλλά όχι σε σύννεφο IoT. Εκτός από αυτό, το κύκλωμα συναγερμού βροχής και ανιχνευτή υγρασίας εδάφους μπορεί επίσης να είναι χρήσιμο στην κατασκευή έξυπνου συστήματος άρδευσης.
Πριν ξεκινήσετε, είναι σημαντικό να σημειώσετε ότι οι διάφορες καλλιέργειες απαιτούν διαφορετική υγρασία εδάφους, θερμοκρασία και υγρασία. Έτσι σε αυτό το σεμινάριο χρησιμοποιούμε μια τέτοια καλλιέργεια που θα απαιτεί υγρασία εδάφους περίπου 50-55%. Έτσι, όταν το έδαφος χάνει την υγρασία του σε λιγότερο από 50%, τότε η αντλία κινητήρα θα ενεργοποιηθεί αυτόματα για να ψεκάσει το νερό και θα συνεχίσει να ψεκάζει το νερό έως ότου η υγρασία φτάσει στο 55% και μετά από αυτό η αντλία θα απενεργοποιηθεί. Τα δεδομένα του αισθητήρα θα σταλούν στον ThingSpeak Server σε καθορισμένο χρονικό διάστημα, ώστε να μπορεί να παρακολουθείται από οπουδήποτε στον κόσμο.
Απαιτούμενα στοιχεία
- NodeMCU ESP8266
- Ενότητα αισθητήρα υγρασίας εδάφους
- Ενότητα αντλίας νερού
- Μονάδα ρελέ
- DHT11
- Σύνδεση καλωδίων
Μπορείτε να αγοράσετε όλα τα στοιχεία που απαιτούνται για αυτό το έργο.
Διάγραμμα κυκλώματος
Το διάγραμμα κυκλώματος για αυτό το έξυπνο σύστημα άρδευσης IoT δίνεται παρακάτω:
Προγραμματισμός ESP8266 NodeMCU για αυτόματο σύστημα άρδευσης
Για τον προγραμματισμό της μονάδας ESP8266 NodeMCU, μόνο η βιβλιοθήκη αισθητήρων DHT11 χρησιμοποιείται ως εξωτερική βιβλιοθήκη. Ο αισθητήρας υγρασίας παρέχει αναλογική έξοδο που μπορεί να διαβαστεί μέσω του αναλογικού πείρου A08266 NodeMCU. Επειδή το NodeMCU δεν μπορεί να δώσει τάση εξόδου μεγαλύτερη από 3,3V από το GPIO του, έτσι χρησιμοποιούμε μια μονάδα ρελέ για να οδηγήσουμε την αντλία κινητήρα 5V. Επίσης, ο αισθητήρας υγρασίας και ο αισθητήρας DHT11 τροφοδοτούνται από εξωτερικό τροφοδοτικό 5V.
Ο πλήρης κώδικας με ένα βίντεο εργασίας δίνεται στο τέλος αυτού του σεμιναρίου, εδώ εξηγούμε το πρόγραμμα για να κατανοήσουμε τη ροή λειτουργίας του έργου.
Ξεκινήστε με τη συμπερίληψη της απαραίτητης βιβλιοθήκης.
#περιλαμβάνω
Δεδομένου ότι χρησιμοποιούμε τον ThingSpeak Server, το κλειδί API είναι απαραίτητο για την επικοινωνία με τον διακομιστή. Για να μάθετε πώς μπορούμε να λάβουμε το API Key από το ThingSpeak, μπορείτε να επισκεφθείτε το προηγούμενο άρθρο σχετικά με την παρακολούθηση της θερμοκρασίας και της υγρασίας στο ThingSpeak.
Συμβολοσειρά apiKey = "X5AQ445IKMBYW31H const char * server =" api.thingspeak.com ";
Το επόμενο βήμα είναι να γράψετε τα διαπιστευτήρια Wi-Fi, όπως SSID και Password.
const char * ssid = "CircuitDigest"; const char * pass = "xxxxxxxxxxx";
Ορίστε τον αισθητήρα DHT όπου είναι συνδεδεμένο το DHT και επιλέξτε τον τύπο DHT.
# καθορισμός DHTPIN D3 DHT dht (DHTPIN, DHT11);
Η έξοδος του αισθητήρα υγρασίας συνδέεται στο Pin A0 του ESP8266 NodeMCU. Και ο πείρος του κινητήρα είναι συνδεδεμένος στο D0 του NodeMCU.
const int moistPin = A0; const int motorPin = D0;
Θα χρησιμοποιήσουμε τη συνάρτηση millis () για να στείλουμε τα δεδομένα μετά από κάθε καθορισμένο χρονικό διάστημα εδώ είναι 10 δευτερόλεπτα. Η καθυστέρηση () αποφεύγεται αφού σταματά το πρόγραμμα για καθορισμένη καθυστέρηση όπου ο μικροελεγκτής δεν μπορεί να κάνει άλλες εργασίες. Μάθετε περισσότερα σχετικά με τη διαφορά μεταξύ καθυστέρησης () και χιλιοστών () εδώ.
χωρίς υπογραφή μεγάλο διάστημα = 10000; unsigned long sebelumnyaMillis = 0;
Ορίστε τον πείρο του κινητήρα ως έξοδο και απενεργοποιήστε τον κινητήρα αρχικά. Ξεκινήστε την ανάγνωση του αισθητήρα DHT11.
pinMode (motorPin, OUTPUT); digitalWrite (motorPin, LOW); // κρατήστε τον κινητήρα εκτός λειτουργίας αρχικά dht.begin ();
Προσπαθήστε να συνδέσετε το Wi-Fi με δεδομένο SSID και κωδικό πρόσβασης και περιμένετε να συνδεθεί το Wi-Fi και αν είναι συνδεδεμένο, ακολουθήστε τα επόμενα βήματα.
WiFi.begin (ssid, pass); ενώ (WiFi.status ()! = WL_CONNECTED) { καθυστέρηση (500); Serial.print ("."); } Serial.println (""); Serial.println ("συνδεδεμένο WiFi"); }
Ορίστε την τρέχουσα ώρα έναρξης του προγράμματος και αποθηκεύστε το σε μια μεταβλητή για να το συγκρίνετε με τον χρόνο που έχει παρέλθει.
unsigned long currentMillis = millis ();
Διαβάστε τα δεδομένα θερμοκρασίας και υγρασίας και αποθηκεύστε τα σε μεταβλητές.
float h = dht.readHumidity (); float t = dht.readTemperature ();
Εάν το DHT είναι συνδεδεμένο και το ESP8266 NodeMCU είναι σε θέση να διαβάσει τις αναγνώσεις, προχωρήστε στο επόμενο βήμα ή επιστρέψτε από εδώ για να ελέγξετε ξανά.
if (isnan (h) - isnan (t)) { Serial.println ("Αποτυχία ανάγνωσης από τον αισθητήρα DHT!"); ΕΠΙΣΤΡΟΦΗ; }
Διαβάστε την ένδειξη υγρασίας από τον αισθητήρα και εκτυπώστε την ένδειξη.
υγρασίαPercentage = (100.00 - ((analogRead (moistPin) / 1023.00) * 100.00)); Serial.print ("Η υγρασία του εδάφους είναι ="); Serial.print (υγρασίαPententage); Serial.println ("%");
Εάν η ένδειξη υγρασίας βρίσκεται μεταξύ του απαιτούμενου εύρους υγρασίας εδάφους, τότε κρατήστε την αντλία απενεργοποιημένη ή εάν υπερβαίνει την απαιτούμενη υγρασία, ενεργοποιήστε την αντλία.
εάν ( υγρασίαPercentage <50) { digitalWrite (motorPin, HIGH); } εάν ( υγρασίαPententage > 50 && moistPercentage <55) { digitalWrite (motorPin, HIGH); } εάν ( υγρασίαPercentage > 56) { digitalWrite (motorPin, LOW); }
Τώρα μετά από κάθε 10 δευτερόλεπτα καλέστε τη λειτουργία sendThingspeak () για να στείλετε τα δεδομένα υγρασίας, θερμοκρασίας και υγρασίας στο διακομιστή ThingSpeak.
if ((unsigned long) (currentMillis - previousMillis)> = διάστημα) { sendThingspeak (); previousMillis = millis (); client.stop (); }
Στη συνάρτηση sendThingspeak () ελέγξουμε εάν το σύστημα είναι συνδεδεμένο με διακομιστή και αν ναι τότε ετοιμάζουμε μια συμβολοσειρά όπου γράφεται υγρασία, θερμοκρασία, υγρασία και αυτή η συμβολοσειρά θα σταλεί στον διακομιστή ThingSpeak μαζί με το κλειδί API και τη διεύθυνση διακομιστή.
if (client.connect (διακομιστής, 80)) { String postStr = apiKey; postStr + = "& field1 ="; postStr + = String (υγρασίαPententage); postStr + = "& field2 ="; postStr + = Συμβολοσειρά (t); postStr + = "& field3 ="; postStr + = Συμβολοσειρά (h); postStr + = "\ r \ n \ r \ n";
Τέλος, τα δεδομένα αποστέλλονται στον διακομιστή ThingSpeak χρησιμοποιώντας τη λειτουργία client.print () που περιέχει το κλειδί API, τη διεύθυνση διακομιστή και τη συμβολοσειρά που έχει προετοιμαστεί στο προηγούμενο βήμα.
client.print ("POST / ενημέρωση HTTP / 1.1 \ n"); client.print ("Host: api.thingspeak.com \ n"); client.print ("Σύνδεση: κλείσιμο \ n"); client.print ("X-THINGSPEAKAPIKEY:" + apiKey + "\ n"); client.print ("Content-Type: application / x-www-form-urlencoded \ n"); client.print ("Περιεχόμενο-Μήκος:"); client.print (postStr.length ()); client.print ("\ n \ n"); client.print (postStr);
Τέλος, έτσι φαίνονται τα δεδομένα στον Πίνακα ελέγχου ThingSpeak
Αυτό το τελευταίο βήμα ολοκληρώνει το πλήρες σεμινάριο για το έξυπνο σύστημα άρδευσης που βασίζεται σε IoT. Σημειώστε ότι είναι σημαντικό να απενεργοποιήσετε τον κινητήρα όταν η υγρασία του εδάφους έχει φτάσει στο απαιτούμενο επίπεδο μετά το ψεκασμό νερού. Μπορείτε να δημιουργήσετε ένα πιο έξυπνο σύστημα που μπορεί να περιέχει διαφορετικό έλεγχο για διαφορετικές καλλιέργειες.
Εάν αντιμετωπίζετε προβλήματα κατά την εκτέλεση αυτού του έργου, τότε σχολιάστε παρακάτω ή μεταβείτε στα φόρουμ μας για πιο σχετικές ερωτήσεις και τις απαντήσεις τους.
Βρείτε το πλήρες πρόγραμμα και το βίντεο επίδειξης για αυτό το έργο παρακάτω.