Node.js Driver для Semtech SX1276/77/78/79 на основе радиостанций Lora.
На основе Node-SX127X, построенный на вершине модулей @Fivdi's OnOff и SPI-Device.
dtparam=spi=on in /boot/config.txt| Semtech SX1276/77/78/79 | Универсальный Linux | Raspberry Pi |
|---|---|---|
| Венчурной | 3,3 В. | 3,3 В. |
| Гнездо | Гнездо | Гнездо |
| SCK | SCK | SCK (PIN 11) |
| Мисо | Мисо | Мисо (PIN 10) |
| Моси | Моси | MOSI (PIN 9) |
| NSS | Чип включен/выберите | CS0 (PIN 8) или CS1 (PIN 7) |
| Nreset | GPIO PIN | GPIO PIN |
| Dio0 | GPIO PIN | GPIO PIN |
npm install sx127x-driver let SX127x = require ( 'sx127x-driver' ) ;
let options = {
// ...
} ;
let sx127x = new SX127x ( options ) ;Поддерживаемые варианты:
| Имя | По умолчанию | Описание |
|---|---|---|
spiBus | 0 | SPI Bus для использования |
spiDevice | 0 | SPI Chip Select/ |
resetPin | 24 | PIN -контакт GPIO Номер сброса |
dio0Pin | 25 | Вывод GPIO номер PIN -кода DiO0 |
frequency | 915e6 | Частота радио в Гц, см. SetFreequency для подтвержденных значений (убедитесь, что ваш чип поддерживает выбранную вами частоту) |
spreadingFactor | 7 | Распространение коэффициента радио, см. SETS ExpreadingFactor для поддерживаемых значений (факторы распространения являются ортогональными, поэтому убедитесь, что они совпадают при попытке общаться от одного чипа к другому) |
signalBandwidth | 125E3 | Пропускная ширина сигнала радио в Гц, см. SetSignalBandWidth для поддерживаемых значений |
codingRate | 4 / 5 | Скорость кодирования радио, см. SetCodingRate для поддерживаемых значений |
preambleLength | 8 | Продолжительность радиосвязи в преамбуле, см. SetPreamblelength для поддерживаемых значений |
syncWord | 0x12 | Sync Word of Radio, см. SetSyncword для поддерживаемых значений |
txPower | 17 | TX Power of Radio, см. Settxpower для поддерживаемых значений |
crc | false | Включить или отключить использование CRC |
tempCompensationFactor | false | Коэффициент компенсации для измерений температуры в градусах по Цельсию (+- несколько градусов) |
debug | false | Включить / отключить вывод отладки |
invertIqReg | false | Inverts IQ Register на вызове для 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 ) ;
}Поместите радио в режиме.
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 - частота в Гц ( 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 - полоса пропускания сигнала в Гц, по умолчанию до 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 to Difable Создайте случайный байт, основанный на широкополосном измерении RSSI.
try {
let random = await sx127x . readRandom ( crc ) ;
} catch ( err ) {
console . log ( err ) ;
} Смотрите примеры папки.
Эта библиотека лицензирована по лицензии MIT.