Call Phone +8618073152920 Téléphone: +8618073152920
Call Phone +8618073152920
CONTACTEZ NOUS/ CONTACT US
Téléphone +8618073152920
Changsha Zoko Link Technology Co., Ltd.

Email:Arvin@niubol.com

WhatsApp:+8615388025079

Address:Chambre 102, District D, Parc industriel de Houhu, District de Yuelu, Ville de Changsha, Province du Hunan, Chine

Support technique

Code Arduino pour capteur d'humidité du sol

Temps:2024-06-29 21:07:28 Popularité:1799

Capteur d'humidité du sol 8 en 1 Rs485 pour Arduino

Dans ce guide, nous allons découvrir comment connecter un capteur d'humidité et de température du sol 8 en 1 à un Arduino via le protocole RS485. Cette configuration nous permettra de surveiller l'humidité et la température du sol, des paramètres cruciaux pour l'agriculture et le jardinage.

Les capteurs d'humidité du sol mesurent la teneur en eau volumétrique du sol. En comprenant les niveaux d'humidité, les agriculteurs et les jardiniers peuvent prendre des décisions éclairées en matière d'irrigation, garantissant ainsi une croissance optimale des plantes. La température du sol joue également un rôle important dans la santé des plantes, affectant la croissance des racines et l'absorption des nutriments.

Capteur de sol intégré 8 en 1.jpg

Pour ce projet, nous utiliserons le capteur d'humidité et de température du sol Niubol 8 en 1, spécialement conçu pour les mesures dans le sol. 

Pour ce projet, nous utilisons un capteur de sol de qualité industrielle . Pour connecter le capteur à l'Arduino, nous utiliserons le protocole de communication RS485. Les données du capteur d'humidité et de température du sol seront affichées sur un écran OLED connecté à l'Arduino.

Voici les 4 fils du capteur :

Fil marron : VCC (5V-24V)

Fil noir : GND

Fil jaune : RS485-A

Fil bleu : RS485-B

Exigences:

Matériel

DFRduino UNO R3 (ou similaire) x 1

Blindage RS485 pour Arduino x1

Capteur de sol RS485 (température, humidité, conductivité, salinité, pH et NPK) x 1

Logiciel:

IDE Arduino

Voici une cartographie de connexion entre MAX485 et le capteur de température d'humidité du sol.

VCC -> 5V ( Capteur de sol )

GND -> GND (Capteur de sol)

A (MAX485) -> Broche A du capteur de sol (couleur jaune)

B (MAX485) -> Broche B du capteur de sol (couleur bleue)

Connexion d'un capteur d'humidité et de température du sol à un Arduino. Vous pouvez utiliser une plaque d'essai pour l'assemblage et des câbles de liaison pour connecter le capteur et le module RS485 à l'Arduino.

Code source/programme pour la lecture 8 en 1 de l'humidité et de la température du sol 

Code source du programme pour la lecture du capteur d'humidité du sol.txt


#include <SoftwareSerial.h>

// Définir les broches pour la communication RS485

#définir RO 2

#définition DE 3

#définir RE 8

#définir DE 7

#define RESPONSE_FRAME_SIZE 21

char sensorDataTextBuffer[200];

structure SoilSensorData

{

  bool isSensorTimeout {false};

  bool isValid {false};

  température de flottement {-1,0};

  humidité flottante {-1,0};

  int non signé conductivité {-1};

  flottant ph {-1,0};

  azote non signé {-1};

  int non signé phosphore {-1};

  int non signé potassium {-1};

  int non signé salinité {-1};

};

classe SoilSensor

{

  publique:

    Capteur de sol()

    {

      modbus = nouveau SoftwareSerial(RO, DI);

    }

    void initialise()

    {

      Serial.begin(9600); // Initialiser la communication série pour le débogage

      modbus->begin(9600); // Initialiser la communication série logicielle à un débit de 9600 bauds

      pinMode(RE, OUTPUT); // Définir la broche RE comme sortie

      pinMode(DE, OUTPUT); // Définir DE pi

    }

    void sendDataRequest()

    {

      digitalWrite(DE, HAUT);

      digitalWrite(RE, HAUT);

      délai(10);

      // Envoyer la trame de requête au capteur de sol

       modbus->write(soilSensorRequest, sizeof(soilSensorRequest));

    }

    

    SoilSensorData read()

    {

      Données du capteur de sol données du capteur de sol;

       // Terminez le mode de transmission et passez en mode de réception pour RS485

      digitalWrite(DE, BAS);

      digitalWrite(RE, BAS);

      délai(10);     

      //Attendez la réponse du capteur ou expirez après 1 seconde

      unsigned long startTime = millis();

      pendant que (modbus->available() < RESPONSE_FRAME_SIZE && millis() - startTime < 1000)

      {

        retard(1);

      }

      if (modbus->available() >= RESPONSE_FRAME_SIZE) // Si une réponse valide est reçue

      {

       // Lire la réponse du capteur

        index d'octet = 0 ;

        pendant que (modbus->disponible() && index < RESPONSE_FRAME_SIZE)

        {

          soilSensorResponse[index] = modbus->read();

          index++;

        }

                soilSensorData = computeData();

      }

      autre

      {

        soilSensorData.isSensorTimeout = vrai; 

      }

       renvoyer soilSensorData;

    } 

    ~SoilSensor()

    {

      si (modbus != nullptr) supprimer modbus ;

      supprimer[] soilSensorResponse;

    }

    privé:

    const octet soilSensorRequest[8] = {0x01, 0x03, 0x00, 0x00, 0x00, 0x08, 0x44, 0x0C};

    SoftwareSerial* modbus = nullptr;

    octet soilSensorResponse[RESPONSE_FRAME_SIZE];   

    int convertBytesToDecimal(décalage int non signé)

    {

      renvoyer soilSensorResponse[offset] * 256 + soilSensorResponse[offset + 1];

    }

    SoilSensorData computeData() const

    {

      Données du capteur de sol données du capteur de sol;


      si (soilSensorResponse[0] != 1 || soilSensorResponse[1] != 3 || soilSensorResponse[2] != 16)

      {

        soilSensorData.isValid = false;

        renvoyer soilSensorData;

      }

      soilSensorData.isValid = true;

      soilSensorData.temperature = convertBytesToDecimal(3) / 10.0; //degrés Celsius

      soilSensorData.humidity = convertBytesToDecimal(5) / 10.0; // pourcentage

      soilSensorData.conductivity = convertBytesToDecimal(7); // microSiemens par centimètre

      soilSensorData.ph = convertBytesToDecimal(9) / 100.0;

      soilSensorData.nitrogen = convertBytesToDecimal(11); // milligramme par kilogramme

      soilSensorData.phosphorus = convertBytesToDecimal(13); // milligramme par kilogramme

      soilSensorData.potassium = convertBytesToDecimal(15); // milligramme par kilogramme

      soilSensorData.salinity = convertBytesToDecimal(17); // milligramme par kilogramme

      renvoyer soilSensorData;

    }

 };


Capteur de sol Capteur de sol;

void writeSensorDataToString(SoilSensorData & sensorData)

{

  si (sensorData.isSensorTimeout)

  {

      sprintf(sensorDataTextBuffer, "Données incomplètes ou délai d'attente du capteur");  

  }

  autre

  {

    si (sensorData.isValid)  

    {

      char* tempStr = malloc(6 * sizeof(char));

      char* humidityStr = malloc(6 * sizeof(char));

      char* phStr = malloc(6 * sizeof(char));

      dtostrf(sensorData.température, 4, 1, tempStr);

      dtostrf(sensorData.humidité, 4, 1, humiditéStr);

      dtostrf(sensorData.ph, 4, 2, phStr);

      conductivité automatique = sensorData.conductivity;

      auto n = sensorData.azote;

      auto p = sensorData.phosphore;

      auto k = sensorData.potassium;

      salinité automatique = sensorData.salinity;

      sprintf(sensorDataTextBuffer, "Température : %s ; Humidité : %s ; Conductivité : %u ; PH : %s ; N : %u ; P : %u ; K : %u ; Salinité : %u", tempStr, humidityStr, conductivité, phStr, n, p, k, salinité);  

      si (tempStr != NULL) libre(tempStr);

      si (humidityStr != NULL) libre(humidityStr);

      si (phStr != NULL) libre(phStr);

    }

    autre

    {

      sprintf(sensorDataTextBuffer, "Les données lues à partir du capteur ne sont pas valides");  

    }

  }

}


configuration vide() 

{

 soilSensor.initialise();

}


boucle vide() 

{

  soilSensor.sendDataRequest();

  Données du capteur de sol sensorData = soilSensor.read();

  writeSensorDataToString(sensorData);

  Serial.println(sensorDataTextBuffer);

  delay(2000); // Attendre une seconde avant la prochaine itération de la boucle

}


Merci à Phil Ogun pour le code !

Le capteur de sol 8-en-1 intègre de multiples paramètres tels que la température, l'humidité, la conductivité, le NPK, la salinité et le pH. Grâce à ce capteur, les utilisateurs peuvent facilement accéder à de nombreuses données clés sur le sol, ce qui les aide à mieux comprendre son état et à prendre les bonnes décisions en conséquence.

En mesurant la constante diélectrique du sol, il peut refléter directement et de manière stable la teneur en humidité réelle de divers sols. Il est adapté à la surveillance de l'humidité du sol, aux expériences scientifiques, à l'irrigation économe en eau, aux serres, aux fleurs et légumes, aux pâturages, aux tests rapides de sol, à la culture des plantes, au traitement des eaux usées, à l'agriculture de précision, etc. L'alimentation d'entrée, la sonde de détection et la sortie du signal sont entièrement isolées, ce qui le rend sûr et fiable, esthétique et facile à installer. La sonde est en acier inoxydable, résistante à la corrosion et offre des performances stables.

Fiche technique du capteur de sol :

1. Fiche technique du capteur de température et d'humidité du sol NBL-S-THR

NBL-S-THR-Capteurs-de-température-et-d'humidité-du-sol-Manuel-d'instructions-V4.0.pdf

2. Fiche technique du capteur de température et d'humidité du sol NBL-S-TMC

NBL-S-TMC-Capteur de température et d'humidité du sol et de conductivité.pdf

3. Fiche technique du capteur de température et d'humidité du sol NBL-S-TM

NBL-S-TM-Capteur-de-température-et-d'humidité-du-sol-Manuel-d'instructions-4.0.pdf

4. Capteur intégré de température, d'humidité, de conductivité et de salinité du sol NBL-S-TMCS

Capteur de température, d'humidité, de conductivité et de salinité du sol NBL-S-TMCS.pdf

5. Capteur intégré de température, d'humidité, de NPK, de conductivité et de pH du sol NBL-S-TMCS-7

Manuel du capteur composite de sol 7 en 1.pdf

4. Capteur intégré de température, d'humidité, de NPK, de pH, de conductivité et de salinité du sol NBL-S-TMCS-8

Manuel du capteur composite de sol 8 en 1.pdf

Recommandations associées

Catalogue des Capteurs & Stations Météo

Catalogue des Capteurs Agricoles et Stations Météo - NiuBoL.pdf

Catalogue des Stations Météo - NiuBoL.pdf

Catalogue des Capteurs Agricoles - NiuBoL.pdf

Related products

Dites-nous vos exigences, discutons davantage de votre projet, nous pouvons en faire plus.

Nom*

Téléphone*

Email*

Entreprise*

Pays*

Message

en ligne
Contacts
Email
Top
XCode Arduino pour capteur d'humidité du sol-Support technique-Stations météorologiques automatiques_Pyranomètre_Sonde agricole_Sonde de sol_Sonde de température et d'humidité_Sonde de pH_Pluiomètre_Enregistreur de données_surveillance environnementale-NiuBoL

Capture d'écran, WhatsApp pour identifier le code QR

Numéro WhatsApp:+8615388025079

(Cliquez sur WhatsApp pour copier et ajouter des amis)

Ouvrir WhatsApp

L'identifiant WhatsApp a été copié, veuillez ouvrir WhatsApp pour ajouter les détails de la consultation!