Soil NPK RS485 Sensor
Spec คร่าวๆ ของรุ่นนี้เป็นดังนี้
เป็นสินค้าผลิตในจีน น่าจะเป็นรุ่น PR-3000-TR-NPK ของ บริษัท prsens.com
https://www.prsens.com/index.php?a=shows&catid=44&id=52
คู่มือภาษาจีน คลิก
หมายเหตุ ผู้เขียนไม่มีเครื่องมือสอบเทียบเพื่อตรวจสอบค่าที่อ่านได้จาก Sensor รุ่นนี้จึงไม่สามารถบอกได้ว่าค่าที่อ่านได้มีความถูกต้องแม่นยำขณะใช้งานเพียงใด
วิธีการเชื่อมต่อ และค่า Serial 9600 bps, 8, none,1 (บางรุ่นจะเป็น 4800, บางตัวจะถูกตั้ง Slave Address เป็น 2)
การอ่านค่า แบบ Modbus ด้วยโปรแกรม qModMaster 0.5.2–3 (ไม่ควรใช้รุ่น Beta พบว่ามี bug)
เชื่อม Sensor เข้ากับอุปกรณ์ USB-RS485 Converter แล้วเสียบเข้ากับเครื่อง PC ตามตัวอย่างได้ต่อสายไฟสีตรงกับสายไฟเซนเซอร์ NPK ตอนหนีบสายไฟให้เลือกสีให้ตรงกัน
อาจจะใช้ตัวเชื่อมสายไฟฟ้าดังภาพเพื่อไม่ต้องเสียเวลาบัดกรี
เช็คดูจาก Device Manager ว่า USB-RS485 ถูก PC กำหนดให้เป็น COM หมายเลขเท่าไร โดยดูจาก Device manager ตามภาพเป็น COM7
Run โปรแกรม RS485ControlV21 แล้วเลือกเป็น COM7 กดปุ่มด้ายหลัง
โปรแกรมจะเช็คว่า Device ที่ต่ออยู่ กำหนด Serial Speed เป็นเท่าไรและ Slave Address เป็นเท่าไร
ตามภาพจะเห็นค่าที่ตั้งจากโรงงานมาเป็น Speed 4800 และมี Slave Address เท่ากับ 1
ดาวน์โหลดโปรแกรมได้จาก เวป https://sourceforge.net/projects/qmodmaster/
หรือคลิกลิ้งค์ https://sourceforge.net/projects/qmodmaster/files/qModMaster-Win32-exe-0.5.2-3.zip/download
แตกไฟล์ในโฟดเดอร์แล้วเรียกใช้งานโปรแกรม qmodmaster.exe
ตั้งค่า Port ให้ถูกต้องก่อน โดยคลิกรูป Port หรือข้อความ Modbus RTU ความเร็ว Port บางรุ่นจะเป็น 9600 บางรุ่นจะเป็น 4800 bps บางตัวอาจจะตั้ง Slave Address เป็น 2 เป็นต้น (ถ้าใช้โปรแกรม RS485ControlV21 อ่านจะทราบค่าเลย ตามที่กล่าวไว้ข้างต้น)
คลิก Connect ก่อน ตั้งค่าก่อน Click Read/Write
ค่าที่ตั้งเช่น กรณีอ่าน 3 ค่า 1E ช่อง Number of Registers ใส่ 3 ตามรูปด้านล่าง อาจจะเปิดหน้าต่าง Bus Monitor เพื่อดูว่ามีการส่งค่าอะไรไปและตอบกลับอะไรมา
จะได้คำตอบ 06 02 50 03 29 07 CF ซึ่ง 06 คือ ข้อมูลมี 6 ชุด 0250,0329,07CF
แก้ Data Format เป็น DEC จะได้คำตอบ 592,809,1999 ซึ่งคือ
N=592 mg/kg
P=809 mg/kg
K=1999 mg/kg
กรณีอ่านทีละค่า 1E, 1F, 20 ช่อง Number of Registers ใส่ 1
ถ้าอ่านไม่ได้จะเห็นแถบขึ้นสีแดง ให้ปรับความเร็ว Port ลดลงเป็น 4800 bps หรือทดลองเปลี่ยนค่า Slave Addr เป็นเลข 2,3,4 เป็นต้น
หากใช้กับ ESP32 และ RS485 แนะนำให้ใช้ อุปกรณ์แปลง TX RX ไปเป็น RS485 รุ่น “XY-017 RS485" ตามภาพด้านล่าง (RS485 to UART Flow Control อัตโนมัติ) การเขียนโปรแกรมจะทำได้ง่ายขึ้น
หรือ อีกรุ่นด้านล่างคือรุ่น eletechsup R411A01 แต่จะมีสองแบบคือใช้ไฟ 3.3V กับใช้ไฟ 5V
ตัวอย่างการเชื่อมต่อ กับ ESP32 (ESP32 ที่ผู้เขียนใช้จะเป็นแบบ PCB แคบ จะเห็นว่าชื่อ PIN ไม่มีอยู่บน PCB จะไปอยู่ด้านใต้ PCB แทน)เช่น รุ่นที่มีเขียนบน PCB HW-573 และ รุ่น NodeMCU ESP-32S V1.1 101010
ตัวอย่างภาษา MicroPython ที่ทำงานได้บน ESP32 มีดังนี้
from machine import UART
import time
from time import sleep
from uModBusSerial import uModBusSerial
#modbus= uModBusSerial (2, baudrate=9600, pins=(17, 16))
modbus= uModBusSerial (1, baudrate=9600, pins=[32, 33])
slave=0x01
address=0x1E
quantity=3
signed=Trueregister_value = modbus.read_holding_registers(slave, address, quantity, signed)
print('Input register value: ' + ' '.join('{:d}'.format(x) for x in register_value))
print ('N : %6d mg/kg' % register_value[0])
print ('P : %6d mg/kg' % register_value[1])
print ('K : %6d mg/kg' % register_value[2])
ลองต่อกับ OLED และให้แสดงผลทันที
ใช้กับ MicroPython v.1.17 ให้โหลด Script ดังต่อไปนี้ไว้บน ESP32
ให้เช็คว่า NPK Sensor ตั้ง Speed ไว้ที่ความเร็ว 9600 หรือ 4800 และแก้ Code บรรทัดที่ 5 ให้ตรง
หลังจากจุ่มลงดินที่มีปุ๋ย บนจอ OLED จะแสดงค่า N P K ตามภาพตัวอย่าง เป็นต้น
วิธีการเปลี่ยน Speed และ Device Address
ใช้โปรแกรม RS485 ControlV21 คลิก เนื่องจากเป็นภาษาจีน จึงต้องคาดเดา ถ้าติดตั้ง Font จีนไว้ในเครื่องอาจจะง่ายขึ้น
ให้เลือก COM ให้ตรงที่เสียบ sensor ไว้ คลิกปุ่มกด เลข 1 หนึ่งครั้ง จะเห็นค่า Device Address และ Speed ที่ตั้งไว้อยู่แล้วขึ้นมา ตามภาพจะเป็น 1 และ 4800 หากต้องการเปลี่ยนให้แก้ตัวเลข แล้วกดปุ่มด้านหลังช่องที่เลข 3 เพื่อบันทึก
Soil Nutrients
Reference
- https://how2electronics.com/measure-soil-nutrient-using-arduino-soil-npk-sensor/
- http://jxctiot.com/product1/product195.html
- http://www.tesrshop.com/article/5/soil-npk-sensor-with-raspberry-pi-pico
- https://how2electronics.com/measure-soil-nutrient-using-arduino-soil-npk-sensor/#Source_CodeProgram
- ESP 32 Pin https://techexplorations.com/guides/esp32/begin/gpio/