Πίνακας περιεχομένων:

Plant Monitor χρησιμοποιώντας ESP32 Thing and Blynk: 5 βήματα
Plant Monitor χρησιμοποιώντας ESP32 Thing and Blynk: 5 βήματα

Βίντεο: Plant Monitor χρησιμοποιώντας ESP32 Thing and Blynk: 5 βήματα

Βίντεο: Plant Monitor χρησιμοποιώντας ESP32 Thing and Blynk: 5 βήματα
Βίντεο: Display WiFi Access Points on LCD with ESP8266 signal strength as percentage 2024, Ιούνιος
Anonim
Plant Monitor χρησιμοποιώντας ESP32 Thing and Blynk
Plant Monitor χρησιμοποιώντας ESP32 Thing and Blynk
Plant Monitor χρησιμοποιώντας ESP32 Thing and Blynk
Plant Monitor χρησιμοποιώντας ESP32 Thing and Blynk

ΣΦΑΙΡΙΚΗ ΕΙΚΟΝΑ

Ο στόχος αυτού του έργου είναι να δημιουργήσει μια συμπαγή συσκευή ικανή να παρακολουθεί τις συνθήκες ενός φυτού εσωτερικού χώρου. Η συσκευή δίνει τη δυνατότητα στον χρήστη να ελέγχει το επίπεδο υγρασίας του εδάφους, το επίπεδο υγρασίας, τη θερμοκρασία και τη θερμοκρασία "που μοιάζει" από ένα smartphone χρησιμοποιώντας την εφαρμογή Blynk. Επιπλέον, ο χρήστης θα λάβει ειδοποίηση μέσω email όταν οι συνθήκες καταστούν ακατάλληλες για το εργοστάσιο. Για παράδειγμα, ο χρήστης θα λάβει μια υπενθύμιση για το πότισμα του φυτού όταν τα επίπεδα υγρασίας του εδάφους πέσουν κάτω από το κατάλληλο επίπεδο.

Βήμα 1: Απαιτήσεις

Απαιτήσεις
Απαιτήσεις
Απαιτήσεις
Απαιτήσεις
Απαιτήσεις
Απαιτήσεις

Αυτό το έργο χρησιμοποιεί ένα αντικείμενο Sparkfun ESP32, έναν αισθητήρα DHT22 και έναν ηλεκτρονικό αισθητήρα υγρασίας από τούβλα. Επιπλέον, απαιτείται ένα δίκτυο wifi και η εφαρμογή Blynk. Κατά προτίμηση, πρέπει να δημιουργηθεί ένα αδιάβροχο περίβλημα που να περιέχει το αντικείμενο ESP32. Ενώ αυτό το παράδειγμα χρησιμοποιεί μια τυπική πρίζα για μια πηγή ενέργειας, η προσθήκη επαναφορτιζόμενης μπαταρίας, ηλιακού συλλέκτη και ελεγκτή φόρτισης θα επιτρέψει στη συσκευή να τροφοδοτείται μέσω ανανεώσιμων πηγών ενέργειας.

Βήμα 2: Blynk

Μπλινκ
Μπλινκ
Μπλινκ
Μπλινκ
Μπλινκ
Μπλινκ

Για να είστε, κατεβάστε την εφαρμογή Blynk και δημιουργήστε ένα νέο έργο. Σημειώστε το διακριτικό ελέγχου ταυτότητας-θα χρησιμοποιηθεί στον κώδικα. Δημιουργήστε νέα γραφικά στοιχεία εμφάνισης στην εφαρμογή Blynk και επιλέξτε τις αντίστοιχες εικονικές ακίδες που ορίζονται στον κώδικα. Ρυθμίστε το διάστημα ανανέωσης σε ώθηση. Σε κάθε widget θα πρέπει να εκχωρηθεί το δικό του εικονικό pin.

Βήμα 3: Arduino IDE

Arduino IDE
Arduino IDE

Κατεβάστε το Arduino IDE. Ακολουθήστε τις οδηγίες λήψης για το πρόγραμμα οδήγησης ESP32 και την επίδειξη για να διασφαλίσετε τη σύνδεση wifi. Κατεβάστε τις βιβλιοθήκες Blynk και DHT που περιλαμβάνονται στον κώδικα. Συμπληρώστε το διακριτικό ελέγχου ταυτότητας, τον κωδικό πρόσβασης wifi, το όνομα χρήστη wifi και το email στον τελικό κωδικό. Χρησιμοποιήστε τον κωδικό επίδειξης για τον αισθητήρα υγρασίας εδάφους για να βρείτε τις ελάχιστες και μέγιστες τιμές για τον τύπο του εδάφους. Καταγράψτε και αντικαταστήστε αυτές τις τιμές στον τελικό κώδικα. Αντικαταστήστε τις ελάχιστες τιμές για τη θερμοκρασία, την υγρασία του εδάφους και την υγρασία για το φυτό στον τελικό κωδικό. Ανεβάστε τον κωδικό.

Βήμα 4: Δημιουργήστε το

Κατασκευάστε το
Κατασκευάστε το
Κατασκευάστε το
Κατασκευάστε το
Κατασκευάστε το
Κατασκευάστε το

Πρώτον, συνδέστε τον αισθητήρα υγρασίας του εδάφους με 3,3V, γείωση και ακίδα εισόδου 34. Σημείωση, είναι αναπόσπαστο ο διακόπτης έχει οριστεί σε Α, επειδή θα χρησιμοποιηθεί η αναλογική ρύθμιση για αυτόν τον αισθητήρα. Στη συνέχεια, συνδέστε τον αισθητήρα DHT σε ακίδα 3,3V, γείωσης και εισόδου 27. Ο αισθητήρας DHT22 απαιτεί αντίσταση 10K Ohm μεταξύ του VCC και του πείρου εξόδου δεδομένων. Βεβαιωθείτε ότι έχετε ελέγξει το διάγραμμα DHT για να βεβαιωθείτε ότι έχει συνδεθεί σωστά. Διαμορφώστε το ESP32 μέσα σε ένα αδιάβροχο περίβλημα με τον αισθητήρα υγρασίας στο χώμα και τον αισθητήρα DHT πάνω από την επιφάνεια. Συνδεθείτε σε μια πηγή ενέργειας και απολαύστε δεδομένα σχετικά με το περιβάλλον του εργοστασίου σας.

Βήμα 5: Κωδικός

// Περιλαμβάνονται βιβλιοθήκες

#define Σειριακό BLYNK_PRINT

#include #include #include #include "DHT.h"

// Πληροφορίες αισθητήρα DHT

#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321 #define DHTPIN 27 // Digitalηφιακή καρφίτσα συνδεδεμένη με τον αισθητήρα DHT DHT dht (DHTPIN, DHTTYPE). // Αρχικοποίηση αισθητήρα DHT.

// καθορισμός ακίδων και εξόδων εισόδου

int αισθητήρας χώματος = 34; // καθορισμός αναλογικού αριθμού καρφιτσών εισόδου συνδεδεμένου στον αισθητήρα υγρασίας

int output_value; // ορίστε ως έξοδο

int υγρασία; // ορίστε ως έξοδο

int ειδοποιημένο = 0; // ορισμός που ειδοποιείται ως 0

int timedelay = 60000L; // ρυθμίστε το χρονόμετρο να λειτουργεί για λήψη δεδομένων μία φορά κάθε λεπτό ή 60, 000 χιλιοστά του δευτερολέπτου

// ορίστε ελάχιστες τιμές για το φυτό

int min_moisture = 20; int min_temperature = 75; int ελάχιστη υγρασία = 60;

// Θα πρέπει να λάβετε το Auth Token στην εφαρμογή Blynk.

char auth = "Auth_Token_Here";

// Τα διαπιστευτήριά σας WiFi.

char ssid = "Wifi_Network_Here"; char pass = "Wifi_Password_Here";

Χρονοδιακόπτης BlynkTimer.

// Αυτή η λειτουργία αποστέλλει τον χρόνο αύξησης του Arduino κάθε δευτερόλεπτο στο Virtual Pin (5).

// Στην εφαρμογή, η συχνότητα ανάγνωσης του Widget πρέπει να οριστεί σε PUSH. Αυτό σημαίνει // ότι ορίζετε τη συχνότητα αποστολής δεδομένων στην εφαρμογή Blynk.

void Αισθητήρες () // κύρια λειτουργία ανάγνωσης αισθητήρων και ώθηση στο blynk

{output_value = analogRead (ground_sensor); // Διαβάστε το αναλογικό σήμα από τον αισθητήρα χώματος και ορίστε ως έξοδο_τιμής // Χάρτης output_vlaue από min, μέγιστες τιμές έως 100, 0 και περιορισμός μεταξύ 0, 100 // Χρησιμοποιήστε δείγμα κώδικα και σειριακή οθόνη για να βρείτε min και μέγιστες τιμές για τον μεμονωμένο αισθητήρα και τον τύπο του εδάφους για καλύτερη βαθμονόμηση επίπεδο υγρασίας = περιορισμός (χάρτης (τιμή_εξόδου, 1000, 4095, 100, 0), 0, 100) · float h = dht.readHumidity (); // Διαβάστε την υγρασία float t = dht.readTemperature (); // Διαβάστε τη θερμοκρασία ως Κελσίου (η προεπιλογή) επιπλέει f = dht.readTemperature (true); // Διαβάστε τη θερμοκρασία ως Φαρενάιτ (isFahrenheit = true) // Υπολογίστε τον δείκτη θερμότητας σε Φαρενάιτ (προεπιλογή) float hif = dht.computeHeatIndex (f, h); // Ελέγξτε αν απέτυχε η ανάγνωση και βγείτε νωρίς (για να προσπαθήσετε ξανά). if (isnan (h) || isnan (t) || isnan (f)) {Serial.println (F ("Απέτυχε η ανάγνωση από τον αισθητήρα DHT!")); ΕΠΙΣΤΡΟΦΗ; } // Αυτό συνδέει τα vales με εικονικές ακίδες που ορίζονται στα widget στην εφαρμογή Blynk Blynk.virtualWrite (V5, επίπεδο υγρασίας); // Αποστολή επιπέδου υγρασίας στον εικονικό πείρο 5 Blynk.virtualWrite (V6, f); // Αποστολή θερμοκρασίας στο εικονικό pin 6 Blynk.virtualWrite (V7, h); // Αποστολή υγρασίας στον εικονικό pin 7 Blynk.virtualWrite (V8, hif); // Αποστολή ευρετηρίου θερμότητας στον εικονικό pin 8

αν (ειδοποιήθηκε == 0)

{εάν (επίπεδο υγρασίας <= min_moisture) // Εάν το επίπεδο υγρασίας είναι ίσο ή χαμηλότερο από την τιμή {Blynk.email ("Email_Here", "Plant Monitor", "Water Plant!"); // Αποστολή email στο εργοστάσιο ύδρευσης} καθυστέρηση (15000); // Τα μηνύματα ηλεκτρονικού ταχυδρομείου Blynk πρέπει να απέχουν 15 δευτερόλεπτα. Καθυστέρηση 15000 χιλιοστών του δευτερολέπτου εάν (f <= min_temperature) // Εάν η θερμοκρασία είναι ίση ή χαμηλότερη από την τιμή {Blynk.email ("Email_Here", "Plant Monitor", "Temperature Low!"); // Στείλτε email ότι η θερμοκρασία είναι χαμηλή

}

καθυστέρηση (15000)? // Τα μηνύματα ηλεκτρονικού ταχυδρομείου Blynk πρέπει να απέχουν 15 δευτερόλεπτα. Καθυστέρηση 15000 χιλιοστών του δευτερολέπτου εάν (h <= min_hidity) // Εάν η υγρασία είναι ίση ή χαμηλότερη από την τιμή {Blynk.email ("Emial_Here", "Plant Monitor", "Humidity Low!"); // Στείλτε email ότι η υγρασία είναι χαμηλή} ειδοποιήθηκε = 1; timer.setTimeout (timedelay *5, resetNotified); // πολλαπλασιάστε την χρονική καθυστέρηση κατά τον αριθμό των λεπτών μεταξύ των επαναλαμβανόμενων μηνυμάτων προειδοποίησης}}

void resetNotified () // συνάρτηση που καλείται για επαναφορά της συχνότητας email

{κοινοποιήθηκε = 0; }

void setup ()

{Serial.begin (9600); // Κονσόλα εντοπισμού σφαλμάτων Blynk.begin (auth, ssid, pass); // σύνδεση στο χρονοδιακόπτη blynk.setInterval (χρονική καθυστέρηση, Αισθητήρες); // Ρυθμίστε μια λειτουργία που θα καλείται κάθε λεπτό ή τι χρονική καθυστέρηση έχει οριστεί σε dht.begin (); // εκτελέστε αισθητήρα DHT}

// Ο κενός βρόχος πρέπει να περιέχει μόνο το blynk.run και το χρονόμετρο

void loop () {Blynk.run (); // Εκτέλεση blynk timer.run (); // Ξεκινά το BlynkTimer}

Συνιστάται: