mirror of
https://github.com/meshtastic/firmware.git
synced 2025-06-12 08:02:04 +00:00
rak4631: gps now works
This commit is contained in:
parent
f7d199a3be
commit
7224782d23
@ -19,8 +19,19 @@ Must be installed on the front for the I2C wires to lineup
|
|||||||
Solar enclosure
|
Solar enclosure
|
||||||
https://docs.rakwireless.com/Product-Categories/Accessories/RAKBox-B2/Overview/#product-description
|
https://docs.rakwireless.com/Product-Categories/Accessories/RAKBox-B2/Overview/#product-description
|
||||||
|
|
||||||
|
Base datasheet (for GPIO mapping)
|
||||||
|
https://docs.rakwireless.com/Product-Categories/WisBlock/RAK5005-O/Datasheet/#specifications
|
||||||
|
|
||||||
|
CPU module carrier (rak4631)
|
||||||
|
https://docs.rakwireless.com/Product-Categories/WisBlock/RAK4631/Datasheet/#specifications
|
||||||
|
|
||||||
## TODO
|
## TODO
|
||||||
|
|
||||||
|
> 3V3_S is another 3.3 V power supply, it can be controlled by the MCU in order to disconnect the power sensors during idle periods to save power. 3V3_S is controlled by IO2 pin on the WisBlock Core board.
|
||||||
|
Set IO2=1, 3V3_S is on.
|
||||||
|
Set IO2=0, 3V3_S is off.
|
||||||
|
|
||||||
|
|
||||||
* DONE solder header
|
* DONE solder header
|
||||||
* DONE attach antenna
|
* DONE attach antenna
|
||||||
* get building (LORA disabled)
|
* get building (LORA disabled)
|
||||||
@ -34,5 +45,11 @@ https://docs.rakwireless.com/Product-Categories/Accessories/RAKBox-B2/Overview/#
|
|||||||
* Boot
|
* Boot
|
||||||
* Enable LORA but no TX
|
* Enable LORA but no TX
|
||||||
* Enable LORA TX
|
* Enable LORA TX
|
||||||
|
* Enable bluetooth
|
||||||
|
* Relase as standard part of build (including UF2s)
|
||||||
|
* Make this doc into a nice HOWTO: what to order, how to connect (which device in which slots), how to install software
|
||||||
|
* Setup battery voltage sensing
|
||||||
|
* Set bluetooth PIN support
|
||||||
|
* Confirm low power draw
|
||||||
* send in PR to https://github.com/geeksville/WisBlock for boards define
|
* send in PR to https://github.com/geeksville/WisBlock for boards define
|
||||||
*
|
*
|
@ -299,6 +299,8 @@ build_flags = ${nrf52_base.build_flags} -Ivariants/WisCore_RAK4631_Board
|
|||||||
src_filter = ${nrf52_base.src_filter} +<../variants/eink>
|
src_filter = ${nrf52_base.src_filter} +<../variants/eink>
|
||||||
lib_deps =
|
lib_deps =
|
||||||
${arduino_base.lib_deps}
|
${arduino_base.lib_deps}
|
||||||
|
debug_tool = jlink
|
||||||
|
upload_protocol = jlink
|
||||||
|
|
||||||
; The PPR board
|
; The PPR board
|
||||||
[env:ppr]
|
[env:ppr]
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
// If we have a serial GPS port it will not be null
|
// If we have a serial GPS port it will not be null
|
||||||
#ifdef GPS_RX_PIN
|
#ifdef GPS_SERIAL_NUM
|
||||||
HardwareSerial _serial_gps_real(GPS_SERIAL_NUM);
|
HardwareSerial _serial_gps_real(GPS_SERIAL_NUM);
|
||||||
HardwareSerial *GPS::_serial_gps = &_serial_gps_real;
|
HardwareSerial *GPS::_serial_gps = &_serial_gps_real;
|
||||||
#elif defined(NRF52840_XXAA) || defined(NRF52833_XXAA)
|
#elif defined(NRF52840_XXAA) || defined(NRF52833_XXAA)
|
||||||
@ -34,7 +34,8 @@ bool GPS::setupGPS()
|
|||||||
if (_serial_gps && !didSerialInit) {
|
if (_serial_gps && !didSerialInit) {
|
||||||
didSerialInit = true;
|
didSerialInit = true;
|
||||||
|
|
||||||
#ifdef GPS_RX_PIN
|
// ESP32 has a special set of parameters vs other arduino ports
|
||||||
|
#if defined(GPS_RX_PIN) && !defined(NO_ESP32)
|
||||||
_serial_gps->begin(GPS_BAUDRATE, SERIAL_8N1, GPS_RX_PIN, GPS_TX_PIN);
|
_serial_gps->begin(GPS_BAUDRATE, SERIAL_8N1, GPS_RX_PIN, GPS_TX_PIN);
|
||||||
#else
|
#else
|
||||||
_serial_gps->begin(GPS_BAUDRATE);
|
_serial_gps->begin(GPS_BAUDRATE);
|
||||||
@ -319,8 +320,8 @@ int GPS::prepareDeepSleep(void *unused)
|
|||||||
#include "NMEAGPS.h"
|
#include "NMEAGPS.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
GPS *createGps()
|
||||||
GPS* createGps() {
|
{
|
||||||
|
|
||||||
#ifdef NO_GPS
|
#ifdef NO_GPS
|
||||||
return nullptr;
|
return nullptr;
|
||||||
@ -329,7 +330,7 @@ GPS* createGps() {
|
|||||||
#ifdef GPS_TX_PIN
|
#ifdef GPS_TX_PIN
|
||||||
// Init GPS - first try ublox
|
// Init GPS - first try ublox
|
||||||
UBloxGPS *ublox = new UBloxGPS();
|
UBloxGPS *ublox = new UBloxGPS();
|
||||||
|
|
||||||
if (!ublox->setup()) {
|
if (!ublox->setup()) {
|
||||||
DEBUG_MSG("ERROR: No UBLOX GPS found\n");
|
DEBUG_MSG("ERROR: No UBLOX GPS found\n");
|
||||||
delete ublox;
|
delete ublox;
|
||||||
@ -344,9 +345,9 @@ GPS* createGps() {
|
|||||||
// assume NMEA at 9600 baud.
|
// assume NMEA at 9600 baud.
|
||||||
DEBUG_MSG("Hoping that NMEA might work\n");
|
DEBUG_MSG("Hoping that NMEA might work\n");
|
||||||
#ifdef HAS_AIR530_GPS
|
#ifdef HAS_AIR530_GPS
|
||||||
GPS* new_gps = new Air530GPS();
|
GPS *new_gps = new Air530GPS();
|
||||||
#else
|
#else
|
||||||
GPS* new_gps = new NMEAGPS();
|
GPS *new_gps = new NMEAGPS();
|
||||||
#endif
|
#endif
|
||||||
new_gps->setup();
|
new_gps->setup();
|
||||||
return new_gps;
|
return new_gps;
|
||||||
|
@ -427,8 +427,11 @@ void setup()
|
|||||||
readFromRTC(); // read the main CPU RTC at first (in case we can't get GPS time)
|
readFromRTC(); // read the main CPU RTC at first (in case we can't get GPS time)
|
||||||
|
|
||||||
#ifdef GENIEBLOCKS
|
#ifdef GENIEBLOCKS
|
||||||
// gps setup
|
I'm intentionally breaking your build so you see this note. Feel free to revert if not correct. I think you can
|
||||||
pinMode(GPS_RESET_N, OUTPUT);
|
removed this code by instead defining PIN_GPS_RESET and use the shared code in GPS.cpp instead.
|
||||||
|
|
||||||
|
// gps setup
|
||||||
|
pinMode(GPS_RESET_N, OUTPUT);
|
||||||
pinMode(GPS_EXTINT, OUTPUT);
|
pinMode(GPS_EXTINT, OUTPUT);
|
||||||
digitalWrite(GPS_RESET_N, HIGH);
|
digitalWrite(GPS_RESET_N, HIGH);
|
||||||
digitalWrite(GPS_EXTINT, LOW);
|
digitalWrite(GPS_EXTINT, LOW);
|
||||||
|
@ -136,8 +136,42 @@ static const uint8_t SCK = PIN_SPI_SCK;
|
|||||||
#define EXTERNAL_FLASH_DEVICES IS25LP080D
|
#define EXTERNAL_FLASH_DEVICES IS25LP080D
|
||||||
#define EXTERNAL_FLASH_USE_QSPI
|
#define EXTERNAL_FLASH_USE_QSPI
|
||||||
|
|
||||||
|
/* @note RAK5005-O GPIO mapping to RAK4631 GPIO ports
|
||||||
|
RAK5005-O <-> nRF52840
|
||||||
|
IO1 <-> P0.17 (Arduino GPIO number 17)
|
||||||
|
IO2 <-> P1.02 (Arduino GPIO number 34)
|
||||||
|
IO3 <-> P0.21 (Arduino GPIO number 21)
|
||||||
|
IO4 <-> P0.04 (Arduino GPIO number 4)
|
||||||
|
IO5 <-> P0.09 (Arduino GPIO number 9)
|
||||||
|
IO6 <-> P0.10 (Arduino GPIO number 10)
|
||||||
|
SW1 <-> P0.01 (Arduino GPIO number 1)
|
||||||
|
A0 <-> P0.04/AIN2 (Arduino Analog A2
|
||||||
|
A1 <-> P0.31/AIN7 (Arduino Analog A7
|
||||||
|
SPI_CS <-> P0.26 (Arduino GPIO number 26)
|
||||||
|
*/
|
||||||
|
|
||||||
|
// RAK4630 LoRa module
|
||||||
|
#define SX1262_CS (42)
|
||||||
|
#define SX1262_DIO1 (47)
|
||||||
|
#define SX1262_BUSY (46)
|
||||||
|
#define SX1262_RESET (38)
|
||||||
|
#define SX1262_TXEN (39)
|
||||||
|
#define SX1262_RXEN (37)
|
||||||
|
#define SX1262_E22 // DIO2 controlls an antenna switch and the TCXO voltage is controlled by DIO3
|
||||||
|
|
||||||
|
// RAK1910 GPS module
|
||||||
|
// If using the wisblock GPS module and pluged into Port A on WisBlock base
|
||||||
|
// IO1 is hooked to PPS (pin 12 on header) = gpio 17
|
||||||
|
// IO2 is hooked to GPS RESET = gpio 34, but it can not be used to this because IO2 is ALSO used to control 3V3_S power (1 is on).
|
||||||
|
// Therefore must be 1 to keep peripherals powered
|
||||||
|
// Power is on the controllable 3V3_S rail
|
||||||
|
// #define PIN_GPS_RESET (34)
|
||||||
|
#define PIN_GPS_EN (34)
|
||||||
|
#define PIN_GPS_PPS (17) // Pulse per second input from the GPS
|
||||||
|
#define GPS_RX_PIN PIN_SERIAL1_RX
|
||||||
|
#define GPS_TX_PIN PIN_SERIAL1_TX
|
||||||
|
|
||||||
// Meshtastic specific flags
|
// Meshtastic specific flags
|
||||||
#define USE_SIM_RADIO
|
|
||||||
#define USE_SEGGER
|
#define USE_SEGGER
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
Loading…
Reference in New Issue
Block a user