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

Μέτρηση περιεχομένου υγρασίας εδάφους με χρήση του Esp32 και της πλατφόρμας Thingsio.ai: 6 βήματα
Μέτρηση περιεχομένου υγρασίας εδάφους με χρήση του Esp32 και της πλατφόρμας Thingsio.ai: 6 βήματα

Βίντεο: Μέτρηση περιεχομένου υγρασίας εδάφους με χρήση του Esp32 και της πλατφόρμας Thingsio.ai: 6 βήματα

Βίντεο: Μέτρηση περιεχομένου υγρασίας εδάφους με χρήση του Esp32 και της πλατφόρμας Thingsio.ai: 6 βήματα
Βίντεο: Ευφυής Άρδευση με χρήση αισθητήρων υγρασίας 2024, Νοέμβριος
Anonim
Μέτρηση περιεχομένου υγρασίας εδάφους με χρήση της πλατφόρμας Esp32 και Thingsio.ai
Μέτρηση περιεχομένου υγρασίας εδάφους με χρήση της πλατφόρμας Esp32 και Thingsio.ai

Σε αυτό το σεμινάριο θα εξηγήσω σχετικά με την ανάγνωση της περιεκτικότητας σε υγρασία στο έδαφος χρησιμοποιώντας το 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:

Ακολουθεί το πλήρες βίντεο του έργου. Σας ευχαριστώ.

Συνιστάται: