Table des matières:
- Étape 1: COMPOSANTS
- Étape 2: CONNEXIONS
- Étape 3: CODAGE:
- Étape 4: SORTIE:
- Étape 5: GRAPHIQUE
- Étape 6:
Vidéo: Mesure de la teneur en humidité du sol à l'aide de la plate-forme Esp32 et Thingsio.ai : 6 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:08
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 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
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:
La sortie du code est affichée.
Étape 5: 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é:
Automatiser une serre avec LoRa ! (Partie 1) -- Capteurs (température, humidité, humidité du sol) : 5 étapes
Automatiser une serre avec LoRa ! (Partie 1) || Capteurs (température, humidité, humidité du sol) : dans ce projet, je vais vous montrer comment j'ai automatisé une serre. Cela signifie que je vais vous montrer comment j'ai construit la serre et comment j'ai câblé l'électronique d'alimentation et d'automatisation. Je vais également vous montrer comment programmer une carte Arduino qui utilise L
Mesure de l'humidité à l'aide de HYT939 et de photons de particules : 4 étapes
Mesure de l'humidité à l'aide de HYT939 et de photons de particules : HYT939 est un capteur d'humidité numérique qui fonctionne sur le protocole de communication I2C. L'humidité est un paramètre essentiel lorsqu'il s'agit de systèmes médicaux et de laboratoires. Afin d'atteindre ces objectifs, nous avons donc essayé d'interfacer HYT939 avec raspberry pi. JE
Mesure de l'humidité et de la température à l'aide de HIH6130 et Arduino Nano : 4 étapes
Mesure d'humidité et de température à l'aide de HIH6130 et Arduino Nano : HIH6130 est un capteur d'humidité et de température avec sortie numérique. Ces capteurs offrent un niveau de précision de ±4% HR. Avec une stabilité à long terme de pointe, une véritable I2C numérique à compensation de température, une fiabilité de pointe, une efficacité énergétique
Mesure de l'humidité et de la température à l'aide de HTS221 et Arduino Nano : 4 étapes
Mesure de l'humidité et de la température à l'aide de HTS221 et Arduino Nano : HTS221 est un capteur numérique capacitif ultra compact pour l'humidité relative et la température. Il comprend un élément de détection et un circuit intégré spécifique à l'application de signal mixte (ASIC) pour fournir les informations de mesure via série numérique
Mesure de l'humidité à l'aide de HYT939 et Arduino Nano : 4 étapes
Mesure de l'humidité à l'aide de HYT939 et Arduino Nano : HYT939 est un capteur d'humidité numérique qui fonctionne sur le protocole de communication I2C. L'humidité est un paramètre essentiel lorsqu'il s'agit de systèmes médicaux et de laboratoires. Afin d'atteindre ces objectifs, nous avons donc essayé d'interfacer HYT939 avec arduino nano. JE