|
|
|
@ -1,7 +1,8 @@ |
|
|
|
#include "target.h" |
|
|
|
|
|
|
|
#include <Arduino.h> |
|
|
|
#include <helpers/ArduinoHelpers.h> |
|
|
|
#include <helpers/sensors/MicroNMEALocationProvider.h> |
|
|
|
#include <helpers/sensors/EnvironmentSensorManager.h> |
|
|
|
|
|
|
|
WaveshareBoard board; |
|
|
|
|
|
|
|
@ -10,28 +11,46 @@ WRAPPER_CLASS radio_driver(radio, board); |
|
|
|
|
|
|
|
VolatileRTCClock fallback_clock; |
|
|
|
AutoDiscoverRTCClock rtc_clock(fallback_clock); |
|
|
|
SensorManager sensors; |
|
|
|
|
|
|
|
MicroNMEALocationProvider nmea(Serial1, &rtc_clock); |
|
|
|
EnvironmentSensorManager sensors(nmea); |
|
|
|
|
|
|
|
bool radio_init() { |
|
|
|
Serial.begin(115200); |
|
|
|
delay(3000); |
|
|
|
Serial.println("Starting up..."); |
|
|
|
pinMode(25, OUTPUT); |
|
|
|
|
|
|
|
// step 1
|
|
|
|
digitalWrite(25,HIGH); delay(300); digitalWrite(25,LOW); delay(300); |
|
|
|
Serial1.setRX(PIN_GPS_RX); |
|
|
|
|
|
|
|
// step 2
|
|
|
|
digitalWrite(25,HIGH); delay(300); digitalWrite(25,LOW); delay(300); |
|
|
|
Serial1.setTX(PIN_GPS_TX); |
|
|
|
|
|
|
|
rtc_clock.begin(Wire); |
|
|
|
Serial.println("RTC done"); |
|
|
|
// step 3
|
|
|
|
digitalWrite(25,HIGH); delay(300); digitalWrite(25,LOW); delay(300); |
|
|
|
Serial1.begin(9600); |
|
|
|
|
|
|
|
pinMode(P_LORA_RST, OUTPUT); |
|
|
|
digitalWrite(P_LORA_RST, LOW); |
|
|
|
delay(10); |
|
|
|
digitalWrite(P_LORA_RST, HIGH); |
|
|
|
delay(10); |
|
|
|
Serial.println("Reset done"); |
|
|
|
// step 4
|
|
|
|
digitalWrite(25,HIGH); delay(300); digitalWrite(25,LOW); delay(300); |
|
|
|
rtc_clock.begin(Wire); |
|
|
|
|
|
|
|
// step 5
|
|
|
|
digitalWrite(25,HIGH); delay(300); digitalWrite(25,LOW); delay(300); |
|
|
|
SPI.begin(); |
|
|
|
Serial.println("SPI done"); |
|
|
|
|
|
|
|
// step 6
|
|
|
|
digitalWrite(25,HIGH); delay(300); digitalWrite(25,LOW); delay(300); |
|
|
|
bool result = radio.std_init(NULL); |
|
|
|
Serial.println(result ? "Radio OK" : "Radio FAILED"); |
|
|
|
|
|
|
|
if (result) { |
|
|
|
for (int i = 0; i < 10; i++) { |
|
|
|
digitalWrite(25,HIGH); delay(100); digitalWrite(25,LOW); delay(100); |
|
|
|
} |
|
|
|
} else { |
|
|
|
for (int i = 0; i < 3; i++) { |
|
|
|
digitalWrite(25,HIGH); delay(500); digitalWrite(25,LOW); delay(500); |
|
|
|
} |
|
|
|
} |
|
|
|
return result; |
|
|
|
} |
|
|
|
|
|
|
|
|