Telefon anrufen Hotline: +8618073152920
Telefon anrufen
Deutsch
Kontakt/ KONTAKT
Kundenhotline +8618073152920
Changsha Zoko Link Technology Co., Ltd.

E-Mail: sales@niubol.com

Telefon / WhatsApp: +8615367865107

Adresse: Raum 102, Bezirk D, Houhu-Industriepark, Bezirk Yuelu, Stadt Changsha, Provinz Hunan, China

Technische Unterstützung

Arduino-Code für Bodenfeuchtesensoren

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.

8-in-1 Integration Soil Sensor.jpg

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.

Bodensensor Datenblatt:

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

8-in-1-Bodenverbundsensor-Handbuch.pdf

Ä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

Senden Sie uns Ihre Anforderungen. Wir besprechen Ihr Projekt und finden die passende Lösung.

Name*

Telefon*

E-Mail*

Firma*

Land*

Nachricht

Online
Kontakt
E-Mail
Nach oben
XArduino-Code für Bodenfeuchtesensoren-Technische Unterstützung-Automatische Wetterstationen, Industriesensoren, Landwirtschafts-, Wasser- und Umwelt-IoT-Lösungen | NiuBoL

Scannen Sie den QR-Code mit WhatsApp

WhatsApp-Nummer:+8615367865107

(Klicken, um WhatsApp zu kopieren und hinzuzufügen)

WhatsApp öffnen

Die WhatsApp-Nummer wurde kopiert. Öffnen Sie WhatsApp, um uns zu kontaktieren!
WhatsApp