โมดูล Node.js ไปยังส่วนต่อประสานกับโมดูลไร้สาย RFM9X LORA มีไว้สำหรับใช้กับ Bonnets วิทยุ Adafruit
รหัสนี้ได้รับการทดสอบเฉพาะใน Raspberry Pi แต่ในทางเทคนิคยังสามารถใช้งานได้กับบอร์ดอื่น ๆ ที่สนับสนุนโดย Onoff และ SPI-Device
ดู example/pingpong.js สำหรับตัวอย่างง่ายๆในการรับและส่งข้อมูล
โมดูลส่งออก RFM9x คลาสเดียว
RFM9xชั้นเรียนเป็นตัวแทนของโมดูล LORA ตัวสร้างไม่จำเป็นต้องมีข้อโต้แย้ง
const rfm9x = require ( 'rfm9x' ) ;
const module = new rfm9x ( ) ;
await module . init ( { ... } ) ;debug - ข้อมูลการดีบัก SPI เอาท์พุท debug ตั้งค่าคุณสมบัตินี้ให้เป็น true เพื่อรับการสื่อสาร SPI ทั้งหมดที่พิมพ์ลงในคอนโซล
หมายเหตุ: เนื่องจาก console.log() การโทรเป็นแบบซิงโครนัสในสถานการณ์ส่วนใหญ่ทำให้สามารถส่งผลกระทบต่อเวลา! ตัวอย่างเช่นอาจทำให้การเปลี่ยนจากการส่งไปเป็นโหมดรับช้าพอที่จะพลาดการตอบกลับจากโหนดอื่น ๆ
init(options) - เริ่มต้นการตั้งค่าโมดูลและ LORAstartReceive() - ใส่โมดูล LORA ในโหมดรับและเปิดใช้งานกิจกรรม receivestopReceive() - ใส่โมดูล LORA ในโหมดสแตนด์บายและหยุดรับแพ็คเก็ตsend(payload) - ส่งแพ็กเก็ตผ่าน LORAgetVersion() - รับหมายเลขชิปจากโมดูล init(options)options - วัตถุตัวเลือก (ดูด้านล่าง) คุณสมบัติทั้งหมดเป็นทางเลือกค่าเริ่มต้นจะถูกใช้เมื่อถูกละเว้นเริ่มต้นการตั้งค่าโมดูลและ LORA ต้องเรียกก่อนใช้ฟังก์ชั่นวิทยุใด ๆ
ส่งคืนสัญญาที่แก้ไขโดยไม่มีค่า
รองรับตัวเลือกต่อไปนี้:
frequencyMhz - ความถี่พื้นฐานใน MHz, ค่าเริ่มต้น: 915preambleLength - Lora Premble Length เป็นไบต์, ค่าเริ่มต้น: 8bandwidthHz - แบนด์วิดธ์ Lora ใน Hz, ค่าเริ่มต้น: 500000codingRate - อัตราการเข้ารหัส LORA, ค่าที่ถูกต้องคือ 5 (4/5) ถึง 8 (4/8), ค่าเริ่มต้น: 5spreadingFactor - ปัจจัยการแพร่กระจาย LORA, ค่าที่ถูกต้องคือ 6 ถึง 12 , ค่าเริ่มต้น: 7enableCrcChecking - ไม่ว่าจะเปิดใช้งานการตรวจสอบ CRC บนแพ็กเก็ตที่เข้ามา, ค่าเริ่มต้น: falsetxPowerDb - กำลังส่งสัญญาณใน DB ค่าที่ถูกต้องคือ 5 ถึง 23 (ปัจจุบันมีโหมดพลังงานสูงเท่านั้น), ค่าเริ่มต้น: 23enableAgc - ไม่ว่าจะเปิดใช้งานการควบคุมอัตราขยายอัตโนมัติค่าเริ่มต้น: falseresetPin - จำนวนพิน GPIO ที่สายรีเซ็ต RFM9X เชื่อมต่อกับค่าเริ่มต้น: 25dio0Pin - จำนวนพิน GPIO ที่สาย RFM9X DIO0 เชื่อมต่อกับค่าเริ่มต้น: 22dio1Pin - ไม่ได้ใช้ในปัจจุบัน จำนวนพิน gpio ที่สาย RFM9X DIO1 เชื่อมต่อกับ, ค่าเริ่มต้น: 23dio2Pin - ไม่ได้ใช้ในปัจจุบัน จำนวนพิน GPIO ที่สาย RFM9X DIO2 เชื่อมต่อกับค่าเริ่มต้น: 24spiSpeedHz - ความเร็วของการสื่อสาร SPI ใน Hz, ค่าเริ่มต้น: 100000txTimeoutMs - เวลาสูงสุดเป็นมิลลิวินาทีเพื่อรอการส่งแพ็กเก็ตให้เสร็จสิ้นเริ่มต้น: 2000 startReceive() ใส่โมดูล LORA ในโหมดรับและเปิดใช้งานเหตุการณ์ receive
ส่งคืนสัญญาที่แก้ไขโดยไม่มีค่า
stopReceive()ใส่โมดูล LORA ในโหมดสแตนด์บายและหยุดรับแพ็คเก็ต
ส่งคืนสัญญาที่แก้ไขโดยไม่มีค่า
send(payload)payload - Buffer สูงสุด 255 ไบต์ส่งแพ็คเก็ตผ่าน Lora
ส่งคืนสัญญาที่แก้ไขโดยไม่มีค่าหลังจากการส่งเสร็จสิ้น
หมายเหตุ: หลังจากส่งแพ็คเก็ตโมดูลจะเปลี่ยนเป็นโหมดสแตนด์บายโดยอัตโนมัติ หากคุณต้องการรับแพ็คเก็ตต่อไปหลังจากการส่งคุณจะต้องโทรหา startReceive() หลังจากการส่งเสร็จสมบูรณ์
getVersion()รับหมายเลขชิปเวอร์ชันจากโมดูล
ส่งคืนสัญญาที่แก้ไขด้วยหมายเลขเวอร์ชัน (จำนวนเต็มหนึ่งไบต์)
receive(packet) - ปล่อยออกมาเมื่อได้รับแพ็กเก็ต LORAreceiveError() - ปล่อยออกมาเมื่อได้รับแพ็คเก็ต LORA ที่ไม่ถูกต้อง receive(packet)เหตุการณ์ที่ปล่อยออกมาเมื่อได้รับแพ็คเก็ต LORA
packet เป็นวัตถุที่มีคุณสมบัติต่อไปนี้:
payload - Buffer ที่มีเนื้อหาแพ็คเก็ตrssiDb - RSSI ของแพ็คเก็ตใน dbsnrDb - SNR ของแพ็คเก็ตใน db receiveError()เหตุการณ์ที่ปล่อยออกมาเมื่อได้รับแพ็คเก็ต LORA แต่ถูกยกเลิกเนื่องจากได้รับข้อผิดพลาด (เช่นการตรวจสอบ CRC ล้มเหลว)