Table des matières:

Mesure de la teneur en humidité du sol à l'aide de la plate-forme Esp32 et Thingsio.ai : 6 étapes
Mesure de la teneur en humidité du sol à l'aide de la plate-forme Esp32 et Thingsio.ai : 6 étapes

Vidéo: Mesure de la teneur en humidité du sol à l'aide de la plate-forme Esp32 et Thingsio.ai : 6 étapes

Vidéo: Mesure de la teneur en humidité du sol à l'aide de la plate-forme Esp32 et Thingsio.ai : 6 étapes
Vidéo: tp1 teneur en eau dans le sol 2024, Juin
Anonim
Mesure de la teneur en humidité du sol à l'aide de la plate-forme Esp32 et Thingsio.ai
Mesure de la teneur en humidité du sol à l'aide de la plate-forme Esp32 et Thingsio.ai

Dans ce didacticiel, je vais expliquer la lecture de la teneur en humidité du sol en utilisant esp32, puis en envoyant les valeurs à la plate-forme cloud Thingsio.ai IoT.

Étape 1: COMPOSANTS

COMPOSANTS
COMPOSANTS
COMPOSANTS
COMPOSANTS

Composants matériels:

1. carte de développement esp32

2. Capteur de sol

3. fils de cavalier

Logiciel:

1. IDE Arduino

2. Thingsio.ai

Étape 2: CONNEXIONS

CONNEXIONS
CONNEXIONS

Capteur d'humidité du sol ------------carte esp32

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

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

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

Étape 3: CODAGE:

#comprendre

#comprendre

#comprendre

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

entier t;

int sensor_pin = A0;

valeur entière;

///////////////////////////////////// TOUTES LES DECLARATIONS

pour NUAGE /////////////////////////////

const char* hôte = "api.thingsai.io"; // OU hôte =

devapi2.thethingscloud.com

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

/api/v2/thingscloud2/_table/data_ac

const char* serveur_heure =

"baas.thethingscloud.com"; // c'est pour convertir l'horodatage

const int httpPort = 80;

const int httpsPort = 443;

const char* serveur =

"api.thingsai.io"; // URL du serveur

horodatage du char[10];

WiFiMulti WiFiMulti;

// Utiliser la classe WiFiClient pour créer des connexions TCP

Client WiFiClient;

//////////////////////////////////// HORAIRE

Fonction CALCUL /////////////////////////////////////

int GiveMeTimestamp()

{

long non signé

délai d'attente = millis();

// Client WiFiClient;

tandis que

(client.disponible() == 0)

{

si (millis() -

délai d'attente > 50000)

{

client.stop();

renvoie 0;

}

}

tandis que (client.available())

{

Ligne de chaîne =

client.readStringUntil('\r'); //indexOf() est une fonction pour rechercher smthng, il renvoie -1 s'il n'est pas trouvé

position int =

line.indexOf("\"horodatage\""); //recherchez "\"timestamp\"" à partir du début de la réponse et copiez toutes les données après cela, ce sera votre horodatage

si (pos >=

0)

{

entier j = 0;pour(j=0;j<10;j++)

{horodatage[j] = ligne[pos + 12 + j];

}

}

}

}

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

void setup()

{Serial.begin(115200);Serial.println("Lecture depuis le capteur …");

retard (2000);

// On commence par

connexion à un réseau Wi-Fi

WiFiMulti.addAP("Nom_Wifi", "Mot de passe WiFi");

Serial.println();

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

retard (500);

}Serial.println("");Serial.println("WiFi connecté");

Serial.println( IP

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

retard (500);

}

boucle vide()

{

{

//////////////////////////////////// ENVOYER LA REQUÊTE ET

RECEVOIR LA RÉPONSE//////////////////////

valeur=

analogRead(sensor_pin);

// valeur =

map(valeur, 550, 0, 0, 100);Serial.print("Mositure: ");Serial.print(valeur);Serial.println("%");retard(1000);Serial.print("connexion à ");Serial.println(hôte); // à l'envers défini: - hôte = devapi2.thethingscloud.com ou 139.59.26.117

/////////////////////////////////// extrait de code d'horodatage

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

Serial.println("à l'intérieur obtenir l'horodatage\n");

si

(!client.connect(time_server, {

revenir;

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

}client.println("GET /api/timestamp HTTP/1.1"); //Qu'est-ce que cette partie fait, je n'ai pas comprisclient.println("Hôte: baas.thethingscloud.com");client.println("Cache-Control: no-cache");client.println("Facteur-Jeton: ea3c18c6-09ba-d049-ccf3-369a22a284b8");

client.println();

GiveMeTimestamp();

//il appellera la fonction qui obtiendra la réponse d'horodatage du serveur

Serial.println("horodatage reçu");

Serial.println(horodatage);Serial.println("à l'intérieur de ThingsCloudPost");

Chaîne PostValue =

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

PostValue =

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

PostValue =

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

/* créer une instance de WiFiClientSecure */

Client WiFiClientSecure;Serial.println("Connectez-vous au serveur via le port 443");

si

(!client.connect(serveur, 443)){Serial.println("La connexion a échoué !");

} autre {Serial.println("Connecté au serveur !");

/* créer

demander */client.println("POST /devices/deviceData HTTP/1.1");client.println("Hôte: api.thingsai.io");//client.println("Connexion: fermer");client.println("Type de contenu: application/json");

client.println( contrôle de cache:

pas de cache");client.println("Autorisation: Porteur eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. IjVhMzBkZDFkN2QwYjNhNGQzODkwYzQ4OSI.kaY6OMj5cYlWNqC2PNTyfV6);client.print("Contenu-Longueur: ");

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

////////////////////////////////PUBLICATION des données sur le

cloud est terminé et obtenez maintenant le formulaire de réponse serveur cloud /////////////////

Serial.print( En attente de réponse

);

tandis que

(!client.available()){

retard (50);

//Serial.print(".");

}

/* si les données sont

disponible puis recevoir et imprimer au Terminal */

tandis que

(client.disponible()) {

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

}

/* si la

serveur déconnecté, arrêter le client */

si

(!client.connected()) {Serial.println();Serial.println("Serveur déconnecté");

client.stop();

}

}

Serial.println( ///////////////////// LA FIN

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

retard(3000);

}

}

Étape 4: SORTIE:

SORTIR
SORTIR

La sortie du code est affichée.

Étape 5: GRAPHIQUE

GRAPHIQUE
GRAPHIQUE

Il s'agit de la représentation graphique des valeurs qui sont lues à partir du capteur.

Étape 6:

Voici la vidéo complète du projet. Merci.

Conseillé: