diff --git a/CHANGELOG.md b/CHANGELOG.md index 706721d0b..4e45bf32e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,12 @@ All notable changes to this project will be documented in this file. ## [Unreleased] - Development -## [9.2.0.1] +## [9.2.0.2] +### Breaking Changed +- Replaced MFRC522 13.56MHz rfid card reader GPIO selection from ``GPIO_SPI_CS`` by ``GPIO_RC522_CS`` +- Replaced ILI9341 GPIO selection from ``GPIO_SPI_CS`` by ``GPIO_ILI9341_CS`` and ``GPIO_SPI_DC`` by ``GPIO_ILI9341_DC`` + +## [9.2.0.1] 20201229 ### Added - Milliseconds to console output (#10152) - Support for P9813 RGB Led MOSFET controller (#10104) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index b9ed48538..1f9677073 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -56,7 +56,7 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota [Complete list](BUILDS.md) of available feature and sensors. -## Changelog v9.2.0.1 +## Changelog v9.2.0.2 ### Added - Milliseconds to console output [#10152](https://github.com/arendst/Tasmota/issues/10152) - Gpio ``Option_a1`` enabling PWM2 high impedance if powered off as used by Wyze bulbs [#10196](https://github.com/arendst/Tasmota/issues/10196) @@ -69,6 +69,10 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota - Support for IR inverted leds using ``#define IR_SEND_INVERTED true`` [#10301](https://github.com/arendst/Tasmota/issues/10301) - Support for disabling 38kHz IR modulation using ``#define IR_SEND_USE_MODULATION false`` [#10301](https://github.com/arendst/Tasmota/issues/10301) +### Breaking Changed +- Replaced MFRC522 13.56MHz rfid card reader GPIO selection from ``GPIO_SPI_CS`` by ``GPIO_RC522_CS`` +- Replaced ILI9341 GPIO selection from ``GPIO_SPI_CS`` by ``GPIO_ILI9341_CS`` and ``GPIO_SPI_DC`` by ``GPIO_ILI9341_DC`` + ### Changed - Logging from heap to stack freeing 700 bytes RAM diff --git a/platformio_tasmota32.ini b/platformio_tasmota32.ini index 1fe7667a2..430fcc344 100644 --- a/platformio_tasmota32.ini +++ b/platformio_tasmota32.ini @@ -8,6 +8,7 @@ default_envs = ${build_envs.default_envs} ; *** Uncomment by deleting ";" in the line(s) below to select version(s) ; tasmota32 ; tasmota32-webcam +; tasmota32-odroidgo ; tasmota32-minimal ; tasmota32-lite ; tasmota32-knx diff --git a/platformio_tasmota_env32.ini b/platformio_tasmota_env32.ini index ff416538e..886b2cfaf 100644 --- a/platformio_tasmota_env32.ini +++ b/platformio_tasmota_env32.ini @@ -36,6 +36,14 @@ board_build.f_cpu = 240000000L build_flags = ${common32.build_flags} -DFIRMWARE_WEBCAM lib_extra_dirs = lib/libesp32, lib/lib_basic +[env:tasmota32-odroidgo] +extends = env:tasmota32 +board = odroid_esp32 +board_build.f_cpu = 160000000L +board_build.partitions = esp32_partition_app1984k_ffat12M.csv +build_flags = ${common32.build_flags} -DFIRMWARE_ODROID_GO +lib_extra_dirs = lib/libesp32, lib/lib_basic, lib/lib_i2c, lib/lib_rf, lib/lib_div, lib/lib_ssl, lib/lib_display + [env:tasmota32-minimal] extends = env:tasmota32 build_flags = ${common32.build_flags} -DFIRMWARE_MINIMAL diff --git a/tasmota/support.ino b/tasmota/support.ino index 577c8bb95..fcf21a014 100644 --- a/tasmota/support.ino +++ b/tasmota/support.ino @@ -1307,7 +1307,7 @@ uint8_t ModuleNr(void) uint32_t ModuleTemplate(uint32_t module) { uint32_t i = 0; for (i = 0; i < sizeof(kModuleNiceList); i++) { - if (Settings.module == pgm_read_byte(kModuleNiceList + i)) { + if (module == pgm_read_byte(kModuleNiceList + i)) { break; } } @@ -1346,6 +1346,9 @@ String AnyModuleName(uint32_t index) if (USER_MODULE == index) { return String(SettingsText(SET_TEMPLATE_NAME)); } else { +#ifdef ESP32 + index = ModuleTemplate(index); +#endif char name[TOPSZ]; return String(GetTextIndexed(name, sizeof(name), index, kModuleNames)); } @@ -1451,6 +1454,11 @@ void ModuleDefault(uint32_t module) { if (USER_MODULE == module) { module = WEMOS; } // Generic Settings.user_template_base = module; + +#ifdef ESP32 + module = ModuleTemplate(module); +#endif + char name[TOPSZ]; SettingsUpdateText(SET_TEMPLATE_NAME, GetTextIndexed(name, sizeof(name), module, kModuleNames)); #ifdef ESP8266 diff --git a/tasmota/support_tasmota.ino b/tasmota/support_tasmota.ino index bd92688f6..58b79e905 100644 --- a/tasmota/support_tasmota.ino +++ b/tasmota/support_tasmota.ino @@ -1594,24 +1594,47 @@ void GpioInit(void) #ifdef ESP8266 if ((2 == Pin(GPIO_TXD)) || (H801 == TasmotaGlobal.module_type)) { Serial.set_tx(2); } +#endif + + TasmotaGlobal.soft_spi_enabled = (PinUsed(GPIO_SSPI_SCLK) && (PinUsed(GPIO_SSPI_MOSI) || PinUsed(GPIO_SSPI_MISO))); #ifdef USE_SPI - TasmotaGlobal.spi_enabled = (((PinUsed(GPIO_SPI_CS) && (Pin(GPIO_SPI_CS) > 14)) || (Pin(GPIO_SPI_CS) < 12)) || ((PinUsed(GPIO_SPI_DC) && (Pin(GPIO_SPI_DC) > 14)) || (Pin(GPIO_SPI_DC) < 12))); - if (TasmotaGlobal.spi_enabled) { - TasmotaGlobal.my_module.io[12] = AGPIO(GPIO_SPI_MISO); - SetPin(12, AGPIO(GPIO_SPI_MISO)); - TasmotaGlobal.my_module.io[13] = AGPIO(GPIO_SPI_MOSI); - SetPin(13, AGPIO(GPIO_SPI_MOSI)); - TasmotaGlobal.my_module.io[14] = AGPIO(GPIO_SPI_CLK); - SetPin(14, AGPIO(GPIO_SPI_CLK)); - AddLog_P(LOG_LEVEL_DEBUG, PSTR("SPI: Using GPIO12(MISO), GPIO13(MOSI) and GPIO14(CLK)")); + uint32_t pin_cs = Pin(GPIO_SPI_CS); + uint32_t pin_dc = Pin(GPIO_SPI_DC); + if (PinUsed(GPIO_RC522_CS)) { + pin_cs = Pin(GPIO_RC522_CS); + } + if (PinUsed(GPIO_ILI9341_CS)) { + pin_cs = Pin(GPIO_ILI9341_CS); + if (PinUsed(GPIO_ILI9341_DC)) { + pin_dc = Pin(GPIO_ILI9341_DC); + } + } + +#ifdef ESP8266 + if (!TasmotaGlobal.soft_spi_enabled) { + // If SPI_CS is used it must be valid + TasmotaGlobal.spi_enabled = ((pin_cs < 99) && ((pin_cs > 14) || (pin_cs < 12))); + if (TasmotaGlobal.spi_enabled && (pin_dc < 99)) { + // If SPI_DC is used it must be valid + TasmotaGlobal.spi_enabled = ((pin_dc > 14) || (pin_dc < 12)); + } + if (TasmotaGlobal.spi_enabled) { + TasmotaGlobal.my_module.io[12] = AGPIO(GPIO_SPI_MISO); + SetPin(12, AGPIO(GPIO_SPI_MISO)); + TasmotaGlobal.my_module.io[13] = AGPIO(GPIO_SPI_MOSI); + SetPin(13, AGPIO(GPIO_SPI_MOSI)); + TasmotaGlobal.my_module.io[14] = AGPIO(GPIO_SPI_CLK); + SetPin(14, AGPIO(GPIO_SPI_CLK)); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("SPI: Using GPIO12(MISO), GPIO13(MOSI) and GPIO14(CLK)")); + } } -#endif // USE_SPI #endif // ESP8266 #ifdef ESP32 -#ifdef USE_SPI - if (PinUsed(GPIO_SPI_CS) || PinUsed(GPIO_SPI_DC)) { - if ((15 == Pin(GPIO_SPI_CS)) && (!GetPin(12) && !GetPin(13) && !GetPin(14))) { // HSPI + if (pin_cs < 99) { +/* + // Do not do this as ESP32 can have SPI_CS everywhere + if ((15 == pin_cs) && (!GetPin(12) && !GetPin(13) && !GetPin(14))) { // HSPI TasmotaGlobal.my_module.io[12] = AGPIO(GPIO_SPI_MISO); SetPin(12, AGPIO(GPIO_SPI_MISO)); TasmotaGlobal.my_module.io[13] = AGPIO(GPIO_SPI_MOSI); @@ -1619,7 +1642,7 @@ void GpioInit(void) TasmotaGlobal.my_module.io[14] = AGPIO(GPIO_SPI_CLK); SetPin(14, AGPIO(GPIO_SPI_CLK)); } - else if ((5 == Pin(GPIO_SPI_CS)) && (!GetPin(19) && !GetPin(23) && !GetPin(18))) { // VSPI + else if ((5 == pin_cs) && (!GetPin(19) && !GetPin(23) && !GetPin(18))) { // VSPI TasmotaGlobal.my_module.io[19] = AGPIO(GPIO_SPI_MISO); SetPin(19, AGPIO(GPIO_SPI_MISO)); TasmotaGlobal.my_module.io[23] = AGPIO(GPIO_SPI_MOSI); @@ -1644,24 +1667,25 @@ void GpioInit(void) SetPin(18, AGPIO(GPIO_SPI_CLK)); } TasmotaGlobal.spi_enabled = (PinUsed(GPIO_SPI_CLK) && (PinUsed(GPIO_SPI_MOSI) || PinUsed(GPIO_SPI_MISO))); +*/ + TasmotaGlobal.spi_enabled = (pin_cs < 99); if (TasmotaGlobal.spi_enabled) { - if (PinUsed(GPIO_SPI_MOSI) && PinUsed(GPIO_SPI_MISO)) { + if (PinUsed(GPIO_SPI_MOSI) && PinUsed(GPIO_SPI_MISO) && PinUsed(GPIO_SPI_CLK)) { AddLog_P(LOG_LEVEL_DEBUG, PSTR("SPI: Using GPIO%02d(MISO), GPIO%02d(MOSI) and GPIO%02d(CLK)"), Pin(GPIO_SPI_MISO), Pin(GPIO_SPI_MOSI), Pin(GPIO_SPI_CLK)); } - else if (PinUsed(GPIO_SPI_MOSI)) { + else if (PinUsed(GPIO_SPI_MOSI) && PinUsed(GPIO_SPI_CLK)) { AddLog_P(LOG_LEVEL_DEBUG, PSTR("SPI: Using GPIO%02d(MOSI) and GPIO%02d(CLK)"), Pin(GPIO_SPI_MOSI), Pin(GPIO_SPI_CLK)); } - else if (PinUsed(GPIO_SPI_MISO)) { + else if (PinUsed(GPIO_SPI_MISO) && PinUsed(GPIO_SPI_CLK)) { AddLog_P(LOG_LEVEL_DEBUG, PSTR("SPI: Using GPIO%02d(MISO) and GPIO%02d(CLK)"), Pin(GPIO_SPI_MISO), Pin(GPIO_SPI_CLK)); } } } -#endif // USE_SPI #endif // ESP32 - TasmotaGlobal.soft_spi_enabled = (PinUsed(GPIO_SSPI_SCLK) && (PinUsed(GPIO_SSPI_MOSI) || PinUsed(GPIO_SSPI_MISO))); +#endif // USE_SPI for (uint32_t i = 0; i < ARRAY_SIZE(TasmotaGlobal.my_module.io); i++) { uint32_t mpin = ValidPin(i, TasmotaGlobal.my_module.io[i]); diff --git a/tasmota/tasmota_configurations_ESP32.h b/tasmota/tasmota_configurations_ESP32.h index 86e27a534..c3bb7044b 100644 --- a/tasmota/tasmota_configurations_ESP32.h +++ b/tasmota/tasmota_configurations_ESP32.h @@ -33,9 +33,27 @@ #define CODE_IMAGE_STR "webcam" #define USE_WEBCAM -#undef USE_MI_ESP32 // (ESP32 only) Disable support for ESP32 as a BLE-bridge (+9k2 mem, +292k flash) +#undef USE_MI_ESP32 // (ESP32 only) Disable support for ESP32 as a BLE-bridge (+9k2 mem, +292k flash) #endif // FIRMWARE_WEBCAM +/*********************************************************************************************\ + * [tasmota32-odroidgo.bin] + * Provide an image with useful supported sensors enabled +\*********************************************************************************************/ + +#ifdef FIRMWARE_ODROID_GO + +#undef CODE_IMAGE_STR +#define CODE_IMAGE_STR "odroid-go" + +#define USE_ODROID_GO // Add support for Odroid Go +#define USE_ADC +#define USE_SPI + #define USE_DISPLAY // Add SPI Display Support (+2k code) + #define USE_DISPLAY_ILI9341 // [DisplayModel 4] Enable ILI9341 Tft 480x320 display (+19k code) +#define USE_MI_ESP32 // (ESP32 only) Add support for ESP32 as a BLE-bridge (+9k2 mem, +292k flash) +#endif // FIRMWARE_ODROID_GO + #endif // ESP32 #endif // _TASMOTA_CONFIGURATIONS_ESP32_H_ diff --git a/tasmota/tasmota_template.h b/tasmota/tasmota_template.h index 5f1eafb8e..46915f280 100644 --- a/tasmota/tasmota_template.h +++ b/tasmota/tasmota_template.h @@ -359,19 +359,23 @@ const uint16_t kGpioNiceList[] PROGMEM = { #endif #ifdef USE_SPI - AGPIO(GPIO_SPI_MISO), // SPI MISO - AGPIO(GPIO_SPI_MOSI), // SPI MOSI - AGPIO(GPIO_SPI_CLK), // SPI Clk - AGPIO(GPIO_SPI_CS), // SPI Chip Select - AGPIO(GPIO_SPI_DC), // SPI Data Direction + AGPIO(GPIO_SPI_MISO), // SPI MISO + AGPIO(GPIO_SPI_MOSI), // SPI MOSI + AGPIO(GPIO_SPI_CLK), // SPI Clk + AGPIO(GPIO_SPI_CS), // SPI Chip Select + AGPIO(GPIO_SPI_DC), // SPI Data Direction #ifdef USE_NRF24 // AGPIO(GPIO_NRF24_CS), // AGPIO(GPIO_NRF24_DC), #endif +#ifdef USE_RC522 + AGPIO(GPIO_RC522_CS), // RC522 Rfid Chip Select + AGPIO(GPIO_RC522_RST), // RC522 Rfid Reset +#endif #ifdef USE_DISPLAY #ifdef USE_DISPLAY_ILI9341 -// AGPIO(GPIO_ILI9341_CS), -// AGPIO(GPIO_ILI9341_DC), + AGPIO(GPIO_ILI9341_CS), + AGPIO(GPIO_ILI9341_DC), #endif // USE_DISPLAY_ILI9341 #endif // USE_DISPLAY #endif // USE_SPI @@ -710,10 +714,6 @@ const uint16_t kGpioNiceList[] PROGMEM = { AGPIO(GPIO_MIEL_HVAC_TX), // Mitsubishi Electric HVAC TX pin AGPIO(GPIO_MIEL_HVAC_RX), // Mitsubishi Electric HVAC RX pin #endif -#ifdef USE_RC522 - AGPIO(GPIO_RC522_RST), // RC522 Rfid reset -// AGPIO(GPIO_RC522_CS), // RC522 Rfid chip select -#endif /*-------------------------------------------------------------------------------------------*\ * ESP32 specifics @@ -2319,7 +2319,9 @@ const char kModuleNames[] PROGMEM = #ifdef USE_WEBCAM "ESP32-Cam|" #endif // USE_WEBCAM -// "Odroid Go|"" +#ifdef USE_ODROID_GO + "Odroid Go|" +#endif // USE_ODROID_GO // "ESP32-Solo|" // "WT32-Eth01|" // "TTGO Watch|" @@ -2334,7 +2336,9 @@ const uint8_t kModuleNiceList[] PROGMEM = { #ifdef USE_WEBCAM ESP32_CAM_AITHINKER, #endif // USE_WEBCAM -// ODROID_GO, +#ifdef USE_ODROID_GO + ODROID_GO, +#endif // USE_ODROID_GO // ESP32_SOLO, // WT32_ETH01, // TTGO_WATCH, @@ -2435,46 +2439,46 @@ const mytmplt kModules[] PROGMEM = #endif // USE_WEBCAM #ifdef USE_ODROID_GO { // ODROID_GO - (ESP32) - AGPIO(GPIO_KEY1), // 0 (I)O GPIO0, Button1 - AGPIO(GPIO_USER), // 1 IO TXD0 GPIO1, U0TXD, CLK_OUT3, EMAC_RXD2 - AGPIO(GPIO_USER), // 2 IO GPIO2, ADC2_CH2, TOUCH2, RTC_GPIO12, HSPIWP, HS2_DATA0, SD_DATA0 - AGPIO(GPIO_USER), // 3 IO RXD0 GPIO3, U0RXD, CLK_OUT2 + AGPIO(GPIO_KEY1), // 0 (I)O GPIO0, BTN-VOLUME + AGPIO(GPIO_TXD), // 1 IO TXD0 GPIO1, TXD0 + AGPIO(GPIO_LEDLNK), // 2 IO GPIO2, STATUS LED + AGPIO(GPIO_RXD), // 3 IO RXD0 GPIO3, RXD0 AGPIO(GPIO_USER), // 4 IO GPIO4, ADC2_CH0, TOUCH0, RTC_GPIO10, HSPIHD, HS2_DATA1, SD_DATA1, EMAC_TX_ER - AGPIO(GPIO_USER), // 5 IO GPIO5, VSPICS0, HS1_DATA6, EMAC_RX_CLK + AGPIO(GPIO_ILI9341_CS), // 5 IO GPIO5, VSPI_CS0_LCD // 6 IO GPIO6, Flash CLK // 7 IO GPIO7, Flash D0 // 8 IO GPIO8, Flash D1 - AGPIO(GPIO_USER), // 9 IO GPIO9, Flash D2, U1RXD - AGPIO(GPIO_USER), // 10 IO GPIO10, Flash D3, U1TXD + 0, // 9 IO GPIO9, Flash D2, U1RXD + 0, // 10 IO GPIO10, Flash D3, U1TXD // 11 IO GPIO11, Flash CMD AGPIO(GPIO_USER), // 12 (I)O GPIO12, ADC2_CH5, TOUCH5, RTC_GPIO15, MTDI, HSPIQ, HS2_DATA2, SD_DATA2, EMAC_TXD3 (If driven High, flash voltage (VDD_SDIO) is 1.8V not default 3.3V. Has internal pull-down, so unconnected = Low = 3.3V. May prevent flashing and/or booting if 3.3V flash is connected and pulled high. See ESP32 datasheet for more details.) - AGPIO(GPIO_USER), // 13 IO GPIO13, ADC2_CH4, TOUCH4, RTC_GPIO14, MTCK, HSPID, HS2_DATA3, SD_DATA3, EMAC_RX_ER - AGPIO(GPIO_USER), // 14 IO GPIO14, ADC2_CH6, TOUCH6, RTC_GPIO16, MTMS, HSPICLK, HS2_CLK, SD_CLK, EMAC_TXD2 + AGPIO(GPIO_KEY1) +1, // 13 IO GPIO13, BTN-MENU + AGPIO(GPIO_PWM1), // 14 IO GPIO14, LCD Backlight AGPIO(GPIO_USER), // 15 (I)O GPIO15, ADC2_CH3, TOUCH3, MTDO, HSPICS0, RTC_GPIO13, HS2_CMD, SD_CMD, EMAC_RXD3 (If driven Low, silences boot messages from normal boot. Has internal pull-up, so unconnected = High = normal output.) AGPIO(GPIO_USER), // 16 IO GPIO16, HS1_DATA4, U2RXD, EMAC_CLK_OUT AGPIO(GPIO_USER), // 17 IO GPIO17, HS1_DATA5, U2TXD, EMAC_CLK_OUT_180 - AGPIO(GPIO_USER), // 18 IO GPIO18, VSPICLK, HS1_DATA7 - AGPIO(GPIO_USER), // 19 IO GPIO19, VSPIQ, U0CTS, EMAC_TXD0 + AGPIO(GPIO_SPI_CLK), // 18 IO GPIO18, VSPI_CLK + AGPIO(GPIO_SPI_MISO), // 19 IO GPIO19, VSPI_MISO 0, // 20 - AGPIO(GPIO_USER), // 21 IO GPIO21, VSPIHD, EMAC_TX_EN - AGPIO(GPIO_USER), // 22 IO LED GPIO22, VSPIWP, U0RTS, EMAC_TXD1 - AGPIO(GPIO_USER), // 23 IO GPIO23, VSPID, HS1_STROBE + AGPIO(GPIO_ILI9341_DC), // 21 IO GPIO21, SPI_DC_LCD + 0, // 22 IO LED GPIO22, VSPI_CS1_TFLASH + AGPIO(GPIO_SPI_MOSI), // 23 IO GPIO23, VSPI_MOSI 0, // 24 - AGPIO(GPIO_USER), // 25 IO GPIO25, DAC_1, ADC2_CH8, RTC_GPIO6, EMAC_RXD0 - AGPIO(GPIO_USER), // 26 IO GPIO26, DAC_2, ADC2_CH9, RTC_GPIO7, EMAC_RXD1 - AGPIO(GPIO_USER), // 27 IO GPIO27, ADC2_CH7, TOUCH7, RTC_GPIO17, EMAC_RX_DV + 0, // 25 IO GPIO25, DAC_1 (PAM8304A) + 0, // 26 IO GPIO26, DAC_2 (PAM8304A) + AGPIO(GPIO_KEY1) +2, // 27 IO GPIO27, BTN-SELECT 0, // 28 0, // 29 0, // 30 0, // 31 - AGPIO(GPIO_USER), // 32 IO GPIO32, XTAL_32K_P (32.768 kHz crystal oscillator input), ADC1_CH4, TOUCH9, RTC_GPIO9 - AGPIO(GPIO_USER), // 33 IO GPIO33, XTAL_32K_N (32.768 kHz crystal oscillator output), ADC1_CH5, TOUCH8, RTC_GPIO8 - AGPIO(GPIO_USER), // 34 I NO PULLUP GPIO34, ADC1_CH6, RTC_GPIO4 - AGPIO(GPIO_USER), // 35 I NO PULLUP GPIO35, ADC1_CH7, RTC_GPIO5 - AGPIO(GPIO_USER), // 36 I NO PULLUP GPIO36, SENSOR_VP, ADC_H, ADC1_CH0, RTC_GPIO0 + AGPIO(GPIO_SWT1) +4, // 32 IO GPIO32, BTN-A + AGPIO(GPIO_SWT1) +5, // 33 IO GPIO33, BTN-B + AGPIO(GPIO_ADC_JOY), // 34 I NO PULLUP GPIO34, JOY-X (LEFT-RIGHT) + AGPIO(GPIO_ADC_JOY) +1, // 35 I NO PULLUP GPIO35, JOY-Y (UP-DOWN) + AGPIO(GPIO_ADC_RANGE) +2, // 36 I NO PULLUP GPIO36, SENSOR_VP (BATTERY CARGER) 0, // 37 NO PULLUP 0, // 38 NO PULLUP - AGPIO(GPIO_USER), // 39 I NO PULLUP GPIO39, SENSOR_VN, ADC1_CH3, ADC_H, RTC_GPIO3 + AGPIO(GPIO_KEY1) +3, // 39 I NO PULLUP GPIO39, BTN-START 0 // Flag }, #endif // USE_ODROID_GO diff --git a/tasmota/tasmota_version.h b/tasmota/tasmota_version.h index d4fbfcf76..490f68bd8 100644 --- a/tasmota/tasmota_version.h +++ b/tasmota/tasmota_version.h @@ -20,6 +20,6 @@ #ifndef _TASMOTA_VERSION_H_ #define _TASMOTA_VERSION_H_ -const uint32_t VERSION = 0x09020001; +const uint32_t VERSION = 0x09020002; #endif // _TASMOTA_VERSION_H_ diff --git a/tasmota/xdrv_80_odroidgo.ino b/tasmota/xdrv_80_odroidgo.ino new file mode 100644 index 000000000..4886f87d6 --- /dev/null +++ b/tasmota/xdrv_80_odroidgo.ino @@ -0,0 +1,34 @@ +/* + xdrv_81_webcam.ino - ESP32 webcam support for Tasmota + + Copyright (C) 2020 Gerhard Mutz and Theo Arends + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#ifdef ESP32 +#ifdef USE_ODROID_GO +/*********************************************************************************************\ + * Odroid Go + * + * Clock frequency 160MHz (board_build.f_cpu = 160000000L) + * SPI Flash Size = 16MB (board_build.partitions = esp32_partition_app1984k_ffat12M.csv) + * + * To be done: + * - Audio on GPIO25/26 + * +/*********************************************************************************************/ + +#endif // USE_ODROID_GO +#endif // ESP32 diff --git a/tasmota/xdsp_04_ili9341.ino b/tasmota/xdsp_04_ili9341.ino index fd61b4a82..adabfe6b0 100644 --- a/tasmota/xdsp_04_ili9341.ino +++ b/tasmota/xdsp_04_ili9341.ino @@ -97,7 +97,18 @@ void Ili9341Init(uint8_t mode) void Ili9341InitDriver(void) { + uint32_t pin_cs = Pin(GPIO_SPI_CS); + uint32_t pin_dc = Pin(GPIO_SPI_DC); if (!Settings.display_model) { + if (PinUsed(GPIO_ILI9341_CS)) { + pin_cs = Pin(GPIO_ILI9341_CS); + if (PinUsed(GPIO_ILI9341_DC)) { + pin_dc = Pin(GPIO_ILI9341_DC); + } + Settings.display_model = XDSP_04; + } + + // Legacy Settings.display_model = XDSP_04; } @@ -109,7 +120,7 @@ void Ili9341InitDriver(void) Settings.display_height = ILI9341_TFTHEIGHT; } - tft = new Adafruit_ILI9341(Pin(GPIO_SPI_CS), Pin(GPIO_SPI_DC)); + tft = new Adafruit_ILI9341(pin_cs, pin_dc); tft->begin(); #ifdef USE_DISPLAY_MODES1TO5 diff --git a/tasmota/xsns_80_mfrc522.ino b/tasmota/xsns_80_mfrc522.ino index 2c970119f..899c77909 100644 --- a/tasmota/xsns_80_mfrc522.ino +++ b/tasmota/xsns_80_mfrc522.ino @@ -17,6 +17,7 @@ along with this program. If not, see . */ +#ifdef USE_SPI #ifdef USE_RC522 /*********************************************************************************************\ * MFRC522 - 13.56 MHz RFID reader @@ -97,8 +98,8 @@ void RC522ScanForTag(void) { } void RC522Init(void) { - if (PinUsed(GPIO_SPI_CS) && PinUsed(GPIO_RC522_RST)) { - Mfrc522 = new MFRC522(Pin(GPIO_SPI_CS), Pin(GPIO_RC522_RST)); + if (PinUsed(GPIO_RC522_CS) && PinUsed(GPIO_RC522_RST)) { + Mfrc522 = new MFRC522(Pin(GPIO_RC522_CS), Pin(GPIO_RC522_RST)); SPI.begin(); Mfrc522->PCD_Init(); // if (Mfrc522->PCD_PerformSelfTest()) { // Saves 0k5 code @@ -155,3 +156,4 @@ bool Xsns80(uint8_t function) { } #endif // USE_RC522 +#endif // USE_SPI