In diesem Artikel lernst du, wie man NPK-Sensoren mit Arduino verwendet. NPK (Stickstoff, Phosphor und Kalium) sind die drei wichtigen Makronährstoffe für Pflanzen.
Du kannst den NPK-Sensor verwenden, um den Nährstoffgehalt im Boden für Pflanzen zu überwachen. Er kann Teil deiner Gartenprojekte sein, vielleicht zusammen mit einem automated Arduino IoT plant watering system.
Es gibt verschiedene Sensortypen zur Überwachung der Bodennährstoffe. Die in diesem Projekt verwendeten NPK-Sensoren sind genau und liefern sofortige Ergebnisse.
Du benötigst einen Pegelwandler, um den Arduino UNO mit dem NPK-Sensor zu verbinden. Unten findest du Details zum Wandler, eine Schritt-für-Schritt-Verbindungsskizze und die Pins des NPK-Sensors.
In den späteren Abschnitten findest du den Arduino-Code und eine Sammlung häufig gestellter Fragen zum NPK-Projekt mit Antworten.
Lass uns loslegen!
Benötigte Komponenten zum Aufbau von Arduino und NPK-Sensor
Hardware-Komponenten
- Arduino Uno Rev3 x 1
- Arduino RS485 NPK Sensor Module x 1
- TTL to RS-485 converter module x 1
- Dupont wire x 1 Satz
- Arduino USB cable x 1
Software
Makerguides is a participant in affiliate advertising programs designed to provide a means for sites to earn advertising fees by linking to Amazon, AliExpress, Elecrow, and other sites. As an Affiliate we may earn from qualifying purchases.
Grundlagen des NPK-Sensors
In diesem Abschnitt lernen wir die Details des NPK-Sensors kennen. Der typische NPK-Sensor ist im Bild unten dargestellt. Die Sensoren enthalten alle Elektronikkomponenten, um Daten zu erfassen, zu verarbeiten und über das RS485-Protokoll mit den Host-Controllern zu kommunizieren.

Sehen wir uns die Pinbelegung des typischen NPK-Bodennährstoffsensors an.

Du kannst Modbus verwenden, um die Konzentrationen aller drei Elemente im Boden zu erfassen.
Du kannst unabhängige Anfragen über den Bus senden, um die Messdaten für Stickstoff, Kalium und Phosphor zu sammeln.
Der NPK-Sensor hat vier Anschlussdrähte:
| Pin-Nummer | Pin-Beschreibung | Bemerkungen |
| 1 | VCC | Stromversorgungsleitung |
| 2 | GND | Masseanschluss |
| 3 | RS485A | RS485-Kommunikationsleitung A |
| 4 | RS485B | RS485-Kommunikationsleitung B |
Für weitere Details siehe das Handbuch und Datenblatt des NPK-Bodennährstoffsensors:
Du kannst die Menge an Stickstoff, Phosphor und Kalium im Boden messen.
Mit den Messwerten kannst du den Bodenstatus effektiv bewerten.
Du kannst die Daten über einen längeren Zeitraum messen und dem Team, das die Düngemittel ausbringt, gezieltes Feedback geben.
NPK-Sensoren werden in der Agrarforschung, im Gartenbau, in der Forstwirtschaft, im Anbau und vielem mehr eingesetzt.
Was sind die allgemeinen Merkmale idealer NPK-Sensoren?
Hier ist eine Liste der gewünschten Eigenschaften von NPK-Sensoren für Anwendungen zur Bodennährstoffanalyse
- Einfache Bedienoberfläche und möglichst wenige Schritte
- Keine aktiven schädlichen Chemikalien.
- Beliebig viele Messungen sollten möglich sein.
- Die Reaktionszeit sollte deutlich kurz sein – Sobald du Befehle sendest, sollten die Messungen so schnell wie möglich abgeschlossen sein.
- Die Sensoren sollten korrosionsbeständig sein – Du kannst den Sensor länger im Boden vergraben lassen.
Schritt-für-Schritt-Anleitung zum Anschluss des NPK-Sensormoduls an den Arduino UNO
In diesem Abschnitt bauen wir ein Projekt mit Arduino UNO und dem NPK-Sensormodul.
Das von mir verwendete NPK-Sensormodul liefert Daten über das RS485-Protokoll.
Da wir den RS485-Bus nicht direkt an den Arduino UNO anschließen können, verwenden wir einen TTL-zu-RS485-Wandler.
Lass uns beginnen.
Wir verwenden einen RS485-zu-TTL-Wandler. Sehen wir uns die Pinbeschreibungen des Moduls an.

Die folgende Tabelle definiert die Pins in der Reihenfolge, wie sie im obigen Bild beschriftet sind.
| Pin-Nummer | Pin-Beschreibung | Bemerkungen |
| 1 | Receive Out | Wenn A > B um 200mV, ist RO hoch; Wenn A < B um 200mV, ist RO niedrig |
| 2 | Receive Enable | Empfänger-Ausgang aktivieren. RO ist aktiviert, wenn RE niedrig ist; RO ist hochohmig, wenn RE hoch ist |
| 3 | Data Enable | Treiber-Ausgang aktivieren. Die Treiberausgänge Y und Z werden aktiviert, wenn DE hoch ist. Sie sind hochohmig, wenn DE niedrig ist. Wenn die Treiberausgänge aktiviert sind, funktionieren die Bauteile als Leitertreiber. Sind sie hochohmig, funktionieren sie als Leitungsempfänger, wenn RE niedrig ist. |
| 4 | Data In | Treiber-Eingang. Ein Low an DI erzwingt Ausgang Y auf Low und Ausgang Z auf High. Ein High an DI erzwingt Ausgang Y auf High und Ausgang Z auf Low. |
| 5 | GND | Masseanschluss |
| 6 | A | Nicht-invertierender Empfängereingang |
| 7 | B | Invertierender Empfängereingang |
| 8 | VCC | Positive Versorgung, typischerweise 5V |
Wie verbindet man das NPK-Sensormodul mit dem Arduino UNO?
Unten findest du eine Schritt-für-Schritt-Anleitung, um die notwendigen Hardwareverbindungen zwischen Arduino und NPK-Sensormodul herzustellen.
Schritt 1: Beginne mit den GND-Verbindungen.

Verbinde den Masse-Pin des RS485-Wandlermoduls mit dem Massekabel des NPK-Sensors.
Verbinde immer zuerst die Massen, bevor du andere Verbindungen herstellst.
Schritt 2: Verbinde die A- und B-Pins des Sensors

Verbinde die invertierenden und nicht-invertierenden Anschlüsse des RS485-Moduls mit den A- und B-Pins des NPK-Sensors.
Schritt 3: Verbinde den Power-Pin

Verbinde den VCC-Pin des Moduls mit dem VCC-Kabel des NPK-Sensors.
Schritt 4: Überprüfe die Verbindung zwischen RS485-Wandler und NPK-Sensor

Damit sind die notwendigen Verbindungen zwischen dem RS485-Modul und dem NPK-Sensor abgeschlossen.
In den nächsten Schritten verbinden wir den Arduino UNO mit dem RS485-Modul.
Schritt 5: Verbinde den RO-Pin mit dem UNO

Verbinde Pin 2 mit dem RO-Pin des RS485-Sensors.
Schritt 6: Verbinde den DI-Pin mit dem UNO

Verbinde Pin 3 mit dem DI-Pin des RS485-Sensors.
Schritt 7: Verbinde den DE-Pin mit dem UNO

Verbinde den DE-Pin des Moduls mit Pin 7 des Arduino UNO.
Schritt 8: Verbinde den RE-Pin mit dem UNO

Verbinde den RE-Pin des Moduls mit Pin 8 des Arduino UNO.
Du kannst auch andere Pins am Arduino UNO verwenden und die Verbindungen entsprechend tauschen.
Bitte aktualisiere auch deinen Arduino-Code, damit die neuen Verbindungen funktionieren.
Schritt 9: Überprüfe die vollständigen Verbindungen

Überprüfe alle Verbindungen. Glückwunsch, du hast die Verbindungen zum Auslesen der NPK-Sensoren erfolgreich abgeschlossen.
Arduino-Code-Beispiel für das Arduino- und NPK-Sensor-Projekt
In diesem Abschnitt gehen wir den Beispiel-Arduino-Code durch, um das NPK-Sensormodul zu testen.
Das erste Projekt testet die Schaltung, die du im vorherigen Abschnitt aufgebaut hast.
Lass uns starten.
Arduino-Code zur Anzeige der NPK-Sensordaten
Der untenstehende Arduino-Code liest die NPK-Sensordaten über RS485 aus. Der Arduino-Code ist unten dargestellt.
#include "SoftwareSerial.h"
#include "Wire.h"
#include "Adafruit_GFX.h"
#include "Adafruit_SSD1306.h"
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
#define RE 8
#define DE 7
const byte nitro[] = {0x01, 0x03, 0x00, 0x1e, 0x00, 0x01, 0xe4, 0x0c};
const byte phos[] = {0x01, 0x03, 0x00, 0x1f, 0x00, 0x01, 0xb5, 0xcc};
const byte pota[] = {0x01, 0x03, 0x00, 0x20, 0x00, 0x01, 0x85, 0xc0};
byte values[11];
SoftwareSerial mod(2, 3);
void setup() {
Serial.begin(9600);
mod.begin(9600);
pinMode(RE, OUTPUT);
pinMode(DE, OUTPUT);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //initialize with the I2C addr 0x3C (128x64)
delay(500);
display.clearDisplay();
display.setCursor(25, 15);
display.setTextSize(1);
display.setTextColor(WHITE);
display.println(" NPK Sensor");
display.setCursor(25, 35);
display.setTextSize(1);
display.print("Initializing");
display.display();
delay(3000);
}
void loop() {
byte val1, val2, val3;
val1 = nitrogen();
delay(250);
val2 = phosphorous();
delay(250);
val3 = potassium();
delay(250);
Serial.print("Nitrogen: ");
Serial.print(val1);
Serial.println(" mg/kg");
Serial.print("Phosphorous: ");
Serial.print(val2);
Serial.println(" mg/kg");
Serial.print("Potassium: ");
Serial.print(val3);
Serial.println(" mg/kg");
delay(2000);
display.clearDisplay();
display.setTextSize(2);
display.setCursor(0, 5);
display.print("N: ");
display.print(val1);
display.setTextSize(1);
display.print(" mg/kg");
display.setTextSize(2);
display.setCursor(0, 25);
display.print("P: ");
display.print(val2);
display.setTextSize(1);
display.print(" mg/kg");
display.setTextSize(2);
display.setCursor(0, 45);
display.print("K: ");
display.print(val3);
display.setTextSize(1);
display.print(" mg/kg");
display.display();
}
byte nitrogen() {
digitalWrite(DE, HIGH);
digitalWrite(RE, HIGH);
delay(10);
if (mod.write(nitro, sizeof(nitro)) == 8) {
digitalWrite(DE, LOW);
digitalWrite(RE, LOW);
for (byte i = 0; i < 7; i++) {
//Serial.print(mod.read(),HEX);
values[i] = mod.read();
Serial.print(values[i], HEX);
}
Serial.println();
}
return values[4];
}
byte phosphorous() {
digitalWrite(DE, HIGH);
digitalWrite(RE, HIGH);
delay(10);
if (mod.write(phos, sizeof(phos)) == 8) {
digitalWrite(DE, LOW);
digitalWrite(RE, LOW);
for (byte i = 0; i < 7; i++) {
//Serial.print(mod.read(),HEX);
values[i] = mod.read();
Serial.print(values[i], HEX);
}
Serial.println();
}
return values[4];
}
byte potassium() {
digitalWrite(DE, HIGH);
digitalWrite(RE, HIGH);
delay(10);
if (mod.write(pota, sizeof(pota)) == 8) {
digitalWrite(DE, LOW);
digitalWrite(RE, LOW);
for (byte i = 0; i < 7; i++) {
//Serial.print(mod.read(),HEX);
values[i] = mod.read();
Serial.print(values[i], HEX);
}
Serial.println();
}
return values[4];
}
FAQ
Ich habe eine Liste der häufigsten Fragen zu Projekten mit Arduino und NPK-Sensormodulen zusammengestellt.
Wenn du weitere Fragen hast, poste sie bitte im Kommentarbereich.
Ich beantworte sie gerne.
Was ist ein NPK-Sensor?
NPK steht für Stickstoff, Phosphor und Kalium.
NPK-Sensoren werden verwendet, um die Fruchtbarkeit des Bodens zu erkennen. Sie dienen zur Bewertung der Bodenbeschaffenheit.
Die Überwachung landwirtschaftlicher Flächen auf Fruchtbarkeit hilft, den Ertrag zu steigern, unerwünschte Überdüngung zu vermeiden und die natürliche Bodenqualität zu schützen.
Ein NPK-Sensor wird mit einer Versorgungsspannung von 5 V bis 24 V betrieben. Für genaue Angaben zur Spannungsbereich siehe die Spezifikationen des jeweiligen Sensors.
Der Sensor unterstützt auch RS485 oder eine ähnliche Schnittstelle zur Kommunikation.
In diesem Artikel haben wir das RS485-Protokoll zur Kommunikation mit dem Arduino UNO verwendet.
Ist der NPK-Sensor genau?
Im Allgemeinen sollte er es sein, aber es kann manchmal schwierig sein, genaue Messwerte zu erhalten. Es hängt vom zu messenden Nährstoff, dem Sensor und der Schaltung ab. Siehe die ausführliche Diskussion here für weitere Informationen
Warum ist der NPK-Wert wichtig?
NPK repräsentiert die wichtigsten Makronährstoffe im Boden. Wenn du den NPK-Wert im Boden kennst, kannst du deine Gartenpflanzen mit der richtigen Nährstoffmenge versorgen.
Welches der NPK-Elemente ist am wichtigsten?
Von den drei Elementen ist Stickstoff entscheidend für die Entwicklung der Pflanze.
Die NPK-Werte sind wichtig für den Aufbau der Pflanzenstruktur, die Samenbildung, Blüten usw.
NPK-Dünger sollten angewendet werden, wenn die Pflanze aktiv wächst.
NPK-Sensoren können verwendet werden, um die Nährstoffinformationen des Bodens aktiv zu überwachen.
Links
- Measure Soil Nutrient using Arduino & Soil NPK Sensor
- Interfacing Soil NPK Sensor with Arduino
- RS485 Soil Sensor(N&P&K) Arduino WiKi
- Complete Guide for NPK Soil Sensor with Arduino Tutorial
Fazit
In diesem Artikel haben wir die Grundlagen eines NPK-Sensors verstanden und wie der NPK-Sensor die NPK-Inhalte im Boden misst.
Wir haben auch die Merkmale eines NPK-Sensors aufgelistet und die Grundlagen des im Projekt verwendeten RS485-zu-TTL-Wandlers kennengelernt.
Du kannst die Anschlussanleitung befolgen und die Schaltung für unser Projekt zur Überwachung der Bodennährstoffe fertigstellen.
Der vorgestellte Arduino-Code zum Auslesen der NPK-Sensoren ist einfach und leicht verständlich.
Bitte stelle deine Fragen zu NPK-Sensoren im Kommentarbereich. Ich beantworte sie jederzeit gerne.


