บทความนี้แสดงวิธีประกอบอุปกรณ์เซนเซอร์ 7 in 1 กับ ESP32 กับ มอดูล LoRaWAN มี Source ภาษา MicroPython สามารถแสดงค่าได้แบบ real time บนจอ OLED หรือส่งผ่าน LoRaWAN มอดูล เข้า Multi Channel LoRaWAN Gateway ขึ้นแสดงเป็น Graph บนแอป Grafana มีการบันทึกข้อมูลลง Time Series Database ชื่อ influxdb ไว้ด้วย
อุปกรณ์เซ็ทนี้ยังสามารถใช้ได้กับเครือข่าย Helium ได้เช่นกัน เนื่องจากรูปแบบการส่งข้อมูลเป็นแบบ LoRaWAN 1.0.2
บทความนี้ให้ข้อมูลในส่วนของการจัดทำ LoRaWAN Node เพื่อตรวจวัดค่าจาก Sensor 7 in 1 แล้วส่งค่าขึ้น Chirpstack ส่วนอื่นๆ จะไม่ได้อธิบายไว้ละเอียด จำเป็นต้องอ่านจากบทความอื่นๆ ประกอบ
วิธีการเชื่อมต่ออุปกรณ์ต่างๆ ทำตามรูป
ESP32 (P33) - RS485 (RX)
ESP32 (P32) - RS485 (TX)
ESP32 (P33) - OLED (VCC), DL7612-AS923-TH(3V3)
ESP32 (GND) - OLED(GND), RS485(GND), DL7612-AS923-TH(GND)
ESP32 (P22) - OLED(SCL)
ESP32 (P21) - OLED(SDA)
ESP32 (P17) - DL7612-AS923-TH(RX)
ESP32 (P16) - DL7612-AS923-TH(TX)
7in1 Sensor สายสีน้ำตาล - ESP32 (5V)
7in1 Sensor สายสีดำ - ESP32 (GND)
7in1 Sensor สายเหลือง - RS485(A+)
7in1 Sensor สายสีน้ำเงิน - RS485(B-)
ก่อนอื่นต้อง Burn Firmware MicroPython ลงใน ESP32 โดยใช้โปรแกรม Thonny IDE
ดาวน์โหลด Modbus Library และ OLED SSD1306 ไปวางไว้ใน ESP32
Copy Source Code ไป Save เป็น File ชื่อ main.py ไว้ใน ESP32
ติดตั้ง Chirpstack, Influxdb, Grafana บน Raspberry PI ให้เรียบร้อย โดยอาจจะติดตั้งให้ทำงานบน Docker ศึกษาวิธีการติดตั้งจากบทความอื่น
Add Gateway และ Device โดยป้อน KEY ต่างๆ ให้ตรงกับที่อุปกรณ์ใช้งานอยู่
เชื่อม Integration จาก Chirpstack ให้เขียนข้อมูลลงใน Influxdb
ตัวอย่างการเรียกดูข้อมูลจาก DataSource แสดงเป็น Graph บน Grafana
เราสามารถเชื่อมต่อ Sensor แบบ RS485 Modbus บน Bus เดียวกันหลายๆ ตัว และเลือกเปลี่ยน Slave Address เพื่ออ่านค่าจาก Sensor แต่ละตัว ปรกติตัว Sensor ที่ตั้งมาจากโรงงานมักจะตั้งค่า Speed ที่ 4800 และมี Device Address เป็น 1
หากต้องการเปลี่ยนค่า Speed และ Device Address ให้ใช้โปรแกรม RS485ControlV21
เนื่องจากเป็นโปรแกรมภาษาจีนหากไม่มี font จีนจะอ่านไม่รู้เรื่อง
หมายเหตุ Source Code ที่ให้ไว้มีส่วนที่ Check ข้อมูล Downlink เพื่อไปขับไฟ LED ให้สว่างขึ้น หากไม่ต้องการใช้งานในส่วนนี้ ให้ ใส่ #หน้า บรรทัด _thread.start_new_thread(check_downlink, (led,))
Comments
Please log in or sign up to comment.