Node.js -Treiber für Semtech SX1276/77/78/79 Basierte Lora -Radios.
Basierend auf dem Node-SX127X, der auf @fivdi-Onoff- und SPI-Device-Modulen aufgebaut ist.
dtparam=spi=on IN /boot/config.txt| Semtech SX1276/77/78/79 | Generisches Linux | Raspberry Pi |
|---|---|---|
| VCC | 3.3 V | 3.3 V |
| GND | GND | GND |
| Sck | Sck | SCK (Pin 11) |
| Miso | Miso | Miso (Pin 10) |
| Mosi | Mosi | Mosi (Pin 9) |
| NSS | Chip aktivieren/auswählen | CS0 (Pin 8) oder 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 ) ;Unterstützte Optionen:
| Name | Standard | Beschreibung |
|---|---|---|
spiBus | 0 | SPI -Bus zu verwenden |
spiDevice | 0 | SPI -Chip auswählen/aktivieren Sie die Verwendung |
resetPin | 24 | GPIO -PIN -Anzahl der Reset -Pin |
dio0Pin | 25 | GPIO -PIN -Anzahl von DIO0 -Pin |
frequency | 915e6 | Funkfrequenz in HZ, siehe SetFrequenz für unterstützte Werte (stellen Sie sicher, dass Ihr Chip die von Ihnen gewählte Frequenz unterstützt). |
spreadingFactor | 7 | Verbreitungsfaktor des Radios siehe SetSpreadingFactor für unterstützte Werte (Verbreitungsfaktoren sind orthogonal. Stellen Sie daher sicher, dass sie mit dem Versuch übereinstimmen, von einem Chip zum anderen zu kommunizieren). |
signalBandwidth | 125E3 | Signalbandbreite des Radios in HZ, siehe SetSignalBandwidth für unterstützte Werte |
codingRate | 4 / 5 | Codierungsrate von Funk, siehe SetCodingrate für unterstützte Werte |
preambleLength | 8 | Präambellänge des Radios, siehe setPreamblelength für unterstützte Werte |
syncWord | 0x12 | Synchronisierungswort des Radios siehe SetSyncWord für unterstützte Werte |
txPower | 17 | TX Power of Radio, siehe settxpower für unterstützte Werte |
crc | false | Aktivieren oder deaktivieren Sie die Nutzung der CRC |
tempCompensationFactor | false | Kompensationsfaktor für Temperaturmessungen in Grad Celsius (+- einige Grad) |
debug | false | Debug -Ausgabe aktivieren / deaktivieren |
invertIqReg | false | invertiert das IQ -Register bei Call to Open () |
Öffnen und konfigurieren Sie das Gerät:
try {
await sx127x . open ( ) ;
} catch ( err ) {
console . log ( 'Failure to open device: ' + err )
}Das Gerät schließen:
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 ) ;
} ) ;Setzen Sie das Radio in den Schlafmodus.
try {
await sx127x . sleep ( ) ;
} catch ( err ) {
console . log ( 'Fail to put into sleep mode: ' + err ) ;
}Setzen Sie das Radio im Stand nach Modus.
try {
await sx127x . standBy ( ) ;
} catch ( err ) {
console . log ( 'Fail to put into stand by: ' + err ) ;
} Ändern Sie die TX -Leistung des Radios.
try {
await sx127x . setTxPower ( txPower ) ;
} catch ( err ) {
console . log ( err ) ;
}txPower - TX Power in DB, standardmäßig 17 Die unterstützten Werte sind zwischen 2 und 17 .
Ändern Sie die Frequenz des Radios.
try {
await sx127x . setFrequency ( frequency ) ;
} catch ( err ) {
console . log ( err ) ;
}frequency - Frequenz in Hz ( 433E6 , 866E6 , 915E6 )Ändern Sie den Ausbreitungsfaktor des Radios.
try {
await sx127x . setSpreadingFactor ( spreadingFactor ) ;
} catch ( err ) {
console . log ( err ) ;
}spreadingFactor - Spreading -Faktor, standardmäßig auf 7 Die unterstützten Werte liegen zwischen 6 und 12 . Wenn ein Ausbreitungsfaktor von 6 eingestellt ist, muss der implizite Header -Modus zum Senden und Empfangen von Paketen verwendet werden.
Ändern Sie die Signalbandbreite des Radios.
try {
await sx127x . setSignalBandwidth ( signalBandwidth ) ;
} catch ( err ) {
console . log ( err ) ;
}signalBandwidth - Signalbandbreite in Hz, standardmäßig 125E3 . Die unterstützten Werte betragen 7.8E3 , 10.4E3 , 15.6E3 , 20.8E3 , 31.25E3 , 41.7E3 , 62.5E3 , 125E3 , 250E3 und 500E3 .
Ändern Sie die Codierungsrate des Radios.
try {
await sx127x . setCodingRate ( codingRate ) ;
} catch ( err ) {
console . log ( err ) ;
}codingRate - Codierungsrate, standardmäßig 4/5 Unterstützte Werte sind 4/5 , 4/6 , 4/7 und 4/8 .
Ändern Sie die Präambellänge des Radios.
try {
await sx127x . setPreambleLength ( preambleLength ) ;
} catch ( err ) {
console . log ( err ) ;
}preambleLength - Präambellänge in Symbolen, Standardeinstellungen bis 8 Die unterstützten Werte liegen zwischen 6 und 65535 .
Ändern Sie das Synchronisierungswort des Radios.
try {
await sx127x . setSyncWord ( syncWord ) ;
} catch ( err ) {
console . log ( err ) ;
}syncWord - Byte -Wert als Synchronisation Word, standardmäßig auf 0x34 verwendetAktivieren oder deaktivieren Sie die CRC -Verwendung, standardmäßig wird kein CRC verwendet.
try {
await sx127x . setCrc ( crc ) ;
} catch ( err ) {
console . log ( err ) ;
}crc - true , um CRC zu aktivieren, false zu deaktivieren Generieren Sie ein zufälliges Byte, basierend auf der Breitband -RSSI -Messung.
try {
let random = await sx127x . readRandom ( crc ) ;
} catch ( err ) {
console . log ( err ) ;
} Siehe Beispieleordner.
Diese Bibliothek ist unter der MIT -Lizenz lizenziert.