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
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										14
									
								
								src/main.cpp
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								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
 | 
				
			||||||
 | 
					    #ifdef BUTTON_PULLUP
 | 
				
			||||||
 | 
					        // 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);
 | 
					        pinMode(HAS_BUTTON, INPUT_PULLDOWN);
 | 
				
			||||||
        attachInterrupt(digitalPinToInterrupt(HAS_BUTTON), isr_button_pressed, FALLING); 
 | 
					        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