ใช้ NODEMCU ESP32S กับ RFM95W, AHT10, OLED ทำ LoRaWAN Weather Station
การทำ Device Sensor Node สำหรับ LoRaWAN สามารถทำขึ้นมาแบบไม่ต้องใช้เงินมากวิธีหนึ่งคือใช้ ESP32 กับมอดูล LoRa ที่ชื่อ RFM95W สามารถนำไปใช้งาน เป็น LoRaWAN node หรือ Helium Node ก็ได้ บทความนี้จะมีการแสดงผลบนจอ OLED ด้วยในขณะทำงาน
อุปกรณ์ที่ต้องใช้
- Node MCU ESP32S V.1.1 ถ้าเป็น Dev แบบแคบจะมีช่องว่างด้านซ้ายขวาสำหรับเสียบ Jumper Wire ได้
- RFM95W หรือ SX1276 รุ่น 915 Mhz ( สามารถนำมาโปรแกรมความถี่ใช้งานให้เป็นช่วง 920–925Mhz)
- Sensor อุณหภูมิ ความชื้น AHT10
- OLED 128x64
- 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 ดังนี้ คลิก
โหลดไฟล์ ESP32-RFM95-AHT10-OLED-MCCI.zip
เรียกโปรแกรม VSCode
คลิก File/Open Folder เลือก Directory ที่เพิ่มแตกออกมา หน้าจอจะถามว่าไว้ใจรึเปล่า Directory ดังกล่าวรึเปล่า
ให้ตอบ Yes, I trust the authors.
จะเห็นโครงสร้าง File ของ ESP32-RFM95-AHT10-OLED-MCCI บนหน้าจอ
ให้เปิด 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
ขณะส่งไฟ LED สีฟ้าบน ESP32 จะกระพริบหนึ่งครั้ง
และถ้าเราส่งเข้า Chirpstack ก็จะเห็น Device Data ขึ้นมา Packet ละ 1 บรรทัด
ให้กำหนด Format Payload Data ใน Chirpstack เป็น cayenneLPP เนื่องจาก Source Code เขียนเข้ารหัสแบบ CayenneLPP
หากคลิกเข้าไปดูรายละเอียดจะเห็นข้อมูล Temp, Humid ใต้ object.JSON
หากต้องการ Visualization เป็นรูป Dashboard สวยๆ ให้ส่งข้อมูลต่อไปแสดงและเก็บใน Influxdb หรือ grafana ได้ต่อไป