ใช้ NODEMCU ESP32S กับ RFM95W ทำ LoRaWAN Weather Station
การทำ Device Sensor Node สำหรับ LoRaWAN สามารถทำขึ้นมาแบบไม่ต้องใช้เงินมากวิธีหนึ่งคือใช้ ESP32 กับมอดูล LoRa ที่ชื่อ RFM95W สามารถนำไปใช้งานกับ เป็น LoRaWAN node หรือ Helium Node ก็ได้
อุปกรณ์ที่ต้องใช้
- Node MCU ESP32S V.1.1 ถ้าเป็น Dev แบบแคบจะมีช่องว่างด้านซ้ายขวาสำหรับเสียบ Jumper Wire ได้
- RFM95W หรือ SX1276 รุ่น 915 Mhz ( สามารถนำมาโปรแกรมความถี่ใช้งานให้เป็นช่วง 920–925Mhz)
- Sensor อุณหภูมิ ความชื้น AHT10
- Breadboard
- Jumper Wire
หมายเหตุ การนำ C ขนาด 2.2uF มาต่อที่ EN และ GND จะช่วยให้การ Flash โปรแกรมง่ายขึ้นไม่ต้องกดปุ่ม EN, IO0
**หมายเหตุ การทำ Node แนะนำให้กำหนดกำลังไม่เกิน 50mW (eirp) ซึ่งอยู่ในเกณฑ์กำลังส่งที่ไม่ต้องขอใบอนุญาติทำจาก กสทช. โดย eirp คือกำลังที่ออกจากปลายสายอากาศ
การเชื่อมต่อทำตามภาพ
Software ที่ใช้
1. VSCode และ PlatformIO
2. Library อื่นๆ อยู่ใน ZIP File
Download ไฟล์ที่ต้องใช้ทั้งหมดจาก Github โดย
ตัวอย่างที่ใช้ LMIC ของ อจ.อนุชา คลิก
ตัวอย่างที่ใช้ LMIC MCCI คลิก
คลิก Download มุมขวาล่าง Save ไว้ใน Hard disk แล้วแตกไฟล์ Zip ออกมาเป็น Folder
หากใช้ 7-Zip ให้คลิกขวาแล้วเลือก Extract Here
จะเห็น Directory ใหม่ชื่อ ESP32_RFM95_AHT10 ถ้าเป็น MCCI จะคนละชื่อแต่ใช้วิธีเดียวกัน
เรียกโปรแกรม VSCode
คลิก File/Open Folder เลือก Directory ที่เพิ่มแตกออกมา หน้าจอจะถามว่าไว้ใจรึเปล่า Directory ดังกล่าวรึเปล่า
ให้ตอบ Yes, I trust the authors.
จะเห็นโครงสร้าง File ของ ESP32_RFM95_AHT10 บนหน้าจอ
ให้เปิด File main.cpp ใต้ src แล้วแก้ Key สามตัว คือ APPEUI, DEVEUI, APPKEY ให้ตรงกับที่ลงทะเบียนไว้ใน TTN หรือ Chirpstack หรือ Helium หากเลือก Authentication ของ Device แบบ OTAA
เสียบสายจาก ESP32 เข้ากับ USB Port ของ Computer แล้วคลิก เครื่องหมายลูกศรชี้ไปทางขวาคือ Upload
ถ้า Upload สำเร็จจะขึ้นหน้าจอว่า Success
เมื่อ Flash สำเร็จโปรแกรมจะพยาม Reset ให้ ESP32 เริ่มทำงาน ถ้าการ Reset ด้วย Software ไม่ทำงานก็ให้เรา คลิกที่รูป Plug ไฟ ตัว ESP32 ก็ควรจะมีการ Reboot และหาก ESP32 Device สามารถ Join ได้ก็จะเริ่มทำการส่งข้อมูล ค่าที่อ่านได้จาก AHT10 คือ Temp และ Humid
ขณะส่งสัญญษณสีฟ้าบน ESP32 จะกระพริบหนึ่งครั้ง
หากเราส่งเข้า Chirpstack ก็จะเห็น Device Data ขึ้นมา Packet ละ 1 บรรทัด
ให้กำหนด Format Payload Data ใน Chirpstack เป็น cayenneLPP เนื่องจาก Source Code เขียนเข้ารหัสแบบ CayenneLPP
หากคลิกเข้าไปดูรายละเอียดจะเห็นข้อมูล Temp, Humid ใต้ object.JSON
หากต้องการ Visualization เป็นรูป Dashboard สวยๆ ให้ส่งข้อมูลต่อไปแสดงและเก็บใน Influxdb
หมายเหตุ
1. การ JOIN แบบ OTAA จะเลือก SF ไปตามมาตรฐาน LoRaWAN ค่าที่ตั้งไว้ในโปรแกรมจะไม่ได้นำมาใช้งาน
2.LMIC Library ของ MCCI การใช้งาน ADR ค่อนข้างจะสมบูรณ์ เนื่องจากเป็น Library ที่ยังมีการปรับปรุงอย่างต่อเนื่อง การ Join และการส่งข้อมูลใน Packet ต้นๆ จะใช้เวลานานกว่าปรกติ เนื่องจากจะมีการ Downlink จาก Gateway สั่งให้ตัว Node ปรับตั้งค่าการส่ง SF ที่เหมาะสม เช่น ในกรณี Node อยู่ใกล้ gateway มากๆ ตัว Node จะถูกลด SF ลงเหลือ SF7 ขณะใช้งาน เป็นต้น เพื่อให้ประหยัดกระแสไฟ