Merge pull request #11 from cyberman54/development
LoLin support added, thanks to Charles Hallard
This commit is contained in:
commit
3453a62eff
@ -23,6 +23,7 @@ Currently supported IoT boards:
|
|||||||
- TTGOv2
|
- TTGOv2
|
||||||
- Pycom LoPy
|
- Pycom LoPy
|
||||||
- Pycom LoPy4
|
- Pycom LoPy4
|
||||||
|
- LoLin32 with [LoraNode32 shield](https://github.com/hallard/LoLin32-Lora)
|
||||||
|
|
||||||
Target platform must be selected in [platformio.ini](https://github.com/cyberman54/ESP32-Paxcounter/blob/master/platformio.ini).<br>
|
Target platform must be selected in [platformio.ini](https://github.com/cyberman54/ESP32-Paxcounter/blob/master/platformio.ini).<br>
|
||||||
Hardware dependent settings (pinout etc.) are stored in board files in /hal directory.<br>
|
Hardware dependent settings (pinout etc.) are stored in board files in /hal directory.<br>
|
||||||
@ -37,6 +38,7 @@ Hardware dependent settings (pinout etc.) are stored in board files in /hal dire
|
|||||||
- TTGOv2 ~670mW
|
- TTGOv2 ~670mW
|
||||||
- LoPy with expansion board: ~530mW
|
- LoPy with expansion board: ~530mW
|
||||||
- LoPy pure, without expansion board: ~460mW
|
- LoPy pure, without expansion board: ~460mW
|
||||||
|
- LoLin32 with [LoraNode32 shield](https://github.com/hallard/LoLin32-Lora): TBD
|
||||||
|
|
||||||
These results where metered with software version 1.2.0 during active wifi scan, no LoRa TX’ing, OLED display off, 5V USB powered.
|
These results where metered with software version 1.2.0 during active wifi scan, no LoRa TX’ing, OLED display off, 5V USB powered.
|
||||||
|
|
||||||
|
@ -10,11 +10,12 @@
|
|||||||
|
|
||||||
; ---> SELECT TARGET PLATFORM HERE! <---
|
; ---> SELECT TARGET PLATFORM HERE! <---
|
||||||
[platformio]
|
[platformio]
|
||||||
env_default = heltec_wifi_lora_32
|
;env_default = heltec_wifi_lora_32
|
||||||
;env_default = ttgov1
|
;env_default = ttgov1
|
||||||
;env_default = ttgov2
|
;env_default = ttgov2
|
||||||
;env_default = lopy
|
;env_default = lopy
|
||||||
;env_default = lopy4
|
;env_default = lopy4
|
||||||
|
env_default = lolin32_lora
|
||||||
|
|
||||||
[env:heltec_wifi_lora_32]
|
[env:heltec_wifi_lora_32]
|
||||||
platform = espressif32
|
platform = espressif32
|
||||||
@ -124,3 +125,27 @@ build_flags =
|
|||||||
-include "src/hal/lopy4.h"
|
-include "src/hal/lopy4.h"
|
||||||
;FreeRTOS single core operation, switches off core 1 (see arduino-esp32/cores/esp32/main.cpp)
|
;FreeRTOS single core operation, switches off core 1 (see arduino-esp32/cores/esp32/main.cpp)
|
||||||
; -DCONFIG_FREERTOS_UNICORE
|
; -DCONFIG_FREERTOS_UNICORE
|
||||||
|
|
||||||
|
[env:lolin32_lora]
|
||||||
|
platform = espressif32
|
||||||
|
board = lolin32
|
||||||
|
framework = arduino
|
||||||
|
monitor_baud = 115200
|
||||||
|
upload_speed = 921600
|
||||||
|
lib_deps =
|
||||||
|
U8g2
|
||||||
|
ESP32 BLE Arduino@>=0.4.9
|
||||||
|
build_flags =
|
||||||
|
;set log level, we need build_flag for this, otherwise we can't use ESP_LOGx in arduino framework
|
||||||
|
-DCORE_DEBUG_LEVEL=ARDUHAL_LOG_LEVEL_VERBOSE
|
||||||
|
; -DCORE_DEBUG_LEVEL=ARDUHAL_LOG_LEVEL_NONE
|
||||||
|
;needed for ESP32 BLE Ardunio v0.4.9
|
||||||
|
-fexceptions
|
||||||
|
-std=c++11
|
||||||
|
;override lora settings from LMiC library in lmic/config.h and use main.h instead
|
||||||
|
-D_lmic_config_h_
|
||||||
|
-include "src/main.h"
|
||||||
|
-include "src/hal/lolin32_lora.h"
|
||||||
|
;FreeRTOS single core operation, switches off core 1 (see arduino-esp32/cores/esp32/main.cpp)
|
||||||
|
; -DCONFIG_FREERTOS_UNICORE
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ class MyAdvertisedDeviceCallbacks: public BLEAdvertisedDeviceCallbacks {
|
|||||||
void BLECount() {
|
void BLECount() {
|
||||||
u8x8.clearLine(3);
|
u8x8.clearLine(3);
|
||||||
u8x8.drawString(0,3,"BLE Scan...");
|
u8x8.drawString(0,3,"BLE Scan...");
|
||||||
BLEDevice::init("PaxCnt");
|
BLEDevice::init(PROGNAME);
|
||||||
BLEScan* pBLEScan = BLEDevice::getScan(); //create new scan
|
BLEScan* pBLEScan = BLEDevice::getScan(); //create new scan
|
||||||
pBLEScan->setAdvertisedDeviceCallbacks(new MyAdvertisedDeviceCallbacks());
|
pBLEScan->setAdvertisedDeviceCallbacks(new MyAdvertisedDeviceCallbacks());
|
||||||
pBLEScan->setActiveScan(true); //active scan uses more power, but get results faster
|
pBLEScan->setActiveScan(true); //active scan uses more power, but get results faster
|
||||||
|
32
src/hal/lolin32_lora.h
Normal file
32
src/hal/lolin32_lora.h
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
// Hardware related definitions for lolin32 loraNode32 shield
|
||||||
|
// See https://github.com/hallard/LoLin32-Lora
|
||||||
|
|
||||||
|
// disable brownout detection (avoid unexpected reset on some boards)
|
||||||
|
#define DISABLE_BROWNOUT 1 // comment out if you want to keep brownout feature
|
||||||
|
|
||||||
|
#define HAS_DISPLAY U8X8_SSD1306_128X64_NONAME_HW_I2C // OLED-Display on board
|
||||||
|
#define HAS_LED NOT_A_PIN // Led os on same pin than Lora SS pin, to avoid pb, we don't use it
|
||||||
|
// Anyway shield is on over the LoLin32 board, so we won't be able to see this LED
|
||||||
|
#define HAS_RGB_LED 13 // ESP32 GPIO13 (pin13) On Board Shield WS2812B RGB LED
|
||||||
|
#define HAS_BUTTON 15 // ESP32 GPIO15 (pin15) Button is on the LoraNode32 shield
|
||||||
|
#define BUTTON_PULLUP 1 // Button need pullup instead of default pulldown
|
||||||
|
|
||||||
|
#define CFG_sx1276_radio 1 // RFM95 module
|
||||||
|
|
||||||
|
// re-define pin definitions of pins_arduino.h
|
||||||
|
#define PIN_SPI_SS 5 // ESP32 GPIO5 (Pin5) -- SX1276 NSS (Pin19) SPI Chip Select Input
|
||||||
|
#define PIN_SPI_MOSI 23 // ESP32 GPIO23 (Pin23) -- SX1276 MOSI (Pin18) SPI Data Input
|
||||||
|
#define PIN_SPI_MISO 19 // ESP32 GPIO19 (Pin19) -- SX1276 MISO (Pin17) SPI Data Output
|
||||||
|
#define PIN_SPI_SCK 18 // ESP32 GPIO18 (Pin18 -- SX1276 SCK (Pin16) SPI Clock Input
|
||||||
|
|
||||||
|
// non arduino pin definitions
|
||||||
|
#define RST 25 // ESP32 GPIO25 (Pin25) -- SX1276 NRESET (Pin7) Reset Trigger Input
|
||||||
|
#define DIO0 27 // ESP32 GPIO27 (Pin27) -- SX1276 DIO0 (Pin8) used by LMIC for detecting LoRa RX_Done & TX_Done
|
||||||
|
#define DIO1 26 // ESP32 GPIO26 (Pin26) -- SX1276 DIO1 (Pin9) used by LMIC for detecting LoRa RX_Timeout
|
||||||
|
#define DIO2 4 // ESP32 GPIO4 (Pin4) -- SX1276 DIO2 (Pin10) not used by LMIC for LoRa (Timeout for FSK only)
|
||||||
|
|
||||||
|
// Hardware pin definitions for LoRaNode32 Board with OLED I2C Display
|
||||||
|
#define OLED_RST U8X8_PIN_NONE // Not reset pin
|
||||||
|
#define OLED_SDA 21 // ESP32 GPIO21 (Pin21) -- OLED SDA
|
||||||
|
#define OLED_SCL 22 // ESP32 GPIO22 (Pin22) -- OLED SCL
|
||||||
|
|
@ -3,6 +3,10 @@
|
|||||||
#define CFG_sx1276_radio 1 // HPD13A LoRa SoC
|
#define CFG_sx1276_radio 1 // HPD13A LoRa SoC
|
||||||
|
|
||||||
#define HAS_DISPLAY U8X8_SSD1306_128X64_NONAME_HW_I2C
|
#define HAS_DISPLAY U8X8_SSD1306_128X64_NONAME_HW_I2C
|
||||||
|
//#define HAS_LED NOT_A_PIN // on-board LED is wired to SCL (used by display) therefore totally useless
|
||||||
|
|
||||||
|
// disable brownout detection (needed on TTGOv2 for battery powered operation)
|
||||||
|
#define DISABLE_BROWNOUT 1 // comment out if you want to keep brownout feature
|
||||||
|
|
||||||
// re-define pin definitions of pins_arduino.h
|
// re-define pin definitions of pins_arduino.h
|
||||||
#define PIN_SPI_SS 18 // ESP32 GPIO18 (Pin18) -- HPD13A NSS/SEL (Pin4) SPI Chip Select Input
|
#define PIN_SPI_SS 18 // ESP32 GPIO18 (Pin18) -- HPD13A NSS/SEL (Pin4) SPI Chip Select Input
|
||||||
|
18
src/main.cpp
18
src/main.cpp
@ -323,6 +323,12 @@ void init_display(const char *Productname, const char *Version) {
|
|||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
|
|
||||||
|
// disable brownout detection
|
||||||
|
#ifdef DISABLE_BROWNOUT
|
||||||
|
// Register with brownout is at address DR_REG_RTCCNTL_BASE + 0xd4
|
||||||
|
(*((volatile uint32_t *)ETS_UNCACHED_ADDR((DR_REG_RTCCNTL_BASE+0xd4)))) = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
// setup debug output or silence device
|
// setup debug output or silence device
|
||||||
#ifdef VERBOSE
|
#ifdef VERBOSE
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
@ -361,10 +367,16 @@ void setup() {
|
|||||||
digitalWrite(HAS_LED, LOW);
|
digitalWrite(HAS_LED, LOW);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// install button interrupt
|
|
||||||
#ifdef HAS_BUTTON
|
#ifdef HAS_BUTTON
|
||||||
pinMode(HAS_BUTTON, INPUT_PULLDOWN);
|
#ifdef BUTTON_PULLUP
|
||||||
attachInterrupt(digitalPinToInterrupt(HAS_BUTTON), isr_button_pressed, FALLING);
|
// install button interrupt (pullup mode)
|
||||||
|
pinMode(HAS_BUTTON, INPUT_PULLUP);
|
||||||
|
attachInterrupt(digitalPinToInterrupt(HAS_BUTTON), isr_button_pressed, RISING);
|
||||||
|
#else
|
||||||
|
// install button interrupt (pulldown mode)
|
||||||
|
pinMode(HAS_BUTTON, INPUT_PULLDOWN);
|
||||||
|
attachInterrupt(digitalPinToInterrupt(HAS_BUTTON), isr_button_pressed, FALLING);
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// initialize wifi antenna
|
// initialize wifi antenna
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// program version
|
// program version
|
||||||
#define PROGVERSION "1.2.41" // use max 10 chars here!
|
#define PROGVERSION "1.2.5" // use max 10 chars here!
|
||||||
#define PROGNAME "PAXCNT"
|
#define PROGNAME "PAXCNT"
|
||||||
|
|
||||||
// Verbose enables serial output
|
// Verbose enables serial output
|
||||||
|
@ -13,15 +13,6 @@
|
|||||||
// Local logging tag
|
// Local logging tag
|
||||||
static const char *TAG = "rcommand";
|
static const char *TAG = "rcommand";
|
||||||
|
|
||||||
// functions defined in configmanager.cpp
|
|
||||||
void eraseConfig(void);
|
|
||||||
void saveConfig(void);
|
|
||||||
|
|
||||||
// defined in antenna.cpp
|
|
||||||
#ifdef HAS_ANTENNA_SWITCH
|
|
||||||
void antenna_select(const int8_t _ant);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// table of remote commands and assigned functions
|
// table of remote commands and assigned functions
|
||||||
typedef struct {
|
typedef struct {
|
||||||
const int nam;
|
const int nam;
|
||||||
@ -29,7 +20,16 @@ typedef struct {
|
|||||||
const bool store;
|
const bool store;
|
||||||
} cmd_t;
|
} cmd_t;
|
||||||
|
|
||||||
// help function to assign LoRa datarates to spreadfactor values
|
// functions defined in configmanager.cpp
|
||||||
|
void eraseConfig(void);
|
||||||
|
void saveConfig(void);
|
||||||
|
|
||||||
|
// function defined in antenna.cpp
|
||||||
|
#ifdef HAS_ANTENNA_SWITCH
|
||||||
|
void antenna_select(const int8_t _ant);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// help function to assign LoRa datarates to numeric spreadfactor values
|
||||||
void switch_lora (int sf, int tx) {
|
void switch_lora (int sf, int tx) {
|
||||||
if ( tx > 20 ) return;
|
if ( tx > 20 ) return;
|
||||||
cfg.txpower = tx;
|
cfg.txpower = tx;
|
||||||
|
Loading…
Reference in New Issue
Block a user