Node.js ไดรเวอร์สำหรับ Semtech SX1276/77/78/79 วิทยุ LORA ที่ใช้
ขึ้นอยู่กับ Node-SX127X ที่สร้างขึ้นบนโมดูล Onoff และ SPI-Device ของ @FIVDI
dtparam=spi=on ใน /boot/config.txt| Semtech SX1276/77/78/79 | Linux ทั่วไป | Raspberry Pi |
|---|---|---|
| VCC | 3.3V | 3.3V |
| gnd | gnd | gnd |
| SCK | SCK | SCK (พิน 11) |
| มิโซะ | มิโซะ | มิโซะ (พิน 10) |
| Mosi | Mosi | Mosi (พิน 9) |
| NSS | เปิดชิป/เลือก | CS0 (พิน 8) หรือ CS1 (พิน 7) |
| ชุด nreset | พิน GPIO | พิน GPIO |
| DiO0 | พิน GPIO | พิน GPIO |
npm install sx127x-driver let SX127x = require ( 'sx127x-driver' ) ;
let options = {
// ...
} ;
let sx127x = new SX127x ( options ) ;ตัวเลือกที่รองรับ:
| ชื่อ | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|
spiBus | 0 | รถบัส SPI ที่จะใช้ |
spiDevice | 0 | ชิป SPI เลือก/เปิดใช้งานเพื่อใช้ |
resetPin | 24 | GPIO PIN จำนวนพินรีเซ็ต |
dio0Pin | 25 | GPIO PIN หมายเลขของ DIO0 PIN |
frequency | 915e6 | ความถี่ของวิทยุใน Hz ดู setFrequency สำหรับค่าที่รองรับ (ตรวจสอบให้แน่ใจว่าชิปของคุณรองรับความถี่ที่คุณเลือก) |
spreadingFactor | 7 | การแพร่กระจายปัจจัยวิทยุดู SetSpreadingFactor สำหรับค่าที่รองรับ (ปัจจัยการแพร่กระจายเป็นมุมฉากดังนั้นตรวจสอบให้แน่ใจว่าพวกเขาจับคู่เมื่อพยายามสื่อสารจากชิปหนึ่งไปยังอีกชิป) |
signalBandwidth | 125E3 | แบนด์วิดท์สัญญาณของวิทยุใน Hz ดู setSignalbandwidth สำหรับค่าที่รองรับ |
codingRate | 4 / 5 | อัตราการเข้ารหัสของวิทยุดู SetCodingRate สำหรับค่าที่รองรับ |
preambleLength | 8 | ความยาวเบื้องต้นของวิทยุดู SetPreamBleLength สำหรับค่าที่รองรับ |
syncWord | 0x12 | ซิงค์คำของวิทยุดู SetSyncWord สำหรับค่าที่รองรับ |
txPower | 17 | TX Power of Radio ดู SettXPower สำหรับค่าที่รองรับ |
crc | false | เปิดใช้งานหรือปิดการใช้งาน CRC |
tempCompensationFactor | false | ปัจจัยการชดเชยสำหรับการวัดอุณหภูมิในองศาเซลเซียส (+- บางองศา) |
debug | false | เปิด / ปิดใช้งานเอาต์พุตดีบั๊ก |
invertIqReg | false | Inverts IQ register on Call to Open () |
เปิดและกำหนดค่าอุปกรณ์:
try {
await sx127x . open ( ) ;
} catch ( err ) {
console . log ( 'Failure to open device: ' + err )
}ปิดอุปกรณ์:
try {
await sx127x . close ( ) ;
} catch ( err ) {
console . log ( 'Close failure: ' + err ) ;
process . exit ( ) ;
} try {
await sx127x . write ( new Buffer ( 'hello ' + count ++ ) ) ;
console . log ( "successfully sent" )
} catch ( err ) {
console . log ( 'Fail to send: ' + err ) ;
} try {
let packetLength = await sx127x . receiveSingle ( ) ;
if ( packetLength > 0 ) {
let incoming = "" ;
while ( await sx127x . available ( ) ) {
incoming += String . fromCharCode ( await sx127x . read ( ) ) ;
}
}
} catch ( err ) {
console . log ( 'Fail to receive: ' + err ) ;
} try {
await sx127x . open ( ) ;
await sx127x . setContinuousReceiveMode ( ) ;
} catch ( err ) {
console . log ( 'Fail to put into continuous receive mode: ' + err )
}
sx127x . on ( 'data' , function ( data , rssi , snr ) {
console . log ( 'data: ' + data . toString ( ) + ", rssi: " + rssi ) ;
} ) ;ใส่วิทยุในโหมดสลีป
try {
await sx127x . sleep ( ) ;
} catch ( err ) {
console . log ( 'Fail to put into sleep mode: ' + err ) ;
}ใส่วิทยุในโหมด Stand By
try {
await sx127x . standBy ( ) ;
} catch ( err ) {
console . log ( 'Fail to put into stand by: ' + err ) ;
} เปลี่ยนพลัง TX ของวิทยุ
try {
await sx127x . setTxPower ( txPower ) ;
} catch ( err ) {
console . log ( err ) ;
}txPower - TX Power ใน DB, ค่าเริ่มต้นเป็น 17 ค่าที่รองรับอยู่ระหว่าง 2 และ 17
เปลี่ยนความถี่ของวิทยุ
try {
await sx127x . setFrequency ( frequency ) ;
} catch ( err ) {
console . log ( err ) ;
}frequency - ความถี่ใน Hz ( 433E6 , 866E6 , 915E6 )เปลี่ยนปัจจัยการแพร่กระจายของวิทยุ
try {
await sx127x . setSpreadingFactor ( spreadingFactor ) ;
} catch ( err ) {
console . log ( err ) ;
}spreadingFactor - ปัจจัยการแพร่กระจายค่าเริ่มต้นเป็น 7 ค่าที่รองรับอยู่ระหว่าง 6 และ 12 หากมีการตั้งค่าปัจจัยการแพร่กระจายของ 6 โหมดส่วนหัวโดยปริยายจะต้องใช้ในการส่งและรับแพ็คเก็ต
เปลี่ยนแบนด์วิดท์สัญญาณของวิทยุ
try {
await sx127x . setSignalBandwidth ( signalBandwidth ) ;
} catch ( err ) {
console . log ( err ) ;
}signalBandwidth - แบนด์วิดท์สัญญาณใน Hz, ค่าเริ่มต้นเป็น 125E3 ค่าที่รองรับคือ 7.8E3 , 10.4E3 , 15.6E3 , 20.8E3 , 31.25E3 , 41.7E3 , 62.5E3 , 125E3 , 250E3 และ 500E3
เปลี่ยนอัตราการเข้ารหัสของวิทยุ
try {
await sx127x . setCodingRate ( codingRate ) ;
} catch ( err ) {
console . log ( err ) ;
}codingRate - อัตราการเข้ารหัสค่าเริ่มต้นเป็น 4/5 ค่าที่รองรับคือ 4/5 , 4/6 , 4/7 และ 4/8
เปลี่ยนความยาวคำนำของวิทยุ
try {
await sx127x . setPreambleLength ( preambleLength ) ;
} catch ( err ) {
console . log ( err ) ;
}preambleLength - ความยาวคำนำในสัญลักษณ์ค่าเริ่มต้นถึง 8 ค่าที่รองรับอยู่ระหว่าง 6 ถึง 65535
เปลี่ยนคำซิงค์ของวิทยุ
try {
await sx127x . setSyncWord ( syncWord ) ;
} catch ( err ) {
console . log ( err ) ;
}syncWord - ค่าไบต์ที่จะใช้เป็นคำซิงค์, ค่าเริ่มต้นเป็น 0x34เปิดใช้งานหรือปิดการใช้งาน CRC โดยค่าเริ่มต้นจะไม่ใช้ CRC
try {
await sx127x . setCrc ( crc ) ;
} catch ( err ) {
console . log ( err ) ;
}crc - true ที่จะเปิดใช้งาน CRC, false เพื่อปิดการใช้งาน สร้างไบต์แบบสุ่มขึ้นอยู่กับการวัด RSSI Wideband
try {
let random = await sx127x . readRandom ( crc ) ;
} catch ( err ) {
console . log ( err ) ;
} ดูตัวอย่างโฟลเดอร์
ห้องสมุดนี้ได้รับใบอนุญาตภายใต้ใบอนุญาต MIT