Turinys:

Dirvožemio drėgmės turinio matavimas naudojant Esp32 ir „Thingsio.ai“platformą: 6 žingsniai
Dirvožemio drėgmės turinio matavimas naudojant Esp32 ir „Thingsio.ai“platformą: 6 žingsniai

Video: Dirvožemio drėgmės turinio matavimas naudojant Esp32 ir „Thingsio.ai“platformą: 6 žingsniai

Video: Dirvožemio drėgmės turinio matavimas naudojant Esp32 ir „Thingsio.ai“platformą: 6 žingsniai
Video: Geroji ūkininkavimo praktika paviršinio vandens taršos prevencijai 2024, Lapkritis
Anonim
Dirvožemio drėgmės turinio matavimas naudojant Esp32 ir „Thingsio.ai“platformą
Dirvožemio drėgmės turinio matavimas naudojant Esp32 ir „Thingsio.ai“platformą

Šioje pamokoje aš paaiškinsiu, kaip skaityti drėgmės kiekį dirvožemyje naudojant esp32, o tada siunčiant vertes į thingsio.ai IoT debesų platformą.

1 žingsnis: KOMPONENTAI

KOMPONENTAI
KOMPONENTAI
KOMPONENTAI
KOMPONENTAI

Techninės įrangos komponentai:

1. esp32 kūrimo lenta

2. Dirvožemio jutiklis

3. Džemperio laidai

Programinė įranga:

1. „Arduino IDE“

2. Thingsio.ai

2 žingsnis: JUNGTYS

JUNGTYS
JUNGTYS

Dirvožemio drėgmės jutiklis ---------------------- esp32 Board

VCC --------------------------------------- 3V3

GND -------------------------------------- GND

A0 ---------------------------------------- VP

3 žingsnis: KODAVIMAS:

#įtraukti

#įtraukti

#įtraukti

int skaičius = 0, i, m, j, k;

int t;

int sensor_pin = A0;

int vertė;

//////////////////////////////////////////////////////// VISI DEKLARACIJOS

CLOUD //////////////////////////////

const char* host = "api.thingsai.io"; // ARBA šeimininkas =

devapi2.thethingscloud.com

const char* post_url = "/devices/deviceData"; // ARBA

/api/v2/thingscloud2/_table/data_ac

const char* laiko_serveris =

„baas.thethingscloud.com“; // tai yra laiko žymos konvertavimas

const int httpPort = 80;

const int httpsPort = 443;

const char* serveris =

"api.thingsai.io"; // Serverio URL

char laiko žyma [10];

WiFiMulti WiFiMulti;

// Naudokite „WiFiClient“klasę, kad sukurtumėte TCP ryšius

„WiFiClient“klientas;

////////////////////////////////////////////////////// TIMESTAMP

APSKAIČIAVIMO funkcija ///////////////////////////////////////

int GiveMeTimestamp ()

{

nepasirašytas ilgai

skirtasis laikas = milis ();

// „WiFiClient“klientas;

tuo tarpu

(client.available () == 0)

{

jei (milis () -

skirtasis laikas> 50000)

{

client.stop ();

grįžti 0;

}

}

o (client.available ())

{

Eilutės eilutė =

client.readStringUntil ('\ r'); // indexOf () yra funkcija ieškoti smthng, ji grąžina -1, jei nerasta

int pos =

line.indexOf ("\" laiko žyma / ""); // ieškokite "\" laiko žymos / "" nuo atsakymo pradžios ir nukopijuokite visus duomenis po to, tai bus jūsų laiko žyma

jei (poz> =

0)

{

int j = 0;(j = 0; j <10; j ++)

{laiko žyma [j] = eilutė [pos + 12 + j];

}

}

}

}

////////////////////////////////////////////////////////////////////////////////////////////////////////

negaliojanti sąranka ()

{Serial.begin (115200);Serial.println („Skaitymas iš jutiklio …“);

vėlavimas (2000 m.);

// Pradedame nuo

prisijungimas prie „WiFi“tinklo

„WiFiMulti.addAP“(„Wifi_name“, „Wifi_Password“);

Serial.println ();

Serial.println ();Serial.print („Palaukite„ WiFi “…“);while (WiFiMulti.run ()! = WL_CONNECTED) {Serijinis atspaudas (".");

vėlavimas (500);

}Serial.println ("");Serial.println („WiFi prijungtas“);

Serial.println ( IP

adresas: );Serial.println (WiFi.localIP ());

vėlavimas (500);

}

tuštumos kilpa ()

{

{

////////////////////////

GAUTI ATSAKYMĄ ///////////////////////

vertė =

analogRead (sensor_pin);

// vertė =

žemėlapis (vertė, 550, 0, 0, 100);Serial.print („Mositure:“);Serial.print (vertė);Serial.println ("%");vėlavimas (1000);Serial.print ("prisijungimas prie");Serial.println (priegloba); // apibrėžta aukštyn kojomis:- šeimininkas = devapi2.thethingscloud.com arba 139.59.26.117

////////////////////////

/////////////////////////

Serial.println ("viduje gauti laiko žymę / n");

jei

(! client.connect (time_server, {

grįžti;

//*-*-*-*-*-*-*-*-*-*

}client.println ("GET/api/laiko žymė HTTP/1.1"); // Ką daro ši dalis, aš nesupratauclient.println ("Priimančioji: baas.thethingscloud.com");client.println („Cache-Control: no-cache“);client.println („Paštininkas-žetonas: ea3c18c6-09ba-d049-ccf3-369a22a284b8“);

klientas.println ();

GiveMeTimestamp ();

// jis iškvies funkciją, kuri iš serverio gaus laiko žymės atsakymą

Serial.println ("gauta laiko žyma");

Serial.println (laiko žyma);Serial.println ("viduje ThingsCloudPost");

Eilutė PostValue =

"{" device_id / ": 61121695918, \" slave_id / ": 2";

PostValue =

PostValue + ", \" dts / ":" + laiko žyma;

PostValue =

PostValue +", \" data / ": {" MOIST / ":" +value +"}" +"}";Serial.println (PostValue);

/ * sukurti „WiFiClientSecure“egzempliorių */

„WiFiClientSecure“klientas;Serial.println („Prisijunkite prie serverio per 443 prievadą“);

jei

(! client.connect (serveris, 443)) {Serial.println ("Nepavyko prisijungti!");

} Kitas {Serial.println ("Prisijungta prie serverio!");

/* sukurti

prašymas */client.println ("POST/devices/deviceData HTTP/1.1");client.println ("Priegloba: api.thingsai.io");//client.println("Connection: close ");client.println ("Turinio tipas: programa/json");

client.println ( cache-control:

be talpyklos “);client.println ("Autorizacija: nešėjas eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. IjVhMzBkZDFkN2QwYjNhNGQzODkwYzQ4OSI.kaY6OMj5cYlWNqs22k2kvkclient.print ("Turinio ilgis:");

client.println (PostValue.length ());klientas.println ();client.println („PostValue“);

//////////////////////////////////////////////// Skelbdami duomenis į

debesis baigtas ir dabar gaukite atsakymo formą iš debesies serverio //////////////////

Serial.print ( Laukiama atsakymo

);

tuo tarpu

(! client.available ()) {

vėlavimas (50);

//Serijinis atspaudas (".");

}

/* jei duomenys yra

galima gauti ir spausdinti į terminalą */

tuo tarpu

(client.available ()) {

char c = client.read ();Serial.write (c);

}

/* jei

serveris atjungtas, sustabdykite klientą */

jei

(! client.connected ()) {Serial.println ();Serial.println („Serveris atjungtas“);

client.stop ();

}

}

Serial.println ( ////////////////////// PABAIGA

///////////////////// );

vėlavimas (3000);

}

}

4 žingsnis: IŠVADA:

IŠVADA
IŠVADA

Rodomas kodo išvestis.

5 žingsnis: GRAFIKA

GRAFIKA
GRAFIKA

Tai grafinis reikšmių, nuskaitytų iš jutiklio, atvaizdavimas.

6 žingsnis:

Čia yra visas projekto vaizdo įrašas. Ačiū.

Rekomenduojamas: