โหนด ttn mkrwan
พื้นหลัง
พิสูจน์แนวคิดสำหรับ "พลังงานต่ำพิเศษ" Lorawan / โหนดเครือข่ายสิ่งต่าง ๆ โดยใช้ Arduino Mkr Wan 1300
MKR WAN 1300 ใช้พลังงานมากเกินไปในโหมดสลีปที่จะใช้เป็นอุปกรณ์พลังงานต่ำพิเศษ (มากกว่า 1mA)
การพิสูจน์แนวคิดนี้ใช้เครื่องมือ TPL5110 Ultra Low Power Timer เพื่อนำกระแสการนอนหลับต่ำกว่า 50NA
เนื่องจากอุปกรณ์ได้รับการขับเคลื่อนอย่างสมบูรณ์ในช่วงเวลานอนหลับเราจึงใช้โมดูล FRAM เพื่อบันทึกปุ่มเซสชัน Lorawan และเคาน์เตอร์เฟรม
สองโหนดทดสอบ:
ด้านบนซ้าย: แสดงและเซ็นเซอร์อุณหภูมิสูงสุด DS18B20
ด้านล่างซ้าย: BOSCH BME280 ความชื้นอุณหภูมิและเซ็นเซอร์ความดัน

ด้านบนขวา: ปัจจุบันนอนหลับ
ด้านล่างขวา: รันกระแส (โหนดพร้อมจอแสดงผล)
ทฤษฎีการดำเนินงาน
- TPL5110 ตื่นขึ้นมาและใช้พลังงานจาก MKR WAN 1300
- อ่านข้อมูลที่บันทึกจาก Fram
- เข้าร่วมเครือข่าย
- OTAA เป็นครั้งแรก (ไม่มีข้อมูลใน FRAM)
- ABP ใช้ปุ่มเซสชันที่บันทึกไว้และเคาน์เตอร์เฟรมหลังจากนั้น
- รวบรวมข้อมูลจากเซ็นเซอร์
- ส่ง Payload Lorawan ในรูปแบบ Cayenne LPP
- ตรวจสอบข้อความ Downlink
- เข้าสู่โหมดสลีป (ยกพิน เสร็จแล้ว ของ TPL5110)
ความต้องการฮาร์ดแวร์
รหัสขึ้นอยู่กับฮาร์ดแวร์ต่อไปนี้:
- Arduino Mkr Wan 1300 - เฟิร์มแวร์ 1.1.7 หรือใหม่กว่า
- TPL5110 Breakout
- Fram Breakout
- เซ็นเซอร์รหัสตัวอย่างที่มีไว้สำหรับ
- แรงดันแบตเตอรี่ (ใช้ตัวแบ่งในตัว)
- เซ็นเซอร์อุณหภูมิ Maxim DS18B20 (หนึ่งลวด)
- BOSCH BME280 เซ็นเซอร์ความดันความชื้นอุณหภูมิ
- ไม่จำเป็น
- SH1106 128x64 I2C Display สำหรับการดีบัก
- ปุ่มเพื่อบังคับให้รีเซ็ต (OTAA เข้าร่วม) ในเวลาบูต
ฮาร์ดแวร์ใด ๆ ที่คล้ายกันควรใช้งานได้ แต่อาจต้องเปลี่ยนรหัสบางอย่าง
การพึ่งพาซอฟต์แวร์
Arduino IDE พร้อมห้องสมุดต่อไปนี้ (ทั้งหมดมีให้จาก ARDUINO Library Manager):
- Arduino Mkrwan เวอร์ชัน 1.1.7 หรือใหม่กว่า
- Adafruit Fram (เวอร์ชัน SPI)
- TheThingsNetwork เวอร์ชัน 2.5.13 หรือใหม่กว่า ( ไม่ใช่ 2.5.12!)
- สำหรับเซ็นเซอร์ BME280
- เซ็นเซอร์ adafruit Unified
- Adafruit BME280
- สำหรับเซ็นเซอร์ Maxim DS18B20
- สำหรับจอแสดงผลเสริม: u8g2
การตั้งค่าตัวอย่าง
การตั้งค่าตัวอย่างด้วยจอแสดงผล SH1106 OLED และเซ็นเซอร์ DS18B20:

การปฏิบัติการ
การกำหนดค่าซอฟต์แวร์
- คัดลอก
arduino_secrets_distr.h ไปยัง arduino_secrets.h และป้อนคีย์ของคุณที่ได้จากคอนโซล thethingsnetwork - ใน
TTNMkrWanNode uncomment การกำหนด สำหรับเซ็นเซอร์ของคุณ
เซ็นเซอร์แรงดันไฟฟ้ามีอยู่เสมอมันใช้ตัวแบ่งในตัว โปรดทราบว่า Givent ความจริงที่ว่าตัวแบ่งคือ 1/3rd และการอ้างอิงแรงดันไฟฟ้าคือ 1.0V สูงสุดที่คุณสามารถวัดได้คือ 3.0V ... - ใน
debug.h เลือกตัวเลือกการดีบักของคุณ:-
#define DEBUG แสดงความคิดเห็น: ไม่มีรหัสดีบั๊กที่สร้างขึ้น -
#define DEBUG Unbmented: Debug บนคอนโซลอนุกรม (USB) โหนดจะรอคอนโซล! -
#define DEBUG และ #define OLED Unbmented: ข้อความถึงการดีบักบนจอแสดงผล OLED
- ใน
ttn.h คุณสามารถตั้งค่าพอร์ตเริ่มต้นและอัตราข้อมูล Lorawan ของคุณ
พลัง
ปลดการเชื่อมต่อพลังงานที่มาจาก TPL5110 (DRV) เมื่อเปิดตัวจาก USB
การเริ่มต้น
หาก FRAM ไม่มีข้อมูลที่ถูกต้องหรือหากกดปุ่มเมื่อ MKR WAN 1300 เริ่มต้นอุปกรณ์จะทำการเข้าร่วม OTAA
ข้อความ downlink
ก่อนนอนโหนดจะตรวจสอบข้อความ Downlink:
- 0x01: รีเซ็ต โหนดจะทำการเข้าร่วม OTAA ในระหว่างรอบถัดไป
- 0x02 0xpp: ตั้งพอร์ต โหนดจะใช้พอร์ต
pp เมื่อส่งข้อมูล - 0x03 0xdd: ตั้งอัตราข้อมูล โหนดจะใช้อัตราข้อมูลที่ร้องขอ
เวลานอนหลับ
- เมื่อขับเคลื่อนจาก USB โหนดจะไม่ได้ใช้งานเป็นเวลา 5 นาทีจากนั้นรีเซ็ตตัวเอง
- เมื่อขับเคลื่อนผ่าน TPL5110 เวลาการนอนหลับจะถูกขับเคลื่อนด้วยตัวต้านทาน (ในการฝ่าวงล้อม Adafruit คุณสามารถใช้ trimpot บนกระดาน)