Cuprins:

Măsurarea conținutului de umiditate a solului utilizând platforma Esp32 și Thingsio.ai: 6 pași
Măsurarea conținutului de umiditate a solului utilizând platforma Esp32 și Thingsio.ai: 6 pași

Video: Măsurarea conținutului de umiditate a solului utilizând platforma Esp32 și Thingsio.ai: 6 pași

Video: Măsurarea conținutului de umiditate a solului utilizând platforma Esp32 și Thingsio.ai: 6 pași
Video: Laravel API - conectează Arduino și IoT la Web - introducere [1] 2024, Noiembrie
Anonim
Măsurarea conținutului de umiditate a solului utilizând platforma Esp32 și Thingsio.ai
Măsurarea conținutului de umiditate a solului utilizând platforma Esp32 și Thingsio.ai

În acest tutorial voi explica despre citirea conținutului de umiditate din sol folosind esp32 și apoi trimiterea valorilor în platforma cloud IoT Thingsio.

Pasul 1: COMPONENTE

COMPONENTE
COMPONENTE
COMPONENTE
COMPONENTE

Componente hardware:

1. placa de dezvoltare esp32

2. Senzor de sol

3. Sârme de jumper

Software:

1. IDE Arduino

2. Thingsio.ai

Pasul 2: CONEXIUNI

CONEXIUNI
CONEXIUNI

Senzor de umiditate a solului ---------------------- Esp32 Board

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

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

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

Pasul 3: CODIFICARE:

#include

#include

#include

int count = 0, i, m, j, k;

int t;

int sensor_pin = A0;

valoarea int;

////////////////////////////////////////// TOATE DECLARAȚIILE

pentru CLOUD ////////////////////////////////

const char * host = "api.thingsai.io"; // SAU gazdă =

devapi2.thethingscloud.com

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

/ api / v2 / thingscloud2 / _table / data_ac

const char * time_server =

„baas.thethingscloud.com”; // aceasta este pentru a converti marca de timp

const int httpPort = 80;

const int httpsPort = 443;

const char * server =

"api.thingsai.io"; // Adresa URL a serverului

timestamp char [10];

WiFiMulti WiFiMulti;

// Utilizați clasa WiFiClient pentru a crea conexiuni TCP

Client WiFiClient;

/////////////////////////////////////// TIMESTAMP-UL

Funcția CALCUL // /////////////////////////////////////////

int GiveMeTimestamp ()

{

nesemnat mult

timeout = milis ();

// client WiFiClient;

in timp ce

(client.available () == 0)

{

if (milis () -

expirare> 50000)

{

client.stop ();

retur 0;

}

}

while (client.available ())

{

Linia șirului =

client.readStringUntil ('\ r'); // indexOf () este o funcție pentru a căuta smthng, returnează -1 dacă nu este găsit

int pos =

line.indexOf ("\" timestamp / ""); // căutați "\" timestamp / "" de la începutul răspunsului și copiați toate datele după aceea, va fi marca dvs. de timp

if (pos> =

0)

{

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

{timestamp [j] = line [pos + 12 + j];

}

}

}

}

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

configurare nulă ()

{Serial.begin (115200);Serial.println ("Citirea din senzor …");

întârziere (2000);

// Începem prin

conectarea la o rețea WiFi

WiFiMulti.addAP ("Wifi_name", „Parola_Wifi”);

Serial.println ();

Serial.println ();Serial.print („Așteptați WiFi …”);while (WiFiMulti.run ()! = WL_CONNECTED) {Serial.print (".");

întârziere (500);

}Serial.println ("");Serial.println ("WiFi conectat");

Serial.println ( IP

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

întârziere (500);

}

bucla nulă ()

{

{

///////////////////////////////////////// TRIMITE CERERE ȘI

PRIMI RĂSPUNSUL /////////////////////////

valoare =

analogRead (senzor_pin);

// valoare =

hartă (valoare, 550, 0, 0, 100);Serial.print ("Mositure:");Serial.print (valoare);Serial.println ("%");întârziere (1000);Serial.print („conectarea la”);Serial.println (gazdă); // definită invers: - host = devapi2.thethingscloud.com sau 139.59.26.117

/////////////////////////////////////// COD TIMESTAMP SNIPPET

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

Serial.println ("inside get timestamp / n");

dacă

(! client.connect (time_server, {

întoarcere;

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

}client.println ("GET / api / timestamp HTTP / 1.1"); // Ce face această parte, nu am primitclient.println („Gazdă: baas.thethingscloud.com”);client.println ("Cache-Control: no-cache");client.println ("Postman-Token: ea3c18c6-09ba-d049-ccf3-369a22a284b8");

client.println ();

GiveMeTimestamp ();

// va apela funcția care va primi răspunsul de timestamp de la server

Serial.println ("timestamp primit");

Serial.println (timestamp);Serial.println („în interiorul ThingsCloudPost”);

String PostValue =

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

PostValue =

PostValue + ", \" dts / ":" + timestamp;

PostValue =

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

/ * creați o instanță WiFiClientSecure * /

Client WiFiClientSecure;Serial.println („Conectare la server prin portul 443”);

dacă

(! client.connect (server, 443)) {Serial.println ("Conexiunea a eșuat!");

} altceva {Serial.println ("Conectat la server!");

/ * creați

cerere */client.println ("POST / dispozitive / dispozitivDate HTTP / 1.1");client.println ("Gazdă: api.thingsai.io");//client.println("Connection: close ");client.println ("Content-Type: application / json");

client.println ( cache-control:

no-cache );client.println („Autorizație: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. IjVhMzBkZDFkN2QwYjNhNGQzODkwYzQ4OSI.kaY6OMj5cYlWNqC2KT5XA7_K6_7)client.print („Lungime conținut:”);

client.println (PostValue.length ());client.println ();client.println (PostValue);

//////////////////////////////////// PUBLICAREA datelor pe

cloud este gata și acum obțineți formularul de răspuns server cloud //////////////////

Serial.print („Se așteaptă răspunsul

);

in timp ce

(! client.available ()) {

întârziere (50);

//Serial.print (".");

}

/ * dacă datele sunt

disponibil apoi primiți și tipăriți la Terminal * /

in timp ce

(client.available ()) {

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

}

/ * dacă

server deconectat, opriți clientul * /

dacă

(! client.connected ()) {Serial.println ();Serial.println („Server deconectat”);

client.stop ();

}

}

Serial.println ( //////////////////////// SFÂRȘITUL

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

întârziere (3000);

}

}

Pasul 4: IEȘIRE:

IEȘIRE
IEȘIRE

Se afișează ieșirea codului.

Pasul 5: GRAPH

GRAFIC
GRAFIC

Aceasta este reprezentarea grafică a valorilor care sunt citite de la senzor.

Pasul 6:

Iată videoclipul complet al proiectului. Mulțumesc.

Recomandat: