Merge pull request #889 from cyberman54/development

Development
This commit is contained in:
Verkehrsrot 2022-08-21 13:09:56 +02:00 committed by GitHub
commit dd2ab4a071
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 53 additions and 48 deletions

View File

@ -2,6 +2,7 @@
#define _DISPLAY_H #define _DISPLAY_H
#include <libpax_api.h> #include <libpax_api.h>
#include <Wire.h>
#include "cyclic.h" #include "cyclic.h"
#include "qrcode.h" #include "qrcode.h"
#include "power.h" #include "power.h"
@ -48,7 +49,7 @@ extern BB_SPI_LCD *dp;
#endif #endif
// settings for TFT display library // settings for TFT display library
#elif (HAS_DISPLAY == 2) #elif (HAS_DISPLAY) == 2
#define MY_FONT_SMALL 2 #define MY_FONT_SMALL 2
#define MY_FONT_NORMAL 2 #define MY_FONT_NORMAL 2
@ -74,10 +75,6 @@ extern BB_SPI_LCD *dp;
#define OLED_TYPE OLED_128x64 #define OLED_TYPE OLED_128x64
#endif #endif
#ifndef MY_DISPLAY_INVERT
#define MY_DISPLAY_INVERT 0
#endif
#ifndef MY_DISPLAY_FLIP #ifndef MY_DISPLAY_FLIP
#define MY_DISPLAY_FLIP 0 #define MY_DISPLAY_FLIP 0
#endif #endif

View File

@ -12,7 +12,10 @@
#include <set> #include <set>
#include <array> #include <array>
#include <algorithm> #include <algorithm>
#ifdef HAS_BME680
#include <bsec.h> #include <bsec.h>
#endif
#define _bit(b) (1U << (b)) #define _bit(b) (1U << (b))
#define _bitl(b) (1UL << (b)) #define _bitl(b) (1UL << (b))

View File

@ -2,6 +2,7 @@
#define _I2C_H #define _I2C_H
#include <Arduino.h> #include <Arduino.h>
#include <Wire.h>
#include <BitBang_I2C.h> #include <BitBang_I2C.h>
#define SSD1306_PRIMARY_ADDRESS (0x3D) #define SSD1306_PRIMARY_ADDRESS (0x3D)

View File

@ -1,8 +1,12 @@
#ifndef _LED_H #ifndef _LED_H
#define _LED_H #define _LED_H
#ifdef RGB_LED_COUNT
#include <SmartLeds.h> #include <SmartLeds.h>
#endif
#ifdef HAS_LORA
#include "lorawan.h" #include "lorawan.h"
#endif
#ifndef RGB_LED_COUNT #ifndef RGB_LED_COUNT
#define RGB_LED_COUNT 1 #define RGB_LED_COUNT 1

View File

@ -2,7 +2,7 @@
#define _RESET_H #define _RESET_H
#include <driver/rtc_io.h> #include <driver/rtc_io.h>
#include <rom/rtc.h> #include <soc/reset_reasons.h>
#include "i2c.h" #include "i2c.h"
#include "lorawan.h" #include "lorawan.h"

View File

@ -68,16 +68,13 @@ void dp_setup(int contrast) {
dp->setRotation( dp->setRotation(
MY_DISPLAY_FLIP ? 2 : 0); // 0 = no rotation, 1 = 90°, 2 = 180°, 3 = 280° MY_DISPLAY_FLIP ? 2 : 0); // 0 = no rotation, 1 = 90°, 2 = 180°, 3 = 280°
#elif (HAS_DISPLAY) == 2 // SPI TFT #elif (HAS_DISPLAY) == 2 // TFT LCD
dp = new BB_SPI_LCD; dp = new BB_SPI_LCD;
dp->begin(TFT_TYPE, FLAGS_NONE, TFT_FREQUENCY, TFT_CS, TFT_DC, TFT_RST, dp->begin(TFT_TYPE);
TFT_BL, TFT_MISO, TFT_MOSI, TFT_SCLK);
dp->allocBuffer(); // render all outputs to lib internal backbuffer dp->allocBuffer(); // render all outputs to lib internal backbuffer
dp->setRotation( dp->setRotation(
MY_DISPLAY_FLIP ? 1 : 3); // 0 = no rotation, 1 = 90°, 2 = 180°, 3 = 280° MY_DISPLAY_FLIP ? 1 : 3); // 0 = no rotation, 1 = 90°, 2 = 180°, 3 = 280°
// dp->invertDisplay(MY_DISPLAY_INVERT ? true : false);
// dp->setTextWrap(false);
dp->setTextColor(MY_DISPLAY_FGCOLOR, MY_DISPLAY_BGCOLOR); dp->setTextColor(MY_DISPLAY_FGCOLOR, MY_DISPLAY_BGCOLOR);
#endif #endif

View File

@ -48,8 +48,6 @@
//#define MY_DISPLAY_FLIP 1 // use if display is rotated //#define MY_DISPLAY_FLIP 1 // use if display is rotated
#define MY_DISPLAY_WIDTH 320 #define MY_DISPLAY_WIDTH 320
#define MY_DISPLAY_HEIGHT 240 #define MY_DISPLAY_HEIGHT 240
#define MY_DISPLAY_INVERT 1
#define TFT_TYPE LCD_ILI9341
#define TFT_MOSI MOSI // SPI #define TFT_MOSI MOSI // SPI
#define TFT_MISO MISO // SPI #define TFT_MISO MISO // SPI
#define TFT_SCLK SCK // SPI #define TFT_SCLK SCK // SPI
@ -58,5 +56,6 @@
#define TFT_RST GPIO_NUM_33 // Reset #define TFT_RST GPIO_NUM_33 // Reset
#define TFT_BL GPIO_NUM_32 // LED back-light #define TFT_BL GPIO_NUM_32 // LED back-light
#define TFT_FREQUENCY 40000000 #define TFT_FREQUENCY 40000000
#define TFT_TYPE LCD_ILI9341, FLAGS_NONE, TFT_FREQUENCY, TFT_CS, TFT_DC, TFT_RST, TFT_BL, TFT_MISO, TFT_MOSI, TFT_SCLK
#endif #endif

View File

@ -53,8 +53,6 @@
//#define MY_DISPLAY_FLIP 1 // use if display is rotated //#define MY_DISPLAY_FLIP 1 // use if display is rotated
#define MY_DISPLAY_WIDTH 320 #define MY_DISPLAY_WIDTH 320
#define MY_DISPLAY_HEIGHT 240 #define MY_DISPLAY_HEIGHT 240
#define MY_DISPLAY_INVERT 1
#define TFT_TYPE LCD_ILI9341
#define TFT_MOSI MOSI // SPI #define TFT_MOSI MOSI // SPI
#define TFT_MISO MISO // SPI #define TFT_MISO MISO // SPI
#define TFT_SCLK SCK // SPI #define TFT_SCLK SCK // SPI
@ -63,5 +61,7 @@
#define TFT_RST GPIO_NUM_33 // Reset #define TFT_RST GPIO_NUM_33 // Reset
#define TFT_BL GPIO_NUM_32 // LED back-light #define TFT_BL GPIO_NUM_32 // LED back-light
#define TFT_FREQUENCY 40000000 #define TFT_FREQUENCY 40000000
#define TFT_TYPE LCD_ILI9341, FLAGS_NONE, TFT_FREQUENCY, TFT_CS, TFT_DC, TFT_RST, TFT_BL, TFT_MISO, TFT_MOSI, TFT_SCLK
#endif #endif

View File

@ -18,18 +18,9 @@
// Display Settings // Display Settings
#define HAS_DISPLAY 2 // TFT-LCD #define HAS_DISPLAY 2 // TFT-LCD
#define TFT_TYPE DISPLAY_T_DISPLAY
#define MY_DISPLAY_FLIP 1 // use if display is rotated #define MY_DISPLAY_FLIP 1 // use if display is rotated
#define MY_DISPLAY_WIDTH 135 #define MY_DISPLAY_WIDTH 135
#define MY_DISPLAY_HEIGHT 240 #define MY_DISPLAY_HEIGHT 240
#define MY_DISPLAY_INVERT 1
#define TFT_TYPE LCD_ST7789_135 // size 135x240 px
#define TFT_MOSI GPIO_NUM_19 // SPI
#define TFT_MISO NOT_A_PIN // 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_FREQUENCY 40000000
#endif #endif

24
src/hal/ttgotdisplays3.h Normal file
View File

@ -0,0 +1,24 @@
// clang-format off
// upload_speed 1500000
// board ESP32-S3-DevKitC-1
#ifndef _TTGOTDISPLAYS3_H
#define _TTGOTDISPLAYS3_H
#include <stdint.h>
#define HAS_LED NOT_A_PIN
#define HAS_BUTTON 14 // on board button (right side)
// power management settings
//#define BAT_MEASURE_ADC ADC1_GPIO4_CHANNEL // battery probe GPIO pin -> ADC1_CHANNEL_6
//#define BAT_VOLTAGE_DIVIDER 2.605f // voltage divider
// Display Settings
#define HAS_DISPLAY 2 // TFT-LCD parallel
#define TFT_TYPE DISPLAY_T_DISPLAY_S3
#define MY_DISPLAY_FLIP 1 // use if display is rotated
#define MY_DISPLAY_WIDTH 172
#define MY_DISPLAY_HEIGHT 320
#endif

View File

@ -21,8 +21,6 @@
#define MY_DISPLAY_FLIP 1 // use if display is rotated #define MY_DISPLAY_FLIP 1 // use if display is rotated
#define MY_DISPLAY_WIDTH 80 #define MY_DISPLAY_WIDTH 80
#define MY_DISPLAY_HEIGHT 160 #define MY_DISPLAY_HEIGHT 160
#define MY_DISPLAY_INVERT 1
#define TFT_TYPE LCD_ST7735S
#define TFT_MOSI GPIO_NUM_19 // SPI #define TFT_MOSI GPIO_NUM_19 // SPI
#define TFT_MISO NOT_A_PIN // SPI #define TFT_MISO NOT_A_PIN // SPI
#define TFT_SCLK GPIO_NUM_18 // SPI #define TFT_SCLK GPIO_NUM_18 // SPI
@ -31,6 +29,7 @@
#define TFT_RST GPIO_NUM_26 // Reset #define TFT_RST GPIO_NUM_26 // Reset
#define TFT_BL GPIO_NUM_27 // LED back-light #define TFT_BL GPIO_NUM_27 // LED back-light
#define TFT_FREQUENCY 27000000 #define TFT_FREQUENCY 27000000
#define TFT_TYPE LCD_ST7735S, FLAGS_NONE, TFT_FREQUENCY, TFT_CS, TFT_DC, TFT_RST, TFT_BL, TFT_MISO, TFT_MOSI, TFT_SCLK
#endif #endif

View File

@ -324,9 +324,15 @@ void get_config(uint8_t val[]) {
void get_status(uint8_t val[]) { void get_status(uint8_t val[]) {
ESP_LOGI(TAG, "Remote command: get device status"); ESP_LOGI(TAG, "Remote command: get device status");
payload.reset(); payload.reset();
#ifdef CONFIG_IDF_TARGET_ESP32S3
payload.addStatus(read_voltage(), (uint64_t)(uptime() / 1000ULL), 0,
// temperatureRead(),
getFreeRAM(), rtc_get_reset_reason(0), RTC_restarts);
#else
payload.addStatus(read_voltage(), (uint64_t)(uptime() / 1000ULL), payload.addStatus(read_voltage(), (uint64_t)(uptime() / 1000ULL),
temperatureRead(), getFreeRAM(), rtc_get_reset_reason(0), temperatureRead(), getFreeRAM(), rtc_get_reset_reason(0),
RTC_restarts); RTC_restarts);
#endif
SendPayload(STATUSPORT); SendPayload(STATUSPORT);
}; };

View File

@ -11,7 +11,6 @@ static const char TAG[] = __FILE__;
// RTC_NOINIT_ATTR -> keep value after a software restart or system crash // RTC_NOINIT_ATTR -> keep value after a software restart or system crash
RTC_NOINIT_ATTR runmode_t RTC_runmode; RTC_NOINIT_ATTR runmode_t RTC_runmode;
RTC_NOINIT_ATTR uint32_t RTC_restarts; RTC_NOINIT_ATTR uint32_t RTC_restarts;
// RTC_DATA_ATTR -> keep values after a wakeup from sleep // RTC_DATA_ATTR -> keep values after a wakeup from sleep
RTC_DATA_ATTR struct timeval RTC_sleep_start_time; RTC_DATA_ATTR struct timeval RTC_sleep_start_time;
RTC_DATA_ATTR unsigned long long RTC_millis = 0; RTC_DATA_ATTR unsigned long long RTC_millis = 0;
@ -53,18 +52,17 @@ void do_after_reset(void) {
#endif #endif
switch (rtc_get_reset_reason(0)) { switch (rtc_get_reset_reason(0)) {
case POWERON_RESET: // 0x01 Vbat power on reset case RESET_REASON_CHIP_POWER_ON:
case RTCWDT_BROWN_OUT_RESET: // 0x0f Reset when the vdd voltage is not case RESET_REASON_SYS_BROWN_OUT:
// stable
reset_rtc_vars(); reset_rtc_vars();
break; break;
case SW_CPU_RESET: // 0x0c Software reset CPU case RESET_REASON_CPU0_SW:
// keep previous set runmode (update / normal / maintenance) // keep previous set runmode (update / normal / maintenance)
RTC_restarts++; RTC_restarts++;
break; break;
case DEEPSLEEP_RESET: // 0x05 Deep Sleep reset digital core case RESET_REASON_CORE_DEEP_SLEEP:
// calculate time spent in deep sleep // calculate time spent in deep sleep
gettimeofday(&sleep_stop_time, NULL); gettimeofday(&sleep_stop_time, NULL);
sleep_time_ms = sleep_time_ms =
@ -72,26 +70,13 @@ void do_after_reset(void) {
(sleep_stop_time.tv_usec - RTC_sleep_start_time.tv_usec) / 1000; (sleep_stop_time.tv_usec - RTC_sleep_start_time.tv_usec) / 1000;
RTC_millis += sleep_time_ms; // increment system monotonic time RTC_millis += sleep_time_ms; // increment system monotonic time
ESP_LOGI(TAG, "Time spent in deep sleep: %d ms", sleep_time_ms); ESP_LOGI(TAG, "Time spent in deep sleep: %d ms", sleep_time_ms);
// do we have a valid time? -> set global variable // do we have a valid time? -> set global variable
timeSource = timeIsValid(sleep_stop_time.tv_sec) ? _set : _unsynced; timeSource = timeIsValid(sleep_stop_time.tv_sec) ? _set : _unsynced;
// set wakeup state, not if we have pending OTA update // set wakeup state, not if we have pending OTA update
if (RTC_runmode == RUNMODE_SLEEP) if (RTC_runmode == RUNMODE_SLEEP)
RTC_runmode = RUNMODE_WAKEUP; RTC_runmode = RUNMODE_WAKEUP;
break; break;
case SW_RESET: // 0x03 Software reset digital core
case OWDT_RESET: // 0x04 Legacy watch dog reset digital core
case SDIO_RESET: // 0x06 Reset by SLC module, reset digital core
case TG0WDT_SYS_RESET: // 0x07 Timer Group0 Watch dog reset digital core
case TG1WDT_SYS_RESET: // 0x08 Timer Group1 Watch dog reset digital core
case RTCWDT_SYS_RESET: // 0x09 RTC Watch dog Reset digital core
case INTRUSION_RESET: // 0x0a Instrusion tested to reset CPU
case TGWDT_CPU_RESET: // 0x0b Time Group reset CPU
case RTCWDT_CPU_RESET: // 0x0d RTC Watch dog Reset CPU
case EXT_CPU_RESET: // 0x0e for APP CPU, reseted by PRO CPU
case RTCWDT_RTC_RESET: // 0x10 RTC Watch dog reset digital core and rtc mode
default: default:
RTC_runmode = RUNMODE_POWERCYCLE; RTC_runmode = RUNMODE_POWERCYCLE;
RTC_restarts++; RTC_restarts++;
@ -108,7 +93,6 @@ void enter_deepsleep(const uint64_t wakeup_sec, gpio_num_t wakeup_gpio) {
// validate wake up pin, if we have // validate wake up pin, if we have
if (!GPIO_IS_VALID_GPIO(wakeup_gpio)) if (!GPIO_IS_VALID_GPIO(wakeup_gpio))
wakeup_gpio = GPIO_NUM_MAX; wakeup_gpio = GPIO_NUM_MAX;
// stop further enqueuing of senddata and MAC processing // stop further enqueuing of senddata and MAC processing
libpax_counter_stop(); libpax_counter_stop();