راهنمای جامع فناوری تولید و مصرف کود کشاورزی نوین
مقدمهای شخصی: سال ۹۸ بود که در مزرعهی پدربزرگم توی شوشتر، متوجه شدم با وجود اینکه سال قبل دو برابر قبلش کود دادیم، باز هم محصول گوجهسبز ما کمرنگ شد. همون تابستون بود که تصمیم گرفتم یک سیستم هوشمند برای مدیریت تغذیه گیاه راه بندازم. نتیجهاش شد همین داکیومنتی که جلوتون دارید.
اگر حوصلهتون سر نرفته، در ادامه هم یه برگهی تقلب (Cheatsheet) گذاشتم که بشه چسبوند به دیوار انبار کود.
فهرست مطالب
- پیشنیازها
- نصب و راهاندازی ایستگاه هوشمند تغذیه
- کار با API سنسورها
- کدنویسی برای اسپریر دقیق (Variable-Rate Application)
- جدول مقایسه خانواده کودها
- سوالات متداول
- عیبیابی سریع
- منابع و لینکهای مفید
پیشنیازها
- Node.js ≥ ۱۸
- یک برد ESP-32 (یا هر بردی که I²C و UART داشته باشه)
- ماژول NPK سنسور (کدمای دلتا K=۱۰٪)
- شیر برقی ۱۲V درین دار برای کنترل پمپ تزریق اسید
- لوله نازل اسپری با اتصال سری (Bsp ¾ اینچ)
- یادتون باشه شلنگ رو قبل از جا انداختن، ۱۰ ثانیه بجوشونید تا از شرقوی ضدعفونی دربیاد (تجربه شخصی!)
- اکانت رایگان کالاتَک برای دانلود نقشههای مزرعه
نصب و راهاندازی ایستگاه هوشمند تغذیه
1) نصب پکیجهای npm
mkdir farm-feeder && cd farm-feeder
npm init -y
npm i serialport dotenv mqtt
npm i -D nodemon # برای ریاستارت خودکار در دولوپ
2) فایل .env بسازید
# پورت سریال مربوط به ماژول NPK
NPK_PORT=/dev/ttyUSB0
# سرعتی که با ESP32 کنار اومده بود
NPK_BAUD=4800
MQTT_HOST=io.adafruit.com
MQTT_PORT=1883
MQTT_USER=mojtaba
MQTT_PASS=your_aio_key
3) اسکریپت رو برای اجرا در package.json اضافه کنید
"scripts": {
"dev": "nodemon index.js",
"start": "node index.js"
}
کار با API سنسورها
تست سریع با اسکریپت CLI
node -e "
const SerialPort = require('serialport');
const port = new SerialPort('/dev/ttyUSB0', { baudRate: 4800 });
port.on('open', () => port.write(Buffer.from([0x01, 0x03, 0x00, 0x00, 0x00, 0x03, 0x04, 0x0B])));
port.on('data', d => console.log('NPK=', d.toString('hex')));
"
ساخت کلاس NPKSensor.js
const { SerialPort } = require('serialport');
class NPKSensor {
constructor(path = '/dev/ttyUSB0', baud = 4800) {
this.port = new SerialPort({ path, baudRate: baud });
}
query() {
const cmd = Buffer.from([0x01,0x03,0x00,0x00,0x00,0x03,0x04,0x0B]);
return new Promise((res, rej) => {
let to = setTimeout(() => rej(new Error('timeout')), 1500);
this.port.write(cmd);
this.port.once('data', data => {
clearTimeout(to);
const n = data[3]/10;
const p = data[4]/10;
const k = data[5]/10;
res({ n, p, k });
});
});
}
}
module.exports = NPKSensor;
کدنویسی برای اسپریر دقیق (Variable-Rate Application)
تزریق بر اساس کمبود پتاسیم
const { NPKSensor } = require('./NPKSensor');
const mqtt = require('mqtt');
const client = mqtt.connect({
host: process.env.MQTT_HOST,
port: process.env.MQTT_PORT,
username: process.env.MQTT_USER,
password: process.env.MQTT_PASS
});
const npk = new NPKSensor();
// واحدها: درصد
const DESIRED_K = 2.8; // نیاز گیاه گوجهفرنگی در مراحل رشد
const TOLERANCE = 0.25;
async function adjustFlow() {
try {
const { k } = await npk.query();
console.log('K soil:', k);
if (k < DESIRED_K - TOLERANCE) {
client.publish('feeder/k-deficiency', JSON.stringify({k, open:1}));
} else {
client.publish('feeder/k-deficiency', JSON.stringify({k, open:0}));
}
} catch (e) {
console.error('Sensor read failed:', e.message);
}
}
setInterval(adjustFlow, 60 * 1000); // هر دقیقه بررسی
روالهای اتصال به شیر برقی
| پین ESP32 | عملگر | توضیح |
|---|---|---|
| GPIO 25 | MOSFET | برای شیر ۱۲V – پولداون ۱۰kΩ |
| GPIO 26 | LED Indic. | چشمک زن در حال تزریق |
| GPIO 34 | Flow meter | وقتی پالس/ثانیه < 50 خطا بده |
جدول مقایسه خانواده کودها
| نوع کود | فرمول اصلی | قابلیت حلپذیری | PH خاک بعد ۳۰ روز | چرخه تجزیه (روز) | قیمت* (تومان/کیلو) |
|---|---|---|---|---|---|
| نیترات آمونیوم | NH₄NO₃ | کامل | 5.2 | 1 | 4,500 |
| سولفات پتاسیم | K₂SO₄ | ۹۲٪ | 6.8 | 5 | 6,300 |
| سوپر فسفات ساده | Ca(H₂PO₄)₂ | ۸۰٪ | 4.9 | 8 | 3,700 |
| اوره | CO(NH₂)₂ | کامل | 7.1 | 3 | 3,200 |
| کود دامی پوسیده | - | ۴۰٪ | 7.3 | ۱۴ | 1,800 |
*قیمتها بر اساس حواله تهران، خرداد ۱۴۰۳.
سوالات متداول
سؤال: فاصله زمانی مناسب برای نمونهگیری NPK چقدر است؟
پاسخ: در خاک لومی، هر ۶ ساعت یکبار کافیه؛ اما اگر خاکتون شنیه، هر ۳ ساعت بخونید چون آب زود میره پایین و کود با خودش میبره.
سؤال: چرا با وجود تزریق پتاسیم، هنوز K خاک پایینه؟
پاسخ: احتمالاً کاتیونهای کلسیم زیاد شده و جذب پتاس رو رقابتی کرده. یه تست تعویض کاتیون انجام بدید یا کمی MgSo₄ اضافه کنید تا تعادل بشه.
سؤال: آیا پسماندهای اسپری در لوله خطرناکه؟
پاسخ: بله، اگر زیر ۱۰ درجه باشه اوره رسوب میده؛ بهتره پس از هر بار استفاده یه کم آب تمیز بگیرید و پمپ رو ریورس بدید تا لوله خالی بشه.
عیبیابی سریع
| علامت ایراد | دلیل محتمل | راهکار |
|---|---|---|
| سنسور NPK فقط FF برمیگردونه | آدرس Modbus اشتباه | cmd[0]=0x02 بذارید |
| شیر برقی لرزش داره | فرکانس PWM خیلی بالا | کمش کنید به ۱۰۰ هرتز |
| MQTT Disconnect هر ۲ دقیقه | QoS=2 تنظیم شده | QoS=0 بذارید چون حجمتون بالاست |
| میزان K در یک مرز میره بالا | کالیبراسیون دما انجام نشده | دمای خاک رو از سنسور DS18B20 بخونید و ضریب ۰.۰۲۵ درجهی سانتیگراد رو اعمال کنید |
منابع و لینکهای مفید
- کالاتَک – نقشههای مزرعه دقیق
- Repo رسمی این پروژه (اگر دوست داشتید PR بدید، خوشحال میشم)
- وایتپیپر: تاثیر IoT بر بهرهوری کود در کلزا (PDF انگلیسی)
نکته پایانی: سعی کنید همیشه یه نسخهی خامهای از کدتون توی فلش ۳۲ گیگ نگه دارید کنار ایستگاه. تابستون قبل یه برق پرقدرگ اومد، برد سوخت، ولی چون پشتیبان داشتم تونستم ظرف ۲۰ دقیقه دوباره بالا بیارم. موفق باشید و خاکتون همیشه برکت داشتهباشه!
Top comments (0)