Gọi điện thoại Đường dây nóng: +8618073152920
Gọi điện thoại
Tiếng Việt
Liên hệ/ Liên hệ
Chăm sóc khách hàng +8618073152920
Changsha Zoko Link Technology Co., Ltd.

Email: sales@niubol.com

Điện thoại / WhatsApp: +8615367865107

Địa chỉ: Phòng 102, Khu D, Khu công nghiệp Houhu, Quận Yuelu, Thành phố Changsha, Tỉnh Hồ Nam, Trung Quốc

Hỗ trợ kỹ thuật

Mã Arduino cảm biến độ ẩm đất

Thời gian:2024-06-29 21:07:28 Lượt xem:5476

Cảm biến độ ẩm đất 8 trong 1Rs485 cho arduino

Trong hướng dẫn này, chúng ta sẽ khám phá cách kết nối Cảm biến nhiệt độ và độ ẩm đất 8 in1 với Arduino bằng giao thức RS485. Thiết lập này sẽ cho phép chúng tôi theo dõi độ ẩm và nhiệt độ của đất, đây là những thông số quan trọng cho nông nghiệp và làm vườn.

Cảm biến độ ẩm đất đo hàm lượng nước thể tích trong đất. Bằng cách hiểu rõ độ ẩm, nông dân và người làm vườn có thể đưa ra quyết định sáng suốt về việc tưới tiêu, đảm bảo cây trồng phát triển tối ưu. Nhiệt độ của đất cũng đóng một vai trò quan trọng đối với sức khỏe thực vật, ảnh hưởng đến sự phát triển của rễ và sự hấp thu chất dinh dưỡng.

Cảm biến đất tích hợp 8 trong 1.jpg

Đối với dự án này, chúng tôi sẽ sử dụng Cảm biến nhiệt độ và độ ẩm đất Niubol8 in1, được thiết kế đặc biệt để đo trên mặt đất.

Vì vậy, chúng tôi đang sử dụng Cảm biến đất cấp công nghiệp cho dự án này. Để giao tiếp cảm biến với Arduino, chúng tôi sẽ sử dụng giao thức giao tiếp RS485. Dữ liệu từ Cảm biến nhiệt độ và độ ẩm đất sẽ được hiển thị trên màn hình OLED được kết nối với Arduino.

Dưới đây là 4 dây cho cảm biến:

Dây màu nâu:  VCC (5V-24V)

Dây màu đen: GND

Dây màu vàng:RS485-A

Dây màu xanh:RS485-B

Yêu cầu:

Phần cứng

DFRduino UNO R3 (hoặc tương tự) x 1

RS485 Khiên cho Arduino x1

Cảm biến đất RS485(Nhiệt độ & Độ ẩm &EC& Độ mặn &Ph& NPK) x 1

Phần mềm:

Arduino IDE

Dưới đây là sơ đồ kết nối giữa cảm biến nhiệt độ độ ẩm MAX485 và đất.

VCC -> 5V (Cảm biến đất)

GND  -> GND (Cảm biến đất)

A (MAX485) -> Chân cảm biến đất A (Màu vàng)

B (MAX485) -> Chân B của cảm biến đất (Màu xanh)

Kết nối cảm biến nhiệt độ độ ẩm đất với Arduino. Bạn có thể sử dụng bảng mạch để lắp ráp và dây nhảy để kết nối cảm biến và Mô-đun RS485 với Arduino.

Mã nguồn/Chương trình đọc 8 in1 Độ ẩm và nhiệt độ đất

Chương trình mã nguồn để đọc cảm biến độ ẩm đất.txt


#include

// Xác định các chân cho giao tiếp RS485

#xác định RO 2

#xác định DI 3

#define RE 8

#xác định DE 7

#xác định RESPONSE_FRAME_SIZE 21

cảm biến charDataTextBuffer[200];

struct SoilSensorData

{

bool isSensorTimeout{false};

bool isValid{false};

nhiệt độ phao{-1.0};

độ ẩm nổi{-1.0};

độ dẫn int không dấu{-1};

phaoph{-1.0};

nitơ int không dấu{-1};

phốt pho int không dấu{-1};

unsign int kali{-1};

độ mặn không dấu{-1};

};

lớp đấtCảm biến

{

công cộng:

Cảm biến đất()

    {

modbus= SoftwareSerial mới(RO, DI);

    }

khởi tạo void()

    {

Serial.begin(9600);// Khởi tạo giao tiếp nối tiếp để gỡ lỗi

modbus->bắt đầu(9600);    // Khởi tạo giao tiếp nối tiếp phần mềm ở tốc độ 9600 baud

pinMode(RE, OUTPUT); // Đặt chân RE làm đầu ra

pinMode(DE, OUTPUT); // Đặt DE pi

    }

làm mất hiệu lực gửiDataRequest()

    {

digitalWrite(DE, CAO);

digitalWrite(RE, CAO);

độ trễ(10);

// Gửi khung yêu cầu đến cảm biến đất

modbus->write(soilSensorRequest, sizeof(soilSensorRequest));

    }

    

Đọc dữ liệu SoilSensorData()

    {

Dữ liệu đấtSensorDataSensorData;

// Kết thúc chế độ truyền và đặt sang chế độ nhận cho RS485

digitalWrite(DE, THẤP);

digitalWrite(RE, THẤP);

độ trễ(10);

//Đợi phản hồi từ cảm biến hoặc hết thời gian chờ sau 1 giây

thời gian bắt đầu dài không dấu = millis();

trong khi (modbus->available() < RESPONSE_FRAME_SIZE && millis() - startTime < 1000)

      {

độ trễ (1);

      }

if (modbus->available() >= RESPONSE_FRAME_SIZE) // Nếu nhận được phản hồi hợp lệ

      {

// Đọc phản hồi từ cảm biến

chỉ số byte = 0;

trong khi (modbus-> có sẵn() && chỉ mục < RESPONSE_FRAME_SIZE)

        {

đấtSensorResponse[index]=modbus->read();

chỉ mục++;

        }

đấtSensorData = tínhData();

      }

khác

      {

đấtSensorData.isSensorTimeout = true;

      }

trả về đấtSensorData;

    } 

~Cảm biến đất()

    {

nếu (modbus!= nullptr) xóa modbus;

xóa[] landSensorResponse;

    }

riêng tư:

const byte đấtSensorRequest[8]={0x01, 0x03, 0x00, 0x00, 0x00, 0x08, 0x44, 0x0C};

SoftwareSerial*modbus= nullptr;

byte đấtSensorResponse[RESPONSE_FRAME_SIZE];

int ConvertBytesToDecimal(unsigned int offset)

    {

trả về đấtSensorResponse[offset]* 256 + đấtSensorResponse[offset + 1];

    }

SoilSensorData tính toánData() const

    {

Dữ liệu đấtSensorDataSensorData;


if (soilSensorResponse[0]!= 1 || landSensorResponse[1]!= 3 || landSensorResponse[2]!= 16)

      {

đấtSensorData.isValid = false;

trả về đấtSensorData;

      }

đấtSensorData.isValid = true;

đấtSensorData. Nhiệt độ = ConvertBytesToDecimal(3) / 10.0; // độ celcius

đấtSensorData.humidity = ConvertBytesToDecimal(5) / 10.0; // phần trăm

đấtSensorData.conductivity = ConvertBytesToDecimal(7);// microSiemens trên centimet

đấtSensorData.ph= ConvertBytesToDecimal(9) / 100.0;

đấtSensorData.nitrogen = ConvertBytesToDecimal(11); // miligam trên kilôgam

đấtSensorData.phosphorus = ConvertBytesToDecimal(13); // miligam trên kilôgam

đấtSensorData.potassium = ConvertBytesToDecimal(15); // miligam trên kilôgam

đấtSensorData.solinity = ConvertBytesToDecimal(17); // miligam trên kilôgam

trả về đấtSensorData;

    }

 };


Cảm biến đấtCảm biến đất;

void writeSensorDataToString(SoilSensorData & SensorData)

{

nếu (sensorData.isSensorTimeout)

  {

sprintf(sensorDataTextBuffer, "Dữ liệu chưa đầy đủ hoặc hết thời gian cảm biến");

  }

khác

  {

nếu (cảm biếnData.isValid)

    {

char* tempStr = malloc(6 * sizeof(char));

char* độ ẩmStr = malloc(6 * sizeof(char));

char* phStr = malloc(6 * sizeof(char));

dtostrf(sensorData. Nhiệt độ, 4, 1, tempStr);

dtostrf(sensorData.humidity, 4, 1, MoistureStr);

dtostrf(sensorData.ph, 4, 2, phStr);

độ dẫn tự động = cảm biếnData.conductivity;

auto n = cảm biếnData.nitrogen;

tự động p = cảm biếnData.phosphorus;

auto k = cảm biếnData.kali;

độ mặn tự động = cảm biếnData.solinity;

sprintf(sensorDataTextBuffer, "Nhiệt độ: %s; Độ ẩm: %s;Độ dẫn điện: %u;PH: %s; N: %u; P: %u; K: %u; Độ mặn: %u”, nhiệt độ, độ ẩmStr, độ dẫn điện, phStr, n, p, k, độ mặn);

if (tempStr!= NULL) free(tempStr);

if (độ ẩmStr!= NULL) free(humidityStr);

if (phStr!= NULL) free(phStr);

    }

khác

    {

sprintf(sensorDataTextBuffer, "Dữ liệu đọc từ cảm biến không hợp lệ");

    }

  }

}


thiết lập trống()

{

đấtSensor.initialise();

}


vòng lặp trống()

{

đấtSensor.sendDataRequest();

SoilSensorData cảm biếnData = landSensor.read();

writeSensorDataToString(sensorData);

Serial.println(sensorDataTextBuffer);

độ trễ (2000); // Đợi một giây trước khi lặp lại vòng lặp tiếp theo

}


Cảm ơn Phil Ogun về mã!

Cảm biến đất 8 trong 1 là cảm biến tích hợp nhiều thông số như nhiệt độ, độ ẩm, độ dẫn điện, NPK, độ mặn,PH… Với cảm biến như vậy, người dùng có thể dễ dàng truy cập nhiều dữ liệu quan trọng của đất, giúp họ hiểu rõ hơn về tình trạng của đất và đưa ra những điều chỉnh, quyết định phù hợp.

Bằng cách đo hằng số điện môi của đất, nó có thể phản ánh trực tiếp và ổn định độ ẩm thực của các loại đất khác nhau. Nó phù hợp để theo dõi độ ẩm của đất, thí nghiệm khoa học, tưới tiết kiệm nước, nhà kính, hoa và rau, đồng cỏ, kiểm tra nhanh đất, trồng cây, xử lý nước thải, nông nghiệp tốt và các dịp khác.Nguồn điện đầu vào của cảm biến, đầu dò cảm biến, đầu ra tín hiệu ba phần hoàn toàn cách ly, an toàn và đáng tin cậy, hình thức đẹp, dễ lắp đặt, đầu dò được làm bằng thép không gỉ, chống ăn mòn, hiệu suất ổn định.

Bảng dữ liệu cảm biến đất:

1. Bảng dữ liệu cảm biến độ ẩm nhiệt độ đấtNBL-S-THR

NBL-S-THR-Soil-temperature-and-moisture-sensors-Instruction-Manual-V4.0.pdf

2. Bảng dữ liệu cảm biếnNBL-S-TMCĐộ ẩm nhiệt độ đấtEC

NBL-S-TMC-Soil-temperature-and-moisture-conductivity-sensor.pdf

3.  Bảng dữ liệu cảm biến độ ẩm nhiệt độ đấtNBL-S-TM

NBL-S-TM-Soil-temperature-and-moisture-sensor-Instruction-Manual-4.0.pdf

4.NBL-S-TMCSCảm biến tích hợp nhiệt độ, độ ẩm, độ dẫn điện và độ mặn của đất

NBL-S-TMCS-Soil-Temperature-Humidity-Conductivity-and-Salinity-Sensor.pdf

5.NBL-S-TMCS-7Nhiệt độ đất, Độ ẩm, NPK, Độ dẫn điện và Cảm biến tích hợppH

Hướng dẫn sử dụng cảm biến đất tổng hợp 7 trong 1.pdf

4.NBL-S-TMCS-8Nhiệt độ đất, Độ ẩm, NPK,pH, Cảm biến tích hợp độ dẫn điện và độ mặn

Hướng dẫn sử dụng cảm biến 8 trong 1-Đất-Composite-Sensor.pdf

Đề xuất liên quan

Catalogue cảm biến và trạm thời tiết

Catalogue cảm biến nông nghiệp và trạm thời tiết - NiuBoL.pdf

Catalogue trạm thời tiết - NiuBoL.pdf

Catalogue cảm biến nông nghiệp - NiuBoL.pdf

Catalogue cảm biến chất lượng nước - NiuBoL.pdf

Sản phẩm liên quan

Gửi yêu cầu của bạn. Chúng tôi sẽ trao đổi về dự án và tìm giải pháp phù hợp.

Họ tên*

Điện thoại*

E-mail*

Công ty*

Quốc gia*

Tin nhắn

Online
Liên hệ
E-mail
Lên đầu
XMã Arduino cảm biến độ ẩm đất-Hỗ trợ kỹ thuật-Trạm thời tiết tự động, cảm biến công nghiệp và giải pháp IoT cho nông nghiệp, nước và môi trường | NiuBoL

Quét mã QR bằng WhatsApp

Số WhatsApp:+8615367865107

(Nhấp để sao chép và thêm trên WhatsApp)

Mở WhatsApp

Số WhatsApp đã được sao chép. Mở WhatsApp để liên hệ với chúng tôi!
WhatsApp