Sản phẩm
Chăm sóc khách hàng +8618073152920Đ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
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.
Đố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.
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
Cảm biến kết hợp nhiệt độ không khí và độ ẩm tương đối
Cảm biến nhiệt độ độ ẩm đất dùng để tưới | NBL-S-THR
Cảm biến đất pH Dụng cụ kiểm tra đất RS485 Máy đo độ ph đất cho nông nghiệp | NBL-S-PH
Đầu ra cảm biến tốc độ gió Modbus / RS485 /Analog/0-5V/4-20mA
Máy đo mưa gầu nghiêng để theo dõi thời tiết cảm biến lượng mưa tự động RS485 /Ngoài trời/thép không gỉ
Cảm biến bức xạ mặt trời Pyranometer 4-20mA/ RS485
Quét mã QR bằng WhatsApp
Số WhatsApp:+8615367865107
(Nhấp để sao chép và thêm trên WhatsApp)