Sommario:

Misurazione del contenuto di umidità del suolo utilizzando la piattaforma Esp32 e Thingsio.ai: 6 passaggi
Misurazione del contenuto di umidità del suolo utilizzando la piattaforma Esp32 e Thingsio.ai: 6 passaggi

Video: Misurazione del contenuto di umidità del suolo utilizzando la piattaforma Esp32 e Thingsio.ai: 6 passaggi

Video: Misurazione del contenuto di umidità del suolo utilizzando la piattaforma Esp32 e Thingsio.ai: 6 passaggi
Video: Sensori di Umidità del Terreno connessi a Internet con ESP32 - Irrigazione Automatica FAI da TE 2024, Giugno
Anonim
Misurazione del contenuto di umidità del suolo utilizzando la piattaforma Esp32 e Thingsio.ai
Misurazione del contenuto di umidità del suolo utilizzando la piattaforma Esp32 e Thingsio.ai

In questo tutorial spiegherò la lettura del contenuto di umidità nel suolo utilizzando esp32 e quindi l'invio dei valori alla piattaforma cloud IoT thingsio.ai.

Fase 1: COMPONENTI

COMPONENTI
COMPONENTI
COMPONENTI
COMPONENTI

Componenti hardware:

1. scheda di sviluppo esp32

2. Sensore del suolo

3. Cavi del ponticello

Software:

1. Arduino IDE

2. Thingsio.ai

Fase 2: CONNESSIONI

CONNESSIONI
CONNESSIONI

Sensore di umidità del suolo -----------------------Scheda esp32

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

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

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

Fase 3: CODIFICA:

#includere

#includere

#includere

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

int t;

int pin_sensore = A0;

int valore;

//////////////////////////////////////// TUTTE LE DICHIARAZIONI

per CLOUD //////////////////////////////

const char* host = "api.thingsai.io"; // OPPURE host =

devapi2.thethingscloud.com

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

/api/v2/thingscloud2/_table/data_ac

const char* time_server =

"baas.thethingscloud.com"; //questo serve per convertire il timestamp

const int httpPort = 80;

const int httpsPort = 443;

const char* server =

"api.thingsai.io"; // URL del server

char timestamp[10];

WiFi Multi WiFi Multi;

// Usa la classe WiFiClient per creare connessioni TCP

client WiFi Client;

////////////////////////////////////// ORARIO

Funzione CALCOLO//////////////////////////////////////

int GiveMeTimestamp()

{

unsigned lungo

timeout = millis();

//client WiFiClient;

mentre

(cliente.disponibile() == 0)

{

if (milli() -

timeout > 50000)

{

cliente.stop();

restituisce 0;

}

}

mentre (client.disponibile())

{

Linea di stringa =

client.readStringUntil('\r'); //indexOf() è una funzione per cercare smthng, restituisce -1 se non trovata

int pos =

line.indexOf("\"timestamp\""); //cerca "\"timestamp\"" dall'inizio della risposta ottenuta e copia tutti i dati dopo, sarà il tuo timestamp

if (pos >=

0)

{

intj = 0;for(j=0;j<10;j++)

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

}

}

}

}

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

configurazione nulla()

{Serial.begin(115200);Serial.println("Lettura dal sensore…");

ritardo (2000);

// Iniziamo da

connessione a una rete WiFi

WiFiMulti.addAP("Nome_Wifi", "Wifi_Password");

Serial.println();

Serial.println();Serial.print("Attendi WiFi… ");while(WiFiMulti.run() != WL_CONNECTED) {Serial.print(".");

ritardo (500);

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

Serial.println( IP

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

ritardo (500);

}

ciclo vuoto()

{

{

/////////////////////////////////////// INVIA LA DOMANDA E

RICEVERE LA RISPOSTA///////////////////////

valore=

analogRead(sensor_pin);

// valore =

mappa(valore, 550, 0, 0, 100);Serial.print("Mostra: ");Serial.print(valore);Serial.println("%");ritardo(1000);Serial.print("connessione a ");Serial.println(host); // rialzo definito: - host = devapi2.thethingscloud.com o 139.59.26.117

//////////////////////////////////// SNIPPET DI CODICE TIMESTAMP

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

Serial.println("inside ottieni timestamp\n");

Se

(!client.connect(time_server, {

Restituzione;

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

}client.println("OTTIENI /api/timestamp HTTP/1.1"); //Cosa sta facendo questa parte, non l'ho capitoclient.println("Host: baas.thethingscloud.com");client.println("Cache-Control: no-cache");client.println("Token postino: ea3c18c6-09ba-d049-ccf3-369a22a284b8");

client.println();

GiveMeTimestamp();

// chiamerà la funzione che otterrà la risposta del timestamp dal server

Serial.println("timestamp ricevuto");

Serial.println(timestamp);Serial.println("dentro ThingsCloudPost");

Stringa PostValue =

"{"id_dispositivo\": 61121695918, \"id_slave\": 2";

PostValue =

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

PostValue =

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

/* crea un'istanza di WiFiClientSecure */

client WiFiClientSecure;Serial.println("Connetti al server tramite la porta 443");

Se

(!client.connect(server, 443)){Serial.println("Connessione fallita!");

} altro {Serial.println("Connesso al server!");

/* crea

richiesta */client.println("POST /devices/deviceData HTTP/1.1");client.println("Host: api.thingsai.io");//client.println("Connessione: chiudi");client.println("Tipo di contenuto: application/json");

client.println( controllo cache:

senza cache");client.println("Autorizzazione: Portatore eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. IjVhMzBkZDFkN2QwYjNhNGQzODkwYzQ4OSI.kaY6OMj5cYlkXNqC2PNTy);client.print("Lunghezza contenuto: ");

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

/////////////////////////////////INSERIRE i dati sul

cloud è fatto e ora ottieni il modulo di risposta server cloud//////////////////

Serial.print( In attesa di risposta

);

mentre

(!client.disponibile()){

ritardo(50);

//Serial.print(".");

}

/* se i dati sono

disponibile quindi ricevi e stampa su Terminale */

mentre

(cliente.disponibile()) {

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

}

/* se la

server disconnesso, arresta il client */

Se

(!client.connected()) {Serial.println();Serial.println("Server disconnesso");

cliente.stop();

}

}

Serial.println( ////////////////////// FINE

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

ritardo (3000);

}

}

Fase 4: USCITA:

PRODUZIONE
PRODUZIONE

Viene visualizzato l'output del codice.

Passaggio 5: GRAFICO

GRAFICO
GRAFICO

Questa è la rappresentazione grafica dei valori che vengono letti dal sensore.

Passaggio 6:

Ecco il video completo del progetto. Grazie.

Consigliato: