-
Notifications
You must be signed in to change notification settings - Fork 0
/
tx_v0.1.ino
101 lines (82 loc) · 2.54 KB
/
tx_v0.1.ino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#include <RF24Network.h>
#include <RF24.h>
#include <SPI.h>
#include <SoftwareSerial.h>
#include <TinyGPS.h>
RF24 radio(4, 5); // nRF24L01(+) radio attached using Getting Started board
RF24Network network(radio); // Network uses that radio
SoftwareSerial gpsSerial(2, 3); //rx,tx
TinyGPS gps; // create gps object
const uint16_t this_node = 01; // Address of our node in Octal format
const uint16_t other_node = 00; // Address of the other node in Octal format
const unsigned long interval = 1000; //ms // How often to send 'hello world to the other unit
unsigned long last_sent; // When did we last send?
unsigned long packets_sent; // How many have we sent already
float l,t;
struct payload_t { // Structure of our payload
byte State;
int pulse;
float lat;
float lon;
};
void setup(void)
{
Serial.begin(9600);
SPI.begin();
radio.begin();
network.begin(/*channel*/ 90, /*node address*/ this_node);
network.update(); // Check the network regularly
gpsSerial.begin(9600); // connect gps sensor
int st=0;
do{
while (gpsSerial.available()) { // check for gps data
if (gps.encode(gpsSerial.read())) // encode gps data
{
gps.f_get_position(&l, &t); // get latitude and longitude
Serial.print(l);
Serial.print(",");
Serial.println(5);
st=1;
}
}
Serial.print("Sending...");
bool ok;
do {
payload_t payload = { 1, 123, l, t};
RF24NetworkHeader header(/*to node*/ other_node);
ok = network.write(header, &payload, sizeof(payload));
if (ok)
Serial.println("ok.");
else
Serial.println("failed.");
} while (ok == 0);
}while(st==1);
}
void loop() {
network.update(); // Check the network regularly
unsigned long now = millis(); // If it's time to send a message, send it!
if ( now - last_sent >= interval )
{
last_sent = now;
Serial.print("Sending...");
bool ok;
do {
payload_t payload = { 0, 50,l,t};
RF24NetworkHeader header(/*to node*/ other_node);
ok = network.write(header, &payload, sizeof(payload));
if (ok)
Serial.println("ok.");
else
Serial.println("failed.");
} while (ok == 0);
}
while (gpsSerial.available()) { // check for gps data
if (gps.encode(gpsSerial.read())) // encode gps data
{
gps.f_get_position(&l, &t); // get latitude and longitude
Serial.print(l);
Serial.print(",");
Serial.println(5);
}
}
}