Conducteur Node.js pour SEMTECH SX1276 / 77/78/79 Radios LORA basées
Basé sur Node-SX127X, construit sur les modules ONOFF et SPI-Device de @ FIVDI.
dtparam=spi=on in /boot/config.txt| Semtech SX1276 / 77/78/79 | Linux générique | Raspberry Pi |
|---|---|---|
| VCC | 3.3 V | 3.3 V |
| GND | GND | GND |
| SCK | SCK | SCK (broche 11) |
| Miso | Miso | Miso (broche 10) |
| Mosi | Mosi | Mosi (broche 9) |
| NSS | Puce activer / select | CS0 (broche 8) ou CS1 (broche 7) |
| Nrésist | Broche | Broche |
| Dio0 | Broche | Broche |
npm install sx127x-driver let SX127x = require ( 'sx127x-driver' ) ;
let options = {
// ...
} ;
let sx127x = new SX127x ( options ) ;Options prises en charge:
| Nom | Défaut | Description |
|---|---|---|
spiBus | 0 | Bus SPI à utiliser |
spiDevice | 0 | SPI Chip Select / activer d'utiliser |
resetPin | 24 | GPIO Nombre de broches de réinitialisation |
dio0Pin | 25 | Numéro de broche GPIO de la broche Dio0 |
frequency | 915e6 | Fréquence de la radio dans HZ, voir SetFrequency pour les valeurs prises en charge (assurez-vous que votre puce prend en charge la fréquence que vous avez choisie) |
spreadingFactor | 7 | Facteur de propagation de la radio, voir SetSpreadingFactor pour les valeurs prises en charge (les facteurs de propagation sont orthogonaux, alors assurez-vous qu'ils correspondent lorsque vous essayez de communiquer d'une puce à une autre) |
signalBandwidth | 125E3 | Bande passante du signal de la radio dans HZ, voir SetSignalBandwidth pour les valeurs prises en charge |
codingRate | 4 / 5 | Taux de codage de la radio, voir setcodingrate pour les valeurs prises en charge |
preambleLength | 8 | Longueur de préambule de la radio, voir setprembblelfength pour les valeurs prises en charge |
syncWord | 0x12 | Sync Word of Radio, voir SetSyncword pour les valeurs prises en charge |
txPower | 17 | Power Tx de la radio, voir SettxPower pour les valeurs prises en charge |
crc | false | Activer ou désactiver l'utilisation du CRC |
tempCompensationFactor | false | Facteur de compensation pour les mesures de température en degrés Celsius (+ - quelques degrés) |
debug | false | Activer / désactiver la sortie de débogage |
invertIqReg | false | INVERTS IQ REGISTER SUR L'APPEL À OUVERSE () |
Ouvrez et configurez l'appareil:
try {
await sx127x . open ( ) ;
} catch ( err ) {
console . log ( 'Failure to open device: ' + err )
}Fermez l'appareil:
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 ) ;
} ) ;Mettez la radio en mode veille.
try {
await sx127x . sleep ( ) ;
} catch ( err ) {
console . log ( 'Fail to put into sleep mode: ' + err ) ;
}Mettez la radio en mode stand par.
try {
await sx127x . standBy ( ) ;
} catch ( err ) {
console . log ( 'Fail to put into stand by: ' + err ) ;
} Changez la puissance TX de la radio.
try {
await sx127x . setTxPower ( txPower ) ;
} catch ( err ) {
console . log ( err ) ;
}txPower - POWER TX EN DB, par défaut 17 Les valeurs prises en charge se trouvent entre 2 et 17 .
Changez la fréquence de la radio.
try {
await sx127x . setFrequency ( frequency ) ;
} catch ( err ) {
console . log ( err ) ;
}frequency - Fréquence dans Hz ( 433E6 , 866E6 , 915E6 )Modifiez le facteur d'écart de la radio.
try {
await sx127x . setSpreadingFactor ( spreadingFactor ) ;
} catch ( err ) {
console . log ( err ) ;
}spreadingFactor - Facteur d'étalement, par défaut 7 Les valeurs prises en charge se trouvent entre 6 et 12 . Si un facteur de propagation de 6 est défini, le mode d'en-tête implicite doit être utilisé pour transmettre et recevoir des paquets.
Changez la bande passante du signal de la radio.
try {
await sx127x . setSignalBandwidth ( signalBandwidth ) ;
} catch ( err ) {
console . log ( err ) ;
}signalBandwidth - Bande de bandage de signal dans HZ, par défaut est 125E3 . Les valeurs prises en charge sont 7.8E3 , 10.4E3 , 15.6E3 , 20.8E3 , 31.25E3 , 41.7E3 , 62.5E3 , 125E3 , 250E3 et 500E3 .
Modifier le taux de codage de la radio.
try {
await sx127x . setCodingRate ( codingRate ) ;
} catch ( err ) {
console . log ( err ) ;
}codingRate - Taux de codage, par défaut à 4/5 Les valeurs prises en charge sont 4/5 , 4/6 , 4/7 et 4/8 .
Changez la longueur de préambule de la radio.
try {
await sx127x . setPreambleLength ( preambleLength ) ;
} catch ( err ) {
console . log ( err ) ;
}preambleLength - Longueur de préambule dans les symboles, par défaut est 8 Les valeurs prises en charge se trouvent entre 6 et 65535 .
Changez le mot synchronisé de la radio.
try {
await sx127x . setSyncWord ( syncWord ) ;
} catch ( err ) {
console . log ( err ) ;
}syncWord - valeur d'octet à utiliser comme mot synchronisé, par défaut à 0x34Activer ou désactiver l'utilisation CRC, par défaut, un CRC n'est pas utilisé.
try {
await sx127x . setCrc ( crc ) ;
} catch ( err ) {
console . log ( err ) ;
}crc - true à l'activation du CRC, false à désactiver Générez un octet aléatoire, basé sur la mesure RSSI à large bande.
try {
let random = await sx127x . readRandom ( crc ) ;
} catch ( err ) {
console . log ( err ) ;
} Voir le dossier Exemples.
Cette bibliothèque est autorisée sous la licence du MIT.