Produkte
Kundenhotline +8618073152920Telefon / WhatsApp: +8615367865107
Adresse: Raum 102, Bezirk D, Houhu-Industriepark, Bezirk Yuelu, Stadt Changsha, Provinz Hunan, China
Technische Unterstützung
Zeit:2024-06-29 21:07:28 Aufrufe:5466
8 in 1 Bodenfeuchtesensor Rs485 für Arduino
In diesem Leitfaden erfahren Sie, wie Sie einen 8-in-1-Bodenfeuchtesensor verbinden & Temperatursensor mit Arduino unter Verwendung des RS485-Protokolls. Mit diesem Aufbau können wir den Feuchtigkeitsgehalt und die Temperatur des Bodens überwachen, die entscheidende Parameter für die Landwirtschaft und den Gartenbau sind.
Bodenfeuchtesensoren messen den volumetrischen Wassergehalt im Boden. Durch die Kenntnis des Feuchtigkeitsgehalts können Landwirte und Gärtner fundierte Entscheidungen zur Bewässerung treffen und so ein optimales Pflanzenwachstum gewährleisten. Auch die Bodentemperatur spielt eine wichtige Rolle für die Pflanzengesundheit und beeinflusst das Wurzelwachstum und die Nährstoffaufnahme.
Für dieses Projekt verwenden wir die Niubol 8-in-1-Bodenfeuchtigkeit & Temperatursensor, der speziell für Messungen im Boden entwickelt wurde.
Deshalb verwenden wir für dieses Projekt einen Bodensensor in Industriequalität. Um den Sensor mit dem Arduino zu verbinden, verwenden wir das RS485-Kommunikationsprotokoll. Die Daten aus der Bodenfeuchte & Der Temperatursensor wird auf einem mit dem Arduino verbundenen OLED-Bildschirm angezeigt.
Hier sind die 4 Drähte für den Sensor:
Brauner Draht: VCC (5V-24V)
Schwarzer Draht: GND
Gelber Draht: RS485-A
Blauer Draht: RS485-B
Anforderungen:
Hardware
DFRduino UNO R3 (oder ähnlich) x 1
RS485 Schild für Arduino x1
RS485 Bodensensor (Temperatur & Feuchtigkeit & EC & Salzgehalt & Ph & NPK) x 1
Software:
Arduino-IDE
Hier ist eine Verbindungszuordnung zwischen MAX485 & Bodenfeuchtigkeits-Temperatursensor.
VCC -> 5V (Bodensensor)
GND -> GND (Bodensensor)
A (MAX485) -> Bodensensor A-Stift (gelbe Farbe)
B (MAX485) -> Bodensensor B-Stift (blaue Farbe)
Verbindung des Bodenfeuchtigkeits- und Temperatursensors mit Arduino. Sie können ein Steckbrett zum Zusammenbau und Überbrückungskabel zum Verbinden des Sensors und des RS485-Moduls mit Arduino verwenden.
Quellcode/Programm zum Lesen von 8 in1 Bodenfeuchtigkeit & Temperatur
Quellcode-Programm zum Lesen der Bodenfeuchte sensor.txt
#enthalten <SoftwareSerial.h>
// Definieren Sie die Pins für die RS485-Kommunikation
#RO 2 definieren
#DI 3 definieren
#define RE 8
#define DE 7
#define RESPONSE_FRAME_SIZE 21
char sensorDataTextBuffer[200];
struct SoilSensorData
{
bool isSensorTimeout {false};
bool isValid {false};
Schwimmertemperatur {-1,0};
Schwimmerfeuchtigkeit {-1,0};
unsigned int Leitfähigkeit {-1};
float ph {-1,0};
unsigned int Stickstoff {-1};
unsigned int Phosphor {-1};
unsigned int Kalium {-1};
unsigned int Salzgehalt {-1};
};
Klasse SoilSensor
{
öffentlich:
BodenSensor()
{
modbus = neues SoftwareSerial(RO, DI);
}
void initialise()
{
Serial.begin(9600); // Serielle Kommunikation zum Debuggen initialisieren
modbus->begin(9600); // Initialisieren Sie die serielle Softwarekommunikation mit einer Baudrate von 9600
pinMode(RE, OUTPUT); // RE-Pin als Ausgang festlegen
pinMode(DE, OUTPUT); // Setze DE pi
}
void sendDataRequest()
{
digitalWrite(DE, HIGH);
digitalWrite(RE, HIGH);
Verzögerung(10);
// Anforderungsframe an den Bodensensor senden
modbus->write(soilSensorRequest, sizeof(soilSensorRequest));
}
SoilSensorData read()
{
Bodensensordaten Bodensensordaten;
// Beende den Übertragungsmodus und setze den Empfangsmodus für RS485
digitalWrite(DE, LOW);
digitalWrite(RE, LOW);
Verzögerung(10);
//Warten Sie auf die Antwort vom Sensor oder auf Timeout nach 1 Sekunde
unsigned long startTime = millis();
während (modbus->verfügbar() < RESPONSE_FRAME_SIZE && millis() – Startzeit < 1000)
{
Verzögerung(1);
}
wenn (modbus->verfügbar() >= RESPONSE_FRAME_SIZE) // Wenn eine gültige Antwort empfangen wurde
{
// Antwort vom Sensor lesen
Byteindex = 0;
während (modbus->verfügbar() && Index < RESPONSE_FRAME_SIZE)
{
SoilSensorResponse[index] = modbus->lesen();
index++;
}
SoilSensorData = computeData();
}
anders
{
SoilSensorData.isSensorTimeout = true;
}
return SoilSensorData;
}
~SoilSensor()
{
if (modbus != nullptr) delete modbus;
delete[] SoilSensorResponse;
}
Privat:
const byte soleSensorRequest[8] = {0x01, 0x03, 0x00, 0x00, 0x00, 0x08, 0x44, 0x0C};
SoftwareSerial* modbus = nullptr;
Byte SoilSensorResponse[RESPONSE_FRAME_SIZE];
int convertBytesToDecimal(unsigned int offset)
{
return SoilSensorResponse[Offset] * 256 + SoilSensorResponse[Offset + 1];
}
SoilSensorData computeData() const
{
Bodensensordaten Bodensensordaten;
if (soilSensorResponse[0] != 1 || SoilSensorResponse[1] != 3 || SoilSensorResponse[2] != 16)
{
SoilSensorData.isValid = false;
return SoilSensorData;
}
SoilSensorData.isValid = true;
SoilSensorData.temperatur = ConvertBytesToDecimal(3) / 10.0; //Grad Celsius
SoilSensorData.humidity = ConvertBytesToDecimal(5) / 10.0; // Prozent
SoilSensorData.conductivity = ConvertBytesToDecimal(7); // MikroSiemens pro Zentimeter
SoilSensorData.ph = ConvertBytesToDecimal(9) / 100.0;
SoilSensorData.nitrogen = ConvertBytesToDecimal(11); // Milligramm pro Kilogramm
SoilSensorData.phosphorus = ConvertBytesToDecimal(13); // Milligramm pro Kilogramm
SoilSensorData.potassium = ConvertBytesToDecimal(15); // Milligramm pro Kilogramm
SoilSensorData.salinity = ConvertBytesToDecimal(17); // Milligramm pro Kilogramm
return SoilSensorData;
}
};
BodenSensor BodenSensor;
void writeSensorDataToString(SoilSensorData & sensorData)
{
if (sensorData.isSensorTimeout)
{
sprintf(sensorDataTextBuffer, "Unvollständige Daten oder Sensor-Timeout");
}
anders
{
if (sensorData.isValid)
{
char* tempStr = malloc(6 * sizeof(char));
char* MoistureStr = malloc(6 * sizeof(char));
char* phStr = malloc(6 * sizeof(char));
dtostrf(sensorData.temperature, 4, 1, tempStr);
dtostrf(sensorData.humidity, 4, 1, MoistureStr);
dtostrf(sensorData.ph, 4, 2, phStr);
Auto Leitfähigkeit = sensorData.conductivity;
auto n = sensorData.nitrogen;
auto p = sensorData.phosphorus;
auto k = sensorData.potassium;
auto salinity = sensorData.salinity;
sprintf(sensorDataTextBuffer, "Temperatur: %s; Luftfeuchtigkeit: %s; Leitfähigkeit: %u; PH: %s; N: %u; P: %u; K: %u; Salzgehalt: %u", tempStr, LuftfeuchtigkeitStr, Leitfähigkeit, phStr, n, p, k, Salzgehalt);
if (tempStr != NULL) free(tempStr);
if (humidityStr != NULL) free(humidityStr);
if (phStr != NULL) free(phStr);
}
anders
{
sprintf(sensorDataTextBuffer, "Die vom Sensor gelesenen Daten sind ungültig");
}
}
}
void setup()
{
SoilSensor.initialise();
}
Leere Schleife()
{
SoilSensor.sendDataRequest();
SoilSensorData sensorData = SoilSensor.read();
writeSensorDataToString(sensorData);
Serial.println(sensorDataTextBuffer);
Verzögerung (2000); // Warten Sie eine Sekunde vor der nächsten Schleifendurchlauf
}
Danke an Phil Ogun für den Code!
Der 8-in-1-Bodensensor ist ein Sensor, der mehrere Parameter wie Temperatur, Luftfeuchtigkeit, Leitfähigkeit, NPK, Salzgehalt und PH integriert. Mit einem solchen Sensor können Benutzer problemlos auf mehrere Schlüsseldaten des Bodens zugreifen und so den Zustand des Bodens besser verstehen und entsprechende Anpassungen und Entscheidungen treffen.
Durch die Messung der Dielektrizitätskonstante des Bodens kann der tatsächliche Feuchtigkeitsgehalt verschiedener Böden direkt und stabil wiedergegeben werden. Es eignet sich für die Überwachung der Bodenfeuchtigkeit, wissenschaftliche Experimente, wassersparende Bewässerung, Gewächshäuser, Blumen und Gemüse, Grasweiden, Bodenschnelltests, Pflanzenanbau, Abwasserbehandlung, Feinlandwirtschaft und andere Anlässe. Der Sensor'S-Eingangsstromversorgung, Messsonde, Signalausgang drei Teile sind vollständig isoliert, sicher und zuverlässig, schönes Aussehen, einfach zu installieren, die Sonde besteht aus Edelstahl, Korrosionsbeständigkeit, stabile Leistung.
1.NBL-S-THR Bodentemperatur-Feuchtigkeitssensor Datenblatt
NBL-S-THR-Soil-temperature-and-moisture-sensors-Instruction-Manual-V4.0.pdf
2. NBL-S-TMC Bodentemperatur-Feuchtigkeitssensor EC Datenblatt
NBL-S-TMC-Soil-temperature-and-moisture-conductivity-sensor.pdf
3. NBL-S-TM Bodentemperatur-Feuchtigkeitssensor Datenblatt
NBL-S-TM-Soil-temperature-and-moisture-sensor-Instruction-Manual-4.0.pdf
4. NBL-S-TMCS Bodentemperatur, Integrierter Sensor für Feuchtigkeit, Leitfähigkeit und Salzgehalt
NBL-S-TMCS-Soil-Temperature-Humidity-Conductivity-and-Salinity-Sensor.pdf
5. NBL-S-TMCS-7 Bodentemperatur, Feuchtigkeit, NPK, Leitfähigkeit und integrierter pH-Sensor
7-in-1-Bodenverbundsensor-Handbuch.pdf
4. NBL-S-TMCS-8 Bodentemperatur, Feuchtigkeit, NPK, pH, Integrierter Sensor für Leitfähigkeit und Salzgehalt
Ähnliche Empfehlungen
Sensoren- und Wetterstationskataloge
Katalog für Agrarsensoren und Wetterstationen - NiuBoL.pdf
Katalog für Wetterstationen - NiuBoL.pdf
Katalog für Agrarsensoren - NiuBoL.pdf
Katalog für Wasserqualitätssensoren - NiuBoL.pdf
Ähnliche Produkte
Kombinierter Sensor für Lufttemperatur und relative Luftfeuchtigkeit
Bodenfeuchtigkeitstemperatursensor für die Bewässerung| NBL-S-THR
Boden pH Sensor RS485 Bodenprüfgerät Boden-pH-Meter für die Landwirtschaft | NBL-S-PH
Ausgang des Windgeschwindigkeitssensors Modbus / RS485 /Analog/0-5V/4-20mA
Kippschaufel-Regenmesser zur Wetterüberwachung, automatischer Niederschlagssensor RS485 /Außenbereich/Edelstah···
Pyranometer Solarstrahlungssensor 4–20 mA/ RS485
Scannen Sie den QR-Code mit WhatsApp
WhatsApp-Nummer:+8615367865107
(Klicken, um WhatsApp zu kopieren und hinzuzufügen)