Removal bpf factory example
This commit is contained in:
parent
62d1866da5
commit
4f9b78dd78
6 changed files with 1 additions and 3183 deletions
|
|
@ -1,593 +0,0 @@
|
|||
/**
|
||||
* @file BPFFactory.ino
|
||||
* @author Lewis He (lewishe@outlook.com)
|
||||
* @license MIT
|
||||
* @copyright Copyright (c) 2024 Shenzhen Xin Yuan Electronic Technology Co., Ltd
|
||||
* @date 2024-08-07
|
||||
*
|
||||
*/
|
||||
|
||||
#include <Arduino.h>
|
||||
#include <Wire.h>
|
||||
#include <WiFi.h>
|
||||
#include <SH1106Wire.h>
|
||||
#include "OLEDDisplayUi.h"
|
||||
#include <RadioLib.h>
|
||||
#include "utilities.h"
|
||||
#include <AceButton.h>
|
||||
#include "LoRaBoards.h"
|
||||
#include <TinyGPS++.h>
|
||||
#include <Roboto_Mono_Medium_12.h>
|
||||
|
||||
using namespace ace_button;
|
||||
|
||||
void radioTx(OLEDDisplay *display, OLEDDisplayUiState *disp_state, int16_t x, int16_t y);
|
||||
void radioRx(OLEDDisplay *display, OLEDDisplayUiState *disp_state, int16_t x, int16_t y);
|
||||
void gpsInfo(OLEDDisplay *display, OLEDDisplayUiState *disp_state, int16_t x, int16_t y);
|
||||
void hwInfo(OLEDDisplay *display, OLEDDisplayUiState *disp_state, int16_t x, int16_t y);
|
||||
|
||||
|
||||
|
||||
// BPF Freq range : 144Mhz ~ 148MHz
|
||||
#if defined(USING_SX1276)
|
||||
|
||||
#define CONFIG_RADIO_FREQ 144.0
|
||||
#define CONFIG_RADIO_OUTPUT_POWER 17
|
||||
#define CONFIG_RADIO_BW 125.0
|
||||
SX1276 radio = new Module(RADIO_CS_PIN, RADIO_DIO0_PIN, RADIO_RST_PIN, RADIO_DIO1_PIN);
|
||||
|
||||
#elif defined(USING_SX1278)
|
||||
|
||||
#define CONFIG_RADIO_FREQ 144.0
|
||||
#define CONFIG_RADIO_OUTPUT_POWER 17
|
||||
#define CONFIG_RADIO_BW 125.0
|
||||
SX1278 radio = new Module(RADIO_CS_PIN, RADIO_DIO0_PIN, RADIO_RST_PIN, RADIO_DIO1_PIN);
|
||||
|
||||
#endif
|
||||
|
||||
#define PREV_BUTTON_PIN 3
|
||||
#define NEXT_BUTTON_PIN 0
|
||||
|
||||
enum TransmissionDirection {
|
||||
TRANSMISSION,
|
||||
RECEIVE,
|
||||
};
|
||||
// save transmission state between loops
|
||||
int transmissionState = RADIOLIB_ERR_NONE;
|
||||
bool transmittedFlag = false;
|
||||
uint32_t transmissionCounter = 0;
|
||||
uint32_t recvCounter = 0;
|
||||
float radioRSSI = 0;
|
||||
bool isRadioOnline = false;
|
||||
uint32_t radioRunInterval = 0;
|
||||
bool led_blink = false;
|
||||
int currentFrames = 0;
|
||||
uint8_t lastFrames = 0;
|
||||
TransmissionDirection transmissionDirection = TRANSMISSION;
|
||||
|
||||
|
||||
|
||||
SH1106Wire display(0x3c, I2C_SDA, I2C_SCL);
|
||||
OLEDDisplayUi ui( &display );
|
||||
FrameCallback frames[] = { hwInfo, radioTx, radioRx, gpsInfo};
|
||||
const uint8_t frames_count = sizeof(frames) / sizeof(frames[0]);
|
||||
AceButton prevButton;
|
||||
AceButton nextButton;
|
||||
TinyGPSPlus gps;
|
||||
|
||||
|
||||
void setFlag(void)
|
||||
{
|
||||
// we got a packet, set the flag
|
||||
transmittedFlag = true;
|
||||
}
|
||||
|
||||
void handleMenu()
|
||||
{
|
||||
Serial.printf("currentFrames : %d\n", currentFrames);
|
||||
switch (currentFrames) {
|
||||
case 0:
|
||||
break;
|
||||
case 1:
|
||||
Serial.println("Start transmit");
|
||||
transmissionDirection = TRANSMISSION;
|
||||
transmissionState = radio.transmit((uint8_t *)&transmissionCounter, 4);
|
||||
if (transmissionState != RADIOLIB_ERR_NONE) {
|
||||
Serial.println(F("[Radio] transmit packet failed!"));
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
Serial.println("Start receive");
|
||||
transmissionDirection = RECEIVE;
|
||||
transmissionState = radio.startReceive();
|
||||
if (transmissionState != RADIOLIB_ERR_NONE) {
|
||||
Serial.println(F("[Radio] Received packet failed!"));
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
ui.transitionToFrame(currentFrames);
|
||||
}
|
||||
|
||||
void sleepDevice()
|
||||
{
|
||||
display.clear();
|
||||
display.setTextAlignment(TEXT_ALIGN_CENTER);
|
||||
display.drawString(64, 32, "Sleep");
|
||||
display.display();
|
||||
|
||||
digitalWrite(RADIO_RST_PIN, HIGH);
|
||||
gpio_hold_en((gpio_num_t) RADIO_RST_PIN);
|
||||
gpio_deep_sleep_hold_en();
|
||||
|
||||
radio.sleep();
|
||||
|
||||
delay(2000);
|
||||
|
||||
display.displayOff();
|
||||
|
||||
#ifdef BOARD_LED
|
||||
digitalWrite(BOARD_LED, LOW);
|
||||
#endif
|
||||
|
||||
#ifdef RADIO_TCXO_ENABLE
|
||||
digitalWrite(RADIO_TCXO_ENABLE, LOW);
|
||||
#endif
|
||||
|
||||
// Disable all power output
|
||||
disablePeripherals();
|
||||
|
||||
while (digitalRead(0) == LOW)
|
||||
delay(1);
|
||||
|
||||
SPI.end();
|
||||
|
||||
Wire.end();
|
||||
|
||||
Serial.flush();
|
||||
|
||||
Serial.end();
|
||||
|
||||
pinMode(RADIO_CS_PIN, INPUT);
|
||||
|
||||
pinMode(RADIO_RST_PIN, INPUT);
|
||||
|
||||
#ifdef RADIO_DIO0_PIN
|
||||
pinMode(RADIO_DIO0_PIN, INPUT);
|
||||
#endif
|
||||
|
||||
#ifdef RADIO_DIO1_PIN
|
||||
pinMode(RADIO_DIO1_PIN, INPUT);
|
||||
#endif
|
||||
|
||||
#ifdef RADIO_DIO9_PIN
|
||||
pinMode(RADIO_DIO9_PIN, INPUT);
|
||||
#endif
|
||||
|
||||
#ifdef RADIO_BUSY_PIN
|
||||
pinMode(RADIO_BUSY_PIN, INPUT);
|
||||
#endif
|
||||
|
||||
#ifdef RADIO_LDO_EN
|
||||
pinMode(RADIO_LDO_EN, INPUT);
|
||||
#endif
|
||||
|
||||
#ifdef RADIO_TCXO_ENABLE
|
||||
pinMode(RADIO_TCXO_ENABLE, INPUT);
|
||||
#endif
|
||||
|
||||
pinMode(RADIO_CS_PIN, INPUT);
|
||||
pinMode(I2C_SDA, INPUT);
|
||||
pinMode(I2C_SCL, INPUT);
|
||||
pinMode(RADIO_SCLK_PIN, INPUT);
|
||||
pinMode(RADIO_MISO_PIN, INPUT);
|
||||
pinMode(RADIO_MOSI_PIN, INPUT);
|
||||
pinMode(SDCARD_MOSI, INPUT);
|
||||
pinMode(SDCARD_MISO, INPUT);
|
||||
pinMode(SDCARD_SCLK, INPUT);
|
||||
pinMode(SDCARD_CS, INPUT);
|
||||
|
||||
// esp_sleep_enable_ext0_wakeup(GPIO_NUM_0, 0);
|
||||
|
||||
// BPF ext1 sleep ~ 434 uA
|
||||
esp_sleep_enable_ext1_wakeup(_BV(0), ESP_EXT1_WAKEUP_ALL_LOW);
|
||||
|
||||
// BPF Timer sleep ~ 434 uA
|
||||
// esp_sleep_enable_timer_wakeup(30 * 1000 * 1000);
|
||||
|
||||
esp_deep_sleep_start();
|
||||
|
||||
Serial.println("Never print()");
|
||||
}
|
||||
|
||||
void prevButtonHandleEvent(AceButton *button, uint8_t eventType, uint8_t buttonState)
|
||||
{
|
||||
switch (eventType) {
|
||||
case AceButton::kEventClicked:
|
||||
Serial.printf("prevButtonHandleEvent currentFrames:%d frames_count:%d\n", currentFrames, frames_count);
|
||||
currentFrames = ((currentFrames + 1) >= frames_count) ? currentFrames : currentFrames + 1;
|
||||
handleMenu();
|
||||
break;
|
||||
case AceButton::kEventLongPressed:
|
||||
Serial.println("Long pressed!");
|
||||
sleepDevice();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void nextButtonHandleEvent(AceButton *button, uint8_t eventType, uint8_t buttonState)
|
||||
{
|
||||
|
||||
switch (eventType) {
|
||||
case AceButton::kEventClicked:
|
||||
Serial.printf("nextButtonHandleEvent currentFrames:%d frames_count:%d\n", currentFrames, frames_count);
|
||||
currentFrames = ((currentFrames - 1) < 0) ? currentFrames : currentFrames - 1;
|
||||
handleMenu();
|
||||
break;
|
||||
case AceButton::kEventLongPressed:
|
||||
Serial.println("Long pressed!");
|
||||
sleepDevice();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void setup()
|
||||
{
|
||||
if (esp_sleep_get_wakeup_cause() != ESP_SLEEP_WAKEUP_ALL) {
|
||||
gpio_deep_sleep_hold_dis();
|
||||
gpio_hold_dis((gpio_num_t) RADIO_RST_PIN);
|
||||
}
|
||||
|
||||
bool disable_u8g2 = true;
|
||||
|
||||
setupBoards(disable_u8g2);
|
||||
|
||||
#ifdef RADIO_TCXO_ENABLE
|
||||
pinMode(RADIO_TCXO_ENABLE, OUTPUT);
|
||||
digitalWrite(RADIO_TCXO_ENABLE, HIGH);
|
||||
#endif
|
||||
|
||||
static ButtonConfig prevButtonConfigure;
|
||||
prevButtonConfigure.setEventHandler(prevButtonHandleEvent);
|
||||
prevButtonConfigure.setFeature(ButtonConfig::kFeatureClick);
|
||||
prevButtonConfigure.setFeature(ButtonConfig::kFeatureLongPress);
|
||||
pinMode(PREV_BUTTON_PIN, INPUT_PULLUP);
|
||||
prevButton.init(PREV_BUTTON_PIN);
|
||||
prevButton.setButtonConfig(&prevButtonConfigure);
|
||||
|
||||
|
||||
static ButtonConfig nextButtonConfigure;
|
||||
nextButtonConfigure.setEventHandler(nextButtonHandleEvent);
|
||||
nextButtonConfigure.setFeature(ButtonConfig::kFeatureClick);
|
||||
nextButtonConfigure.setFeature(ButtonConfig::kFeatureLongPress);
|
||||
pinMode(NEXT_BUTTON_PIN, INPUT_PULLUP);
|
||||
nextButton.init(NEXT_BUTTON_PIN);
|
||||
nextButton.setButtonConfig(&nextButtonConfigure);
|
||||
|
||||
|
||||
// Initialising the UI will init the display too.
|
||||
ui.setTargetFPS(60);
|
||||
|
||||
// You can change this to
|
||||
// TOP, LEFT, BOTTOM, RIGHT
|
||||
ui.setIndicatorPosition(BOTTOM);
|
||||
|
||||
// Defines where the first frame is located in the bar.
|
||||
ui.setIndicatorDirection(LEFT_RIGHT);
|
||||
|
||||
// You can change the transition that is used
|
||||
// SLIDE_LEFT, SLIDE_RIGHT, SLIDE_UP, SLIDE_DOWN
|
||||
ui.setFrameAnimation(SLIDE_LEFT);
|
||||
|
||||
// Add frames
|
||||
ui.setFrames(frames, frames_count);
|
||||
|
||||
ui.disableAutoTransition();
|
||||
|
||||
// Initialising the UI will init the display too.
|
||||
ui.init();
|
||||
|
||||
ui.switchToFrame(0);
|
||||
|
||||
display.flipScreenVertically();
|
||||
|
||||
Serial.print(F("[Radio] Initializing ... "));
|
||||
|
||||
transmissionState = radio.begin();
|
||||
if ( transmissionState == RADIOLIB_ERR_NONE) {
|
||||
Serial.println(F("success!"));
|
||||
} else {
|
||||
Serial.println(F("failed!"));
|
||||
}
|
||||
isRadioOnline = transmissionState == RADIOLIB_ERR_NONE;
|
||||
|
||||
/*
|
||||
* Sets carrier frequency.
|
||||
* SX1278/SX1276 : Allowed values range from 137.0 MHz to 525.0 MHz.
|
||||
* * * */
|
||||
|
||||
if (radio.setFrequency(CONFIG_RADIO_FREQ) == RADIOLIB_ERR_INVALID_FREQUENCY) {
|
||||
Serial.println(F("Selected frequency is invalid for this module!"));
|
||||
while (true);
|
||||
}
|
||||
|
||||
/*
|
||||
* Sets LoRa link bandwidth.
|
||||
* SX1278/SX1276 : Allowed values are 10.4, 15.6, 20.8, 31.25, 41.7, 62.5, 125, 250 and 500 kHz. Only available in %LoRa mode.
|
||||
* * * */
|
||||
if (radio.setBandwidth(CONFIG_RADIO_BW) == RADIOLIB_ERR_INVALID_BANDWIDTH) {
|
||||
Serial.println(F("Selected bandwidth is invalid for this module!"));
|
||||
while (true);
|
||||
}
|
||||
|
||||
/*
|
||||
* Sets LoRa link spreading factor.
|
||||
* SX1278/SX1276 : Allowed values range from 6 to 12. Only available in LoRa mode.
|
||||
* * * */
|
||||
if (radio.setSpreadingFactor(10) == RADIOLIB_ERR_INVALID_SPREADING_FACTOR) {
|
||||
Serial.println(F("Selected spreading factor is invalid for this module!"));
|
||||
while (true);
|
||||
}
|
||||
|
||||
/*
|
||||
* Sets LoRa coding rate denominator.
|
||||
* SX1278/SX1276/SX1268/SX1262 : Allowed values range from 5 to 8. Only available in LoRa mode.
|
||||
* * * */
|
||||
if (radio.setCodingRate(6) == RADIOLIB_ERR_INVALID_CODING_RATE) {
|
||||
Serial.println(F("Selected coding rate is invalid for this module!"));
|
||||
while (true);
|
||||
}
|
||||
|
||||
/*
|
||||
* Sets LoRa sync word.
|
||||
* SX1278/SX1276/SX1268/SX1262/SX1280 : Sets LoRa sync word. Only available in LoRa mode.
|
||||
* * */
|
||||
if (radio.setSyncWord(0xAB) != RADIOLIB_ERR_NONE) {
|
||||
Serial.println(F("Unable to set sync word!"));
|
||||
while (true);
|
||||
}
|
||||
|
||||
/*
|
||||
* Sets transmission output power.
|
||||
* SX1278/SX1276 : Allowed values range from -3 to 15 dBm (RFO pin) or +2 to +17 dBm (PA_BOOST pin). High power +20 dBm operation is also supported, on the PA_BOOST pin. Defaults to PA_BOOST.
|
||||
* * * */
|
||||
if (radio.setOutputPower(CONFIG_RADIO_OUTPUT_POWER) == RADIOLIB_ERR_INVALID_OUTPUT_POWER) {
|
||||
Serial.println(F("Selected output power is invalid for this module!"));
|
||||
while (true);
|
||||
}
|
||||
|
||||
/*
|
||||
* Sets current limit for over current protection at transmitter amplifier.
|
||||
* SX1278/SX1276 : Allowed values range from 45 to 120 mA in 5 mA steps and 120 to 240 mA in 10 mA steps.
|
||||
* NOTE: set value to 0 to disable overcurrent protection
|
||||
* * * */
|
||||
if (radio.setCurrentLimit(140) == RADIOLIB_ERR_INVALID_CURRENT_LIMIT) {
|
||||
Serial.println(F("Selected current limit is invalid for this module!"));
|
||||
while (true);
|
||||
}
|
||||
|
||||
/*
|
||||
* Sets preamble length for LoRa or FSK modem.
|
||||
* SX1278/SX1276 : Allowed values range from 6 to 65535 in %LoRa mode or 0 to 65535 in FSK mode.
|
||||
* * */
|
||||
if (radio.setPreambleLength(15) == RADIOLIB_ERR_INVALID_PREAMBLE_LENGTH) {
|
||||
Serial.println(F("Selected preamble length is invalid for this module!"));
|
||||
while (true);
|
||||
}
|
||||
|
||||
// Enables or disables CRC check of received packets.
|
||||
if (radio.setCRC(false) == RADIOLIB_ERR_INVALID_CRC_CONFIGURATION) {
|
||||
Serial.println(F("Selected CRC is invalid for this module!"));
|
||||
while (true);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// set the function that will be called
|
||||
// when new packet is received
|
||||
radio.setPacketReceivedAction(setFlag);
|
||||
|
||||
// start listening for LoRa packets
|
||||
Serial.print(F("[Radio] Starting to listen ... "));
|
||||
transmissionState = radio.startReceive();
|
||||
if (transmissionState != RADIOLIB_ERR_NONE) {
|
||||
Serial.println(F("[Radio] Received packet failed!"));
|
||||
}
|
||||
}
|
||||
|
||||
void loop()
|
||||
{
|
||||
prevButton.check();
|
||||
nextButton.check();
|
||||
ui.update();
|
||||
delay(2);
|
||||
}
|
||||
|
||||
|
||||
void radioTx(OLEDDisplay *display, OLEDDisplayUiState *disp_state, int16_t x, int16_t y)
|
||||
{
|
||||
display->setFont(Roboto_Mono_Medium_12);
|
||||
display->setTextAlignment(TEXT_ALIGN_LEFT);
|
||||
|
||||
|
||||
if (millis() - radioRunInterval > 1000) {
|
||||
if (transmissionDirection == TRANSMISSION) {
|
||||
if (transmittedFlag) {
|
||||
|
||||
// reset flag
|
||||
transmittedFlag = false;
|
||||
|
||||
if (transmissionState == RADIOLIB_ERR_NONE) {
|
||||
// packet was successfully sent
|
||||
Serial.println(F("transmission finished!"));
|
||||
|
||||
// NOTE: when using interrupt-driven transmit method,
|
||||
// it is not possible to automatically measure
|
||||
// transmission data rate using getDataRate()
|
||||
|
||||
} else {
|
||||
Serial.print(F("failed, code "));
|
||||
Serial.println(transmissionState);
|
||||
|
||||
}
|
||||
|
||||
// clean up after transmission is finished
|
||||
// this will ensure transmitter is disabled,
|
||||
// RF switch is powered down etc.
|
||||
radio.finishTransmit();
|
||||
|
||||
// send another one
|
||||
Serial.print(F("[Radio] Sending another packet ... "));
|
||||
|
||||
// you can transmit C-string or Arduino string up to
|
||||
// 256 characters long
|
||||
// transmissionState = radio.startTransmit("Hello World!");
|
||||
radio.transmit((uint8_t *)&transmissionCounter, 4);
|
||||
transmissionCounter++;
|
||||
|
||||
// you can also transmit byte array up to 256 bytes long
|
||||
/*
|
||||
byte byteArr[] = {0x01, 0x23, 0x45, 0x67,
|
||||
0x89, 0xAB, 0xCD, 0xEF};
|
||||
int transmissionState = radio.startTransmit(byteArr, 8);
|
||||
*/
|
||||
|
||||
if (PMU) {
|
||||
PMU->setChargingLedMode(led_blink);
|
||||
led_blink ^= 1;
|
||||
}
|
||||
|
||||
Serial.println("Radio TX done !");
|
||||
}
|
||||
}
|
||||
radioRunInterval = millis();
|
||||
}
|
||||
|
||||
if (transmissionState != RADIOLIB_ERR_NONE) {
|
||||
display->setTextAlignment(TEXT_ALIGN_CENTER);
|
||||
display->drawString(64 + x, 32 + y, "Radio Tx Failed!");
|
||||
} else {
|
||||
display->drawString(0 + x, 0 + y, "Radio Tx " + String(CONFIG_RADIO_FREQ) + "MHz");
|
||||
display->drawString(0 + x, 16 + y, "TX :" + String(transmissionCounter));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void radioRx(OLEDDisplay *display, OLEDDisplayUiState *disp_state, int16_t x, int16_t y)
|
||||
{
|
||||
display->setFont(Roboto_Mono_Medium_12);
|
||||
|
||||
if (transmissionDirection == RECEIVE) {
|
||||
// check if the flag is set
|
||||
if (transmittedFlag) {
|
||||
|
||||
Serial.println("Radio RX done !");
|
||||
|
||||
if (PMU) {
|
||||
PMU->setChargingLedMode(led_blink);
|
||||
led_blink ^= 1;
|
||||
}
|
||||
|
||||
// reset flag
|
||||
transmittedFlag = false;
|
||||
|
||||
// you can read received data as an Arduino String
|
||||
transmissionState = radio.readData((uint8_t *)&recvCounter, 4);
|
||||
|
||||
// you can also read received data as byte array
|
||||
/*
|
||||
byte byteArr[8];
|
||||
int transmissionState = radio.readData(byteArr, 8);
|
||||
*/
|
||||
|
||||
if (transmissionState == RADIOLIB_ERR_NONE) {
|
||||
// packet was successfully received
|
||||
Serial.println(F("[Radio] Received packet!"));
|
||||
radioRSSI = radio.getRSSI();
|
||||
|
||||
} else if (transmissionState == RADIOLIB_ERR_CRC_MISMATCH) {
|
||||
// packet was received, but is malformed
|
||||
Serial.println(F("[Radio] CRC error!"));
|
||||
|
||||
} else {
|
||||
// some other error occurred
|
||||
Serial.print(F("[Radio] Failed, code "));
|
||||
Serial.println(transmissionState);
|
||||
}
|
||||
|
||||
// put module back to listen mode
|
||||
radio.startReceive();
|
||||
}
|
||||
}
|
||||
|
||||
if (transmissionState != RADIOLIB_ERR_NONE) {
|
||||
display->setTextAlignment(TEXT_ALIGN_CENTER);
|
||||
display->drawString(64 + x, 32 + y, "Radio Rx Failed!");
|
||||
} else {
|
||||
// The coordinates define the left starting point of the text
|
||||
display->setTextAlignment(TEXT_ALIGN_LEFT);
|
||||
display->drawString(0 + x, 0 + y, "Radio Rx " + String(CONFIG_RADIO_FREQ) + "MHz");
|
||||
display->drawString(0 + x, 16 + y, "RX :" + String(recvCounter));
|
||||
display->drawString(0 + x, 32 + y, "RSSI:" + String(radioRSSI));
|
||||
}
|
||||
}
|
||||
|
||||
void hwInfo(OLEDDisplay *display, OLEDDisplayUiState *disp_state, int16_t x, int16_t y)
|
||||
{
|
||||
static uint32_t detect_interval = 0;
|
||||
static char buffer[64];
|
||||
if (millis() > detect_interval) {
|
||||
float voltage = PMU ? PMU->getBattVoltage() / 1000.0 : 0;
|
||||
sprintf(buffer, "%.2fV", voltage > 4.2 ? 4.2 : voltage);
|
||||
detect_interval = millis() + 1000;
|
||||
}
|
||||
|
||||
display->setFont(Roboto_Mono_Medium_12);
|
||||
display->setTextAlignment(TEXT_ALIGN_LEFT);
|
||||
display->drawString(0 + x, 0 + y, "Radio ");
|
||||
display->drawString(50 + x, 0 + y, isRadioOnline & 1 ? "+" : "NA");
|
||||
display->drawString(0 + x, 16 + y, "SD ");
|
||||
uint64_t card_size = SD.cardSize();
|
||||
if (card_size != 0) {
|
||||
float size_gb = card_size / 1024.0 / 1024.0 / 1024.0;
|
||||
display->drawString(50 + x, 16 + y, String(size_gb, 2) + "GB" );
|
||||
} else {
|
||||
display->drawString(50 + x, 16 + y, "NA");
|
||||
}
|
||||
display->drawString(0 + x, 32 + y, "BAT ");
|
||||
display->drawString(50 + x, 32 + y, buffer);
|
||||
}
|
||||
|
||||
void gpsInfo(OLEDDisplay *display, OLEDDisplayUiState *disp_state, int16_t x, int16_t y)
|
||||
{
|
||||
const uint8_t buffer_size = 128;
|
||||
static char buffer[buffer_size];
|
||||
static uint32_t gps_interval = 0;
|
||||
|
||||
display->setFont(Roboto_Mono_Medium_12);
|
||||
|
||||
if (gps.location.isValid() && gps.date.isValid() && gps.time.isValid()) {
|
||||
display->setTextAlignment(TEXT_ALIGN_LEFT);
|
||||
snprintf(buffer, buffer_size, "lat:%.6f", gps.location.lat());
|
||||
display->drawString(0 + x, 5 + y, buffer);
|
||||
snprintf(buffer, buffer_size, "lng:%.6f", gps.location.lng());
|
||||
display->drawString(0 + x, 20 + y, buffer);
|
||||
snprintf(buffer, buffer_size, "%d/%d/%d %d:%d:%d", gps.date.year(), gps.date.month(), gps.date.day(), gps.time.hour(), gps.time.minute(), gps.time.second());
|
||||
display->drawString(0 + x, 35 + y, buffer);
|
||||
} else {
|
||||
display->setTextAlignment(TEXT_ALIGN_CENTER);
|
||||
display->drawString(64 + x, 16 + y, "RX:" + String(gps.charsProcessed()));
|
||||
display->drawString(64 + x, 32 + y, "GPS No Lock");
|
||||
}
|
||||
|
||||
while (SerialGPS.available()) {
|
||||
gps.encode(SerialGPS.read());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,131 +0,0 @@
|
|||
/**
|
||||
* @file boards.h
|
||||
* @author Lewis He (lewishe@outlook.com)
|
||||
* @license MIT
|
||||
* @copyright Copyright (c) 2024 ShenZhen XinYuan Electronic Technology Co., Ltd
|
||||
* @date 2024-04-25
|
||||
* @last-update 2024-08-07
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
|
||||
#include "utilities.h"
|
||||
|
||||
#ifdef HAS_SDCARD
|
||||
#include <SD.h>
|
||||
#endif
|
||||
|
||||
#if defined(ARDUINO_ARCH_ESP32)
|
||||
#include <FS.h>
|
||||
#include <WiFi.h>
|
||||
#endif
|
||||
|
||||
#include <Arduino.h>
|
||||
#include <SPI.h>
|
||||
#include <Wire.h>
|
||||
#include <U8g2lib.h>
|
||||
#include <XPowersLib.h>
|
||||
|
||||
#include <esp_mac.h>
|
||||
|
||||
#ifndef DISPLAY_MODEL
|
||||
#define DISPLAY_MODEL U8G2_SSD1306_128X64_NONAME_F_HW_I2C
|
||||
#endif
|
||||
|
||||
#ifndef OLED_WIRE_PORT
|
||||
#define OLED_WIRE_PORT Wire
|
||||
#endif
|
||||
|
||||
#ifndef PMU_WIRE_PORT
|
||||
#define PMU_WIRE_PORT Wire
|
||||
#endif
|
||||
|
||||
#ifndef DISPLAY_ADDR
|
||||
#define DISPLAY_ADDR 0x3C
|
||||
#endif
|
||||
|
||||
#ifndef LORA_FREQ_CONFIG
|
||||
#define LORA_FREQ_CONFIG 915.0
|
||||
#endif
|
||||
|
||||
enum {
|
||||
POWERMANAGE_ONLINE = _BV(0),
|
||||
DISPLAY_ONLINE = _BV(1),
|
||||
RADIO_ONLINE = _BV(2),
|
||||
GPS_ONLINE = _BV(3),
|
||||
PSRAM_ONLINE = _BV(4),
|
||||
SDCARD_ONLINE = _BV(5),
|
||||
AXDL345_ONLINE = _BV(6),
|
||||
BME280_ONLINE = _BV(7),
|
||||
BMP280_ONLINE = _BV(8),
|
||||
BME680_ONLINE = _BV(9),
|
||||
QMC6310_ONLINE = _BV(10),
|
||||
QMI8658_ONLINE = _BV(11),
|
||||
PCF8563_ONLINE = _BV(12),
|
||||
OSC32768_ONLINE = _BV(13),
|
||||
};
|
||||
|
||||
|
||||
#define ENABLE_BLE //Enable ble function
|
||||
|
||||
typedef struct {
|
||||
String chipModel;
|
||||
float psramSize;
|
||||
uint8_t chipModelRev;
|
||||
uint8_t chipFreq;
|
||||
uint8_t flashSize;
|
||||
uint8_t flashSpeed;
|
||||
} DevInfo_t;
|
||||
|
||||
|
||||
void setupBoards(bool disable_u8g2 = false);
|
||||
|
||||
bool beginSDCard();
|
||||
|
||||
bool beginDisplay();
|
||||
|
||||
void disablePeripherals();
|
||||
|
||||
bool beginPower();
|
||||
|
||||
void printResult(bool radio_online);
|
||||
|
||||
void flashLed();
|
||||
|
||||
void scanDevices(TwoWire *w);
|
||||
|
||||
bool beginGPS();
|
||||
|
||||
bool recoveryGPS();
|
||||
|
||||
void loopPMU(void (*pressed_cb)(void));
|
||||
|
||||
void scanWiFi();
|
||||
|
||||
#ifdef HAS_PMU
|
||||
extern XPowersLibInterface *PMU;
|
||||
extern bool pmuInterrupt;
|
||||
#endif
|
||||
extern DISPLAY_MODEL *u8g2;
|
||||
|
||||
#define U8G2_HOR_ALIGN_CENTER(t) ((u8g2->getDisplayWidth() - (u8g2->getUTF8Width(t))) / 2)
|
||||
#define U8G2_HOR_ALIGN_RIGHT(t) ( u8g2->getDisplayWidth() - u8g2->getUTF8Width(t))
|
||||
|
||||
|
||||
#if defined(ARDUINO_ARCH_ESP32)
|
||||
|
||||
#if defined(HAS_SDCARD)
|
||||
extern SPIClass SDCardSPI;
|
||||
#endif
|
||||
|
||||
#define SerialGPS Serial1
|
||||
#elif defined(ARDUINO_ARCH_STM32)
|
||||
extern HardwareSerial SerialGPS;
|
||||
#endif
|
||||
|
||||
float getTempForNTC();
|
||||
|
||||
void setupBLE();
|
||||
|
||||
extern uint32_t deviceOnline;
|
||||
|
|
@ -1,427 +0,0 @@
|
|||
#include <pgmspace.h>
|
||||
#include <stdint.h>
|
||||
// Created by https://oleddisplay.squix.ch/ Consider a donation
|
||||
// In case of problems make sure that you are using the font file with the correct version!
|
||||
const uint8_t Roboto_Mono_Medium_12[] PROGMEM = {
|
||||
0x07, // Width: 7
|
||||
0x0F, // Height: 15
|
||||
0x20, // First Char: 32
|
||||
0xE0, // Numbers of Chars: 224
|
||||
|
||||
// Jump Table:
|
||||
0xFF, 0xFF, 0x00, 0x07, // 32:65535
|
||||
0x00, 0x00, 0x08, 0x07, // 33:0
|
||||
0x00, 0x08, 0x09, 0x07, // 34:8
|
||||
0x00, 0x11, 0x0D, 0x07, // 35:17
|
||||
0x00, 0x1E, 0x0E, 0x07, // 36:30
|
||||
0x00, 0x2C, 0x0E, 0x07, // 37:44
|
||||
0x00, 0x3A, 0x0E, 0x07, // 38:58
|
||||
0x00, 0x48, 0x07, 0x07, // 39:72
|
||||
0x00, 0x4F, 0x0A, 0x07, // 40:79
|
||||
0x00, 0x59, 0x0A, 0x07, // 41:89
|
||||
0x00, 0x63, 0x0D, 0x07, // 42:99
|
||||
0x00, 0x70, 0x0B, 0x07, // 43:112
|
||||
0x00, 0x7B, 0x08, 0x07, // 44:123
|
||||
0x00, 0x83, 0x0B, 0x07, // 45:131
|
||||
0x00, 0x8E, 0x0A, 0x07, // 46:142
|
||||
0x00, 0x98, 0x0B, 0x07, // 47:152
|
||||
0x00, 0xA3, 0x0C, 0x07, // 48:163
|
||||
0x00, 0xAF, 0x0A, 0x07, // 49:175
|
||||
0x00, 0xB9, 0x0C, 0x07, // 50:185
|
||||
0x00, 0xC5, 0x0C, 0x07, // 51:197
|
||||
0x00, 0xD1, 0x0E, 0x07, // 52:209
|
||||
0x00, 0xDF, 0x0C, 0x07, // 53:223
|
||||
0x00, 0xEB, 0x0C, 0x07, // 54:235
|
||||
0x00, 0xF7, 0x0B, 0x07, // 55:247
|
||||
0x01, 0x02, 0x0C, 0x07, // 56:258
|
||||
0x01, 0x0E, 0x0C, 0x07, // 57:270
|
||||
0x01, 0x1A, 0x0A, 0x07, // 58:282
|
||||
0x01, 0x24, 0x0A, 0x07, // 59:292
|
||||
0x01, 0x2E, 0x0C, 0x07, // 60:302
|
||||
0x01, 0x3A, 0x0C, 0x07, // 61:314
|
||||
0x01, 0x46, 0x0C, 0x07, // 62:326
|
||||
0x01, 0x52, 0x0B, 0x07, // 63:338
|
||||
0x01, 0x5D, 0x0E, 0x07, // 64:349
|
||||
0x01, 0x6B, 0x0E, 0x07, // 65:363
|
||||
0x01, 0x79, 0x0E, 0x07, // 66:377
|
||||
0x01, 0x87, 0x0E, 0x07, // 67:391
|
||||
0x01, 0x95, 0x0E, 0x07, // 68:405
|
||||
0x01, 0xA3, 0x0C, 0x07, // 69:419
|
||||
0x01, 0xAF, 0x0D, 0x07, // 70:431
|
||||
0x01, 0xBC, 0x0E, 0x07, // 71:444
|
||||
0x01, 0xCA, 0x0C, 0x07, // 72:458
|
||||
0x01, 0xD6, 0x0C, 0x07, // 73:470
|
||||
0x01, 0xE2, 0x0C, 0x07, // 74:482
|
||||
0x01, 0xEE, 0x0E, 0x07, // 75:494
|
||||
0x01, 0xFC, 0x0C, 0x07, // 76:508
|
||||
0x02, 0x08, 0x0E, 0x07, // 77:520
|
||||
0x02, 0x16, 0x0C, 0x07, // 78:534
|
||||
0x02, 0x22, 0x0E, 0x07, // 79:546
|
||||
0x02, 0x30, 0x0D, 0x07, // 80:560
|
||||
0x02, 0x3D, 0x0E, 0x07, // 81:573
|
||||
0x02, 0x4B, 0x0E, 0x07, // 82:587
|
||||
0x02, 0x59, 0x0E, 0x07, // 83:601
|
||||
0x02, 0x67, 0x0D, 0x07, // 84:615
|
||||
0x02, 0x74, 0x0C, 0x07, // 85:628
|
||||
0x02, 0x80, 0x0D, 0x07, // 86:640
|
||||
0x02, 0x8D, 0x0D, 0x07, // 87:653
|
||||
0x02, 0x9A, 0x0E, 0x07, // 88:666
|
||||
0x02, 0xA8, 0x0D, 0x07, // 89:680
|
||||
0x02, 0xB5, 0x0E, 0x07, // 90:693
|
||||
0x02, 0xC3, 0x0A, 0x07, // 91:707
|
||||
0x02, 0xCD, 0x0C, 0x07, // 92:717
|
||||
0x02, 0xD9, 0x0A, 0x07, // 93:729
|
||||
0x02, 0xE3, 0x0B, 0x07, // 94:739
|
||||
0x02, 0xEE, 0x0C, 0x07, // 95:750
|
||||
0x02, 0xFA, 0x09, 0x07, // 96:762
|
||||
0x03, 0x03, 0x0C, 0x07, // 97:771
|
||||
0x03, 0x0F, 0x0C, 0x07, // 98:783
|
||||
0x03, 0x1B, 0x0C, 0x07, // 99:795
|
||||
0x03, 0x27, 0x0C, 0x07, // 100:807
|
||||
0x03, 0x33, 0x0E, 0x07, // 101:819
|
||||
0x03, 0x41, 0x0D, 0x07, // 102:833
|
||||
0x03, 0x4E, 0x0C, 0x07, // 103:846
|
||||
0x03, 0x5A, 0x0C, 0x07, // 104:858
|
||||
0x03, 0x66, 0x0C, 0x07, // 105:870
|
||||
0x03, 0x72, 0x0A, 0x07, // 106:882
|
||||
0x03, 0x7C, 0x0E, 0x07, // 107:892
|
||||
0x03, 0x8A, 0x0E, 0x07, // 108:906
|
||||
0x03, 0x98, 0x0E, 0x07, // 109:920
|
||||
0x03, 0xA6, 0x0C, 0x07, // 110:934
|
||||
0x03, 0xB2, 0x0E, 0x07, // 111:946
|
||||
0x03, 0xC0, 0x0C, 0x07, // 112:960
|
||||
0x03, 0xCC, 0x0C, 0x07, // 113:972
|
||||
0x03, 0xD8, 0x0B, 0x07, // 114:984
|
||||
0x03, 0xE3, 0x0C, 0x07, // 115:995
|
||||
0x03, 0xEF, 0x0C, 0x07, // 116:1007
|
||||
0x03, 0xFB, 0x0C, 0x07, // 117:1019
|
||||
0x04, 0x07, 0x0D, 0x07, // 118:1031
|
||||
0x04, 0x14, 0x0D, 0x07, // 119:1044
|
||||
0x04, 0x21, 0x0E, 0x07, // 120:1057
|
||||
0x04, 0x2F, 0x0D, 0x07, // 121:1071
|
||||
0x04, 0x3C, 0x0E, 0x07, // 122:1084
|
||||
0x04, 0x4A, 0x0C, 0x07, // 123:1098
|
||||
0x04, 0x56, 0x08, 0x07, // 124:1110
|
||||
0x04, 0x5E, 0x0B, 0x07, // 125:1118
|
||||
0x04, 0x69, 0x0D, 0x07, // 126:1129
|
||||
0xFF, 0xFF, 0x00, 0x07, // 127:65535
|
||||
0xFF, 0xFF, 0x00, 0x07, // 128:65535
|
||||
0xFF, 0xFF, 0x00, 0x07, // 129:65535
|
||||
0xFF, 0xFF, 0x00, 0x07, // 130:65535
|
||||
0xFF, 0xFF, 0x00, 0x07, // 131:65535
|
||||
0xFF, 0xFF, 0x00, 0x07, // 132:65535
|
||||
0xFF, 0xFF, 0x00, 0x07, // 133:65535
|
||||
0xFF, 0xFF, 0x00, 0x07, // 134:65535
|
||||
0xFF, 0xFF, 0x00, 0x07, // 135:65535
|
||||
0xFF, 0xFF, 0x00, 0x07, // 136:65535
|
||||
0xFF, 0xFF, 0x00, 0x07, // 137:65535
|
||||
0xFF, 0xFF, 0x00, 0x07, // 138:65535
|
||||
0xFF, 0xFF, 0x00, 0x07, // 139:65535
|
||||
0xFF, 0xFF, 0x00, 0x07, // 140:65535
|
||||
0xFF, 0xFF, 0x00, 0x07, // 141:65535
|
||||
0xFF, 0xFF, 0x00, 0x07, // 142:65535
|
||||
0xFF, 0xFF, 0x00, 0x07, // 143:65535
|
||||
0xFF, 0xFF, 0x00, 0x07, // 144:65535
|
||||
0xFF, 0xFF, 0x00, 0x07, // 145:65535
|
||||
0xFF, 0xFF, 0x00, 0x07, // 146:65535
|
||||
0xFF, 0xFF, 0x00, 0x07, // 147:65535
|
||||
0xFF, 0xFF, 0x00, 0x07, // 148:65535
|
||||
0xFF, 0xFF, 0x00, 0x07, // 149:65535
|
||||
0xFF, 0xFF, 0x00, 0x07, // 150:65535
|
||||
0xFF, 0xFF, 0x00, 0x07, // 151:65535
|
||||
0xFF, 0xFF, 0x00, 0x07, // 152:65535
|
||||
0xFF, 0xFF, 0x00, 0x07, // 153:65535
|
||||
0xFF, 0xFF, 0x00, 0x07, // 154:65535
|
||||
0xFF, 0xFF, 0x00, 0x07, // 155:65535
|
||||
0xFF, 0xFF, 0x00, 0x07, // 156:65535
|
||||
0xFF, 0xFF, 0x00, 0x07, // 157:65535
|
||||
0xFF, 0xFF, 0x00, 0x07, // 158:65535
|
||||
0xFF, 0xFF, 0x00, 0x07, // 159:65535
|
||||
0xFF, 0xFF, 0x00, 0x07, // 160:65535
|
||||
0x04, 0x76, 0x09, 0x07, // 161:1142
|
||||
0x04, 0x7F, 0x0C, 0x07, // 162:1151
|
||||
0x04, 0x8B, 0x0E, 0x07, // 163:1163
|
||||
0x04, 0x99, 0x0E, 0x07, // 164:1177
|
||||
0x04, 0xA7, 0x0D, 0x07, // 165:1191
|
||||
0x04, 0xB4, 0x08, 0x07, // 166:1204
|
||||
0x04, 0xBC, 0x0E, 0x07, // 167:1212
|
||||
0x04, 0xCA, 0x0B, 0x07, // 168:1226
|
||||
0x04, 0xD5, 0x0E, 0x07, // 169:1237
|
||||
0x04, 0xE3, 0x0B, 0x07, // 170:1251
|
||||
0x04, 0xEE, 0x0C, 0x07, // 171:1262
|
||||
0x04, 0xFA, 0x0C, 0x07, // 172:1274
|
||||
0x05, 0x06, 0x0B, 0x07, // 173:1286
|
||||
0x05, 0x11, 0x0E, 0x07, // 174:1297
|
||||
0x05, 0x1F, 0x0B, 0x07, // 175:1311
|
||||
0x05, 0x2A, 0x09, 0x07, // 176:1322
|
||||
0x05, 0x33, 0x0C, 0x07, // 177:1331
|
||||
0x05, 0x3F, 0x09, 0x07, // 178:1343
|
||||
0x05, 0x48, 0x09, 0x07, // 179:1352
|
||||
0x05, 0x51, 0x09, 0x07, // 180:1361
|
||||
0x05, 0x5A, 0x0C, 0x07, // 181:1370
|
||||
0x05, 0x66, 0x0C, 0x07, // 182:1382
|
||||
0x05, 0x72, 0x09, 0x07, // 183:1394
|
||||
0x05, 0x7B, 0x0A, 0x07, // 184:1403
|
||||
0x05, 0x85, 0x09, 0x07, // 185:1413
|
||||
0x05, 0x8E, 0x0B, 0x07, // 186:1422
|
||||
0x05, 0x99, 0x0C, 0x07, // 187:1433
|
||||
0x05, 0xA5, 0x0E, 0x07, // 188:1445
|
||||
0x05, 0xB3, 0x0E, 0x07, // 189:1459
|
||||
0x05, 0xC1, 0x0E, 0x07, // 190:1473
|
||||
0x05, 0xCF, 0x0C, 0x07, // 191:1487
|
||||
0x05, 0xDB, 0x0E, 0x07, // 192:1499
|
||||
0x05, 0xE9, 0x0E, 0x07, // 193:1513
|
||||
0x05, 0xF7, 0x0E, 0x07, // 194:1527
|
||||
0x06, 0x05, 0x0E, 0x07, // 195:1541
|
||||
0x06, 0x13, 0x0E, 0x07, // 196:1555
|
||||
0x06, 0x21, 0x0E, 0x07, // 197:1569
|
||||
0x06, 0x2F, 0x0E, 0x07, // 198:1583
|
||||
0x06, 0x3D, 0x0E, 0x07, // 199:1597
|
||||
0x06, 0x4B, 0x0C, 0x07, // 200:1611
|
||||
0x06, 0x57, 0x0C, 0x07, // 201:1623
|
||||
0x06, 0x63, 0x0C, 0x07, // 202:1635
|
||||
0x06, 0x6F, 0x0C, 0x07, // 203:1647
|
||||
0x06, 0x7B, 0x0C, 0x07, // 204:1659
|
||||
0x06, 0x87, 0x0C, 0x07, // 205:1671
|
||||
0x06, 0x93, 0x0C, 0x07, // 206:1683
|
||||
0x06, 0x9F, 0x0C, 0x07, // 207:1695
|
||||
0x06, 0xAB, 0x0E, 0x07, // 208:1707
|
||||
0x06, 0xB9, 0x0C, 0x07, // 209:1721
|
||||
0x06, 0xC5, 0x0E, 0x07, // 210:1733
|
||||
0x06, 0xD3, 0x0E, 0x07, // 211:1747
|
||||
0x06, 0xE1, 0x0E, 0x07, // 212:1761
|
||||
0x06, 0xEF, 0x0E, 0x07, // 213:1775
|
||||
0x06, 0xFD, 0x0E, 0x07, // 214:1789
|
||||
0x07, 0x0B, 0x0C, 0x07, // 215:1803
|
||||
0x07, 0x17, 0x0E, 0x07, // 216:1815
|
||||
0x07, 0x25, 0x0C, 0x07, // 217:1829
|
||||
0x07, 0x31, 0x0C, 0x07, // 218:1841
|
||||
0x07, 0x3D, 0x0C, 0x07, // 219:1853
|
||||
0x07, 0x49, 0x0C, 0x07, // 220:1865
|
||||
0x07, 0x55, 0x0D, 0x07, // 221:1877
|
||||
0x07, 0x62, 0x0E, 0x07, // 222:1890
|
||||
0x07, 0x70, 0x0E, 0x07, // 223:1904
|
||||
0x07, 0x7E, 0x0C, 0x07, // 224:1918
|
||||
0x07, 0x8A, 0x0C, 0x07, // 225:1930
|
||||
0x07, 0x96, 0x0C, 0x07, // 226:1942
|
||||
0x07, 0xA2, 0x0C, 0x07, // 227:1954
|
||||
0x07, 0xAE, 0x0C, 0x07, // 228:1966
|
||||
0x07, 0xBA, 0x0C, 0x07, // 229:1978
|
||||
0x07, 0xC6, 0x0E, 0x07, // 230:1990
|
||||
0x07, 0xD4, 0x0C, 0x07, // 231:2004
|
||||
0x07, 0xE0, 0x0E, 0x07, // 232:2016
|
||||
0x07, 0xEE, 0x0E, 0x07, // 233:2030
|
||||
0x07, 0xFC, 0x0E, 0x07, // 234:2044
|
||||
0x08, 0x0A, 0x0E, 0x07, // 235:2058
|
||||
0x08, 0x18, 0x0E, 0x07, // 236:2072
|
||||
0x08, 0x26, 0x0E, 0x07, // 237:2086
|
||||
0x08, 0x34, 0x0E, 0x07, // 238:2100
|
||||
0x08, 0x42, 0x0E, 0x07, // 239:2114
|
||||
0x08, 0x50, 0x0C, 0x07, // 240:2128
|
||||
0x08, 0x5C, 0x0C, 0x07, // 241:2140
|
||||
0x08, 0x68, 0x0E, 0x07, // 242:2152
|
||||
0x08, 0x76, 0x0E, 0x07, // 243:2166
|
||||
0x08, 0x84, 0x0E, 0x07, // 244:2180
|
||||
0x08, 0x92, 0x0E, 0x07, // 245:2194
|
||||
0x08, 0xA0, 0x0E, 0x07, // 246:2208
|
||||
0x08, 0xAE, 0x0D, 0x07, // 247:2222
|
||||
0x08, 0xBB, 0x0E, 0x07, // 248:2235
|
||||
0x08, 0xC9, 0x0C, 0x07, // 249:2249
|
||||
0x08, 0xD5, 0x0C, 0x07, // 250:2261
|
||||
0x08, 0xE1, 0x0C, 0x07, // 251:2273
|
||||
0x08, 0xED, 0x0C, 0x07, // 252:2285
|
||||
0x08, 0xF9, 0x0D, 0x07, // 253:2297
|
||||
0x09, 0x06, 0x0C, 0x07, // 254:2310
|
||||
0x09, 0x12, 0x0D, 0x07, // 255:2322
|
||||
|
||||
// Font Data:
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x09, // 33
|
||||
0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x1C, // 34
|
||||
0x00, 0x01, 0x20, 0x0D, 0xF0, 0x03, 0x28, 0x01, 0xE0, 0x0F, 0x38, 0x01, 0x20, // 35
|
||||
0x00, 0x00, 0x30, 0x06, 0x78, 0x0C, 0xCE, 0x18, 0x88, 0x08, 0xB8, 0x0F, 0x20, 0x02, // 36
|
||||
0x30, 0x00, 0x48, 0x00, 0x78, 0x06, 0x80, 0x01, 0x70, 0x0F, 0x10, 0x09, 0x00, 0x0F, // 37
|
||||
0x00, 0x00, 0x30, 0x0F, 0xF8, 0x09, 0xC8, 0x09, 0x78, 0x0E, 0x00, 0x0E, 0x00, 0x0B, // 38
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, // 39
|
||||
0x00, 0x00, 0x00, 0x00, 0xC0, 0x07, 0x70, 0x18, 0x0C, 0x60, // 40
|
||||
0x00, 0x00, 0x00, 0x00, 0x0C, 0x60, 0x30, 0x38, 0xE0, 0x0F, // 41
|
||||
0x00, 0x00, 0x40, 0x00, 0x40, 0x03, 0xF0, 0x01, 0x80, 0x01, 0x40, 0x02, 0x40, // 42
|
||||
0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0xF0, 0x07, 0x80, 0x00, 0x80, // 43
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x38, // 44
|
||||
0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, // 45
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0C, // 46
|
||||
0x00, 0x00, 0x00, 0x10, 0x00, 0x1C, 0x80, 0x03, 0x70, 0x00, 0x18, // 47
|
||||
0x00, 0x00, 0xF0, 0x07, 0x18, 0x0D, 0x88, 0x08, 0x58, 0x0C, 0xF0, 0x07, // 48
|
||||
0x00, 0x00, 0x30, 0x00, 0x10, 0x00, 0xF8, 0x0F, 0xF8, 0x0F, // 49
|
||||
0x20, 0x00, 0x30, 0x0C, 0x08, 0x0E, 0x08, 0x0B, 0xD8, 0x08, 0x70, 0x08, // 50
|
||||
0x00, 0x00, 0x10, 0x04, 0x88, 0x08, 0x88, 0x08, 0xD8, 0x0D, 0x70, 0x07, // 51
|
||||
0x00, 0x02, 0x80, 0x03, 0xC0, 0x02, 0x30, 0x02, 0xF8, 0x0F, 0xF8, 0x0F, 0x00, 0x02, // 52
|
||||
0x00, 0x00, 0xF0, 0x06, 0xF8, 0x0C, 0x48, 0x08, 0xC8, 0x0C, 0x88, 0x07, // 53
|
||||
0x00, 0x00, 0xE0, 0x07, 0xF0, 0x0C, 0x58, 0x08, 0xC8, 0x0C, 0x80, 0x07, // 54
|
||||
0x00, 0x00, 0x08, 0x00, 0x08, 0x0C, 0x08, 0x07, 0xE8, 0x00, 0x38, // 55
|
||||
0x00, 0x00, 0x70, 0x07, 0xD8, 0x0D, 0x88, 0x08, 0x98, 0x08, 0x70, 0x07, // 56
|
||||
0x00, 0x00, 0xF0, 0x01, 0x98, 0x09, 0x08, 0x09, 0x18, 0x05, 0xF0, 0x03, // 57
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x0C, 0x60, 0x0C, // 58
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x38, // 59
|
||||
0x00, 0x00, 0x80, 0x01, 0x80, 0x01, 0x80, 0x02, 0x40, 0x02, 0x40, 0x06, // 60
|
||||
0x00, 0x00, 0x40, 0x02, 0x40, 0x02, 0x40, 0x02, 0x40, 0x02, 0x40, 0x02, // 61
|
||||
0x00, 0x00, 0x40, 0x06, 0x40, 0x02, 0x80, 0x02, 0x80, 0x03, 0x80, 0x01, // 62
|
||||
0x00, 0x00, 0x10, 0x00, 0x18, 0x00, 0x08, 0x0B, 0x88, 0x01, 0x70, // 63
|
||||
0xC0, 0x03, 0x30, 0x04, 0xD8, 0x0B, 0x28, 0x0A, 0xE8, 0x0B, 0x10, 0x02, 0xE0, 0x01, // 64
|
||||
0x00, 0x08, 0x00, 0x0F, 0xE0, 0x03, 0x38, 0x02, 0xF0, 0x02, 0x80, 0x0F, 0x00, 0x0C, // 65
|
||||
0x00, 0x00, 0xF8, 0x0F, 0x88, 0x08, 0x88, 0x08, 0x88, 0x08, 0x78, 0x0F, 0x20, 0x07, // 66
|
||||
0x00, 0x00, 0xF0, 0x07, 0x18, 0x0C, 0x08, 0x08, 0x08, 0x08, 0x30, 0x06, 0x20, 0x02, // 67
|
||||
0x00, 0x00, 0xF8, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x18, 0x0C, 0xF0, 0x07, 0xC0, 0x01, // 68
|
||||
0x00, 0x00, 0xF8, 0x0F, 0x88, 0x08, 0x88, 0x08, 0x88, 0x08, 0x88, 0x08, // 69
|
||||
0x00, 0x00, 0xF8, 0x0F, 0x88, 0x00, 0x88, 0x00, 0x88, 0x00, 0x88, 0x00, 0x08, // 70
|
||||
0x00, 0x00, 0xF0, 0x07, 0x18, 0x0C, 0x08, 0x08, 0x88, 0x08, 0xB0, 0x0F, 0xA0, 0x07, // 71
|
||||
0x00, 0x00, 0xF8, 0x0F, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0xF8, 0x0F, // 72
|
||||
0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0xF8, 0x0F, 0x08, 0x08, 0x08, 0x08, // 73
|
||||
0x00, 0x00, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x0C, 0xF8, 0x07, // 74
|
||||
0x00, 0x00, 0xF8, 0x0F, 0x80, 0x01, 0xC0, 0x01, 0x30, 0x03, 0x18, 0x0E, 0x08, 0x08, // 75
|
||||
0x00, 0x00, 0xF8, 0x0F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, // 76
|
||||
0x00, 0x00, 0xF8, 0x0F, 0x78, 0x00, 0x80, 0x01, 0xF0, 0x00, 0xF8, 0x0F, 0xF8, 0x0F, // 77
|
||||
0x00, 0x00, 0xF8, 0x0F, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0xF8, 0x0F, // 78
|
||||
0x00, 0x00, 0xF0, 0x07, 0x18, 0x0C, 0x08, 0x08, 0x18, 0x0C, 0xF0, 0x07, 0xC0, 0x01, // 79
|
||||
0x00, 0x00, 0xF8, 0x0F, 0x88, 0x00, 0x88, 0x00, 0x88, 0x00, 0xF8, 0x00, 0x70, // 80
|
||||
0x00, 0x00, 0xF0, 0x07, 0x18, 0x0C, 0x08, 0x08, 0x18, 0x0C, 0xF0, 0x1F, 0xE0, 0x13, // 81
|
||||
0x00, 0x00, 0xF8, 0x0F, 0x88, 0x00, 0x88, 0x00, 0x88, 0x03, 0xF8, 0x0E, 0x20, 0x08, // 82
|
||||
0x00, 0x00, 0x70, 0x06, 0xD8, 0x0C, 0x88, 0x08, 0x88, 0x08, 0x38, 0x0F, 0x20, 0x06, // 83
|
||||
0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0xF8, 0x0F, 0x08, 0x00, 0x08, 0x00, 0x08, // 84
|
||||
0x00, 0x00, 0xF8, 0x07, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x0C, 0xF8, 0x07, // 85
|
||||
0x08, 0x00, 0x78, 0x00, 0xE0, 0x07, 0x00, 0x0E, 0xC0, 0x07, 0xF8, 0x00, 0x08, // 86
|
||||
0x18, 0x00, 0xF8, 0x0F, 0x80, 0x0F, 0x78, 0x00, 0xE0, 0x0F, 0xE0, 0x0F, 0x78, // 87
|
||||
0x08, 0x08, 0x18, 0x0C, 0x70, 0x07, 0xC0, 0x01, 0xE0, 0x03, 0x38, 0x0E, 0x08, 0x08, // 88
|
||||
0x08, 0x00, 0x38, 0x00, 0xE0, 0x00, 0x80, 0x0F, 0xE0, 0x00, 0x38, 0x00, 0x08, // 89
|
||||
0x00, 0x00, 0x08, 0x0C, 0x08, 0x0B, 0xC8, 0x09, 0x68, 0x08, 0x18, 0x08, 0x00, 0x08, // 90
|
||||
0x00, 0x00, 0x00, 0x00, 0xFC, 0x3F, 0xFC, 0x3F, 0x04, 0x20, // 91
|
||||
0x00, 0x00, 0x08, 0x00, 0x38, 0x00, 0xE0, 0x01, 0x00, 0x0F, 0x00, 0x18, // 92
|
||||
0x00, 0x00, 0x00, 0x00, 0x04, 0x20, 0xFC, 0x3F, 0xFC, 0x3F, // 93
|
||||
0x00, 0x00, 0x80, 0x00, 0xE0, 0x00, 0x18, 0x00, 0x70, 0x00, 0x80, // 94
|
||||
0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, // 95
|
||||
0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, // 96
|
||||
0x00, 0x00, 0x40, 0x0E, 0x60, 0x09, 0x20, 0x09, 0x60, 0x05, 0xC0, 0x0F, // 97
|
||||
0x00, 0x00, 0xFC, 0x0F, 0x40, 0x04, 0x20, 0x08, 0x60, 0x0C, 0xC0, 0x07, // 98
|
||||
0x00, 0x00, 0xC0, 0x07, 0x60, 0x0C, 0x20, 0x08, 0x20, 0x08, 0xC0, 0x04, // 99
|
||||
0x00, 0x00, 0xC0, 0x07, 0x60, 0x0C, 0x20, 0x08, 0x60, 0x0C, 0xFC, 0x0F, // 100
|
||||
0x00, 0x00, 0xC0, 0x07, 0x60, 0x0D, 0x20, 0x09, 0x20, 0x09, 0xC0, 0x0D, 0x00, 0x01, // 101
|
||||
0x00, 0x00, 0x20, 0x00, 0xE0, 0x0F, 0xFC, 0x0F, 0x24, 0x00, 0x24, 0x00, 0x04, // 102
|
||||
0x00, 0x00, 0xC0, 0x27, 0x60, 0x4C, 0x20, 0x48, 0x60, 0x68, 0xE0, 0x3F, // 103
|
||||
0x00, 0x00, 0xFC, 0x0F, 0x40, 0x00, 0x20, 0x00, 0x20, 0x00, 0xE0, 0x0F, // 104
|
||||
0x00, 0x00, 0x20, 0x08, 0x20, 0x08, 0xE8, 0x0F, 0xE8, 0x0F, 0x00, 0x08, // 105
|
||||
0x00, 0x00, 0x00, 0x40, 0x20, 0x40, 0x28, 0x60, 0xE8, 0x3F, // 106
|
||||
0x00, 0x00, 0xFC, 0x0F, 0x00, 0x03, 0xC0, 0x03, 0x60, 0x06, 0x20, 0x0C, 0x00, 0x08, // 107
|
||||
0x00, 0x00, 0x04, 0x08, 0x04, 0x08, 0xFC, 0x0F, 0xFC, 0x0F, 0x00, 0x08, 0x00, 0x08, // 108
|
||||
0xE0, 0x0F, 0xE0, 0x0F, 0x20, 0x00, 0xE0, 0x0F, 0x20, 0x00, 0xE0, 0x0F, 0xC0, 0x0F, // 109
|
||||
0x00, 0x00, 0xE0, 0x0F, 0x40, 0x00, 0x20, 0x00, 0x20, 0x00, 0xE0, 0x0F, // 110
|
||||
0x00, 0x00, 0xC0, 0x07, 0x60, 0x0C, 0x20, 0x08, 0x60, 0x0C, 0xC0, 0x07, 0x00, 0x01, // 111
|
||||
0x00, 0x00, 0xE0, 0x7F, 0x40, 0x04, 0x20, 0x08, 0x60, 0x0C, 0xC0, 0x07, // 112
|
||||
0x00, 0x00, 0xC0, 0x07, 0x60, 0x0C, 0x20, 0x08, 0x60, 0x0C, 0xE0, 0x7F, // 113
|
||||
0x00, 0x00, 0x00, 0x00, 0xE0, 0x0F, 0x40, 0x00, 0x20, 0x00, 0x20, // 114
|
||||
0x00, 0x00, 0xC0, 0x04, 0xE0, 0x0D, 0x20, 0x09, 0x20, 0x09, 0x40, 0x0E, // 115
|
||||
0x00, 0x00, 0x20, 0x00, 0xF8, 0x07, 0xF8, 0x0F, 0x20, 0x08, 0x20, 0x08, // 116
|
||||
0x00, 0x00, 0xE0, 0x07, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x0C, 0xE0, 0x0F, // 117
|
||||
0x20, 0x00, 0xE0, 0x00, 0x80, 0x07, 0x00, 0x0C, 0x80, 0x07, 0xE0, 0x00, 0x20, // 118
|
||||
0x60, 0x00, 0xE0, 0x0F, 0x00, 0x0F, 0xE0, 0x00, 0x80, 0x0F, 0x80, 0x0F, 0xE0, // 119
|
||||
0x00, 0x00, 0x20, 0x08, 0xE0, 0x06, 0x80, 0x03, 0xC0, 0x07, 0x60, 0x0C, 0x20, 0x08, // 120
|
||||
0x20, 0x00, 0xE0, 0x40, 0x80, 0x63, 0x00, 0x3C, 0x00, 0x07, 0xE0, 0x01, 0x20, // 121
|
||||
0x00, 0x00, 0x20, 0x0C, 0x20, 0x0E, 0xA0, 0x0B, 0xE0, 0x08, 0x60, 0x08, 0x00, 0x08, // 122
|
||||
0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xF0, 0x0F, 0x7C, 0x3E, 0x04, 0x20, // 123
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x7F, // 124
|
||||
0x00, 0x00, 0x00, 0x00, 0x04, 0x20, 0x7C, 0x3F, 0xC0, 0x01, 0x80, // 125
|
||||
0x00, 0x01, 0x80, 0x00, 0x80, 0x00, 0x80, 0x01, 0x00, 0x01, 0x00, 0x01, 0x80, // 126
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x7E, 0x20, // 161
|
||||
0x00, 0x00, 0x80, 0x07, 0xC0, 0x0C, 0x70, 0x38, 0x40, 0x08, 0xC0, 0x0C, // 162
|
||||
0x00, 0x00, 0x80, 0x0C, 0xF8, 0x0F, 0x88, 0x08, 0x88, 0x08, 0x18, 0x08, 0x10, 0x08, // 163
|
||||
0x00, 0x00, 0xE0, 0x0F, 0x60, 0x0C, 0x20, 0x08, 0x20, 0x08, 0xE0, 0x0F, 0x20, 0x09, // 164
|
||||
0x08, 0x00, 0x98, 0x02, 0xE0, 0x02, 0x80, 0x0F, 0xE0, 0x02, 0xB8, 0x02, 0x08, // 165
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x3E, // 166
|
||||
0x00, 0x10, 0xF0, 0x37, 0xD8, 0x44, 0x88, 0x44, 0x88, 0x4C, 0xB8, 0x7F, 0x20, 0x13, // 167
|
||||
0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, // 168
|
||||
0x00, 0x00, 0xC0, 0x07, 0xA0, 0x0B, 0x60, 0x0C, 0xE0, 0x0E, 0x40, 0x04, 0x80, 0x03, // 169
|
||||
0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0xA8, 0x00, 0xF8, 0x00, 0x80, // 170
|
||||
0x00, 0x00, 0x00, 0x01, 0x80, 0x03, 0x40, 0x05, 0x80, 0x03, 0x40, 0x04, // 171
|
||||
0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x03, // 172
|
||||
0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, // 173
|
||||
0x00, 0x00, 0xC0, 0x07, 0xE0, 0x0B, 0x60, 0x09, 0xE0, 0x0B, 0x40, 0x04, 0x80, 0x03, // 174
|
||||
0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, // 175
|
||||
0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x28, 0x00, 0x38, // 176
|
||||
0x00, 0x00, 0x40, 0x08, 0x40, 0x08, 0xF0, 0x0B, 0x40, 0x08, 0x40, 0x08, // 177
|
||||
0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0xC8, 0x00, 0xB8, // 178
|
||||
0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0xA8, 0x00, 0xF8, // 179
|
||||
0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, // 180
|
||||
0x00, 0x00, 0xE0, 0x7F, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x08, 0xE0, 0x0F, // 181
|
||||
0x00, 0x00, 0x60, 0x00, 0xF8, 0x01, 0xF8, 0x01, 0xF8, 0x01, 0xF8, 0x0F, // 182
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, // 183
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x20, // 184
|
||||
0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xF8, 0x00, 0xF8, // 185
|
||||
0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x88, 0x00, 0xD8, 0x00, 0x70, // 186
|
||||
0x00, 0x00, 0x40, 0x04, 0xC0, 0x06, 0x40, 0x05, 0xC0, 0x06, 0x00, 0x01, // 187
|
||||
0x10, 0x00, 0xF0, 0x00, 0x00, 0x06, 0x80, 0x01, 0x60, 0x06, 0x80, 0x0F, 0x00, 0x04, // 188
|
||||
0x10, 0x00, 0xF0, 0x00, 0x00, 0x06, 0x80, 0x01, 0x60, 0x0D, 0x80, 0x0D, 0x00, 0x0B, // 189
|
||||
0x00, 0x00, 0x90, 0x00, 0xA8, 0x06, 0xD0, 0x01, 0x60, 0x06, 0x80, 0x0F, 0x00, 0x04, // 190
|
||||
0x00, 0x00, 0x00, 0x38, 0x00, 0x7E, 0x20, 0x43, 0x20, 0x60, 0x00, 0x30, // 191
|
||||
0x00, 0x08, 0x02, 0x0F, 0xE2, 0x03, 0x3A, 0x02, 0xF0, 0x02, 0x80, 0x0F, 0x00, 0x0C, // 192
|
||||
0x00, 0x08, 0x00, 0x0F, 0xE0, 0x03, 0x3C, 0x02, 0xF2, 0x02, 0x82, 0x0F, 0x00, 0x0C, // 193
|
||||
0x00, 0x08, 0x00, 0x0F, 0xE2, 0x03, 0x39, 0x02, 0xF1, 0x02, 0x82, 0x0F, 0x00, 0x0C, // 194
|
||||
0x00, 0x08, 0x00, 0x0F, 0xE3, 0x03, 0x39, 0x02, 0xF2, 0x02, 0x83, 0x0F, 0x00, 0x0C, // 195
|
||||
0x00, 0x08, 0x00, 0x0F, 0xE2, 0x03, 0x38, 0x02, 0xF2, 0x02, 0x82, 0x0F, 0x00, 0x0C, // 196
|
||||
0x00, 0x08, 0x00, 0x0F, 0xE2, 0x03, 0x3D, 0x02, 0xF7, 0x02, 0x80, 0x0F, 0x00, 0x0C, // 197
|
||||
0x00, 0x08, 0x00, 0x0F, 0xE0, 0x03, 0x38, 0x02, 0xF8, 0x0F, 0x88, 0x08, 0x88, 0x08, // 198
|
||||
0x00, 0x00, 0xF0, 0x07, 0x18, 0x0C, 0x08, 0x58, 0x08, 0x28, 0x30, 0x06, 0x20, 0x02, // 199
|
||||
0x00, 0x00, 0xFA, 0x0F, 0x8A, 0x08, 0x8A, 0x08, 0x88, 0x08, 0x88, 0x08, // 200
|
||||
0x00, 0x00, 0xF8, 0x0F, 0x88, 0x08, 0x8C, 0x08, 0x8A, 0x08, 0x8A, 0x08, // 201
|
||||
0x00, 0x00, 0xF8, 0x0F, 0x8A, 0x08, 0x89, 0x08, 0x89, 0x08, 0x8A, 0x08, // 202
|
||||
0x00, 0x00, 0xF8, 0x0F, 0x8A, 0x08, 0x88, 0x08, 0x8A, 0x08, 0x8A, 0x08, // 203
|
||||
0x00, 0x00, 0x0A, 0x08, 0x0A, 0x08, 0xFA, 0x0F, 0x08, 0x08, 0x08, 0x08, // 204
|
||||
0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0xFC, 0x0F, 0x0A, 0x08, 0x0A, 0x08, // 205
|
||||
0x00, 0x00, 0x08, 0x08, 0x0A, 0x08, 0xF9, 0x0F, 0x09, 0x08, 0x0A, 0x08, // 206
|
||||
0x00, 0x00, 0x08, 0x08, 0x0A, 0x08, 0xF8, 0x0F, 0x0A, 0x08, 0x0A, 0x08, // 207
|
||||
0x80, 0x00, 0xF8, 0x0F, 0x88, 0x08, 0x88, 0x08, 0x18, 0x0C, 0xF0, 0x07, 0xE0, 0x03, // 208
|
||||
0x00, 0x00, 0xF8, 0x0F, 0x73, 0x00, 0xC1, 0x01, 0x02, 0x07, 0xFB, 0x0F, // 209
|
||||
0x00, 0x00, 0xF2, 0x07, 0x1A, 0x0C, 0x0A, 0x08, 0x18, 0x0C, 0xF0, 0x07, 0xC0, 0x01, // 210
|
||||
0x00, 0x00, 0xF0, 0x07, 0x18, 0x0C, 0x0C, 0x08, 0x1A, 0x0C, 0xF2, 0x07, 0xC0, 0x01, // 211
|
||||
0x00, 0x00, 0xF0, 0x07, 0x1A, 0x0C, 0x09, 0x08, 0x19, 0x0C, 0xF2, 0x07, 0xC0, 0x01, // 212
|
||||
0x00, 0x00, 0xF0, 0x07, 0x1B, 0x0C, 0x09, 0x08, 0x1A, 0x0C, 0xF3, 0x07, 0xC0, 0x01, // 213
|
||||
0x00, 0x00, 0xF0, 0x07, 0x1A, 0x0C, 0x08, 0x08, 0x1A, 0x0C, 0xF2, 0x07, 0xC0, 0x01, // 214
|
||||
0x00, 0x00, 0x60, 0x06, 0xC0, 0x03, 0x80, 0x01, 0xC0, 0x03, 0x60, 0x06, // 215
|
||||
0x00, 0x08, 0xF0, 0x0F, 0x18, 0x0E, 0x88, 0x09, 0x78, 0x0C, 0xF8, 0x07, 0xC4, 0x01, // 216
|
||||
0x00, 0x00, 0xFA, 0x07, 0x02, 0x0C, 0x02, 0x08, 0x00, 0x0C, 0xF8, 0x07, // 217
|
||||
0x00, 0x00, 0xF8, 0x07, 0x00, 0x0C, 0x04, 0x08, 0x02, 0x0C, 0xFA, 0x07, // 218
|
||||
0x00, 0x00, 0xF8, 0x07, 0x02, 0x0C, 0x01, 0x08, 0x01, 0x0C, 0xFA, 0x07, // 219
|
||||
0x00, 0x00, 0xF8, 0x07, 0x02, 0x0C, 0x00, 0x08, 0x02, 0x0C, 0xFA, 0x07, // 220
|
||||
0x08, 0x00, 0x38, 0x00, 0xE0, 0x00, 0x84, 0x0F, 0xE2, 0x00, 0x3A, 0x00, 0x08, // 221
|
||||
0x00, 0x00, 0xF8, 0x0F, 0x20, 0x02, 0x20, 0x02, 0x20, 0x02, 0xE0, 0x03, 0xC0, 0x01, // 222
|
||||
0x00, 0x00, 0xF8, 0x0F, 0x0C, 0x00, 0x04, 0x0C, 0xFC, 0x08, 0x18, 0x0F, 0x00, 0x06, // 223
|
||||
0x00, 0x00, 0x48, 0x0E, 0x68, 0x09, 0x28, 0x09, 0x60, 0x05, 0xC0, 0x0F, // 224
|
||||
0x00, 0x00, 0x40, 0x0E, 0x60, 0x09, 0x30, 0x09, 0x68, 0x05, 0xC8, 0x0F, // 225
|
||||
0x00, 0x00, 0x40, 0x0E, 0x68, 0x09, 0x24, 0x09, 0x64, 0x05, 0xC8, 0x0F, // 226
|
||||
0x00, 0x00, 0x40, 0x0E, 0x6C, 0x09, 0x24, 0x09, 0x68, 0x05, 0xCC, 0x0F, // 227
|
||||
0x00, 0x00, 0x40, 0x0E, 0x68, 0x09, 0x20, 0x09, 0x68, 0x05, 0xC8, 0x0F, // 228
|
||||
0x00, 0x00, 0x40, 0x0E, 0x68, 0x09, 0x34, 0x09, 0x7C, 0x05, 0xC0, 0x0F, // 229
|
||||
0x40, 0x06, 0x60, 0x0F, 0x20, 0x09, 0xE0, 0x07, 0x20, 0x0D, 0x20, 0x09, 0xC0, 0x0D, // 230
|
||||
0x00, 0x00, 0xC0, 0x07, 0x60, 0x0C, 0x20, 0x58, 0x20, 0x28, 0xC0, 0x04, // 231
|
||||
0x00, 0x00, 0xC8, 0x07, 0x68, 0x0D, 0x28, 0x09, 0x20, 0x09, 0xC0, 0x0D, 0x00, 0x01, // 232
|
||||
0x00, 0x00, 0xC0, 0x07, 0x60, 0x0D, 0x30, 0x09, 0x28, 0x09, 0xC8, 0x0D, 0x00, 0x01, // 233
|
||||
0x00, 0x00, 0xC0, 0x07, 0x68, 0x0D, 0x24, 0x09, 0x24, 0x09, 0xC8, 0x0D, 0x00, 0x01, // 234
|
||||
0x00, 0x00, 0xC0, 0x07, 0x68, 0x0D, 0x20, 0x09, 0x28, 0x09, 0xC8, 0x0D, 0x00, 0x01, // 235
|
||||
0x00, 0x00, 0x28, 0x08, 0x28, 0x08, 0xE8, 0x0F, 0xE0, 0x0F, 0x00, 0x08, 0x00, 0x08, // 236
|
||||
0x00, 0x00, 0x20, 0x08, 0x20, 0x08, 0xF0, 0x0F, 0xE8, 0x0F, 0x08, 0x08, 0x00, 0x08, // 237
|
||||
0x00, 0x00, 0x20, 0x08, 0x28, 0x08, 0xE4, 0x0F, 0xE4, 0x0F, 0x08, 0x08, 0x00, 0x08, // 238
|
||||
0x00, 0x00, 0x20, 0x08, 0x28, 0x08, 0xE0, 0x0F, 0xE8, 0x0F, 0x08, 0x08, 0x00, 0x08, // 239
|
||||
0x00, 0x03, 0xC0, 0x07, 0x68, 0x08, 0x58, 0x08, 0x78, 0x0C, 0xE8, 0x07, // 240
|
||||
0x00, 0x00, 0xE0, 0x0F, 0x4C, 0x00, 0x24, 0x00, 0x28, 0x00, 0xEC, 0x0F, // 241
|
||||
0x00, 0x00, 0xC8, 0x07, 0x68, 0x0C, 0x28, 0x08, 0x60, 0x0C, 0xC0, 0x07, 0x00, 0x01, // 242
|
||||
0x00, 0x00, 0xC0, 0x07, 0x60, 0x0C, 0x30, 0x08, 0x68, 0x0C, 0xC8, 0x07, 0x00, 0x01, // 243
|
||||
0x00, 0x00, 0xC0, 0x07, 0x68, 0x0C, 0x24, 0x08, 0x64, 0x0C, 0xC8, 0x07, 0x00, 0x01, // 244
|
||||
0x00, 0x00, 0xC0, 0x07, 0x6C, 0x0C, 0x24, 0x08, 0x68, 0x0C, 0xCC, 0x07, 0x00, 0x01, // 245
|
||||
0x00, 0x00, 0xC0, 0x07, 0x68, 0x0C, 0x20, 0x08, 0x68, 0x0C, 0xC8, 0x07, 0x00, 0x01, // 246
|
||||
0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0xA0, 0x04, 0x80, 0x00, 0x80, 0x00, 0x80, // 247
|
||||
0x00, 0x00, 0xC0, 0x0F, 0x60, 0x0C, 0x20, 0x0B, 0xE0, 0x0C, 0xD0, 0x07, 0x00, 0x01, // 248
|
||||
0x00, 0x00, 0xE8, 0x07, 0x08, 0x0C, 0x08, 0x08, 0x00, 0x0C, 0xE0, 0x0F, // 249
|
||||
0x00, 0x00, 0xE0, 0x07, 0x00, 0x0C, 0x10, 0x08, 0x08, 0x0C, 0xE8, 0x0F, // 250
|
||||
0x00, 0x00, 0xE0, 0x07, 0x08, 0x0C, 0x04, 0x08, 0x04, 0x0C, 0xE8, 0x0F, // 251
|
||||
0x00, 0x00, 0xE0, 0x07, 0x08, 0x0C, 0x00, 0x08, 0x08, 0x0C, 0xE8, 0x0F, // 252
|
||||
0x20, 0x00, 0xE0, 0x40, 0x80, 0x63, 0x10, 0x3C, 0x08, 0x07, 0xE8, 0x01, 0x20, // 253
|
||||
0x00, 0x00, 0xFC, 0x7F, 0x40, 0x04, 0x20, 0x08, 0x60, 0x0C, 0xC0, 0x07, // 254
|
||||
0x20, 0x00, 0xE0, 0x40, 0x88, 0x63, 0x00, 0x3C, 0x08, 0x07, 0xE8, 0x01, 0x20 // 255
|
||||
};
|
||||
|
|
@ -1,717 +0,0 @@
|
|||
/**
|
||||
* @file utilities.h
|
||||
* @author Lewis He (lewishe@outlook.com)
|
||||
* @license MIT
|
||||
* @copyright Copyright (c) 2024 ShenZhen XinYuan Electronic Technology Co., Ltd
|
||||
* @date 2024-05-12
|
||||
* @last-update 2024-08-07
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
|
||||
// Support board list , Macro definition below, select the board definition to be used
|
||||
|
||||
// #define T3_V1_3_SX1276
|
||||
// #define T3_V1_3_SX1278
|
||||
|
||||
// #define T3_V1_6_SX1276
|
||||
// #define T3_V1_6_SX1278
|
||||
|
||||
// #define T3_V1_6_SX1276_TCXO
|
||||
// #define T3_V3_0_SX1276_TCXO
|
||||
|
||||
// #define T_BEAM_SX1262
|
||||
// #define T_BEAM_SX1276
|
||||
// #define T_BEAM_SX1278
|
||||
// #define T_BEAM_LR1121
|
||||
|
||||
// #define T_BEAM_S3_SUPREME_SX1262
|
||||
// #define T_BEAM_S3_SUPREME_LR1121
|
||||
|
||||
// #define T3_S3_V1_2_SX1262
|
||||
// #define T3_S3_V1_2_SX1276
|
||||
// #define T3_S3_V1_2_SX1278
|
||||
// #define T3_S3_V1_2_SX1280
|
||||
// #define T3_S3_V1_2_SX1280_PA
|
||||
// #define T3_S3_V1_2_LR1121
|
||||
|
||||
// #define T_MOTION
|
||||
|
||||
// #define T3_C6
|
||||
|
||||
// #define T_BEAM_S3_BPF
|
||||
|
||||
|
||||
#define UNUSED_PIN (0)
|
||||
|
||||
#if defined(T_BEAM_SX1262) || defined(T_BEAM_SX1276) || defined(T_BEAM_SX1278) || defined(T_BEAM_LR1121)
|
||||
|
||||
|
||||
#if defined(T_BEAM_SX1262)
|
||||
#ifndef USING_SX1262
|
||||
#define USING_SX1262
|
||||
#endif
|
||||
#elif defined(T_BEAM_SX1276)
|
||||
#ifndef USING_SX1276
|
||||
#define USING_SX1276
|
||||
#endif
|
||||
#elif defined(T_BEAM_SX1278)
|
||||
#ifndef USING_SX1278
|
||||
#define USING_SX1278
|
||||
#endif
|
||||
#elif defined(T_BEAM_LR1121)
|
||||
#ifndef USING_LR1121
|
||||
#define USING_LR1121
|
||||
#endif
|
||||
#endif // T_BEAM_SX1262
|
||||
|
||||
|
||||
#define GPS_RX_PIN 34
|
||||
#define GPS_TX_PIN 12
|
||||
#define BUTTON_PIN 38
|
||||
#define BUTTON_PIN_MASK GPIO_SEL_38
|
||||
#define I2C_SDA 21
|
||||
#define I2C_SCL 22
|
||||
#define PMU_IRQ 35
|
||||
|
||||
#define RADIO_SCLK_PIN 5
|
||||
#define RADIO_MISO_PIN 19
|
||||
#define RADIO_MOSI_PIN 27
|
||||
#define RADIO_CS_PIN 18
|
||||
#define RADIO_DIO0_PIN 26
|
||||
#define RADIO_RST_PIN 23
|
||||
#define RADIO_DIO1_PIN 33
|
||||
// SX1276/78
|
||||
#define RADIO_DIO2_PIN 32
|
||||
// SX1262
|
||||
#define RADIO_BUSY_PIN 32
|
||||
|
||||
// LR1121 Only
|
||||
#define RADIO_DIO9_PIN 33
|
||||
|
||||
|
||||
#define BOARD_LED 4
|
||||
#define LED_ON LOW
|
||||
#define LED_OFF HIGH
|
||||
|
||||
#define BUTTON_PIN 38
|
||||
|
||||
#define GPS_BAUD_RATE 9600
|
||||
#define HAS_GPS
|
||||
#define HAS_DISPLAY //Optional, bring your own board, no OLED !!
|
||||
#define HAS_PMU
|
||||
|
||||
#define BOARD_VARIANT_NAME "T-Beam"
|
||||
#define DISPLAY_MODEL_SSD_LIB SSD1306Wire
|
||||
|
||||
#elif defined(T3_V1_3_SX1276) || defined(T3_V1_3_SX1278)
|
||||
|
||||
|
||||
#if defined(T3_V1_3_SX1276)
|
||||
|
||||
#ifndef USING_SX1276
|
||||
#define USING_SX1276
|
||||
#endif
|
||||
|
||||
#elif defined(T3_V1_3_SX1278)
|
||||
|
||||
#ifndef USING_SX1278
|
||||
#define USING_SX1278
|
||||
#endif
|
||||
|
||||
#endif // T3_V1_3_SX1276
|
||||
|
||||
|
||||
|
||||
#define I2C_SDA 21
|
||||
#define I2C_SCL 22
|
||||
#define OLED_RST UNUSED_PIN
|
||||
|
||||
#define RADIO_SCLK_PIN 5
|
||||
#define RADIO_MISO_PIN 19
|
||||
#define RADIO_MOSI_PIN 27
|
||||
#define RADIO_CS_PIN 18
|
||||
#define RADIO_DIO0_PIN 26
|
||||
#define RADIO_RST_PIN 14
|
||||
#define RADIO_DIO1_PIN 33
|
||||
|
||||
// SX1276/78
|
||||
#define RADIO_DIO2_PIN 32
|
||||
// SX1262
|
||||
#define RADIO_BUSY_PIN 32
|
||||
|
||||
|
||||
#define ADC_PIN 35
|
||||
#define HAS_DISPLAY
|
||||
#define BOARD_VARIANT_NAME "T3 V1.3"
|
||||
|
||||
#define BAT_ADC_PULLUP_RES (100000.0)
|
||||
#define BAT_ADC_PULLDOWN_RES (100000.0)
|
||||
#define BAT_MAX_VOLTAGE (4.2)
|
||||
#define BAT_VOL_COMPENSATION (0.0)
|
||||
|
||||
#elif defined(T3_V1_6_SX1276) || defined(T3_V1_6_SX1278)
|
||||
|
||||
|
||||
#if defined(T3_V1_6_SX1276)
|
||||
#ifndef USING_SX1276
|
||||
#define USING_SX1276
|
||||
#endif
|
||||
#elif defined(T3_V1_6_SX1278)
|
||||
#ifndef USING_SX1278
|
||||
#define USING_SX1278
|
||||
#endif
|
||||
#endif // T3_V1_6_SX1276
|
||||
|
||||
#define I2C_SDA 21
|
||||
#define I2C_SCL 22
|
||||
#define OLED_RST UNUSED_PIN
|
||||
|
||||
#define RADIO_SCLK_PIN 5
|
||||
#define RADIO_MISO_PIN 19
|
||||
#define RADIO_MOSI_PIN 27
|
||||
#define RADIO_CS_PIN 18
|
||||
#define RADIO_DIO0_PIN 26
|
||||
#define RADIO_RST_PIN 23
|
||||
#define RADIO_DIO1_PIN 33
|
||||
// SX1276/78
|
||||
#define RADIO_DIO2_PIN 32
|
||||
// SX1262
|
||||
#define RADIO_BUSY_PIN 32
|
||||
|
||||
#define SDCARD_MOSI 15
|
||||
#define SDCARD_MISO 2
|
||||
#define SDCARD_SCLK 14
|
||||
#define SDCARD_CS 13
|
||||
|
||||
#define BOARD_LED 25
|
||||
#define LED_ON HIGH
|
||||
|
||||
#define ADC_PIN 35
|
||||
|
||||
#define HAS_SDCARD
|
||||
#define HAS_DISPLAY
|
||||
|
||||
#define BOARD_VARIANT_NAME "T3 V1.6"
|
||||
|
||||
#define BAT_ADC_PULLUP_RES (100000.0)
|
||||
#define BAT_ADC_PULLDOWN_RES (100000.0)
|
||||
#define BAT_MAX_VOLTAGE (4.2)
|
||||
#define BAT_VOL_COMPENSATION (0.0)
|
||||
|
||||
#elif defined(T3_V1_6_SX1276_TCXO)
|
||||
|
||||
#ifndef USING_SX1276
|
||||
#define USING_SX1276
|
||||
#endif
|
||||
|
||||
#define I2C_SDA 21
|
||||
#define I2C_SCL 22
|
||||
#define OLED_RST UNUSED_PIN
|
||||
|
||||
#define RADIO_SCLK_PIN 5
|
||||
#define RADIO_MISO_PIN 19
|
||||
#define RADIO_MOSI_PIN 27
|
||||
#define RADIO_CS_PIN 18
|
||||
#define RADIO_DIO0_PIN 26
|
||||
#define RADIO_RST_PIN 23
|
||||
#define RADIO_DIO1_PIN -1//33
|
||||
/*
|
||||
* In the T3 V1.6.1 TCXO version, Radio DIO1 is connected to Radio’s
|
||||
* internal temperature-compensated crystal oscillator enable
|
||||
* */
|
||||
// TCXO pin must be set to HIGH before enabling Radio
|
||||
#define RADIO_TCXO_ENABLE 33
|
||||
#define RADIO_BUSY_PIN 32
|
||||
|
||||
#define SDCARD_MOSI 15
|
||||
#define SDCARD_MISO 2
|
||||
#define SDCARD_SCLK 14
|
||||
#define SDCARD_CS 13
|
||||
|
||||
#define BOARD_LED 25
|
||||
#define LED_ON HIGH
|
||||
|
||||
#define ADC_PIN 35
|
||||
|
||||
#define HAS_SDCARD
|
||||
#define HAS_DISPLAY
|
||||
|
||||
#define BOARD_VARIANT_NAME "T3 V1.6 TCXO"
|
||||
|
||||
#define BAT_ADC_PULLUP_RES (100000.0)
|
||||
#define BAT_ADC_PULLDOWN_RES (100000.0)
|
||||
#define BAT_MAX_VOLTAGE (4.2)
|
||||
#define BAT_VOL_COMPENSATION (0.0)
|
||||
|
||||
#elif defined(T3_V3_0)
|
||||
|
||||
|
||||
#define I2C_SDA 21
|
||||
#define I2C_SCL 22
|
||||
#define OLED_RST 4
|
||||
|
||||
#define RADIO_SCLK_PIN 5
|
||||
#define RADIO_MISO_PIN 19
|
||||
#define RADIO_MOSI_PIN 27
|
||||
#define RADIO_CS_PIN 18
|
||||
#define RADIO_RST_PIN 23
|
||||
|
||||
// TCXO pin must be set to HIGH before enabling Radio
|
||||
#define RADIO_TCXO_ENABLE 12 //only sx1276 tcxo version
|
||||
#define RADIO_BUSY_PIN 32
|
||||
|
||||
|
||||
#if defined(USING_SX1262)
|
||||
|
||||
#define RADIO_DIO1_PIN 26
|
||||
#define RADIO_BUSY_PIN 32
|
||||
|
||||
#elif defined(USING_SX1276) || defined(USING_SX1278)
|
||||
//!SX1276/78 module only
|
||||
|
||||
#define RADIO_DIO0_PIN 26
|
||||
#define RADIO_DIO1_PIN 32
|
||||
|
||||
#elif defined(USING_LR1121)
|
||||
|
||||
#define RADIO_DIO9_PIN 26 //LR1121 DIO9
|
||||
#define RADIO_BUSY_PIN 32 //LR1121 BUSY
|
||||
|
||||
#endif
|
||||
|
||||
#define SDCARD_MOSI 15
|
||||
#define SDCARD_MISO 2
|
||||
#define SDCARD_SCLK 14
|
||||
#define SDCARD_CS 13
|
||||
|
||||
#define BOARD_LED 25
|
||||
#define LED_ON HIGH
|
||||
|
||||
#define HAS_SDCARD
|
||||
#define HAS_DISPLAY
|
||||
|
||||
#define BOARD_VARIANT_NAME "T3 V3.0"
|
||||
|
||||
#define BUTTON_PIN 0
|
||||
#define ADC_PIN 35
|
||||
|
||||
#define BAT_ADC_PULLUP_RES (100000.0)
|
||||
#define BAT_ADC_PULLDOWN_RES (100000.0)
|
||||
#define BAT_MAX_VOLTAGE (4.2)
|
||||
#define BAT_VOL_COMPENSATION (0.0)
|
||||
|
||||
#elif defined(T3_S3_V1_2_SX1262) || defined(ARDUINO_LILYGO_T3S3_SX1262) || \
|
||||
defined(T3_S3_V1_2_SX1276) || defined(ARDUINO_LILYGO_T3S3_SX1276) || \
|
||||
defined(T3_S3_V1_2_SX1278) || defined(ARDUINO_LILYGO_T3S3_SX1278) || \
|
||||
defined(T3_S3_V1_2_SX1280) || defined(ARDUINO_LILYGO_T3S3_SX1280) || \
|
||||
defined(T3_S3_V1_2_SX1280_PA) || defined(ARDUINO_LILYGO_T3S3_SX1280PA) || \
|
||||
defined(T3_S3_V1_2_LR1121) || defined(ARDUINO_LILYGO_T3S3_LR1121)
|
||||
|
||||
|
||||
#if defined(T3_S3_V1_2_SX1262) || defined(ARDUINO_LILYGO_T3S3_SX1262)
|
||||
#ifndef USING_SX1262
|
||||
#define USING_SX1262
|
||||
#endif
|
||||
#elif defined(T3_S3_V1_2_SX1276) || defined(ARDUINO_LILYGO_T3S3_SX1276)
|
||||
#ifndef USING_SX1276
|
||||
#define USING_SX1276
|
||||
#endif
|
||||
#elif defined(T3_S3_V1_2_SX1278) || defined(ARDUINO_LILYGO_T3S3_SX1278)
|
||||
#ifndef USING_SX1278
|
||||
#define USING_SX1278
|
||||
#endif
|
||||
#elif defined(T3_S3_V1_2_SX1280) || defined(ARDUINO_LILYGO_T3S3_SX1280)
|
||||
#ifndef USING_SX1280
|
||||
#define USING_SX1280
|
||||
#endif
|
||||
#elif defined(T3_S3_V1_2_SX1280_PA) || defined(ARDUINO_LILYGO_T3S3_SX1280PA)
|
||||
#ifndef USING_SX1280PA
|
||||
#define USING_SX1280PA
|
||||
#endif
|
||||
#elif defined(T3_S3_V1_2_LR1121) || defined(ARDUINO_LILYGO_T3S3_LR1121)
|
||||
#ifndef USING_LR1121
|
||||
#define USING_LR1121
|
||||
#endif
|
||||
|
||||
#endif // T3_S3_V1_2_SX1262
|
||||
|
||||
|
||||
#define I2C_SDA 18
|
||||
#define I2C_SCL 17
|
||||
#define OLED_RST UNUSED_PIN
|
||||
|
||||
#define RADIO_SCLK_PIN 5
|
||||
#define RADIO_MISO_PIN 3
|
||||
#define RADIO_MOSI_PIN 6
|
||||
#define RADIO_CS_PIN 7
|
||||
|
||||
#define SDCARD_MOSI 11
|
||||
#define SDCARD_MISO 2
|
||||
#define SDCARD_SCLK 14
|
||||
#define SDCARD_CS 13
|
||||
|
||||
#define BOARD_LED 37
|
||||
#define LED_ON HIGH
|
||||
|
||||
#define BUTTON_PIN 0
|
||||
#define ADC_PIN 1
|
||||
|
||||
#define RADIO_RST_PIN 8
|
||||
|
||||
#define BAT_ADC_PULLUP_RES (100000.0)
|
||||
#define BAT_ADC_PULLDOWN_RES (100000.0)
|
||||
#define BAT_MAX_VOLTAGE (4.2)
|
||||
#define BAT_VOL_COMPENSATION (0.0)
|
||||
|
||||
#if defined(USING_SX1262)
|
||||
|
||||
#define RADIO_DIO1_PIN 33
|
||||
#define RADIO_BUSY_PIN 34
|
||||
|
||||
#elif defined(USING_SX1276) || defined(USING_SX1278)
|
||||
//!SX1276/78 module only
|
||||
#define RADIO_BUSY_PIN 33 //DIO1
|
||||
|
||||
#define RADIO_DIO0_PIN 9
|
||||
#define RADIO_DIO1_PIN 33
|
||||
#define RADIO_DIO2_PIN 34
|
||||
#define RADIO_DIO3_PIN 21
|
||||
#define RADIO_DIO4_PIN 10
|
||||
#define RADIO_DIO5_PIN 36
|
||||
|
||||
#elif defined(USING_SX1280)
|
||||
|
||||
#define RADIO_DIO1_PIN 9 //SX1280 DIO1 = IO9
|
||||
#define RADIO_BUSY_PIN 36 //SX1280 BUSY = IO36
|
||||
|
||||
#elif defined(USING_SX1280PA)
|
||||
|
||||
#define RADIO_DIO1_PIN 9 //SX1280 DIO1 = IO9
|
||||
#define RADIO_BUSY_PIN 36 //SX1280 BUSY = IO36
|
||||
#define RADIO_RX_PIN 21
|
||||
#define RADIO_TX_PIN 10
|
||||
|
||||
|
||||
#elif defined(USING_LR1121)
|
||||
|
||||
#define RADIO_DIO9_PIN 36 //LR1121 DIO9 = IO36
|
||||
#define RADIO_BUSY_PIN 34 //LR1121 BUSY = IO34
|
||||
|
||||
#endif
|
||||
|
||||
#define BUTTON_PIN 0
|
||||
|
||||
#define HAS_SDCARD
|
||||
#define HAS_DISPLAY
|
||||
|
||||
#define BOARD_VARIANT_NAME "T3-S3-V1.X"
|
||||
|
||||
|
||||
#elif defined(T_BEAM_S3_SUPREME_SX1262) || defined(T_BEAM_S3_SUPREME_LR1121)
|
||||
|
||||
#ifndef T_BEAM_S3_SUPREME
|
||||
#define T_BEAM_S3_SUPREME
|
||||
#endif
|
||||
|
||||
#if defined(T_BEAM_S3_SUPREME_SX1262)
|
||||
#ifndef USING_SX1262
|
||||
#define USING_SX1262
|
||||
#endif
|
||||
#elif defined(T_BEAM_S3_SUPREME_LR1121)
|
||||
#ifndef USING_LR1121
|
||||
#define USING_LR1121
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define I2C_SDA (17)
|
||||
#define I2C_SCL (18)
|
||||
|
||||
#define I2C1_SDA (42)
|
||||
#define I2C1_SCL (41)
|
||||
#define PMU_IRQ (40)
|
||||
|
||||
#define GPS_RX_PIN (9)
|
||||
#define GPS_TX_PIN (8)
|
||||
#define GPS_WAKEUP_PIN (7)
|
||||
#define GPS_PPS_PIN (6)
|
||||
|
||||
#define BUTTON_PIN (0)
|
||||
#define BUTTON_PIN_MASK (GPIO_SEL_0)
|
||||
#define BUTTON_COUNT (1)
|
||||
#define BUTTON_ARRAY {BUTTON_PIN}
|
||||
|
||||
#define RADIO_SCLK_PIN (12)
|
||||
#define RADIO_MISO_PIN (13)
|
||||
#define RADIO_MOSI_PIN (11)
|
||||
#define RADIO_CS_PIN (10)
|
||||
#define RADIO_DIO0_PIN (-1)
|
||||
#define RADIO_RST_PIN (5)
|
||||
#define RADIO_DIO1_PIN (1)
|
||||
#define RADIO_BUSY_PIN (4)
|
||||
|
||||
// LR1121 Version
|
||||
#define RADIO_DIO9_PIN (1)
|
||||
|
||||
#define SPI_MOSI (35)
|
||||
#define SPI_SCK (36)
|
||||
#define SPI_MISO (37)
|
||||
#define SPI_CS (47)
|
||||
#define IMU_CS (34)
|
||||
#define IMU_INT (33)
|
||||
|
||||
#define SDCARD_MOSI SPI_MOSI
|
||||
#define SDCARD_MISO SPI_MISO
|
||||
#define SDCARD_SCLK SPI_SCK
|
||||
#define SDCARD_CS SPI_CS
|
||||
|
||||
#define RTC_INT (14)
|
||||
|
||||
#define GPS_BAUD_RATE (9600)
|
||||
|
||||
#define HAS_SDCARD
|
||||
#define HAS_GPS
|
||||
#define HAS_DISPLAY
|
||||
#define HAS_PMU
|
||||
|
||||
#define __HAS_SPI1__
|
||||
#define HAS_SENSOR
|
||||
|
||||
#define PMU_WIRE_PORT Wire1
|
||||
#define DISPLAY_MODEL U8G2_SH1106_128X64_NONAME_F_HW_I2C
|
||||
#define DISPLAY_MODEL_SSD_LIB SH1106Wire
|
||||
#define BOARD_VARIANT_NAME "T-Beam S3"
|
||||
|
||||
#elif defined(T_MOTION_S76G)
|
||||
|
||||
#ifndef USING_SX1276
|
||||
#define USING_SX1276
|
||||
#endif
|
||||
|
||||
|
||||
#define RADIO_SCLK_PIN PB13
|
||||
#define RADIO_MISO_PIN PB14
|
||||
#define RADIO_MOSI_PIN PB15
|
||||
#define RADIO_CS_PIN PB12
|
||||
#define RADIO_RST_PIN PB10
|
||||
|
||||
#define RADIO_DIO0_PIN PB11
|
||||
#define RADIO_DIO1_PIN PC13
|
||||
#define RADIO_DIO2_PIN PB9
|
||||
#define RADIO_DIO3_PIN PB4
|
||||
#define RADIO_DIO4_PIN PB3
|
||||
#define RADIO_DIO5_PIN PA15
|
||||
|
||||
#undef RADIO_BUSY_PIN
|
||||
#undef RADIO_DIO1_PIN
|
||||
#define RADIO_BUSY_PIN PC13 //DIO1
|
||||
#define RADIO_DIO1_PIN PB11 //DIO0
|
||||
|
||||
#define RADIO_SWITCH_PIN PA1 //1:Rx, 0:Tx
|
||||
|
||||
#define GPS_EN_PIN PC6
|
||||
#define GPS_RST_PIN PB2
|
||||
#define GPS_RX_PIN PC11
|
||||
#define GPS_TX_PIN PC10
|
||||
#define GPS_ENABLE_PIN PC6
|
||||
#define GPS_BAUD_RATE 115200
|
||||
#define GPS_PPS_PIN PB5
|
||||
|
||||
#define UART_RX_PIN PA10
|
||||
#define UART_TX_PIN PA9
|
||||
|
||||
#define I2C_SCL PB6
|
||||
#define I2C_SDA PB7
|
||||
|
||||
#define BOARD_VARIANT_NAME "T-Motion S76G"
|
||||
|
||||
#define HAS_GPS
|
||||
|
||||
#elif defined(T3_C6)
|
||||
|
||||
|
||||
#ifndef USING_SX1262
|
||||
#define USING_SX1262
|
||||
#endif
|
||||
|
||||
|
||||
#define RADIO_SCLK_PIN 6
|
||||
#define RADIO_MISO_PIN 1
|
||||
#define RADIO_MOSI_PIN 0
|
||||
#define RADIO_CS_PIN 18
|
||||
#define RADIO_DIO1_PIN 23
|
||||
#define RADIO_BUSY_PIN 22
|
||||
#define RADIO_RST_PIN 21
|
||||
|
||||
#define I2C_SDA 8
|
||||
#define I2C_SCL 9
|
||||
|
||||
#define BOARD_LED 7
|
||||
#define LED_ON HIGH
|
||||
#define RADIO_RX_PIN 15
|
||||
#define RADIO_TX_PIN 14
|
||||
|
||||
|
||||
#define BOARD_VARIANT_NAME "T3-C6"
|
||||
|
||||
#define USING_DIO2_AS_RF_SWITCH
|
||||
|
||||
|
||||
#elif defined(T_BEAM_S3_BPF)
|
||||
|
||||
|
||||
#ifndef USING_SX1278
|
||||
#define USING_SX1278
|
||||
#endif
|
||||
|
||||
#define I2C_SDA (8)
|
||||
#define I2C_SCL (9)
|
||||
|
||||
#define PMU_IRQ (4)
|
||||
|
||||
#define GPS_RX_PIN (5)
|
||||
#define GPS_TX_PIN (6)
|
||||
#define GPS_PPS_PIN (7)
|
||||
|
||||
#define BUTTON_PIN (0)
|
||||
#define BUTTON2_PIN (3) /*BUTTON 2 = GPIO3*/
|
||||
#define BUTTON_PIN_MASK GPIO_SEL_0 /*BUTTON 1 = GPIO0*/
|
||||
#define BUTTON_COUNT (2)
|
||||
#define BUTTON_ARRAY {BUTTON_PIN, BUTTON2_PIN /*BUTTON 2 = GPIO3*/}
|
||||
|
||||
#define RADIO_SCLK_PIN (12)//(41)
|
||||
#define RADIO_MISO_PIN (13)//(42)
|
||||
#define RADIO_MOSI_PIN (11)//(2)
|
||||
#define RADIO_CS_PIN (1)
|
||||
#define RADIO_RST_PIN (18)
|
||||
|
||||
#define RADIO_DIO0_PIN (14)
|
||||
#define RADIO_DIO1_PIN (21)
|
||||
|
||||
// #define RADIO_TCXO_ENABLE (17)
|
||||
#define RADIO_LDO_EN (16)
|
||||
#define RADIO_CTRL (39)
|
||||
|
||||
#define SPI_MOSI (11)
|
||||
#define SPI_SCK (12)
|
||||
#define SPI_MISO (13)
|
||||
#define SPI_CS (10)
|
||||
|
||||
#define SDCARD_MOSI SPI_MOSI
|
||||
#define SDCARD_MISO SPI_MISO
|
||||
#define SDCARD_SCLK SPI_SCK
|
||||
#define SDCARD_CS SPI_CS
|
||||
|
||||
|
||||
#define GPS_BAUD_RATE 9600
|
||||
|
||||
#define HAS_SDCARD
|
||||
#define HAS_GPS
|
||||
#define HAS_DISPLAY
|
||||
#define HAS_PMU
|
||||
#define SD_SHARE_SPI_BUS
|
||||
|
||||
#define PMU_WIRE_PORT Wire
|
||||
#define DISPLAY_MODEL U8G2_SH1106_128X64_NONAME_F_HW_I2C
|
||||
#define DISPLAY_MODEL_SSD_LIB SH1106Wire
|
||||
#define BOARD_VARIANT_NAME "T-Beam BPF"
|
||||
|
||||
|
||||
#elif defined(T_BEAM_2W)
|
||||
|
||||
#ifndef USING_SX1262
|
||||
#define USING_SX1262
|
||||
#endif
|
||||
|
||||
#define I2C_SDA (8)
|
||||
#define I2C_SCL (9)
|
||||
|
||||
#define GPS_RX_PIN (5)
|
||||
#define GPS_TX_PIN (6)
|
||||
#define GPS_PPS_PIN (7)
|
||||
#define GPS_EN_PIN (10)
|
||||
|
||||
#define BUTTON_PIN (0) /*BUTTON 1 = GPIO0*/
|
||||
#define BUTTON2_PIN (2) /*BUTTON 2 = GPIO3*/
|
||||
|
||||
#define BUTTON_PIN_MASK GPIO_SEL_0
|
||||
#define BUTTON_CONUT (2)
|
||||
#define BUTTON_ARRAY {BUTTON_PIN,BUTTON2_PIN/*BUTTON 2 = GPIO3*/}
|
||||
|
||||
#define SPI_MOSI (11)
|
||||
#define SPI_SCK (13)
|
||||
#define SPI_MISO (12)
|
||||
#define SPI_CS (10)
|
||||
|
||||
#define RADIO_SCLK_PIN (16)
|
||||
#define RADIO_MISO_PIN (17)
|
||||
#define RADIO_MOSI_PIN (18)
|
||||
|
||||
#define RADIO_CS_PIN (15)
|
||||
#define RADIO_RST_PIN (3)
|
||||
#define RADIO_LDO_EN (40)
|
||||
#define RADIO_CTRL (21)
|
||||
#define RADIO_DIO1_PIN (1)
|
||||
#define RADIO_BUSY_PIN (38)
|
||||
|
||||
// #define SDCARD_MOSI SPI_MOSI
|
||||
// #define SDCARD_MISO SPI_MISO
|
||||
// #define SDCARD_SCLK SPI_SCK
|
||||
// #define SDCARD_CS SPI_CS
|
||||
|
||||
#define NTC_PIN (14)
|
||||
#define FAN_CTRL (41)
|
||||
#define ADC_PIN (4)
|
||||
|
||||
#define BAT_ADC_PULLUP_RES (300000.0)
|
||||
#define BAT_ADC_PULLDOWN_RES (150000.0)
|
||||
#define BAT_MAX_VOLTAGE (7.4)
|
||||
#define BAT_VOL_COMPENSATION (0.25)
|
||||
#define GPS_SLEEP_HOLD_ON_LOW
|
||||
|
||||
#define GPS_BAUD_RATE 9600
|
||||
|
||||
// #define HAS_SDCARD
|
||||
#define HAS_GPS
|
||||
#define HAS_DISPLAY
|
||||
|
||||
#define __HAS_SPI1__
|
||||
|
||||
#define DISPLAY_MODEL U8G2_SH1106_128X64_NONAME_F_HW_I2C
|
||||
#define DISPLAY_MODEL_SSD_LIB SH1106Wire
|
||||
#define BOARD_VARIANT_NAME "LoRa 2W"
|
||||
|
||||
/*
|
||||
* 2w LoRa max set power is +3 dBm ,After passing through PA, the power can reach 33dBm
|
||||
* -3dBm = +27dBm
|
||||
* 0 dBm = +30dBm
|
||||
* 3 dBm = +33dBm
|
||||
* */
|
||||
#define RADIO_MAX_OUTPUT_POWER 3
|
||||
|
||||
#else
|
||||
#error "When using it for the first time, please define the board model in <utilities.h>"
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#if defined(USING_SX1262)
|
||||
#define RADIO_TYPE_STR "SX1262"
|
||||
#elif defined(USING_SX1276)
|
||||
#define RADIO_TYPE_STR "SX1276"
|
||||
#elif defined(USING_SX1278)
|
||||
#define RADIO_TYPE_STR "SX1278"
|
||||
#elif defined(USING_LR1121)
|
||||
#define RADIO_TYPE_STR "LR1121"
|
||||
#elif defined(USING_SX1280)
|
||||
#define RADIO_TYPE_STR "SX1280"
|
||||
#elif defined(USING_SX1280PA)
|
||||
#define RADIO_TYPE_STR "SX1280PA"
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue