Merge pull request #3 from cyberman54/TTGOv1-test
TTGOv1 support added (experimental, not yet tested)
This commit is contained in:
commit
3267c50fa4
@ -1,6 +1,6 @@
|
|||||||
# Paxcounter
|
# Paxcounter
|
||||||
Wifi & Bluetooth driven, LoRaWAN enabled, battery powered mini ESP32 Paxcounter
|
**Wifi & Bluetooth driven, LoRaWAN enabled, battery powered mini ESP32 Paxcounter
|
||||||
built on cheap ESP32 boards
|
built on cheap ESP32 boards**
|
||||||
|
|
||||||
<img src="img/foto_no_exif.jpg">
|
<img src="img/foto_no_exif.jpg">
|
||||||
|
|
||||||
@ -8,6 +8,7 @@ built on cheap ESP32 boards
|
|||||||
|
|
||||||
Currently supported IoT boards:
|
Currently supported IoT boards:
|
||||||
- Heltec LoRa-32
|
- Heltec LoRa-32
|
||||||
|
- TTGOv1
|
||||||
- TTGOv2
|
- TTGOv2
|
||||||
- Pycom LoPy
|
- Pycom LoPy
|
||||||
- Pycom LoPy4
|
- Pycom LoPy4
|
||||||
@ -153,6 +154,10 @@ Note: all settings are stored in NVRAM and will be reloaded when device starts.
|
|||||||
|
|
||||||
bytes 1-7: Uptime in seconds (little endian format)
|
bytes 1-7: Uptime in seconds (little endian format)
|
||||||
|
|
||||||
|
0x82 get device cpu temperature
|
||||||
|
|
||||||
|
bytes 1-3: chip temperature in celsius (little endian format)
|
||||||
|
|
||||||
# License
|
# License
|
||||||
|
|
||||||
Copyright 2018 Oliver Brandmueller <ob@sysadm.in>
|
Copyright 2018 Oliver Brandmueller <ob@sysadm.in>
|
||||||
|
@ -9,8 +9,9 @@
|
|||||||
; http://docs.platformio.org/page/projectconf.html
|
; http://docs.platformio.org/page/projectconf.html
|
||||||
|
|
||||||
[platformio]
|
[platformio]
|
||||||
env_default = heltec_wifi_lora_32
|
;env_default = heltec_wifi_lora_32
|
||||||
;env_default = ttgo
|
env_default = ttgov2
|
||||||
|
;env_default = ttgov1
|
||||||
;env_default = lopy
|
;env_default = lopy
|
||||||
;env_default = lopy4
|
;env_default = lopy4
|
||||||
|
|
||||||
@ -34,7 +35,7 @@ build_flags =
|
|||||||
;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:ttgo]
|
[env:ttgov1]
|
||||||
platform = espressif32
|
platform = espressif32
|
||||||
board = esp32dev
|
board = esp32dev
|
||||||
framework = arduino
|
framework = arduino
|
||||||
@ -50,7 +51,28 @@ build_flags =
|
|||||||
;override lora settings from LMiC library in lmic/config.h and use main.h instead
|
;override lora settings from LMiC library in lmic/config.h and use main.h instead
|
||||||
-D_lmic_config_h_
|
-D_lmic_config_h_
|
||||||
-include "src/main.h"
|
-include "src/main.h"
|
||||||
-include "src/hal/ttgo.h"
|
-include "src/hal/ttgov1.h"
|
||||||
|
;FreeRTOS single core operation, switches off core 1 (see arduino-esp32/cores/esp32/main.cpp)
|
||||||
|
; -DCONFIG_FREERTOS_UNICORE
|
||||||
|
|
||||||
|
|
||||||
|
[env:ttgov2]
|
||||||
|
platform = espressif32
|
||||||
|
board = esp32dev
|
||||||
|
framework = arduino
|
||||||
|
monitor_baud = 115200
|
||||||
|
lib_deps = U8g2
|
||||||
|
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/ttgov2.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
|
||||||
|
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
#define HELTEC
|
#define HELTEC
|
||||||
#define HAS_DISPLAY // has OLED-Display
|
#define HAS_DISPLAY // has OLED-Display
|
||||||
#define HAS_LED // has on usable board LED
|
#define HAS_LED // has usable on board LED
|
||||||
#define HAS_BUTTON // has onboard button
|
#define HAS_BUTTON // has usable on board button
|
||||||
#define CFG_sx1276_radio 1
|
#define CFG_sx1276_radio 1
|
||||||
|
|
||||||
// re-define pin definitions of pins_arduino.h
|
// re-define pin definitions of pins_arduino.h
|
||||||
|
22
src/hal/ttgov1.h
Normal file
22
src/hal/ttgov1.h
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
// Hardware related definitions for Heltec TTGOv1 board
|
||||||
|
|
||||||
|
#define TTGO
|
||||||
|
#define HAS_DISPLAY // has OLED-Display
|
||||||
|
#define CFG_sx1276_radio 1
|
||||||
|
|
||||||
|
// re-define pin definitions of pins_arduino.h
|
||||||
|
#define PIN_SPI_SS 18 // ESP32 GPIO18 (Pin18) -- SX1276 NSS (Pin19) SPI Chip Select Input
|
||||||
|
#define PIN_SPI_MOSI 27 // ESP32 GPIO27 (Pin27) -- SX1276 MOSI (Pin18) SPI Data Input
|
||||||
|
#define PIN_SPI_MISO 19 // ESP32 GPIO19 (Pin19) -- SX1276 MISO (Pin17) SPI Data Output
|
||||||
|
#define PIN_SPI_SCK 5 // ESP32 GPIO5 (Pin5) -- SX1276 SCK (Pin16) SPI Clock Input
|
||||||
|
|
||||||
|
// non arduino pin definitions
|
||||||
|
#define RST 14 // ESP32 GPIO14 (Pin14) -- SX1276 NRESET (Pin7) Reset Trigger Input
|
||||||
|
#define DIO0 26 // ESP32 GPIO26 (Pin15) -- SX1276 DIO0 (Pin8) used by LMIC for detecting LoRa RX_Done & TX_Done
|
||||||
|
#define DIO1 33 // ESP32 GPIO33 (Pin13) -- SX1276 DIO1 (Pin9) used by LMIC for detecting LoRa RX_Timeout
|
||||||
|
#define DIO2 32 // ESP32 GPIO32 (Pin12) -- SX1276 DIO2 (Pin10) not used by LMIC for LoRa (Timeout for FSK only)
|
||||||
|
|
||||||
|
// Hardware pin definitions for Heltec LoRa-32 Board with OLED SSD1306 I2C Display
|
||||||
|
#define OLED_RST 16 // ESP32 GPIO16 (Pin16) -- SD1306 Reset
|
||||||
|
#define OLED_SDA 4 // ESP32 GPIO4 (Pin4) -- SD1306 Data
|
||||||
|
#define OLED_SCL 15 // ESP32 GPIO15 (Pin15) -- SD1306 Clock
|
@ -326,8 +326,11 @@ void setup() {
|
|||||||
|
|
||||||
ESP_LOGI(TAG, "Starting %s %s", PROGNAME, PROGVERSION);
|
ESP_LOGI(TAG, "Starting %s %s", PROGNAME, PROGVERSION);
|
||||||
|
|
||||||
|
/*
|
||||||
|
tcpip_adapter_init(); // not sure if necessary, but seems needed for TTGOv1
|
||||||
// ESP Event Loop
|
// ESP Event Loop
|
||||||
esp_event_loop_init(NULL, NULL);
|
esp_event_loop_init(NULL, NULL); // not sure if necessary -> to be checked
|
||||||
|
*/
|
||||||
|
|
||||||
// Print chip information on startup
|
// Print chip information on startup
|
||||||
#ifdef VERBOSE
|
#ifdef VERBOSE
|
||||||
@ -339,6 +342,7 @@ void setup() {
|
|||||||
(chip_info.features & CHIP_FEATURE_BLE) ? "/BLE" : "",
|
(chip_info.features & CHIP_FEATURE_BLE) ? "/BLE" : "",
|
||||||
chip_info.revision, spi_flash_get_chip_size() / (1024 * 1024),
|
chip_info.revision, spi_flash_get_chip_size() / (1024 * 1024),
|
||||||
(chip_info.features & CHIP_FEATURE_EMB_FLASH) ? "embedded" : "external");
|
(chip_info.features & CHIP_FEATURE_EMB_FLASH) ? "embedded" : "external");
|
||||||
|
ESP_LOGI(TAG, "ESP32 SDK: %s", ESP.getSdkVersion());
|
||||||
#endif // VERBOSE
|
#endif // VERBOSE
|
||||||
|
|
||||||
// Read settings from NVRAM
|
// Read settings from NVRAM
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// program version
|
// program version
|
||||||
#define PROGVERSION "1.2.0" // use max 10 chars here!
|
#define PROGVERSION "1.2.22" // use max 10 chars here!
|
||||||
#define PROGNAME "PAXCNT"
|
#define PROGNAME "PAXCNT"
|
||||||
|
|
||||||
// Verbose enables serial output
|
// Verbose enables serial output
|
||||||
|
@ -165,7 +165,7 @@ void get_config (int val) {
|
|||||||
memcpy(sendData, &cfg, size);
|
memcpy(sendData, &cfg, size);
|
||||||
LMIC_setTxData2(RCMDPORT, sendData, size-1, 0); // send data unconfirmed on RCMD Port
|
LMIC_setTxData2(RCMDPORT, sendData, size-1, 0); // send data unconfirmed on RCMD Port
|
||||||
delete sendData; // free memory
|
delete sendData; // free memory
|
||||||
ESP_LOGI(TAG, "Configuration data queued in send queue");
|
ESP_LOGI(TAG, "%i bytes queued in send queue", size-1);
|
||||||
};
|
};
|
||||||
|
|
||||||
void get_uptime (int val) {
|
void get_uptime (int val) {
|
||||||
@ -175,7 +175,18 @@ void get_uptime (int val) {
|
|||||||
memcpy(sendData, (unsigned char*)&uptimecounter, size);
|
memcpy(sendData, (unsigned char*)&uptimecounter, size);
|
||||||
LMIC_setTxData2(RCMDPORT, sendData, size-1, 0); // send data unconfirmed on RCMD Port
|
LMIC_setTxData2(RCMDPORT, sendData, size-1, 0); // send data unconfirmed on RCMD Port
|
||||||
delete sendData; // free memory
|
delete sendData; // free memory
|
||||||
ESP_LOGI(TAG, "Uptime queued in send queue");
|
ESP_LOGI(TAG, "%i bytes queued in send queue", size-1);
|
||||||
|
};
|
||||||
|
|
||||||
|
void get_cputemp (int val) {
|
||||||
|
ESP_LOGI(TAG, "Remote command: get cpu temperature");
|
||||||
|
float temp = temperatureRead();
|
||||||
|
int size = sizeof(temp);
|
||||||
|
unsigned char *sendData = new unsigned char[size];
|
||||||
|
memcpy(sendData, (unsigned char*)&temp, size);
|
||||||
|
LMIC_setTxData2(RCMDPORT, sendData, size-1, 0); // send data unconfirmed on RCMD Port
|
||||||
|
delete sendData; // free memory
|
||||||
|
ESP_LOGI(TAG, "%i bytes queued in send queue", size-1);
|
||||||
};
|
};
|
||||||
|
|
||||||
// assign previously defined functions to set of numeric remote commands
|
// assign previously defined functions to set of numeric remote commands
|
||||||
@ -197,6 +208,7 @@ cmd_t table[] = {
|
|||||||
{0x0d, set_blescan, true},
|
{0x0d, set_blescan, true},
|
||||||
{0x80, get_config, false},
|
{0x80, get_config, false},
|
||||||
{0x81, get_uptime, false},
|
{0x81, get_uptime, false},
|
||||||
|
{0x82, get_cputemp, false}
|
||||||
};
|
};
|
||||||
|
|
||||||
// check and execute remote command
|
// check and execute remote command
|
||||||
|
@ -45,12 +45,13 @@ typedef struct {
|
|||||||
|
|
||||||
void wifi_sniffer_init(void) {
|
void wifi_sniffer_init(void) {
|
||||||
wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
|
wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
|
||||||
ESP_ERROR_CHECK( esp_wifi_init(&cfg) );
|
cfg.nvs_enable = 0; // we don't want wifi settings from NVRAM
|
||||||
ESP_ERROR_CHECK( esp_wifi_set_country(&wifi_country) );
|
ESP_ERROR_CHECK(esp_wifi_init(&cfg));
|
||||||
ESP_ERROR_CHECK( esp_wifi_set_storage(WIFI_STORAGE_RAM) );
|
ESP_ERROR_CHECK(esp_wifi_set_country(&wifi_country));
|
||||||
ESP_ERROR_CHECK( esp_wifi_set_mode(WIFI_MODE_NULL) );
|
ESP_ERROR_CHECK(esp_wifi_set_storage(WIFI_STORAGE_RAM) );
|
||||||
ESP_ERROR_CHECK( esp_wifi_start() );
|
//ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_NULL) );
|
||||||
ESP_ERROR_CHECK( esp_wifi_set_max_tx_power(-128) ); // we don't need to TX, so we use lowest power level to save energy
|
//ESP_ERROR_CHECK( esp_wifi_start() );
|
||||||
|
//ESP_ERROR_CHECK( esp_wifi_set_max_tx_power(-128) ); // we don't need to TX, so we use lowest power level to save energy
|
||||||
wifi_promiscuous_filter_t filter = {.filter_mask = WIFI_PROMIS_FILTER_MASK_MGMT}; // we need only MGMT frames
|
wifi_promiscuous_filter_t filter = {.filter_mask = WIFI_PROMIS_FILTER_MASK_MGMT}; // we need only MGMT frames
|
||||||
ESP_ERROR_CHECK(esp_wifi_set_promiscuous_filter(&filter)); // set MAC frame filter
|
ESP_ERROR_CHECK(esp_wifi_set_promiscuous_filter(&filter)); // set MAC frame filter
|
||||||
ESP_ERROR_CHECK(esp_wifi_set_promiscuous_rx_cb(&wifi_sniffer_packet_handler));
|
ESP_ERROR_CHECK(esp_wifi_set_promiscuous_rx_cb(&wifi_sniffer_packet_handler));
|
||||||
|
Loading…
Reference in New Issue
Block a user