Πίνακας περιεχομένων:
Βίντεο: Μέτρηση περιεχομένου υγρασίας εδάφους με χρήση του Esp32 και της πλατφόρμας Thingsio.ai: 6 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:36
Σε αυτό το σεμινάριο θα εξηγήσω σχετικά με την ανάγνωση της περιεκτικότητας σε υγρασία στο έδαφος χρησιμοποιώντας το esp32 και στη συνέχεια την αποστολή των τιμών στην πλατφόρμα clouds thingsio.ai IoT.
Βήμα 1: ΣΥΣΤΑΤΙΚΑ
Συστατικά υλικού:
1. πίνακας ανάπτυξης esp32
2. Αισθητήρας εδάφους
3. Jumper Wires
Λογισμικό:
1. Arduino IDE
2. Thingsio.ai
Βήμα 2: ΣΥΝΔΕΣΕΙΣ
Αισθητήρας υγρασίας εδάφους ---------------------- πίνακας esp32
VCC ------------------------------------------ 3V3
GND -------------------------------------- GND
A0 ------------------------------------------ VP
Βήμα 3: ΚΩΔΙΚΟΠΟΙΗΣΗ:
#περιλαμβάνω
#περιλαμβάνω
#περιλαμβάνω
int count = 0, i, m, j, k;
int t?
int sensor_pin = A0;
int τιμή?
//////////////////////////////////////// Όλες οι δηλώσεις
για ΝΕΦΩΣ ///////////////////////////////
const char* host = "api.thingsai.io"; // host κεντρικός υπολογιστής =
devapi2.thethingscloud.com
const char* post_url = "/devices/deviceData"; // Ή
/api/v2/thingscloud2/_table/data_ac
const char* time_server =
"baas.thethingscloud.com"; // αυτό είναι για τη μετατροπή χρονικής σήμανσης
const int httpPort = 80;
const int httpsPort = 443;
const char* διακομιστής =
"api.thingsai.io"; // URL διακομιστή
timestamp char [10]?
WiFiMulti WiFiMulti;
// Χρησιμοποιήστε την κλάση WiFiClient για να δημιουργήσετε συνδέσεις TCP
Πελάτης WiFiClient.
/////////////////////////////////////// TIMESTAMP
Λειτουργία ΥΠΟΛΟΓΙΣΜΟΣ ///////////////////////////////////////
int GiveMeTimestamp ()
{
ανυπόγραφη μακρά
timeout = millis ();
// πελάτης WiFiClient.
ενώ
(client.available () == 0)
{
εάν (millis () -
χρονικό όριο> 50000)
{
client.stop ();
επιστροφή 0?
}
}
while (client.available ())
{
Γραμμή συμβολοσειράς =
client.readStringUntil ('\ r'); // indexOf () είναι μια λειτουργία αναζήτησης για smthng, επιστρέφει -1 αν δεν βρεθεί
int pos =
line.indexOf ("\" χρονική σήμανση / ""); // αναζήτηση για "\" timestamp / "" από την αρχή της απόκρισης και αντιγράψτε όλα τα δεδομένα μετά από αυτό, θα είναι η χρονική σήμανση σας
εάν (pos> =
0)
{
int j = 0;για (j = 0; j <10; j ++)
{χρονική σήμανση [j] = γραμμή [pos + 12 + j];
}
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
void setup ()
{Serial.begin (115200);Serial.println ("Ανάγνωση από τον αισθητήρα …");
καθυστέρηση (2000).
// Ξεκινάμε από
σύνδεση σε δίκτυο WiFi
WiFiMulti.addAP ("Wifi_name", "Wifi_Password");
Serial.println ();
Serial.println ();Serial.print ("Περιμένετε για WiFi …");ενώ (WiFiMulti.run ()! = WL_CONNECTED) {Serial.print (".");
καθυστέρηση (500)?
}Serial.println ("");Serial.println ("WiFi συνδεδεμένο");
Serial.println ( IP
διεύθυνση: );Serial.println (WiFi.localIP ());
καθυστέρηση (500)?
}
κενός βρόχος ()
{
{
/////////////////////////////////////// ΣΤΕΙΛΤΕ ΤΟ ΕΡΩΤΗΜΑ ΚΑΙ
ΛΑΒΕΤΕ ΤΗΝ ΑΠΑΝΤΗΣΗ ///////////////////////
τιμή =
analogRead (sensor_pin);
// τιμή =
χάρτης (τιμή, 550, 0, 0, 100);Serial.print ("Mositure:");Serial.print (τιμή);Serial.println ("%");καθυστέρηση (1000)?Serial.print ("σύνδεση με");Serial.println (οικοδεσπότης); // καθορισμένο ανάποδα:- host = devapi2.thethingscloud.com ή 139.59.26.117
/////////////////////////////////////// TIMESTAMP CODE SNIPPET
/////////////////////////
Serial.println ("εντός λήψης χρονικής σήμανσης / n");
αν
(! client.connect (διακομιστής χρόνου, {
ΕΠΙΣΤΡΟΦΗ;
//*-*-*-*-*-*-*-*-*-*
}client.println ("GET/api/timestamp HTTP/1.1"); // Τι κάνει αυτό το μέρος, δεν κατάλαβαclient.println ("Host: baas.thethingscloud.com");client.println ("Cache-Control: no-cache");client.println ("Postman-Token: ea3c18c6-09ba-d049-ccf3-369a22a284b8");
client.println ();
GiveMeTimestamp ();
// θα καλέσει τη συνάρτηση που θα λάβει την απόκριση χρονικής σήμανσης από τον διακομιστή
Serial.println ("λήξη χρονικής σήμανσης");
Serial.println (χρονική σήμανση);Serial.println ("μέσα στο ThingsCloudPost");
String PostValue =
"{" device_id / ": 61121695918, \" slave_id / ": 2";
PostValue =
PostValue + ", \" dts / ":" + χρονική σήμανση;
PostValue =
PostValue +", \" data / ": {" MOIST / ":" +value +"}" +"}";Serial.println (PostValue);
/ * δημιουργήστε ένα παράδειγμα WiFiClientSecure */
WiFiClientSecure πελάτης. Serial.println ("Σύνδεση με διακομιστή μέσω θύρας 443");
αν
(! client.connect (διακομιστής, 443)) {Serial.println ("Η σύνδεση απέτυχε!");
} αλλο {Serial.println ("Συνδέθηκε με διακομιστή!");
/* δημιουργία
αίτηση */client.println ("POST/devices/deviceData HTTP/1.1");client.println ("Host: api.thingsai.io");//client.println("Σύνδεση: κλείσιμο ");client.println ("Τύπος περιεχομένου: εφαρμογή/json");
client.println ( cache-control:
χωρίς κρυφή μνήμη ");client.println ("Άδεια: Ανώνυμες eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. IjVhMzBkZDFkN2QwYjNhNGQzODkwYzQ4OSI.kaY6OMj5cYlWNqC2PNTkXs9PKy6_m9tdW5AG7ajfVlY")?client.print ("Περιεχόμενο-Μήκος:");
client.println (PostValue.length ());client.println ();client.println (PostValue);
//////////////////////////////////// ΑΝΑΡΤΗΣΗ των δεδομένων στο
το cloud τελείωσε και τώρα λάβετε τη φόρμα απόκρισης cloud server ///////////////////
Serial.print ( Αναμονή απάντησης
);
ενώ
(! client.available ()) {
καθυστέρηση (50)?
//Serial.print (".");
}
/* εάν τα δεδομένα είναι
διαθέσιμο, στη συνέχεια λάβετε και εκτυπώστε στο τερματικό */
ενώ
(client.available ()) {
char c = client.read ();Serial.write (c);
}
/* εάν το
διακομιστής αποσυνδεδεμένος, διακόψτε τον πελάτη */
αν
(! client.connected ()) {Serial.println ();Serial.println ("Ο διακομιστής αποσυνδέθηκε");
client.stop ();
}
}
Serial.println ( ////////////////////// ΤΕΛΟΣ
///////////////////// );
καθυστέρηση (3000)?
}
}
Βήμα 4: ΕΞΟΔΟΣ:
Εμφανίζεται η έξοδος του κώδικα.
Βήμα 5: ΓΡΑΦΕΙΟ
Αυτή είναι η γραφική αναπαράσταση των τιμών που διαβάζονται από τον αισθητήρα.
Βήμα 6:
Ακολουθεί το πλήρες βίντεο του έργου. Σας ευχαριστώ.
Συνιστάται:
Μέτρηση της υγρασίας του εδάφους με Raspberry Pi 4: 4 βήματα
Μέτρηση της υγρασίας του εδάφους με Raspberry Pi 4: Ξέρετε πόσο συχνά ποτίζετε φυτά; Or ξεχύθηκαν φυτά και τα έχασαν. Για να το λύσω αυτό σκέφτηκα ότι θα ήταν πιο περιστασιακό αν μπορούσαμε να πάρουμε την αξία της περιεκτικότητας σε νερό στο έδαφος για να πάρουμε μια απόφαση για το κατάλληλο πότισμα των φυτών
Μέτρηση υγρασίας και θερμοκρασίας με χρήση HIH6130 και Arduino Nano: 4 βήματα
Μέτρηση υγρασίας και θερμοκρασίας με χρήση HIH6130 και Arduino Nano: Το HIH6130 είναι αισθητήρας υγρασίας και θερμοκρασίας με ψηφιακή έξοδο. Αυτοί οι αισθητήρες παρέχουν επίπεδο ακρίβειας ± 4% RH. Με κορυφαία μακροπρόθεσμη σταθερότητα στη βιομηχανία, πραγματικό ψηφιακό I2C με αντιστάθμιση θερμοκρασίας, κορυφαία αξιοπιστία στη βιομηχανία, ενεργειακή απόδοση
Μέτρηση υγρασίας και θερμοκρασίας με χρήση HTS221 και Arduino Nano: 4 βήματα
Μέτρηση υγρασίας και θερμοκρασίας με χρήση HTS221 και Arduino Nano: Το HTS221 είναι ένας εξαιρετικά συμπαγής χωρητικός ψηφιακός αισθητήρας για σχετική υγρασία και θερμοκρασία. Περιλαμβάνει ένα στοιχείο ανίχνευσης και ένα ολοκληρωμένο κύκλωμα ειδικής εφαρμογής μικτού σήματος (ASIC) για την παροχή των πληροφοριών μέτρησης μέσω ψηφιακού σειριακού
Μέτρηση υγρασίας και θερμοκρασίας με χρήση HTS221 και Raspberry Pi: 4 βήματα
Μέτρηση υγρασίας και θερμοκρασίας με χρήση HTS221 και Raspberry Pi: Το HTS221 είναι ένας εξαιρετικά συμπαγής χωρητικός ψηφιακός αισθητήρας για σχετική υγρασία και θερμοκρασία. Περιλαμβάνει ένα στοιχείο ανίχνευσης και ένα ολοκληρωμένο κύκλωμα ειδικής εφαρμογής μικτού σήματος (ASIC) για την παροχή των πληροφοριών μέτρησης μέσω ψηφιακού σειριακού
Μέτρηση της υγρασίας του εδάφους με Arduino: 6 βήματα
Μέτρηση υγρασίας εδάφους με Arduino: Σε αυτό το γρήγορο σεμινάριο, θα σας δείξω πώς να διαβάζετε έναν αισθητήρα υγρασίας εδάφους χρησιμοποιώντας arduino και να εκτυπώνετε το επίπεδο υγρασίας εδάφους στο Serdu Monitor Arduino. Μπορείτε να βρείτε την αρχική δημοσίευση που γράφτηκε από εμένα στη Σινχάλα, μέσω αυτού του συνδέσμου