Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Sign in
Toggle navigation
S
server_lora
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Insights
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Security & Compliance
Security & Compliance
Dependency List
Packages
Packages
Container Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Giacomo Lavermicocca
server_lora
Compare Revisions
7173ed07d2c37560071a00c78478937ad29d12d4...7b11a41ac4f7b8e038e9bde496d1e0dff8e50deb
Source
7b11a41ac4f7b8e038e9bde496d1e0dff8e50deb
Select Git revision
...
Target
7173ed07d2c37560071a00c78478937ad29d12d4
Select Git revision
Compare
Commits (2)
General fixes
· 55ffcb53
Giacomo Lavermicocca
authored
Apr 21, 2019
55ffcb53
General fixes
· 7b11a41a
Giacomo Lavermicocca
authored
Apr 21, 2019
7b11a41a
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
140 additions
and
110 deletions
+140
-110
LoRaReceiverInterrupt/LoRaReceiverInterrupt.ino
LoRaReceiverInterrupt/LoRaReceiverInterrupt.ino
+77
-46
LoRaSender/LoRaSender.ino
LoRaSender/LoRaSender.ino
+63
-64
No files found.
LoRaReceiverInterrupt/LoRaReceiverInterrupt.ino
View file @
7b11a41a
/*
/*
Receiver for exchange commands between LoRa Sender (long range)
*/
#include <heltec.h>
byte
localAddress
=
0x
BB
;
// address of this device
byte
destination
=
0x
AA
;
// destination to send to
byte
localAddress
=
0x
DD
;
// address of this device
byte
destination
=
0x
DE
;
// destination to send to
#define RELE_1 17
#define RELE_2 21
...
...
@@ -16,16 +16,18 @@ byte destination = 0xAA; // destination to send to
String
lastCommand
=
""
;
String
signalLevel
=
""
;
#define BAND 868E6
void
setup
()
{
Heltec
.
begin
(
true
/*DisplayEnable Enable*/
,
true
/*LoRa Enable*/
,
true
/*Serial Enable*/
,
true
/*LoRa use PABOOST*/
,
868E6
/*LoRa RF working band*/
);
Heltec
.
begin
(
true
/*DisplayEnable Enable*/
,
true
/*LoRa Enable*/
,
true
/*Serial Enable*/
,
true
/*LoRa use PABOOST*/
,
BAND
/*LoRa RF working band*/
);
Heltec
.
display
->
clear
();
Serial
.
println
(
"LoRa Sender"
);
LoRa
.
setTxPowerMax
(
1
0
);
LoRa
.
setTxPowerMax
(
1
5
);
//LoRa.enableCrc();
LoRa
.
setPreambleLength
(
4
);
// register the receive callback
LoRa
.
onReceive
(
onReceive
);
// put the radio into receive mode
...
...
@@ -36,7 +38,7 @@ void setup() {
// LoRa.setPreambleLength(1);
//---------------------------------------------
pinMode
(
RELE_1
,
OUTPUT
);
pinMode
(
RELE_2
,
OUTPUT
);
pinMode
(
RELE_3
,
OUTPUT
);
...
...
@@ -47,42 +49,62 @@ void setup() {
unsigned
long
previousMillisLed
=
0
;
const
long
intervalLed
=
60000
*
10
;
unsigned
long
previousMillisRele
=
0
;
const
long
intervalRele
=
1000
*
10
;
bool
isLoRaOnSenderMode
=
false
;
bool
isLedOff
=
true
;
bool
lockRequestsFor10sec
=
false
;
void
loop
()
{
void
loop
()
{
unsigned
long
currentMillis
=
millis
();
if
(
currentMillis
-
previousMillisRele
>
intervalRele
)
{
lockRequestsFor10sec
=
false
;
}
else
{
lockRequestsFor10sec
=
true
;
Heltec
.
display
->
clear
();
Heltec
.
display
->
drawString
(
0
,
0
,
lastCommand
);
Heltec
.
display
->
display
();
}
if
(
isLedOff
)
{
delay
(
2000
);
isLedOff
=
false
;
//Reset rele
digitalWrite
(
RELE_1
,
LOW
);
digitalWrite
(
RELE_2
,
LOW
);
}
if
(
currentMillis
-
previousMillisLed
>
intervalLed
)
{
if
(
currentMillis
-
previousMillisLed
>
intervalLed
)
{
digitalWrite
(
RELE_3
,
LOW
);
//ESP.restart();
}
if
(
isLoRaOnSenderMode
)
if
(
isLoRaOnSenderMode
)
{
isLoRaOnSenderMode
=
false
;
Heltec
.
display
->
clear
();
Heltec
.
display
->
drawString
(
0
,
0
,
lastCommand
);
Heltec
.
display
->
display
();
String
outgoing
=
lastCommand
;
for
(
int
i
=
0
;
i
<
10
;
i
++
)
{
for
(
int
i
=
0
;
i
<
10
;
i
++
)
{
// send packet
LoRa
.
beginPacket
();
LoRa
.
write
(
destination
);
// add destination address
LoRa
.
write
(
localAddress
);
// add sender address
LoRa
.
write
(
outgoing
.
length
());
// add payload length
LoRa
.
print
(
outgoing
);
// add payload
LoRa
.
endPacket
();
delay
(
2000
);
}
// put the radio into receive mode
LoRa
.
receive
();
}
...
...
@@ -91,6 +113,7 @@ void loop() {
String
r1
=
String
(
RELE_1
,
DEC
);
String
r2
=
String
(
RELE_2
,
DEC
);
String
r3
=
String
(
RELE_3
,
DEC
);
String
r0
=
"0"
;
String
read_r1
=
String
(
RELE_READ_1
,
DEC
);
String
read_r2
=
String
(
RELE_READ_2
,
DEC
);
...
...
@@ -134,68 +157,76 @@ void onReceive(int packetSize)
Serial
.
println
(
"RSSI: "
+
String
(
LoRa
.
packetRssi
()));
Serial
.
println
(
"Snr: "
+
String
(
LoRa
.
packetSnr
()));
Serial
.
println
();
// received a packet
String
str
=
incoming
;
if
(
str
.
indexOf
(
"p : "
)
==
0
)
{
if
(
str
.
indexOf
(
r1
)
>
0
)
{
setRele1
();
}
if
(
str
.
indexOf
(
r2
)
>
0
)
{
setRele2
();
}
if
(
str
.
indexOf
(
r3
)
>
0
)
{
setRele3
();
if
(
str
.
indexOf
(
"p : "
)
==
0
)
{
if
(
lockRequestsFor10sec
==
false
)
{
lastCommand
=
str
;
previousMillisRele
=
millis
();
isLedOff
=
true
;
if
(
str
.
indexOf
(
r1
)
>
0
)
{
setRele1
();
}
if
(
str
.
indexOf
(
r2
)
>
0
)
{
setRele2
();
}
if
(
str
.
indexOf
(
r3
)
>
0
)
{
setRele3
();
}
if
(
str
.
indexOf
(
r0
)
>
0
)
{
setRele0
();
}
}
lastCommand
=
str
;
isLoRaOnSenderMode
=
true
;
}
if
(
str
.
indexOf
(
"r : "
)
==
0
)
if
(
str
.
indexOf
(
"r : "
)
==
0
)
{
val
=
""
;
if
(
str
.
indexOf
(
read_r1
)
>
0
)
if
(
str
.
indexOf
(
read_r1
)
>
0
)
{
val
=
readRele1
();
}
else
if
(
str
.
indexOf
(
read_r2
)
>
0
)
else
if
(
str
.
indexOf
(
read_r2
)
>
0
)
{
val
=
readRele2
();
}
isLoRaOnSenderMode
=
true
;
lastCommand
=
str
+
" "
+
val
;
isLoRaOnSenderMode
=
true
;
}
}
void
setRele0
()
{
digitalWrite
(
RELE_1
,
HIGH
);
digitalWrite
(
RELE_2
,
HIGH
);
digitalWrite
(
RELE_3
,
HIGH
);
// LUCI LED
previousMillisLed
=
millis
();
}
void
setRele1
()
{
isLedOff
=
true
;
digitalWrite
(
RELE_1
,
HIGH
);
digitalWrite
(
RELE_3
,
HIGH
);
// LUCI LED
delay
(
2000
);
previousMillisLed
=
millis
();
}
void
setRele2
()
{
isLedOff
=
true
;
digitalWrite
(
RELE_2
,
HIGH
);
digitalWrite
(
RELE_3
,
HIGH
);
// LUCI LED
delay
(
2000
);
previousMillisLed
=
millis
();
}
void
setRele3
()
{
digitalWrite
(
RELE_3
,
HIGH
);
...
...
LoRaSender/LoRaSender.ino
View file @
7b11a41a
/*
LoRa Sender commands & store the response
Http comunications with outside
...
...
@@ -10,8 +10,8 @@
const
char
*
ssid
=
"Thomas"
;
const
char
*
password
=
"viapiccardi47!!thomas"
;
byte
localAddress
=
0x
AA
;
// address of this device
byte
destination
=
0x
BB
;
// destination to send to
byte
localAddress
=
0x
DE
;
// address of this device
byte
destination
=
0x
DD
;
// destination to send to
// TCP server at port 80 will respond to HTTP requests
WiFiServer
server
(
80
);
...
...
@@ -26,11 +26,11 @@ void WIFISetUp(void)
delay
(
1000
);
WiFi
.
mode
(
WIFI_STA
);
WiFi
.
setAutoConnect
(
true
);
WiFi
.
begin
(
"Thomas"
,
"viapiccardi47!!thomas"
);
WiFi
.
begin
(
"Thomas"
,
"viapiccardi47!!thomas"
);
delay
(
100
);
byte
count
=
0
;
while
(
WiFi
.
status
()
!=
WL_CONNECTED
&&
count
<
10
)
while
(
WiFi
.
status
()
!=
WL_CONNECTED
&&
count
<
10
)
{
count
++
;
delay
(
500
);
...
...
@@ -39,11 +39,11 @@ void WIFISetUp(void)
}
Heltec
.
display
->
clear
();
if
(
WiFi
.
status
()
==
WL_CONNECTED
)
if
(
WiFi
.
status
()
==
WL_CONNECTED
)
{
Heltec
.
display
->
drawString
(
0
,
0
,
"Connecting...OK."
);
Heltec
.
display
->
display
();
// delay(500);
// delay(500);
}
else
{
...
...
@@ -59,22 +59,24 @@ void WIFISetUp(void)
delay
(
500
);
}
#define BAND 868E6
void
setup
(
void
)
{
Heltec
.
begin
(
true
/*DisplayEnable Enable*/
,
true
/*LoRa Enable*/
,
true
/*Serial Enable*/
,
true
/*LoRa use PABOOST*/
,
868E6
/*LoRa RF working band*/
);
Heltec
.
begin
(
true
/*DisplayEnable Enable*/
,
true
/*LoRa Enable*/
,
false
/*Serial Enable*/
,
true
/*LoRa use PABOOST*/
,
BAND
/*LoRa RF working band*/
);
Heltec
.
display
->
clear
();
Serial
.
println
(
"LoRa Sender"
);
LoRa
.
setTxPowerMax
(
1
0
);
LoRa
.
setTxPowerMax
(
1
5
);
//LoRa.enableCrc();
LoRa
.
setPreambleLength
(
4
);
LoRa
.
onReceive
(
onReceive
);
LoRa
.
receive
();
//-------------------------------------
WIFISetUp
();
// Start TCP (HTTP) server
server
.
begin
();
...
...
@@ -88,7 +90,7 @@ void setup(void)
String
s
;
unsigned
long
previousMillis
=
0
;
const
long
interval
=
10
000
;
const
long
interval
=
25
000
;
int
val
=
0
;
void
loop
(
void
)
...
...
@@ -98,14 +100,14 @@ void loop(void)
if
(
WiFi
.
status
()
!=
WL_CONNECTED
)
{
ESP
.
restart
();
}
long
rssi
=
WiFi
.
RSSI
();
if
(
rssi
==
0
)
if
(
rssi
==
0
)
{
ESP
.
restart
();
}
// Check if a client has connected
WiFiClient
client
=
server
.
available
();
if
(
!
client
)
{
...
...
@@ -116,7 +118,7 @@ void loop(void)
while
(
client
.
connected
()
&&
!
client
.
available
())
{
delay
(
1
);
}
// Read the first line of HTTP request
String
req
=
client
.
readStringUntil
(
'\r'
);
...
...
@@ -138,10 +140,9 @@ void loop(void)
s
=
"HTTP/1.1 200 OK
\r\n
Content-Type: text/html
\r\n\r\n
Hello from ESP32 at "
;
s
+=
ipStr
;
s
+=
""
;
}
else
if
(
req
.
indexOf
(
"/pin"
)
>=
0
)
{
pinRequest
(
req
);
lastCommandReceived
=
""
;
s
=
"HTTP/1.1 200 OK
\r\n
Content-Type: text/html
\r\n\r\n
"
;
s
+=
req
;
s
+=
""
;
...
...
@@ -150,7 +151,6 @@ void loop(void)
}
else
if
(
req
.
indexOf
(
"/brightness"
)
>=
0
)
{
setBrightness
(
req
);
lastCommandReceived
=
""
;
s
=
"HTTP/1.1 200 OK
\r\n
Content-Type: text/html
\r\n\r\n
"
;
s
+=
req
;
s
+=
""
;
...
...
@@ -158,7 +158,7 @@ void loop(void)
previousMillis
=
currentMillis
;
}
else
if
(
req
.
indexOf
(
"/read"
)
>=
0
)
{
pinRequestRead
(
req
);
s
=
"HTTP/1.1 200 OK
\r\n
Content-Type: text/html
\r\n\r\n
"
;
s
+=
req
;
...
...
@@ -235,16 +235,8 @@ void onReceive(int packetSize)
Serial
.
println
(
"RSSI: "
+
String
(
LoRa
.
packetRssi
()));
Serial
.
println
(
"Snr: "
+
String
(
LoRa
.
packetSnr
()));
Serial
.
println
();
if
(
incoming
.
indexOf
(
"r : "
)
==
0
)
{
lastCommandReceived
=
incoming
;
}
if
(
incoming
.
indexOf
(
"p : "
)
==
0
)
{
lastCommandReceived
=
incoming
;
}
if
(
incoming
.
indexOf
(
"b : "
)
==
0
)
{
if
(
incoming
.
indexOf
(
"r : "
)
==
0
)
{
lastCommandReceived
=
incoming
;
}
}
...
...
@@ -259,18 +251,20 @@ void pinRequest(String req)
String
outgoing
=
"p : "
+
req
;
// send packet
LoRa
.
beginPacket
();
LoRa
.
write
(
destination
);
// add destination address
LoRa
.
write
(
localAddress
);
// add sender address
LoRa
.
write
(
outgoing
.
length
());
// add payload length
LoRa
.
print
(
outgoing
);
// add payload
LoRa
.
endPacket
();
// put the radio into receive mode
LoRa
.
receive
();
for
(
int
i
=
0
;
i
<
5
;
i
++
)
{
// send packet
LoRa
.
beginPacket
();
LoRa
.
write
(
destination
);
// add destination address
LoRa
.
write
(
localAddress
);
// add sender address
LoRa
.
write
(
outgoing
.
length
());
// add payload length
LoRa
.
print
(
outgoing
);
// add payload
LoRa
.
endPacket
();
delay
(
2000
);
}
lastCommandReceived
=
outgoing
;
}
void
setBrightness
(
String
req
)
...
...
@@ -279,18 +273,20 @@ void setBrightness(String req)
String
outgoing
=
"b : "
+
req
;
// send packet
LoRa
.
beginPacket
();
LoRa
.
write
(
destination
);
// add destination address
LoRa
.
write
(
localAddress
);
// add sender address
LoRa
.
write
(
outgoing
.
length
());
// add payload length
LoRa
.
print
(
outgoing
);
// add payload
LoRa
.
endPacket
();
// put the radio into receive mode
LoRa
.
receive
();
for
(
int
i
=
0
;
i
<
5
;
i
++
)
{
// send packet
LoRa
.
beginPacket
();
LoRa
.
write
(
destination
);
// add destination address
LoRa
.
write
(
localAddress
);
// add sender address
LoRa
.
write
(
outgoing
.
length
());
// add payload length
LoRa
.
print
(
outgoing
);
// add payload
LoRa
.
endPacket
();
delay
(
2000
);
}
lastCommandReceived
=
outgoing
;
}
void
pinRequestRead
(
String
req
)
...
...
@@ -299,16 +295,19 @@ void pinRequestRead(String req)
String
outgoing
=
"r : "
+
req
;
// send packet
LoRa
.
beginPacket
();
LoRa
.
write
(
destination
);
// add destination address
LoRa
.
write
(
localAddress
);
// add sender address
LoRa
.
write
(
outgoing
.
length
());
// add payload length
LoRa
.
print
(
outgoing
);
// add payload
LoRa
.
endPacket
();
for
(
int
i
=
0
;
i
<
5
;
i
++
)
{
// send packet
LoRa
.
beginPacket
();
LoRa
.
write
(
destination
);
// add destination address
LoRa
.
write
(
localAddress
);
// add sender address
LoRa
.
write
(
outgoing
.
length
());
// add payload length
LoRa
.
print
(
outgoing
);
// add payload
LoRa
.
endPacket
();
delay
(
2000
);
}
// put the radio into receive mode
LoRa
.
receive
();
}