Telepon Hotline: +8618073152920
Telepon
Indonesia
Kontak/ Kontak
Layanan pelanggan +8618073152920
Changsha Zoko Link Technology Co., Ltd.

Email: sales@niubol.com

Telepon / WhatsApp: +8615367865107

Alamat: Ruang 102, Distrik D, Kawasan Industri Houhu, Distrik Yuelu, Kota Changsha, Provinsi Hunan, Tiongkok

Dukungan teknis

Kode Arduino Sensor Kelembaban Tanah

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.

Sensor Tanah Integrasi 8-in-1.jpg

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.

Lembar Data Sensor Tanah:

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

Panduan Sensor Komposit Tanah 8-in-1.pdf

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

Kirimkan kebutuhan Anda. Kami akan membahas proyek Anda dan menemukan solusi yang tepat.

Nama*

Telepon*

E-mail*

Perusahaan*

Negara*

Pesan

Online
Kontak
E-mail
Atas
XKode Arduino Sensor Kelembaban Tanah-Dukungan teknis-Stasiun cuaca otomatis, sensor industri, dan solusi IoT untuk pertanian, air, dan lingkungan | NiuBoL

Pindai kode QR dengan WhatsApp

Nomor WhatsApp:+8615367865107

(Klik untuk menyalin dan menambahkan di WhatsApp)

Buka WhatsApp

Nomor WhatsApp telah disalin. Buka WhatsApp untuk menghubungi kami!
WhatsApp