Merge remote-tracking branch 'upstream/master' into av/ttgo-t-wristband
This commit is contained in:
commit
f794edaa0d
@ -48,6 +48,7 @@ LoLin32lite + [LoraNode32-Lite shield](https://github.com/hallard/LoLin32-Lite-L
|
|||||||
- Pyom: WiPy
|
- Pyom: WiPy
|
||||||
- WeMos: LoLin32, LoLin32 Lite, WeMos D32, [Wemos32 Oled](https://www.instructables.com/id/ESP32-With-Integrated-OLED-WEMOSLolin-Getting-Star/)
|
- WeMos: LoLin32, LoLin32 Lite, WeMos D32, [Wemos32 Oled](https://www.instructables.com/id/ESP32-With-Integrated-OLED-WEMOSLolin-Getting-Star/)
|
||||||
- Crowdsupply: [TinyPICO](https://www.crowdsupply.com/unexpected-maker/tinypico)
|
- Crowdsupply: [TinyPICO](https://www.crowdsupply.com/unexpected-maker/tinypico)
|
||||||
|
- TTGO: [T-Display](https://www.aliexpress.com/item/33048962331.html)
|
||||||
- Generic ESP32
|
- Generic ESP32
|
||||||
|
|
||||||
Depending on board hardware following features are supported:
|
Depending on board hardware following features are supported:
|
||||||
|
BIN
img/Paxcounter-ttgo-tdisplay.jpg
Normal file
BIN
img/Paxcounter-ttgo-tdisplay.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 292 KiB |
@ -21,43 +21,29 @@ extern Ticker bmecycler;
|
|||||||
extern bmeStatus_t
|
extern bmeStatus_t
|
||||||
bme_status; // Make struct for storing gps data globally available
|
bme_status; // Make struct for storing gps data globally available
|
||||||
|
|
||||||
// --- Bosch BSEC v1.4.7.4 library configuration ---
|
// --- Bosch BSEC library configuration ---
|
||||||
// 3,3V supply voltage; 3s max time between sensor_control calls; 4 days
|
// We use 3,3V supply voltage; 3s max time between sensor_control calls; 4 days
|
||||||
// calibration. Change this const if not applicable for your application (see
|
// calibration. Change this const if not applicable for your application (see
|
||||||
// BME680 datasheet)
|
// BME680 datasheet) Note: 3s max time must not exceed BMECYCLE frequency set in
|
||||||
// Note: 3s max time not exceed BMECYCLE frequency set in paxcounter.conf!
|
// paxcounter.conf!
|
||||||
const uint8_t bsec_config_iaq[454] = {
|
|
||||||
4, 7, 4, 1, 61, 0, 0, 0, 0, 0, 0, 0, 174, 1, 0,
|
const uint8_t bsec_config_iaq[] = {
|
||||||
0, 48, 0, 1, 0, 0, 192, 168, 71, 64, 49, 119, 76, 0, 0,
|
#include "config/generic_33v_3s_4d/bsec_iaq.txt"
|
||||||
225, 68, 137, 65, 0, 63, 205, 204, 204, 62, 0, 0, 64, 63, 205,
|
};
|
||||||
204, 204, 62, 0, 0, 0, 0, 216, 85, 0, 100, 0, 0, 0, 0,
|
|
||||||
0, 0, 0, 0, 28, 0, 2, 0, 0, 244, 1, 225, 0, 25, 0,
|
/* Configure the BSEC library with information about the sensor
|
||||||
0, 128, 64, 0, 0, 32, 65, 144, 1, 0, 0, 112, 65, 0, 0,
|
18v/33v = Voltage at Vdd. 1.8V or 3.3V
|
||||||
0, 63, 16, 0, 3, 0, 10, 215, 163, 60, 10, 215, 35, 59, 10,
|
3s/300s = BSEC operating mode, BSEC_SAMPLE_RATE_LP or BSEC_SAMPLE_RATE_ULP
|
||||||
215, 35, 59, 9, 0, 5, 0, 0, 0, 0, 0, 1, 88, 0, 9,
|
4d/28d = Operating age of the sensor in days
|
||||||
0, 229, 208, 34, 62, 0, 0, 0, 0, 0, 0, 0, 0, 218, 27,
|
generic_18v_3s_4d
|
||||||
156, 62, 225, 11, 67, 64, 0, 0, 160, 64, 0, 0, 0, 0, 0,
|
generic_18v_3s_28d
|
||||||
0, 0, 0, 94, 75, 72, 189, 93, 254, 159, 64, 66, 62, 160, 191,
|
generic_18v_300s_4d
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 33, 31, 180, 190, 138, 176, 97,
|
generic_18v_300s_28d
|
||||||
64, 65, 241, 99, 190, 0, 0, 0, 0, 0, 0, 0, 0, 167, 121,
|
generic_33v_3s_4d
|
||||||
71, 61, 165, 189, 41, 192, 184, 30, 189, 64, 12, 0, 10, 0, 0,
|
generic_33v_3s_28d
|
||||||
0, 0, 0, 0, 0, 0, 0, 229, 0, 254, 0, 2, 1, 5, 48,
|
generic_33v_300s_4d
|
||||||
117, 100, 0, 44, 1, 112, 23, 151, 7, 132, 3, 197, 0, 92, 4,
|
generic_33v_300s_28d
|
||||||
144, 1, 64, 1, 64, 1, 144, 1, 48, 117, 48, 117, 48, 117, 48,
|
*/
|
||||||
117, 100, 0, 100, 0, 100, 0, 48, 117, 48, 117, 48, 117, 100, 0,
|
|
||||||
100, 0, 48, 117, 48, 117, 100, 0, 100, 0, 100, 0, 100, 0, 48,
|
|
||||||
117, 48, 117, 48, 117, 100, 0, 100, 0, 100, 0, 48, 117, 48, 117,
|
|
||||||
100, 0, 100, 0, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44,
|
|
||||||
1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1,
|
|
||||||
44, 1, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8,
|
|
||||||
7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7,
|
|
||||||
112, 23, 112, 23, 112, 23, 112, 23, 112, 23, 112, 23, 112, 23, 112,
|
|
||||||
23, 112, 23, 112, 23, 112, 23, 112, 23, 112, 23, 112, 23, 255, 255,
|
|
||||||
255, 255, 255, 255, 255, 255, 220, 5, 220, 5, 220, 5, 255, 255, 255,
|
|
||||||
255, 255, 255, 220, 5, 220, 5, 255, 255, 255, 255, 255, 255, 255, 255,
|
|
||||||
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
|
|
||||||
255, 255, 255, 255, 255, 255, 255, 255, 255, 44, 1, 0, 0, 0, 0,
|
|
||||||
138, 80, 0, 0};
|
|
||||||
|
|
||||||
// Helper functions declarations
|
// Helper functions declarations
|
||||||
int bme_init();
|
int bme_init();
|
||||||
|
@ -20,6 +20,7 @@ halfile = generic.h
|
|||||||
;halfile = ttgofox.h
|
;halfile = ttgofox.h
|
||||||
;halfile = ttgobeam.h
|
;halfile = ttgobeam.h
|
||||||
;halfile = ttgobeam10.h
|
;halfile = ttgobeam10.h
|
||||||
|
;halfile = ttgotdisplay.h
|
||||||
;halfile = fipy.h
|
;halfile = fipy.h
|
||||||
;halfile = lopy.h
|
;halfile = lopy.h
|
||||||
;halfile = lopy4.h
|
;halfile = lopy4.h
|
||||||
@ -75,7 +76,8 @@ lib_deps_sensors =
|
|||||||
adafruit/Adafruit Unified Sensor @ ^1.1.4
|
adafruit/Adafruit Unified Sensor @ ^1.1.4
|
||||||
adafruit/Adafruit BME280 Library @ ^2.1.1
|
adafruit/Adafruit BME280 Library @ ^2.1.1
|
||||||
adafruit/Adafruit BMP085 Library @ ^1.1.0
|
adafruit/Adafruit BMP085 Library @ ^1.1.0
|
||||||
boschsensortec/BSEC Software Library @ 1.5.1474
|
;boschsensortec/BSEC Software Library @ 1.6.1480
|
||||||
|
https://github.com/BoschSensortec/BSEC-Arduino-library.git
|
||||||
https://github.com/ricki-z/SDS011.git
|
https://github.com/ricki-z/SDS011.git
|
||||||
lib_deps_basic =
|
lib_deps_basic =
|
||||||
bblanchon/ArduinoJson @ <6
|
bblanchon/ArduinoJson @ <6
|
||||||
|
@ -53,7 +53,7 @@ QRCode qrcode;
|
|||||||
#if (HAS_DISPLAY) == 1
|
#if (HAS_DISPLAY) == 1
|
||||||
OBDISP ssoled;
|
OBDISP ssoled;
|
||||||
#elif (HAS_DISPLAY) == 2
|
#elif (HAS_DISPLAY) == 2
|
||||||
TFT_eSPI tft = TFT_eSPI();
|
TFT_eSPI tft = TFT_eSPI(MY_DISPLAY_WIDTH, MY_DISPLAY_HEIGHT);
|
||||||
#else
|
#else
|
||||||
#error Unknown display type specified in hal file
|
#error Unknown display type specified in hal file
|
||||||
#endif
|
#endif
|
||||||
|
55
src/hal/ttgotdisplay.h
Normal file
55
src/hal/ttgotdisplay.h
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
// clang-format off
|
||||||
|
// upload_speed 1500000
|
||||||
|
// board esp32dev
|
||||||
|
|
||||||
|
#ifndef _TTGOTDISPLAY_H
|
||||||
|
#define _TTGOTDISPLAY_H
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#define DISABLE_BROWNOUT 1 // comment out if you want to keep brownout feature
|
||||||
|
|
||||||
|
#define HAS_DISPLAY 2 // TFT-LCD, support work in progess, not ready yet
|
||||||
|
#define MY_DISPLAY_FLIP 1 // use if display is rotated
|
||||||
|
|
||||||
|
#define HAS_LED NOT_A_PIN // no on board LED (?)
|
||||||
|
#define HAS_BUTTON (35) // on board button A
|
||||||
|
|
||||||
|
// power management settings
|
||||||
|
#define BAT_MEASURE_ADC ADC1_GPIO34_CHANNEL // battery probe GPIO pin -> ADC1_CHANNEL_6
|
||||||
|
#define BAT_VOLTAGE_DIVIDER 2.605f // voltage divider
|
||||||
|
|
||||||
|
// Display Settings
|
||||||
|
#define MY_DISPLAY_WIDTH 135
|
||||||
|
#define MY_DISPLAY_HEIGHT 240
|
||||||
|
#define MY_DISPLAY_INVERT 1
|
||||||
|
|
||||||
|
// setting for TTGO T-display
|
||||||
|
#define USER_SETUP_LOADED 1
|
||||||
|
#define ST7789_DRIVER 1
|
||||||
|
|
||||||
|
#define CGRAM_OFFSET
|
||||||
|
|
||||||
|
#define TFT_MOSI GPIO_NUM_19 // SPI
|
||||||
|
#define TFT_SCLK GPIO_NUM_18 // SPI
|
||||||
|
#define TFT_CS GPIO_NUM_5 // Chip select control
|
||||||
|
#define TFT_DC GPIO_NUM_16 // Data Command control
|
||||||
|
#define TFT_RST GPIO_NUM_23 // Reset
|
||||||
|
#define TFT_BL GPIO_NUM_4 // LED back-light
|
||||||
|
|
||||||
|
#define TFT_RGB_ORDER TFT_BGR // Colour order Blue-Green-Red
|
||||||
|
|
||||||
|
#define LOAD_GLCD // Font 1. Original Adafruit 8 pixel font needs ~1820 bytes in FLASH
|
||||||
|
#define LOAD_FONT2 // Font 2. Small 16 pixel high font, needs ~3534 bytes in FLASH, 96 characters
|
||||||
|
#define LOAD_FONT4 // Font 4. Medium 26 pixel high font, needs ~5848 bytes in FLASH, 96 characters
|
||||||
|
#define LOAD_FONT6 // Font 6. Large 48 pixel font, needs ~2666 bytes in FLASH, only characters 1234567890:-.apm
|
||||||
|
#define LOAD_FONT7 // Font 7. 7 segment 48 pixel font, needs ~2438 bytes in FLASH, only characters 1234567890:-.
|
||||||
|
#define LOAD_FONT8 // Font 8. Large 75 pixel font needs ~3256 bytes in FLASH, only characters 1234567890:-.
|
||||||
|
//#define LOAD_FONT8N // Font 8. Alternative to Font 8 above, slightly narrower, so 3 digits fit a 160 pixel TFT
|
||||||
|
#define LOAD_GFXFF // FreeFonts. Include access to the 48 Adafruit_GFX free fonts FF1 to FF48 and custom fonts
|
||||||
|
#define SMOOTH_FONT
|
||||||
|
|
||||||
|
#define SPI_FREQUENCY 40000000
|
||||||
|
#define SPI_READ_FREQUENCY 6000000
|
||||||
|
|
||||||
|
#endif
|
@ -134,7 +134,7 @@ uint16_t mac_analyze(MacBuffer_t MacBuffer) {
|
|||||||
uint32_t *oui; // temporary buffer for vendor OUI
|
uint32_t *oui; // temporary buffer for vendor OUI
|
||||||
oui = (uint32_t *)MacBuffer.mac;
|
oui = (uint32_t *)MacBuffer.mac;
|
||||||
// if we find OUI on vendor filter list we don't analyze and return early
|
// if we find OUI on vendor filter list we don't analyze and return early
|
||||||
if (std::find(vendors.begin(), vendors.end(), __builtin_bswap32(*oui) >> 8) !=
|
if (std::find(vendors.begin(), vendors.end(), __builtin_bswap32(*oui) >> 8) ==
|
||||||
vendors.end())
|
vendors.end())
|
||||||
return 0;
|
return 0;
|
||||||
#endif
|
#endif
|
||||||
|
@ -47,12 +47,10 @@ void AXP192_powerevent_IRQ(void) {
|
|||||||
if (pmu.isBattTempHighIRQ())
|
if (pmu.isBattTempHighIRQ())
|
||||||
ESP_LOGI(TAG, "Battery low temperature.");
|
ESP_LOGI(TAG, "Battery low temperature.");
|
||||||
|
|
||||||
// short press -> esp32 deep sleep mode, can be exited by pressing user button
|
// short press -> esp32 deep sleep mode, can be exited by pressing user button
|
||||||
#ifdef HAS_BUTTON
|
|
||||||
if (pmu.isPEKShortPressIRQ() && (RTC_runmode == RUNMODE_NORMAL)) {
|
if (pmu.isPEKShortPressIRQ() && (RTC_runmode == RUNMODE_NORMAL)) {
|
||||||
enter_deepsleep(0, HAS_BUTTON);
|
enter_deepsleep(0, HAS_BUTTON);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
// long press -> shutdown power, can be exited by another longpress
|
// long press -> shutdown power, can be exited by another longpress
|
||||||
if (pmu.isPEKLongtPressIRQ()) {
|
if (pmu.isPEKLongtPressIRQ()) {
|
||||||
@ -89,6 +87,8 @@ void AXP192_power(pmu_power_t powerlevel) {
|
|||||||
pmu.setPowerOutPut(AXP192_LDO2, AXP202_ON); // Lora on T-Beam V1.0
|
pmu.setPowerOutPut(AXP192_LDO2, AXP202_ON); // Lora on T-Beam V1.0
|
||||||
pmu.setPowerOutPut(AXP192_LDO3, AXP202_ON); // Gps on T-Beam V1.0
|
pmu.setPowerOutPut(AXP192_LDO3, AXP202_ON); // Gps on T-Beam V1.0
|
||||||
pmu.setPowerOutPut(AXP192_DCDC1, AXP202_ON); // OLED on T-Beam v1.0
|
pmu.setPowerOutPut(AXP192_DCDC1, AXP202_ON); // OLED on T-Beam v1.0
|
||||||
|
pmu.setPowerOutPut(AXP192_DCDC2, AXP202_OFF); // unused on T-Beam v1.0
|
||||||
|
pmu.setPowerOutPut(AXP192_EXTEN, AXP202_OFF); // unused on T-Beam v1.0
|
||||||
pmu.setChgLEDMode(AXP20X_LED_LOW_LEVEL);
|
pmu.setChgLEDMode(AXP20X_LED_LOW_LEVEL);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -121,6 +121,8 @@ void AXP192_init(void) {
|
|||||||
|
|
||||||
// configure AXP192
|
// configure AXP192
|
||||||
pmu.setDCDC1Voltage(3300); // for external OLED display
|
pmu.setDCDC1Voltage(3300); // for external OLED display
|
||||||
|
pmu.setLDO2Voltage(3300); // LORA VDD 3v3
|
||||||
|
pmu.setLDO3Voltage(3300); // GPS VDD 3v3
|
||||||
pmu.setTimeOutShutdown(false); // no automatic shutdown
|
pmu.setTimeOutShutdown(false); // no automatic shutdown
|
||||||
pmu.setTSmode(AXP_TS_PIN_MODE_DISABLE); // TS pin mode off to save power
|
pmu.setTSmode(AXP_TS_PIN_MODE_DISABLE); // TS pin mode off to save power
|
||||||
|
|
||||||
@ -138,7 +140,8 @@ void AXP192_init(void) {
|
|||||||
attachInterrupt(digitalPinToInterrupt(PMU_INT), PMUIRQ, FALLING);
|
attachInterrupt(digitalPinToInterrupt(PMU_INT), PMUIRQ, FALLING);
|
||||||
pmu.enableIRQ(AXP202_VBUS_REMOVED_IRQ | AXP202_VBUS_CONNECT_IRQ |
|
pmu.enableIRQ(AXP202_VBUS_REMOVED_IRQ | AXP202_VBUS_CONNECT_IRQ |
|
||||||
AXP202_BATT_REMOVED_IRQ | AXP202_BATT_CONNECT_IRQ |
|
AXP202_BATT_REMOVED_IRQ | AXP202_BATT_CONNECT_IRQ |
|
||||||
AXP202_CHARGING_FINISHED_IRQ,
|
AXP202_CHARGING_FINISHED_IRQ | AXP202_PEK_SHORTPRESS_IRQ |
|
||||||
|
AXP202_PEK_LONGPRESS_IRQ,
|
||||||
1);
|
1);
|
||||||
pmu.clearIRQ();
|
pmu.clearIRQ();
|
||||||
#endif // PMU_INT
|
#endif // PMU_INT
|
||||||
|
Loading…
Reference in New Issue
Block a user