Produk
Layanan pelanggan +8618073152920Telepon / WhatsApp: +8615367865107
Alamat: Ruang 102, Distrik D, Kawasan Industri Houhu, Distrik Yuelu, Kota Changsha, Provinsi Hunan, Tiongkok
Dukungan teknis
Waktu:2024-06-29 21:07:28 Dilihat:5475
Sensor kelembaban tanah 8 in 1Rs485 untuk arduino
Dalam panduan ini, kita akan mempelajari cara menghubungkan Sensor Kelembaban & Suhu Tanah 8 in1 dengan Arduino menggunakan protokol RS485. Pengaturan ini memungkinkan kita memantau kadar air dan suhu tanah, yang merupakan parameter penting dalam pertanian dan perkebunan.
Sensor kelembaban tanah mengukur kandungan air volumetrik dalam tanah. Dengan memahami tingkat kelembapan, petani dan tukang kebun dapat mengambil keputusan yang tepat mengenai irigasi, sehingga memastikan pe rtu mbuhan tanaman yang optimal. Suhu tanah juga berperan penting dalam kesehatan tanaman, mempengaruhi pe rtu mbuhan akar dan penyerapan unsur hara.
Untuk proyek ini, kami akan menggunakan Sensor Kelembaban & Suhu Tanah Niubol8 in1, yang dirancang khusus untuk pengukuran di dalam tanah.
Oleh karena itu kami menggunakan Sensor Tanah Kelas Industri untuk proyek ini. Untuk menghubungkan sensor dengan Arduino, kita akan menggunakan protokol komunikasi RS485. Data dari Sensor Kelembaban & Suhu Tanah akan disajikan pada layar OLED yang terhubung dengan Arduino.
Berikut 4 kabel untuk sensornya:
Kawat Coklat: VCC (5V-24V)
Kabel Hitam: GND
Kabel Kuning:RS485-A
Kabel Biru:RS485-B
Persyaratan:
Perangkat keras
DFRduino UNO R3 (atau serupa) x 1
Pelindung RS485 untuk Arduino x1
RS485 Sensor Tanah (Suhu & Kelembapan &EC& Salinitas &Ph& NPK) x 1
Perangkat Lunak:
Arduino IDE
Berikut pemetaan koneksi antara MAX485 & Sensor Suhu Kelembaban Tanah.
VCC -> 5V (Sensor Tanah)
GND -> GND (Sensor Tanah)
A (MAX485) -> Pin A Sensor Tanah (Warna Kuning)
B (MAX485) -> Pin B Sensor Tanah (Warna Biru)
Koneksi Sensor Suhu Kelembaban Tanah dengan Arduino. Anda dapat menggunakan papan tempat memotong roti untuk perakitan dan kabel jumper untuk menghubungkan sensor dan Modul RS485 dengan Arduino.
Kode Sumber/Program Membaca 8 in1 Kelembaban & Suhu Tanah
Source Code Program Pembacaan Kelembaban Tanah sensor.txt
#termasuk
// Tentukan pin untuk komunikasi RS485
#definisikan RO 2
#definisikan DI 3
#definisikan RE 8
#definisikan DE 7
#tentukan RESPONSE_FRAME_SIZE 21
char sensorDataTextBuffer[200];
struct SoilSensorData
{
bool isSensorTimeout{false};
bool adalahValid{false};
suhu mengambang{-1.0};
kelembaban mengambang{-1.0};
unsigned int konduktivitas{-1};
mengapungph{-1.0};
tidak bertanda tangan nitrogen{-1};
unsigned int fosfor{-1};
unsigned int potasium{-1};
salinitas int yang tidak ditandatangani{-1};
};
kelas Sensor Tanah
{
publik:
Sensor Tanah()
{
modbus= Perangkat LunakSerial baru(RO, DI);
}
batalkan inisialisasi()
{
Serial.mulai(9600);// Inisialisasi komunikasi serial untuk debugging
modbus->mulai(9600); // Inisialisasi komunikasi serial perangkat lunak pada kecepatan baud 9600
pinMode(RE, KELUARAN); // Tetapkan pin RE sebagai keluaran
pinMode(DE, KELUARAN); // Tetapkan DE pi
}
batal kirimDataRequest()
{
digitalWrite(DE, TINGGI);
digitalWrite(RE, TINGGI);
penundaan(10);
// Kirim frame permintaan ke sensor tanah
modbus->tulis(soilSensorRequest, sizeof(soilSensorRequest));
}
Baca Data Sensor Tanah()
{
Data Sensor Tanah Data Sensor Tanah;
// Akhiri mode transmisi dan atur ke mode penerimaan untuk RS485
digitalWrite(DE, RENDAH);
digitalWrite(RE, RENDAH);
penundaan(10);
//Tunggu respon dari sensor atau timeout setelah 1 detik
unsigned long startTime = millis();
sementara (modbus-> tersedia() < RESPONSE_FRAME_SIZE && millis() - startTime < 1000)
{
penundaan(1);
}
if (modbus->available() >= RESPONSE_FRAME_SIZE) // Jika respons valid diterima
{
// Membaca respon dari sensor
indeks byte = 0;
sementara (modbus-> tersedia() && indeks < RESPONSE_FRAME_SIZE)
{
soilSensorResponse[index]=modbus->baca();
indeks++;
}
soilSensorData = menghitungData();
}
yang lain
{
soilSensorData.isSensorTimeout = benar;
}
kembalikan soilSensorData;
}
~Sensor Tanah()
{
jika (modbus!= nullptr) hapus modbus;
hapus[] respon sensor tanah;
}
pribadi:
const byte soilSensorRequest[8]={0x01, 0x03, 0x00, 0x00, 0x00, 0x08, 0x44, 0x0C};
SoftwareSerial*modbus= nullptr;
byte soilSensorResponse[RESPONSE_FRAME_SIZE];
int convertBytesToDecimal(offset int tidak ditandatangani)
{
kembalikan soilSensorResponse[offset]* 256 + soilSensorResponse[offset + 1];
}
SoilSensorData computeData() konstanta
{
Data Sensor Tanah Data Sensor Tanah;
jika (soilSensorResponse[0]!= 1 || soilSensorResponse[1]!= 3 || soilSensorResponse[2]!= 16)
{
soilSensorData.isValid = salah;
kembalikan soilSensorData;
}
soilSensorData.isValid = benar;
soilSensorData.temperature = convertBytesToDecimal(3) / 10.0; //derajat celcius
soilSensorData.kelembaban = convertBytesToDecimal(5) / 10.0; // persen
soilSensorData.konduktivitas = convertBytesToDecimal(7);// microSiemens per sentimeter
DataSensor tanah.ph= konversiBytesToDecimal(9) / 100,0;
soilSensorData.nitrogen = convertBytesToDecimal(11); // miligram per Kilogram
soilSensorData.fosfor = convertBytesToDecimal(13); // miligram per Kilogram
soilSensorData.potassium = convertBytesToDecimal(15); // miligram per Kilogram
soilSensorData.salinity = convertBytesToDecimal(17); // miligram per Kilogram
kembalikan soilSensorData;
}
};
Sensor Tanah Sensor tanah;
batal menulisSensorDataToString(SoilSensorData & sensorData)
{
jika (sensorData.isSensorTimeout)
{
sprintf(sensorDataTextBuffer, "Data tidak lengkap atau waktu habis sensor");
}
yang lain
{
jika (sensorData.isValid)
{
char* tempStr = malloc(6 * sizeof(char));
char* kelembabanStr = malloc(6 * sizeof(char));
char* phStr = malloc(6 * ukuran(char));
dtostrf(sensorData.temperature, 4, 1, tempStr);
dtostrf(sensorData.kelembaban, 4, 1, kelembabanStr);
dtostrf(sensorData.ph, 4, 2, phStr);
konduktivitas otomatis = sensorData.konduktivitas;
auto n = sensorData.nitrogen;
auto p = sensorData.fosfor;
auto k = sensorData.kalium;
salinitas otomatis = sensorData.salinitas;
sprintf(sensorDataTextBuffer, "Suhu: %s; Kelembapan: %s;Konduktivitas: %u;PH: %s; N: %u; P:%u; K:%u; Salinitas: %u", tempStr, kelembabanStr, konduktivitas, phStr, n, p, k, salinitas);
jika (tempStr!= NULL) gratis(tempStr);
jika (kelembabanStr!= NULL) gratis(kelembabanStr);
jika (phStr!= NULL) gratis(phStr);
}
yang lain
{
sprintf(sensorDataTextBuffer, "Data yang dibaca dari sensor tidak valid");
}
}
}
batalkan pengaturan()
{
soilSensor.initialise();
}
lingkaran kosong()
{
soilSensor.sendDataRequest();
SoilSensorData sensorData = soilSensor.read();
tulisSensorDataToString(sensorData);
Serial.println(sensorDataTextBuffer);
penundaan (2000); // Tunggu sebentar sebelum iterasi loop berikutnya
}
Terima kasih kepada Phil Ogun untuk kodenya!
Sensor Tanah 8-in-1 adalah sensor yang mengintegrasikan beberapa parameter seperti suhu, kelembaban, konduktivitas, NPK, salinitas, danPH. Dengan sensor seperti itu, pengguna dapat dengan mudah mengakses beberapa data penting tanah, membantu mereka untuk lebih memahami kondisi tanah dan membuat penyesuaian serta keputusan yang sesuai.
Dengan mengukur konstanta dielektrik tanah, maka secara langsung dan stabil dapat mencerminkan kadar air sebenarnya dari berbagai tanah. Sangat cocok untuk pemantauan kelembaban tanah, eksperimen ilmiah, irigasi hemat air, rumah kaca, bunga dan sayuran, padang rumput, uji cepat tanah, budidaya tanaman, pengolahan limbah, pertanian halus dan kesempatan lainnya.Catu daya masukan sensor, probe penginderaan, keluaran sinyal tiga bagian benar-benar terisolasi, aman dan andal, penampilan cantik, mudah dipasang, probe terbuat dari baja tahan karat, tahan korosi, kinerja stabil.
1. Lembar data Sensor Kelembapan Suhu TanahNBL-S-THR
NBL-S-THR-Soil-temperature-and-moisture-sensors-Instruction-Manual-V4.0.pdf
2. Lembar data SensorNBL-S-TMCKelembaban Suhu TanahEC
NBL-S-TMC-Soil-temperature-and-moisture-conductivity-sensor.pdf
3. Lembar data Sensor Kelembapan Suhu TanahNBL-S-TM
NBL-S-TM-Soil-temperature-and-moisture-sensor-Instruction-Manual-4.0.pdf
4.NBL-S-TMCSSensor Terintegrasi Suhu, Kelembapan, Konduktivitas dan Salinitas Tanah
NBL-S-TMCS-Soil-Temperature-Humidity-Conductivity-and-Salinity-Sensor.pdf
5.NBL-S-TMCS-7Suhu Tanah, Kelembaban, NPK, Konduktivitas dan Sensor TerintegrasipH
Panduan Sensor Komposit Tanah 7-in-1.pdf
4.NBL-S-TMCS-8Suhu Tanah, Kelembaban, NPK,pH, Sensor Terintegrasi Konduktivitas dan Salinitas
Sebelumnya:Pemasangan dan pemeliharaan stasiun cuaca otomatis
Berikutnya:Perubahan Alamat Perangkat Sensor RS485
Rekomendasi terkait
Katalog sensor dan stasiun cuaca
Katalog sensor pertanian dan stasiun cuaca - NiuBoL.pdf
Katalog stasiun cuaca - NiuBoL.pdf
Katalog sensor pertanian - NiuBoL.pdf
Katalog sensor kualitas air - NiuBoL.pdf
Produk terkait
Sensor suhu udara dan kelembaban relatif gabungan
Sensor Suhu Kelembaban Tanah untuk irigasi| NBL-S-THR
Sensor pH Tanah Alat Uji Tanah RS485 Pengukur Ph Tanah untuk Pertanian | NBL-S-PH
Output Sensor Kecepatan Angin Modbus / RS485 /Analog/0-5V/4-20mA
Alat pengukur hujan tipping bucket untuk pemantauan cuaca sensor curah hujan otomatis RS485 /Outdoor/baja taha···
Sensor Radiasi Matahari Pyranometer 4-20mA/ RS485
Pindai kode QR dengan WhatsApp
Nomor WhatsApp:+8615367865107
(Klik untuk menyalin dan menambahkan di WhatsApp)