ผลิตภัณฑ์
บริการลูกค้า +8618073152920โทรศัพท์ / WhatsApp: +8615367865107
ที่อยู่: ห้อง 102 อาคาร D นิคมอุตสาหกรรมโฮ่วหู เขตเยว่ลู่ เมืองฉางซา มณฑลหูหนาน ประเทศจีน
การสนับสนุนทางเทคนิค
เวลา:2024-06-29 21:07:28 ยอดชม:5471
เซ็นเซอร์ความชื้นในดิน 8 in 1Rs485 สำหรับ Arduino
ในคู่มือนี้ เราจะสำรวจวิธีเชื่อมต่อเซ็นเซอร์ความชื้นและอุณหภูมิในดิน 8 in1 กับ Arduino โดยใช้โปรโตคอล RS485 การตั้งค่านี้จะช่วยให้เราสามารถตรวจสอบปริมาณความชื้นและอุณหภูมิของดิน ซึ่งเป็นพารามิเตอร์ที่สำคัญสำหรับการเกษตรและการทำสวน
เซ็นเซอร์ความชื้นในดินจะวัดปริมาณน้ำตามปริมาตรในดิน ด้วยการทำความเข้าใจระดับความชื้น เกษตรกรและชาวสวนจึงสามารถตัดสินใจโดยใช้ข้อมูลรอบด้านเกี่ยวกับการชลประทาน เพื่อให้มั่นใจว่าพืชจะเจริญเติบโตได้อย่างเหมาะสม อุณหภูมิของดินยังมีบทบาทสำคัญในสุขภาพของพืชอีกด้วย ส่งผลต่อการเจริญเติบโตของรากและการดูดซึมสารอาหาร
สำหรับโปรเจ็กต์นี้ เราจะใช้เซ็นเซอร์ความชื้นและอุณหภูมิในดิน Niubol8 in1 ซึ่งออกแบบมาโดยเฉพาะสำหรับการวัดภาคพื้นดิน
ดังนั้นเราจึงใช้เซนเซอร์วัดดินเกรดอุตสาหกรรมสำหรับโครงการนี้ หากต้องการเชื่อมต่อเซ็นเซอร์กับ Arduino เราจะใช้โปรโตคอลการสื่อสาร RS485 ข้อมูลจากเซ็นเซอร์ความชื้นและอุณหภูมิในดินจะถูกนำเสนอบนหน้าจอ OLED ที่เชื่อมต่อกับ Arduino
นี่คือสายไฟ 4 เส้นสำหรับเซ็นเซอร์:
ลวดสีน้ำตาล: VCC (5V-24V)
สายสีดำ: GND
ลวดสีเหลือง:RS485-A
สายสีน้ำเงิน:RS485-B
ข้อกำหนด:
ฮาร์ดแวร์
DFRduino UNO R3 (หรือคล้ายกัน) x 1
RS485 ชิลด์สำหรับ Arduino x1
RS485 เซ็นเซอร์ดิน (อุณหภูมิ & ความชื้น &EC& ความเค็ม &Ph& NPK) x 1
ซอฟต์แวร์:
อาร์ดูโน่ IDE
นี่คือแผนที่การเชื่อมต่อระหว่าง MAX485 และเซ็นเซอร์อุณหภูมิความชื้นในดิน
VCC -> 5V (เซ็นเซอร์ดิน)
GND -> GND (เซ็นเซอร์ดิน)
A (MAX485) -> ดินเซนเซอร์ A Pin (สีเหลือง)
B (MAX485) -> ดินเซ็นเซอร์ B Pin (สีน้ำเงิน)
การเชื่อมต่อเซ็นเซอร์อุณหภูมิความชื้นในดินกับ Arduino คุณสามารถใช้เขียงหั่นขนมในการประกอบและสายจัมเปอร์สำหรับเชื่อมต่อเซ็นเซอร์และโมดูล RS485 กับ Arduino
ซอร์สโค้ด/โปรแกรมสำหรับการอ่านความชื้นและอุณหภูมิดิน 8 in1
โปรแกรมซอร์สโค้ดสำหรับการอ่านความชื้นในดิน sensor.txt
#รวม
// กำหนดพินสำหรับการสื่อสาร RS485
#กำหนดRO2
#กำหนดDI3
#กำหนด RE8
#กำหนด DE7
#กำหนด RESPONSE_FRAME_SIZE 21
เซ็นเซอร์ถ่าน DataTextBuffer[200];
โครงสร้าง SoilSensorData
{
บูล isSensorTimeout{false};
บูลถูกต้อง{false};
อุณหภูมิลอย{-1.0};
ความชื้นลอย{-1.0};
ค่าการนำไฟฟ้า int ที่ไม่ได้ลงนาม{-1};
ลอยph{-1.0};
ไนโตรเจน int ที่ไม่ได้ลงนาม{-1};
ฟอสฟอรัส int ที่ไม่ได้ลงนาม{-1};
โพแทสเซียม int ที่ไม่ได้ลงนาม{-1};
ความเค็ม int ที่ไม่ได้ลงนาม{-1};
};
คลาส SoilSensor
{
สาธารณะ:
เซ็นเซอร์ดิน()
{
modbus= ซอฟต์แวร์ซีเรียลใหม่ (RO, DI);
}
เริ่มต้นเป็นโมฆะ ()
{
อนุกรมเริ่มต้น(9600);// เริ่มต้นการสื่อสารแบบอนุกรมสำหรับการดีบัก
modbus-> เริ่มต้น (9600); // เริ่มต้นการสื่อสารแบบอนุกรมของซอฟต์แวร์ที่อัตรารับส่งข้อมูล 9600
pinMode(RE, เอาท์พุต); // ตั้งค่า RE pin เป็นเอาต์พุต
pinMode(DE, เอาท์พุต); // ตั้งค่า DE pi
}
เป็นโมฆะ sendDataRequest()
{
digitalWrite (DE, สูง);
digitalWrite (RE, สูง);
ล่าช้า(10);
// ส่งกรอบคำขอไปยังเซ็นเซอร์ดิน
modbus-> เขียน (soilSensorRequest, ขนาดของ (soilSensorRequest));
}
อ่านข้อมูล SoilSensor()
{
ข้อมูลเซ็นเซอร์ดิน ข้อมูลเซ็นเซอร์ดิน;
// สิ้นสุดโหมดการส่งข้อมูลและตั้งค่าเป็นโหมดรับสำหรับ RS485
digitalWrite (DE, ต่ำ);
digitalWrite (RE, ต่ำ);
ล่าช้า(10);
//รอการตอบสนองจากเซ็นเซอร์หรือการหมดเวลาหลังจากผ่านไป 1 วินาที
startTime ยาวที่ไม่ได้ลงนาม = millis();
ในขณะที่ (modbus-> ว่าง () < RESPONSE_FRAME_SIZE && มิลลิวินาที () - เวลาเริ่มต้น < 1,000)
{
ล่าช้า(1);
}
ถ้า (modbus->available() >= RESPONSE_FRAME_SIZE) // หากได้รับคำตอบที่ถูกต้อง
{
// อ่านการตอบสนองจากเซ็นเซอร์
ดัชนีไบต์ = 0;
ในขณะที่ (modbus-> ว่าง () && ดัชนี < RESPONSE_FRAME_SIZE)
{
SoilSensorResponse[index]=modbus-> อ่าน ();
ดัชนี++;
}
SoilSensorData = ข้อมูลการคำนวณ ();
}
อย่างอื่น
{
SoilSensorData.isSensorTimeout = จริง;
}
กลับดินเซ็นเซอร์ข้อมูล;
}
~เซ็นเซอร์ดิน()
{
ถ้า (modbus!= nullptr) ลบ modbus;
ลบ [] การตอบสนองของเซ็นเซอร์ดิน;
}
ส่วนตัว:
const ไบต์คำขอ SoilSensorRequest[8]={0x01, 0x03, 0x00, 0x00, 0x00, 0x08, 0x44, 0x0C};
ซอฟต์แวร์อนุกรม*modbus= nullptr;
ไบต์ SoilSensorResponse[RESPONSE_FRAME_SIZE];
int ConvertBytesToDecimal (ออฟเซ็ต int ที่ไม่ได้ลงนาม)
{
กลับดินเซนเซอร์ตอบสนอง[offset]* 256 + ดินเซนเซอร์ตอบสนอง[offset + 1];
}
SoilSensorData computeData() const
{
ข้อมูลเซ็นเซอร์ดิน ข้อมูลเซ็นเซอร์ดิน;
ถ้า (soilSensorResponse[0]!= 1 || เซ็นเซอร์ดิน[1]!= 3 || เซ็นเซอร์ดิน[2]!= 16)
{
SoilSensorData.isValid = เท็จ;
กลับดินเซ็นเซอร์ข้อมูล;
}
SoilSensorData.isValid = จริง;
SoilSensorData.temperature = แปลง BytesToDecimal (3) / 10.0; // องศาเซลเซียส
SoilSensorData.humidity = แปลง BytesToDecimal (5) / 10.0; // เปอร์เซ็นต์
SoilSensorData.conductivity = แปลง BytesToDecimal (7);// ไมโครซีเมนส์ต่อเซนติเมตร
ข้อมูลเซ็นเซอร์ดินph= แปลงไบต์เป็นทศนิยม(9) / 100.0;
SoilSensorData.nitrogen = แปลง BytesToDecimal (11); // มิลลิกรัมต่อกิโลกรัม
SoilSensorData.ฟอสฟอรัส = แปลง BytesToDecimal (13); // มิลลิกรัมต่อกิโลกรัม
SoilSensorData.potassium = แปลง BytesToDecimal (15); // มิลลิกรัมต่อกิโลกรัม
SoilSensorData.salinity = แปลง BytesToDecimal (17); // มิลลิกรัมต่อกิโลกรัม
กลับดินเซ็นเซอร์ข้อมูล;
}
};
เซ็นเซอร์ดิน เซ็นเซอร์ดิน;
เป็นโมฆะ writeSensorDataToString (SoilSensorData & sensorData)
{
ถ้า (sensorData.isSensorTimeout)
{
sprintf(sensorDataTextBuffer, "ข้อมูลไม่สมบูรณ์หรือเซ็นเซอร์หมดเวลา");
}
อย่างอื่น
{
ถ้า (sensorData.isValid)
{
ถ่าน * tempStr = malloc (6 * ขนาดของ (ถ่าน));
ถ่าน * humidStr = malloc (6 * ขนาดของ (ถ่าน));
ถ่าน * phStr = malloc (6 * ขนาดของ (ถ่าน));
dtostrf(sensorData.temperature, 4, 1, tempStr);
dtostrf(sensorData.humidity, 4, 1, ความชื้นStr);
dtostrf(sensorData.ph, 4, 2, phStr);
ค่าการนำไฟฟ้าอัตโนมัติ = sensorData.conductivity;
อัตโนมัติ n = เซ็นเซอร์ Data.ไนโตรเจน;
อัตโนมัติ p = sensorData.ฟอสฟอรัส;
อัตโนมัติ k = sensorData.โพแทสเซียม;
ความเค็มอัตโนมัติ = sensorData.ความเค็ม;
sprintf(sensorDataTextBuffer, "อุณหภูมิ: %s; ความชื้น: %s;ค่าการนำไฟฟ้า: %u;PH: %s; ไม่มี: %u; ป: %u; เค: %u; ความเค็ม: %u", tempStr, humidStr, ความนำไฟฟ้า, phStr, n, p, k, ความเค็ม);
ถ้า (tempStr!= NULL) ฟรี (tempStr);
ถ้า (humidityStr!= NULL) ฟรี (humidityStr);
ถ้า (phStr!= NULL) ฟรี (phStr);
}
อย่างอื่น
{
sprintf(sensorDataTextBuffer, "ข้อมูลที่อ่านจากเซ็นเซอร์ไม่ถูกต้อง");
}
}
}
การตั้งค่าเป็นโมฆะ ()
{
SoilSensor.เริ่มต้น ();
}
เป็นโมฆะวน()
{
SoilSensor.sendDataRequest();
SoilSensorData ข้อมูลเซ็นเซอร์ = SoilSensor.read();
writeSensorDataToString(sensorData);
Serial.println(sensorDataTextBuffer);
ล่าช้า (2000); // รอสักครู่ก่อนที่จะวนซ้ำครั้งต่อไป
}
ขอบคุณ Phil Ogun สำหรับรหัส!
เซ็นเซอร์ดิน 8-in-1 เป็นเซ็นเซอร์ที่รวมพารามิเตอร์หลายตัว เช่น อุณหภูมิ ความชื้น การนำไฟฟ้า NPK ความเค็ม และPHด้วยเซ็นเซอร์ดังกล่าว ผู้ใช้สามารถเข้าถึงข้อมูลสำคัญหลายๆ ข้อมูลของดินได้อย่างง่ายดาย ช่วยให้พวกเขาเข้าใจสภาพของดินได้ดีขึ้น และทำการปรับเปลี่ยนและตัดสินใจตามนั้น
ด้วยการวัดค่าคงที่ไดอิเล็กตริกของดิน จึงสามารถสะท้อนปริมาณความชื้นที่แท้จริงของดินต่างๆ ได้โดยตรงและเสถียร เหมาะสำหรับการตรวจสอบความชื้นในดิน, การทดลองทางวิทยาศาสตร์, การชลประทานแบบประหยัดน้ำ, เรือนกระจก, ดอกไม้และผัก, ทุ่งหญ้าหญ้า, การทดสอบดินอย่างรวดเร็ว, การเพาะปลูกพืช, การบำบัดน้ำเสีย, เกษตรกรรมที่ดีและโอกาสอื่น ๆแหล่งจ่ายไฟอินพุตของเซ็นเซอร์, หัววัดการตรวจจับ, เอาต์พุตสัญญาณสามส่วนแยกได้อย่างสมบูรณ์, ปลอดภัยและเชื่อถือได้, รูปลักษณ์สวยงาม, ติดตั้งง่าย, หัววัดทำจากสแตนเลส, ทนต่อการกัดกร่อน, ประสิทธิภาพการทำงานที่มั่นคง
1. เอกสารข้อมูลเซ็นเซอร์ความชื้นอุณหภูมิดินNBL-S-THR
NBL-S-THR-Soil-temperature-and-moisture-sensors-Instruction-Manual-V4.0.pdf
2. เอกสารข้อมูลเซ็นเซอร์ECความชื้นอุณหภูมิดินEC
NBL-S-TMC-Soil-temperature-and-moisture-conductivity-sensor.pdf
3. เอกสารข้อมูลเซ็นเซอร์ความชื้นอุณหภูมิดินNBL-S-TM
NBL-S-TM-Soil-temperature-and-moisture-sensor-Instruction-Manual-4.0.pdf
4.NBL-S-TMCSเซ็นเซอร์แบบรวมอุณหภูมิ ความชื้น ความนำไฟฟ้า และความเค็มของดิน
NBL-S-TMCS-Soil-Temperature-Humidity-Conductivity-and-Salinity-Sensor.pdf
5.NBL-S-TMCS-7อุณหภูมิดิน, ความชื้น, NPK, ความนำไฟฟ้า และเซ็นเซอร์รวมpH
7-in-1-Soil-Composite-Sensor-คู่มือ pdf
4.NBL-S-TMCS-8อุณหภูมิดิน, ความชื้น, NPK,pH, เซ็นเซอร์รวมความนำไฟฟ้าและความเค็ม
คำแนะนำที่เกี่ยวข้อง
แคตตาล็อกเซ็นเซอร์และสถานีตรวจอากาศ
แคตตาล็อกเซ็นเซอร์เกษตรและสถานีตรวจอากาศ - NiuBoL.pdf
แคตตาล็อกสถานีตรวจอากาศ - NiuBoL.pdf
แคตตาล็อกเซ็นเซอร์เกษตร - NiuBoL.pdf
แคตตาล็อกเซ็นเซอร์คุณภาพน้ำ - NiuBoL.pdf
สินค้าที่เกี่ยวข้อง
เซ็นเซอร์อุณหภูมิอากาศรวมและความชื้นสัมพัทธ์
เซ็นเซอร์วัดอุณหภูมิความชื้นในดินเพื่อการชลประทาน| NBL-S-THR
เซ็นเซอร์pHดิน RS485 ดินเครื่องมือทดสอบphเมตรดินเพื่อการเกษตร|NBL-S-PH
เซ็นเซอร์วัดความเร็วลม เอาต์พุต Modbus / RS485 /Analog/0-5V/4-20mA
เครื่องตรวจจับฝนอัตโนมัติ RS485 / ภายนอก
เซ็นเซอร์รังสีแสงอาทิตย์แบบไพราโนมิเตอร์ 4-20mA/ RS485
สแกน QR Code ด้วย WhatsApp
หมายเลข WhatsApp:+8615367865107
(คลิกเพื่อคัดลอกและเพิ่มใน WhatsApp)