first
This commit is contained in:
commit
4fb40fc1d6
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
node_modules
|
107
arduino/LoRaSender.ino
Normal file
107
arduino/LoRaSender.ino
Normal file
@ -0,0 +1,107 @@
|
||||
#include <ArduinoJson.h>
|
||||
#include <SPI.h>
|
||||
#include <LoRa.h>
|
||||
#include "DHT.h"
|
||||
|
||||
#define DHTPIN 3
|
||||
#define DHTTYPE DHT11
|
||||
DHT dht(DHTPIN, DHTTYPE);
|
||||
|
||||
int lightPin = A0;
|
||||
int counter = 0;
|
||||
int LEDPin = 4;
|
||||
|
||||
void setup() {
|
||||
Serial.begin(9600);
|
||||
while (!Serial);
|
||||
|
||||
Serial.println("LoRa Sender");
|
||||
|
||||
if (!LoRa.begin(866E6)) {
|
||||
Serial.println("Starting LoRa failed!");
|
||||
while (1);
|
||||
}
|
||||
dht.begin();
|
||||
LoRa.crc();
|
||||
LoRa.setSyncWord(0x22);
|
||||
// register the receive callback
|
||||
LoRa.onReceive(onReceive);
|
||||
|
||||
// put the radio into receive mode
|
||||
LoRa.receive();
|
||||
// attachInterrupt(digitalPinToInterrupt(2), lora, HIGH);
|
||||
pinMode(LEDPin, OUTPUT);
|
||||
}
|
||||
|
||||
void loop() {
|
||||
|
||||
StaticJsonBuffer<200> jsonBuf;
|
||||
|
||||
JsonObject& json = jsonBuf.createObject();
|
||||
|
||||
Serial.print("Sending packet: ");
|
||||
Serial.println(counter);
|
||||
|
||||
float h = dht.readHumidity();
|
||||
float t = dht.readTemperature();
|
||||
|
||||
json["count"] = counter;
|
||||
json["temperature"] = t;
|
||||
json["humidity"] = h;
|
||||
json["light"] = analogRead(lightPin);
|
||||
|
||||
// send packet
|
||||
LoRa.beginPacket();
|
||||
json.printTo(LoRa);
|
||||
LoRa.endPacket();
|
||||
|
||||
counter++;
|
||||
LoRa.onReceive(onReceive);
|
||||
LoRa.receive();
|
||||
|
||||
delay(1000);
|
||||
}
|
||||
|
||||
void lora() {
|
||||
Serial.println("Get Pin High");
|
||||
int packetSize = LoRa.parsePacket();
|
||||
if (packetSize) {
|
||||
// received a packet
|
||||
Serial.print("Received packet '");
|
||||
|
||||
// read packet
|
||||
while (LoRa.available()) {
|
||||
Serial.print((char)LoRa.read());
|
||||
}
|
||||
|
||||
// print RSSI of packet
|
||||
Serial.print("' with RSSI ");
|
||||
Serial.println(LoRa.packetRssi());
|
||||
}
|
||||
}
|
||||
|
||||
void onReceive(int packetSize) {
|
||||
// received a packet
|
||||
Serial.print("Received packet '");
|
||||
uint8_t d[packetSize];
|
||||
// read packet
|
||||
for (int i = 0; i < packetSize; i++) {
|
||||
// Serial.print((char)LoRa.read());
|
||||
d[i] = LoRa.read();
|
||||
Serial.print(d[i], HEX);
|
||||
Serial.print(" ");
|
||||
}
|
||||
|
||||
// print RSSI of packet
|
||||
Serial.print("' with RSSI ");
|
||||
Serial.println(LoRa.packetRssi());
|
||||
|
||||
if (int(d[packetSize - 1]) % 2 == 0) {
|
||||
Serial.println("LED on");
|
||||
digitalWrite(LEDPin, HIGH);
|
||||
} else {
|
||||
Serial.println("LED off");
|
||||
digitalWrite(LEDPin, LOW);
|
||||
}
|
||||
}
|
||||
|
47
nodejs/package-lock.json
generated
Normal file
47
nodejs/package-lock.json
generated
Normal file
@ -0,0 +1,47 @@
|
||||
{
|
||||
"name": "nodejs",
|
||||
"version": "1.0.0",
|
||||
"lockfileVersion": 1,
|
||||
"dependencies": {
|
||||
"async": {
|
||||
"version": "2.4.1",
|
||||
"resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz",
|
||||
"integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c="
|
||||
},
|
||||
"bindings": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz",
|
||||
"integrity": "sha1-FK1hE4EtLTfXLme0ystLtyZQXxE="
|
||||
},
|
||||
"epoll": {
|
||||
"version": "0.1.21",
|
||||
"resolved": "https://registry.npmjs.org/epoll/-/epoll-0.1.21.tgz",
|
||||
"integrity": "sha1-OCoIzZNOy7g2k+v0JfS2tPYXTZc="
|
||||
},
|
||||
"lodash": {
|
||||
"version": "4.17.4",
|
||||
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
|
||||
"integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4="
|
||||
},
|
||||
"nan": {
|
||||
"version": "2.5.1",
|
||||
"resolved": "https://registry.npmjs.org/nan/-/nan-2.5.1.tgz",
|
||||
"integrity": "sha1-1bAWkSUzJql6K77p5hxV2NYDUeI="
|
||||
},
|
||||
"onoff": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/onoff/-/onoff-1.1.2.tgz",
|
||||
"integrity": "sha1-3NOdP9VZ2y0N9bzVTYzJ3x13R6I="
|
||||
},
|
||||
"spi-device": {
|
||||
"version": "0.2.6",
|
||||
"resolved": "https://registry.npmjs.org/spi-device/-/spi-device-0.2.6.tgz",
|
||||
"integrity": "sha1-tmosN1gAsqgFQXZUIuFU4Ln8bE8="
|
||||
},
|
||||
"sx127x": {
|
||||
"version": "0.0.0",
|
||||
"resolved": "https://registry.npmjs.org/sx127x/-/sx127x-0.0.0.tgz",
|
||||
"integrity": "sha1-0/Ui6hAv39yUA2DxbxRWKPBabO4="
|
||||
}
|
||||
}
|
||||
}
|
15
nodejs/package.json
Normal file
15
nodejs/package.json
Normal file
@ -0,0 +1,15 @@
|
||||
{
|
||||
"name": "nodejs",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "receiver.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"sx127x": "0.0.0"
|
||||
}
|
||||
}
|
56
nodejs/receiver.js
Normal file
56
nodejs/receiver.js
Normal file
@ -0,0 +1,56 @@
|
||||
var SX127x = require('../index'); // or require('sx127x')
|
||||
|
||||
var sx127x = new SX127x({
|
||||
frequency: 866e6,
|
||||
resetPin: 17,
|
||||
dio0Pin: 4,
|
||||
syncWord: 0x22,
|
||||
crc: true
|
||||
});
|
||||
|
||||
var count = 0;
|
||||
|
||||
// open the device
|
||||
sx127x.open(function(err) {
|
||||
console.log('open', err ? err : 'success');
|
||||
|
||||
if (err) {
|
||||
throw err;
|
||||
}
|
||||
|
||||
// add a event listener for data events
|
||||
sx127x.on('data', function(data, rssi) {
|
||||
//console.log('Origin Data: ', data, data.length);
|
||||
console.log('data:', '\'' + data.toString() + '\'', rssi);
|
||||
let json = {};
|
||||
try{
|
||||
json = JSON.parse(data.toString());
|
||||
if(json.count % 5 == 0){
|
||||
setTimeout(function(){
|
||||
sx127x.write(new Buffer('Count is ' + json.count), err => {
|
||||
console.log('write data', new Buffer('Count is ' + json.count));
|
||||
if(err) console.log('send error' , err);
|
||||
setRX()
|
||||
});
|
||||
}, 1000);
|
||||
}
|
||||
}catch(e){}
|
||||
});
|
||||
|
||||
setRX();
|
||||
});
|
||||
|
||||
function setRX(){
|
||||
// enable receive mode
|
||||
sx127x.receive(function(err) {
|
||||
console.log('receive', err ? err : 'success');
|
||||
});
|
||||
}
|
||||
|
||||
process.on('SIGINT', function() {
|
||||
// close the device
|
||||
sx127x.close(function(err) {
|
||||
console.log('close', err ? err : 'success');
|
||||
process.exit();
|
||||
});
|
||||
});
|
Loading…
Reference in New Issue
Block a user