mirror of https://github.com/meshcore-dev/MeshCore
5 changed files with 143 additions and 9 deletions
@ -0,0 +1,63 @@ |
|||
#pragma once |
|||
|
|||
#include <MeshCore.h> |
|||
#include <Arduino.h> |
|||
|
|||
#if defined(NRF52_PLATFORM) |
|||
|
|||
// LoRa radio module pins for RAK4631
|
|||
#define P_LORA_DIO_1 47 |
|||
#define P_LORA_NSS 42 |
|||
#define P_LORA_RESET RADIOLIB_NC // 38
|
|||
#define P_LORA_BUSY 46 |
|||
#define P_LORA_SCLK 43 |
|||
#define P_LORA_MISO 45 |
|||
#define P_LORA_MOSI 44 |
|||
#define SX126X_POWER_EN 37 |
|||
|
|||
#define SX126X_DIO2_AS_RF_SWITCH true |
|||
#define SX126X_DIO3_TCXO_VOLTAGE 1.8 |
|||
|
|||
// built-ins
|
|||
#define PIN_VBAT_READ 1 |
|||
#define ADC_MULTIPLIER 6.17 |
|||
|
|||
class RAK4631Board : public mesh::MainBoard { |
|||
protected: |
|||
uint8_t startup_reason; |
|||
|
|||
public: |
|||
void begin() { |
|||
// for future use, sub-classes SHOULD call this from their begin()
|
|||
startup_reason = BD_STARTUP_NORMAL; |
|||
|
|||
pinMode(SX126X_POWER_EN, OUTPUT); |
|||
digitalWrite(SX126X_POWER_EN, HIGH); |
|||
} |
|||
|
|||
uint8_t getStartupReason() const override { return startup_reason; } |
|||
|
|||
#define BATTERY_SAMPLES 10 |
|||
|
|||
uint16_t getBattMilliVolts() override { |
|||
analogReadResolution(12); |
|||
|
|||
uint32_t raw = 0; |
|||
for (int i = 0; i < BATTERY_SAMPLES; i++) { |
|||
raw += analogRead(PIN_VBAT_READ); |
|||
} |
|||
raw = raw / BATTERY_SAMPLES; |
|||
|
|||
return (ADC_MULTIPLIER * raw) / 4096; |
|||
} |
|||
|
|||
const char* getManufacturerName() const override { |
|||
return "RAK 4631"; |
|||
} |
|||
|
|||
void reboot() override { |
|||
NVIC_SystemReset(); |
|||
} |
|||
}; |
|||
|
|||
#endif |
|||
Loading…
Reference in new issue