🛠️ MAKER GUIDEAug 04, 2026•⏱️ 3 min read•🇳🇵 Tested in Nepal
Precision Soil NPK & pH Sensor with RS485 Modbus Telemetry
Measure Soil Nitrogen, Phosphorus, Potassium (NPK), and pH levels on agricultural fields using industrial RS485 Modbus sensors with Arduino.
🛠️ BILL OF MATERIALS (BOM)
Required Hardware & Component Checklist
Curated components verified for this project. Check the items you need, adjust quantities, and add straight to cart:
Estimated Total (6/6 items):
NPR 15,500
✓ Cash on Delivery across Nepal
All parts selected
NPR 750
NPR 150
NPR 14,000
NPR 500
NPR 50
NPR 50
Precision Soil NPK & pH Sensor with RS485 Modbus Telemetry
Educational Notes
This project is designed to be accessible to students from Class 4 to Masters level, with complexity scalable to match different age groups and skill levels.
Learning Objectives:
- Understand basic electronics and circuitry principles
- Learn sensor applications and data collection techniques
- Develop problem-solving skills through hands-on building and troubleshooting
- Apply programming concepts to control hardware and process data
- Connect projects to real-world Nepalese contexts and challenges
Adaptability:
- For younger students (Class 4-8): Focus on assembling pre-built circuits, observing results, and understanding basic concepts
- For intermediate students (Class 9-12): Modify code, experiment with parameters, and explore underlying principles
- For advanced students (Undergraduate/Masters): Optimize designs, add features, conduct research extensions, and analyze performance
Safety Note: Always supervise younger students when working with electricity, heat, or moving parts.
Industrial agriculture sensors communicate using RS485 Modbus RTU protocol to ensure noise-immune readings over long field wire lengths.
Hardware Bill of Materials:
- Microcontroller: Arduino Nano V3.0 Solderless
- RS485 Transceiver: MAX485 TTL To RS485 Module
- Soil Probe: Soil Sensor JXBS-3001 NPK RS
- Display: 1602 (16x2) LCD Display with I2C/IIC interface - Blue Backlight
- Power: 9V Battery with 10CM DC 9V 5.5*2.1mm Battery Button Power Plug
Circuit Pinout & Wiring Connections:
| Component / Sensor Pin | Arduino Nano Pin | Function / Description |
|---|---|---|
| MAX485 VCC / GND | 5V / GND | RS485 Transceiver Power |
| MAX485 DI (Driver In) | Pin D3 (SoftwareSerial TX) | Serial Transmit to Sensor |
| MAX485 RO (Receiver Out) | Pin D2 (SoftwareSerial RX) | Serial Receive from Sensor |
| MAX485 DE & RE (Tied) | Pin D4 | Direction Control (HIGH = TX, LOW = RX) |
| MAX485 A / B Terminals | Soil Probe A (Yellow) / B (Blue) | Differential RS485 Bus |
| 1602 LCD SDA / SCL | Pin A4 / Pin A5 | I2C Bus |
| Soil Probe VCC / GND | 9V / GND | Probe Supply (7V-24V Required) |
Firmware Source Code (Arduino Uno C++)
#include <Wire.h>
#include <EEPROM.h>
// L298N Motor Driver Pin Connections
const int ENA = 5;
const int IN1 = 18;
const int IN2 = 19;
const int IN3 = 21;
const int IN4 = 22;
const int ENB = 23;
void setup() {
Serial.begin(9600);
pinMode(ENA, OUTPUT);
pinMode(ENB, OUTPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
Serial.println("Robotic Chassis & Motor Driver Controller Active.");
}
void moveForward(int speedVal) {
analogWrite(ENA, speedVal);
analogWrite(ENB, speedVal);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
}
void stopMotors() {
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
}
void loop() {
Serial.println("Executing Autonomous Drive Routine Forward...");
moveForward(200);
delay(3000);
Serial.println("Stopping Motors...");
stopMotors();
delay(2000);
}
← Previous Guide
Smart Ultrasonic Blind Walking Stick with Haptic Vibration Alert
Next Guide →
Digital Room Thermometer & Relative Humidity Meter with LCD1602 Display
