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
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ū.