+21622886281
Agriculture Arduino ESP8266 Internet des objets Projet

IoT appliqué dans l’Agriculture avec la carte Arduino

Les objets connectés connaissent des applications dans de nombreux secteurs, et l’agriculture est un de ceux qui bénéficient le plus des avantages de l’internet des objets.

But de ce projet:

Ce projet décrit l’application d’IoT (Internet des Objets) dans l’agriculture. Dans ce milieu on prend les mesures l’humidité du sol d’une plante.
La surveillance du paramètre autour de ce processus (informations fournies par le capteur du sol) est effectuée à l’aide des outils et ressources open source tels que Arduino et ThingSpeak.
On a fait lecture des données du capteur en temps réel sur internet à travers une page web et aussi sur les graphes dans ThingSpeak.

Ce travail est effectué à l’aide d’un microcontrôleur (Arduino) relié à un module ESP8266  qui permettra d’envoyer toutes les
informations par WIFI concernant l’environnement de notre plante, vers ThingSpeak.

Composants nécessaires

  • une carte Arduino
  • un capteur de l’humdité du sol
  • un module wifi ESP8266
  • des fils de connexion
  • une plaque d’essai
  • un réseau wifi

Montage

Pour réaliser le montage, on peut connecter:

pour le capteur du sol :

  • la broche S à la broche A0 de la carte Arduino
  • la broche (+) à la broche 3.3V de la carte Arduino
  • la broche (-)  à la broche GND de la carte Arduino

Pour le module ESP8266, on connecte:

  • La broche RX à la broche 4 de la carte Arduino
  • La broche TX à la broche 3 de la carte Arduino
  • La broche GND au GND de la carte Arduino
  • Les deux broches 3V3 et EN à la broche 5V du module de l’alimentation
  • La broche RST à la broche 8 de la carte Arduino

Les valeurs de l'humidité du sol envoyées par la carte Arduino au site thinkspeak.com

Programme:

#include <Adafruit_ESP8266.h>
#include <SoftwareSerial.h>

#define ESP_RX 3
#define ESP_TX 4
#define ESP_RST 8
SoftwareSerial softser(ESP_RX, ESP_TX);

// Must declare output stream before Adafruit_ESP8266 constructor; can be
// a SoftwareSerial stream, or Serial/Serial1/etc. for UART.
Adafruit_ESP8266 wifi(&softser, &Serial, ESP_RST);
// Must call begin() on the stream(s) before using Adafruit_ESP8266 object.

#define ESP_SSID “**************” // Your network name here
#define ESP_PASS “*************” // Your network password here

String API = “*******************”; // CHANGE ME
#define HOST “api.thingspeak.com” // Find/Google your email provider’s SMTP outgoing server name for unencrypted email

#define PORT 80 // Find/Google your email provider’s SMTP outgoing port for unencrypted email
String field = “field1”;
int count = 0; // we’ll use this int to keep track of which command we need to send next
bool send_flag = false; // we’ll use this flag to know when to send the email commands
#define SOLPIN 5 // // pour le capteur de l’humidité du sol
int analogVal;

void setup() {
char buffer[50];

// This might work with other firmware versions (no guarantees)
// by providing a string to ID the tail end of the boot message:

// comment/replace this if you are using something other than v 0.9.2.4!
wifi.setBootMarker(F(“Version:0.9.2.4]\r\n\r\nready”));

softser.begin(9600); // Soft serial connection to ESP8266
Serial.begin(57600); while(!Serial); // UART serial debug

// Test if module is ready
Serial.print(F(“Hard reset…”));
if(!wifi.hardReset()) {
Serial.println(F(“no response from module.”));
for(;;);
}
Serial.println(F(“OK.”));

Serial.print(F(“Soft reset…”));
if(!wifi.softReset()) {
Serial.println(F(“no response from module.”));
for(;;);
}
Serial.println(F(“OK.”));

Serial.print(F(“Checking firmware version…”));
wifi.println(F(“AT+GMR”));
if(wifi.readLine(buffer, sizeof(buffer))) {
Serial.println(buffer);
wifi.find(); // Discard the ‘OK’ that follows
} else {
Serial.println(F(“error”));
}

Serial.print(F(“Connecting to WiFi…”));
if(wifi.connectToAP(F(ESP_SSID), F(ESP_PASS))) {

// IP addr check isn’t part of library yet, but
// we can manually request and place in a string.
Serial.print(F(“OK\nChecking IP addr…”));
wifi.println(F(“AT+CIFSR”));
if(wifi.readLine(buffer, sizeof(buffer))) {
Serial.println(buffer);
wifi.find(); // Discard the ‘OK’ that follows

Serial.print(F(“Connecting to host…”));

Serial.print(“Connected..”);
wifi.println(“AT+CIPMUX=0”); // configure for single connection,
//we should only be connected to one SMTP server
wifi.find();
wifi.closeTCP(); // close any open TCP connections
wifi.find();
Serial.println(“Type \”send it\” to send an email”);

} else { // IP addr check failed
Serial.println(F(“error”));
}
} else { // WiFi connection failed
Serial.println(F(“FAIL”));
}
}

void loop() {
send_flag = true;
if(send_flag){ // the send_flat is set, this means we are or need to start sending SMTP commands
if(do_next()){ // execute the next command
count++; // increment the count so that the next command will be executed next time.
}
}
}

boolean do_next()
{
switch(count){
case 0:
Serial.println(“Connecting…”);
return wifi.connectTCP(F(HOST), PORT);
break;
case 1:
analogVal = analogRead(SOLPIN); // lecture de l’humdité du sol
char charVal2[100];
char charVal1[100]=”GET /update?api_key=KM7MYIGX8G2X6GA0&field1=”;
itoa(analogVal, charVal2, 10);
//dtostrf(analogVal, 4, 2, charVal2);
strcat(charVal1,charVal2);
return wifi.cipSend(charVal1); // Envoi des données au site Thinkspeak
delay(60000);
}
}




0 commentaire


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Scroll to Top