—Produits—
WhatsApp:+8615388025079
Address:Chambre 102, District D, Parc industriel de Houhu, District de Yuelu, Ville de Changsha, Province du Hunan, Chine
Support technique
Temps:2024-06-29 21:07:28 Popularité:1799
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.
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.
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
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
Capture d'écran, WhatsApp pour identifier le code QR
Numéro WhatsApp:+8615388025079
(Cliquez sur WhatsApp pour copier et ajouter des amis)