commit
a2b2d3411d
@ -26,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#include <Arduino.h>
|
||||
#include <lmic.h>
|
||||
|
||||
void ttn_register(void (*callback)(uint8_t message));
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
@ -40,10 +39,11 @@ void ttn_register(void (*callback)(uint8_t message));
|
||||
// Configuration
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
#define USE_CAYENNE
|
||||
#define DEBUG_PORT Serial // Serial debug port
|
||||
#define SERIAL_BAUD 115200 // Serial debug baud rate
|
||||
#define SLEEP_BETWEEN_MESSAGES 0 // Do sleep between messages
|
||||
#define SEND_INTERVAL 30000 // Sleep for these many millis
|
||||
#define SEND_INTERVAL 10000 // Sleep for these many millis
|
||||
#define MESSAGE_TO_SLEEP_DELAY 5000 // Time after message before going to sleep
|
||||
#define LOGO_DELAY 5000 // Time to show logo on first boot
|
||||
#define LORAWAN_PORT 10 // Port the messages will be sent to
|
||||
@ -94,6 +94,7 @@ void ttn_register(void (*callback)(uint8_t message));
|
||||
#define GPS_RX_PIN 12
|
||||
#define GPS_TX_PIN 15
|
||||
#define GPS_BAUDRATE 9600
|
||||
#define USE_GPS 1
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// LoRa SPI
|
||||
|
40
main/gps.ino
40
main/gps.ino
@ -62,6 +62,44 @@ static void gps_loop() {
|
||||
_gps.encode(_serial_gps.read());
|
||||
}
|
||||
}
|
||||
#ifdef USE_CAYENNE
|
||||
// CAYENNE DF
|
||||
void buildPacket(uint8_t txBuffer[11])
|
||||
{
|
||||
sprintf(t, "Lat: %f", _gps.location.lat());
|
||||
Serial.println(t);
|
||||
sprintf(t, "Lng: %f", _gps.location.lng());
|
||||
Serial.println(t);
|
||||
sprintf(t, "Alt: %f", _gps.altitude.meters());
|
||||
Serial.println(t);
|
||||
int32_t lat = _gps.location.lat() * 10000;
|
||||
int32_t lon = _gps.location.lng() * 10000;
|
||||
int32_t alt = _gps.altitude.meters() * 100;
|
||||
|
||||
txBuffer[2] = lat >> 16;
|
||||
txBuffer[3] = lat >> 8;
|
||||
txBuffer[4] = lat;
|
||||
txBuffer[5] = lon >> 16;
|
||||
txBuffer[6] = lon >> 8;
|
||||
txBuffer[7] = lon;
|
||||
txBuffer[8] = alt >> 16;
|
||||
txBuffer[9] = alt >> 8;
|
||||
txBuffer[10] = alt;
|
||||
/*
|
||||
txBuffer[2] = ( LatitudeBinary >> 16 );// & 0xFF;
|
||||
txBuffer[3] = ( LatitudeBinary >> 8 );// & 0xFF;
|
||||
txBuffer[4] = LatitudeBinary;// & 0xFF;
|
||||
|
||||
txBuffer[5] = ( LongitudeBinary >> 16 ) & 0xFF;
|
||||
txBuffer[6] = ( LongitudeBinary >> 8 ) & 0xFF;
|
||||
txBuffer[7] = LongitudeBinary & 0xFF;
|
||||
|
||||
txBuffer[8] = Height >> 16;
|
||||
txBuffer[9] = Height >> 8;
|
||||
txBuffer[10] = Height;*/
|
||||
}
|
||||
#else
|
||||
uint8_t txBuffer[9];
|
||||
|
||||
void buildPacket(uint8_t txBuffer[9])
|
||||
{
|
||||
@ -89,3 +127,5 @@ void buildPacket(uint8_t txBuffer[9])
|
||||
hdopGps = _gps.hdop.value()/10;
|
||||
txBuffer[8] = hdopGps & 0xFF;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -6,7 +6,8 @@
|
||||
// inside the project_config folder.
|
||||
|
||||
// Make sure only one of the following is defined (CFG_us915 or CFG_eu868)
|
||||
#define CFG_us915 1
|
||||
#define CFG_au915 1
|
||||
//#define CFG_au923 1
|
||||
//#define CFG_eu868 1
|
||||
|
||||
#define CFG_sx1276_radio 1
|
||||
|
@ -22,12 +22,22 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "configuration.h"
|
||||
#include <rom/rtc.h>
|
||||
#include "rom/rtc.h"
|
||||
|
||||
uint8_t txBuffer[9];
|
||||
|
||||
// Message counter, stored in RTC memory, survives deep sleep
|
||||
RTC_DATA_ATTR uint32_t count = 0;
|
||||
// -----------------------------------------------------------------------------
|
||||
// Submodules
|
||||
// -----------------------------------------------------------------------------
|
||||
#include <TinyGPS++.h>
|
||||
|
||||
#ifdef USE_CAYENNE
|
||||
// CAYENNE DF
|
||||
static uint8_t txBuffer[11] = {0x03, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
|
||||
#else
|
||||
uint8_t txBuffer[9];
|
||||
#endif
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// Application
|
||||
@ -171,6 +181,7 @@ void loop() {
|
||||
if (0 < gps_hdop() && gps_hdop() < 50 && gps_latitude() != 0 && gps_longitude() != 0) {
|
||||
last = millis();
|
||||
first = false;
|
||||
Serial.println("TRANSMITTING");
|
||||
send();
|
||||
} else {
|
||||
if (first) {
|
||||
|
@ -155,6 +155,14 @@ void ttn_join() {
|
||||
// https://github.com/TheThingsNetwork/gateway-conf/blob/master/US-global_conf.json
|
||||
LMIC_selectSubBand(1);
|
||||
|
||||
#elif defined(CFG_au915)
|
||||
Serial.println("AU_915");
|
||||
// NA-US channels 0-71 are configured automatically
|
||||
// but only one group of 8 should (a subband) should be active
|
||||
// TTN recommends the second sub band, 1 in a zero based count.
|
||||
// https://github.com/TheThingsNetwork/gateway-conf/blob/master/US-global_conf.json
|
||||
LMIC_selectSubBand(1);
|
||||
|
||||
#endif
|
||||
|
||||
// If using a mono-channel gateway disable all channels
|
||||
@ -210,6 +218,7 @@ void ttn_send(uint8_t * data, uint8_t data_size, uint8_t port, bool confirmed){
|
||||
|
||||
// Prepare upstream data transmission at the next possible time.
|
||||
// Parameters are port, data, length, confirmed
|
||||
|
||||
LMIC_setTxData2(port, data, data_size, confirmed ? 1 : 0);
|
||||
|
||||
_ttn_callback(EV_QUEUED);
|
||||
|
Loading…
Reference in New Issue
Block a user