En este artículo, aprenderás sobre el uso de sensores NPK con Arduino. NPK (Nitrógeno, Fósforo y Potasio) son los tres macronutrientes vitales para las plantas.
Puedes usar el sensor NPK para monitorear el contenido nutricional disponible para las plantas en el suelo. Puede usarse como parte de tus proyectos de jardín, quizás junto con un automated Arduino IoT plant watering system.
Existen varios tipos de sensores disponibles para monitorear los nutrientes del suelo. Los sensores NPK usados en este proyecto son precisos y los resultados están disponibles de inmediato.
Necesitarás un convertidor de nivel para conectar el Arduino UNO al sensor NPK. A continuación, encontrarás los detalles del convertidor, un diagrama de conexión paso a paso y los pines del sensor NPK.
En las secciones posteriores, encontrarás el código Arduino y una colección de preguntas frecuentes sobre proyectos con sensores NPK con sus respuestas.
¡Comencemos!
Componentes necesarios para construir Arduino y sensor NPK
Componentes de hardware
- Arduino Uno Rev3 x 1
- Arduino RS485 NPK Sensor Module x 1
- TTL to RS-485 converter module x 1
- Dupont wire x 1 set
- 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.
Conceptos básicos del sensor NPK
En esta sección, aprenderemos sobre los detalles del sensor NPK. El sensor NPK típico se muestra en la imagen a continuación. Los sensores contienen toda la electrónica necesaria para muestrear los datos, procesarlos y comunicarlos con los controladores anfitriones mediante el protocolo RS485.

Veamos los detalles de los pines del sensor típico de nutrientes del suelo NPK.

Puedes usar Modbus para obtener los datos de concentración de los tres elementos en el suelo.
Puedes enviar consultas independientes por el bus para recopilar los datos de medición de nitrógeno, potasio y fósforo.
El sensor NPK tiene cuatro cables disponibles para la conexión:
| Número de pin | Descripción del pin | Observaciones |
| 1 | VCC | Línea de alimentación |
| 2 | GND | Conexión a tierra |
| 3 | RS485A | Línea de comunicación RS485 A |
| 4 | RS485B | Línea de comunicación RS485 B |
Para más detalles, consulta el manual y la hoja de datos del sensor de nutrientes del suelo NPK:
Puedes medir la cantidad de nitrógeno, fósforo y potasio en el suelo.
Una vez que tengas las mediciones, puedes evaluar eficazmente la condición del suelo.
Puedes medir los datos durante un largo período y proporcionar retroalimentación adecuada al equipo que aplica los fertilizantes.
Los sensores NPK se usan en investigación agrícola, jardinería, silvicultura, cultivo y mucho más.
¿Cuáles son las características genéricas de los sensores NPK ideales?
Aquí está la lista de características deseadas para sensores NPK en aplicaciones de estudio de nutrientes del suelo
- Interfaz fácil de usar y preferiblemente con pocos pasos
- Sin químicos activos dañinos.
- Debe ser posible realizar cualquier número de lecturas.
- El tiempo de respuesta debe ser significativamente corto: una vez que se emiten los comandos, las mediciones deben completarse en el menor tiempo posible.
- Los sensores deben ser resistentes a la corrosión: puedes dejar el sensor enterrado en el suelo por períodos prolongados.
Instrucciones paso a paso para conectar el módulo sensor NPK al Arduino UNO
En esta sección, construiremos un proyecto usando Arduino UNO y el módulo sensor NPK.
El módulo sensor NPK que uso proporciona datos mediante el protocolo RS485.
Como no podemos conectar directamente el bus RS485 al Arduino UNO, usaremos un convertidor TTL a RS485.
Comencemos.
Usaremos un convertidor RS485 a TTL. Veamos la descripción de los pines del módulo.

La tabla a continuación define los pines en el orden en que están etiquetados según la imagen anterior.
| Número de pin | Descripción del pin | Observaciones |
| 1 | Receive Out | Si A > B por 200mV, RO estará alto; si A < B por 200mV, RO estará bajo |
| 2 | Receive Enable | Habilita la salida del receptor. RO está habilitado cuando RE está bajo; RO está en alta impedancia cuando RE está alto |
| 3 | Data Enable | Habilita la salida del driver. Las salidas del driver, Y y Z, se habilitan al poner DE en alto. Están en alta impedancia cuando DE está bajo. Si las salidas del driver están habilitadas, el dispositivo funciona como driver de línea. Mientras están en alta impedancia, funcionan como receptores de línea si RE está bajo. |
| 4 | Data In | Entrada del driver. Un nivel bajo en DI fuerza la salida Y a bajo y la salida Z a alto. De manera similar, un nivel alto en DI fuerza la salida Y a alto y la salida Z a bajo. |
| 5 | GND | Conexión a tierra |
| 6 | A | Entrada no inversora del receptor |
| 7 | B | Entrada inversora del receptor |
| 8 | VCC | Alimentación positiva, típicamente 5V |
¿Cómo conectar el módulo sensor NPK al Arduino UNO?
A continuación, la guía paso a paso para completar las conexiones de hardware necesarias para conectar el Arduino y el módulo sensor NPK.
Paso 1: Comienza con las conexiones de GND.

Conecta el pin de tierra del módulo convertidor RS485 al cable de tierra del sensor NPK.
Siempre conecta las tierras juntas antes de hacer otras conexiones.
Paso 2: Conecta los pines A y B del sensor

Conecta las terminales inversora y no inversora del módulo RS485 a los pines A y B del sensor NPK.
Paso 3: Conecta el pin de alimentación

Conecta el pin VCC del módulo al cable VCC del sensor NPK.
Paso 4: Verifica la conexión entre el convertidor RS485 y el sensor NPK

Esto completa las conexiones necesarias entre el módulo RS485 y el sensor NPK.
En los siguientes pasos, conectaremos el Arduino UNO al módulo RS485.
Paso 5: Conecta el pin RO al UNO

Conecta el pin 2 al pin RO del sensor RS485.
Paso 6: Conecta el pin DI al UNO

Conecta el pin 3 al pin DI del sensor RS485.
Paso 7: Conecta el pin DE al UNO

Conecta el pin DE del módulo al pin 7 del Arduino UNO.
Paso 8: Conecta el pin RE al UNO

Conecta el pin RE del módulo al pin 8 del Arduino UNO.
También puedes decidir intercambiar las conexiones con otros pines del Arduino UNO.
Por favor, actualiza también tu código Arduino para que las nuevas conexiones funcionen.
Paso 9: Verifica las conexiones completas

Verifica las conexiones. Felicidades por completar las conexiones necesarias para leer los sensores NPK.
Ejemplo de código Arduino para el proyecto Arduino y sensor NPK
En esta sección, repasaremos el código de ejemplo para Arduino para probar el módulo sensor NPK.
El primer proyecto prueba el circuito que construiste en la sección anterior.
Comencemos.
Código Arduino para mostrar los datos del sensor NPK
El código Arduino a continuación lee los datos del sensor NPK mediante RS485. El código Arduino se presenta a continuación.
#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];
}
Preguntas frecuentes
He incluido una lista de las preguntas más frecuentes sobre proyectos construidos usando Arduino y módulos sensores NPK.
Si tienes más preguntas, por favor publícalas en la sección de comentarios.
Estaré encantado de responderlas.
¿Qué es un sensor NPK?
NPK significa Nitrógeno, Fósforo y Potasio.
Los sensores NPK se usan para detectar la fertilidad del suelo. Los sensores NPK se utilizan para evaluar la naturaleza del suelo.
Monitorear la fertilidad de la tierra agrícola te ayuda a aumentar el rendimiento, evitando el uso excesivo de fertilizantes y la contaminación de la esencia natural del suelo.
Un sensor NPK se alimenta con un suministro de 5 V a 24 V. Consulta las especificaciones del sensor particular para información precisa sobre el rango de voltaje.
El sensor también soporta RS485 o una interfaz de comunicación similar.
En este artículo, hemos usado el protocolo RS485 para comunicarnos con el Arduino UNO.
¿Es preciso el sensor NPK?
Generalmente debería serlo, pero a veces puede ser un desafío obtener lecturas precisas. Puede depender del nutriente que quieras medir, del sensor y del circuito. Consulta la extensa discusión here para más información
¿Por qué es importante el valor NPK?
NPK representa el macronutriente más esencial del suelo. Si conoces el valor NPK en el suelo, puedes nutrir tus plantas de jardín con el nivel adecuado de nutrientes.
¿Cuál de los NPK es el más importante?
De los tres elementos, el nitrógeno es crítico para el desarrollo de la planta.
Los valores NPK son vitales para construir la estructura de la planta, la generación de semillas, flores, etc.
Los fertilizantes NPK deben aplicarse cuando la planta está creciendo activamente.
Los sensores NPK pueden usarse para monitorear activamente la información nutricional del suelo.
Enlaces
- 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
Conclusión
En este artículo, entendimos los conceptos básicos de un sensor NPK y cómo el sensor NPK mide los contenidos de NPK en el suelo.
También listamos las características de un sensor NPK y aprendimos los conceptos básicos del convertidor RS485 a TTL usado en el proyecto.
Puedes seguir los pasos de conexión y completar el circuito para nuestro proyecto de monitoreo de nutrición del suelo.
El código Arduino para leer los sensores NPK presentado es fácil y directo de entender.
Por favor, publica tus preguntas sobre los sensores NPK en la sección de comentarios. Siempre estoy feliz de responderlas.


