mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-18 00:06:29 +00:00
Breaking change regarding MFRC522 and ILI9341
- 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``
This commit is contained in:
parent
c0d70fcc21
commit
f004cfea60
@ -3,7 +3,12 @@ All notable changes to this project will be documented in this file.
|
|||||||
|
|
||||||
## [Unreleased] - Development
|
## [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
|
### Added
|
||||||
- Milliseconds to console output (#10152)
|
- Milliseconds to console output (#10152)
|
||||||
- Support for P9813 RGB Led MOSFET controller (#10104)
|
- Support for P9813 RGB Led MOSFET controller (#10104)
|
||||||
|
@ -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.
|
[Complete list](BUILDS.md) of available feature and sensors.
|
||||||
|
|
||||||
## Changelog v9.2.0.1
|
## Changelog v9.2.0.2
|
||||||
### Added
|
### Added
|
||||||
- Milliseconds to console output [#10152](https://github.com/arendst/Tasmota/issues/10152)
|
- 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)
|
- 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 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)
|
- 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
|
### Changed
|
||||||
- Logging from heap to stack freeing 700 bytes RAM
|
- Logging from heap to stack freeing 700 bytes RAM
|
||||||
|
|
||||||
|
@ -8,6 +8,7 @@ default_envs = ${build_envs.default_envs}
|
|||||||
; *** Uncomment by deleting ";" in the line(s) below to select version(s)
|
; *** Uncomment by deleting ";" in the line(s) below to select version(s)
|
||||||
; tasmota32
|
; tasmota32
|
||||||
; tasmota32-webcam
|
; tasmota32-webcam
|
||||||
|
; tasmota32-odroidgo
|
||||||
; tasmota32-minimal
|
; tasmota32-minimal
|
||||||
; tasmota32-lite
|
; tasmota32-lite
|
||||||
; tasmota32-knx
|
; tasmota32-knx
|
||||||
|
@ -36,6 +36,14 @@ board_build.f_cpu = 240000000L
|
|||||||
build_flags = ${common32.build_flags} -DFIRMWARE_WEBCAM
|
build_flags = ${common32.build_flags} -DFIRMWARE_WEBCAM
|
||||||
lib_extra_dirs = lib/libesp32, lib/lib_basic
|
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]
|
[env:tasmota32-minimal]
|
||||||
extends = env:tasmota32
|
extends = env:tasmota32
|
||||||
build_flags = ${common32.build_flags} -DFIRMWARE_MINIMAL
|
build_flags = ${common32.build_flags} -DFIRMWARE_MINIMAL
|
||||||
|
@ -1307,7 +1307,7 @@ uint8_t ModuleNr(void)
|
|||||||
uint32_t ModuleTemplate(uint32_t module) {
|
uint32_t ModuleTemplate(uint32_t module) {
|
||||||
uint32_t i = 0;
|
uint32_t i = 0;
|
||||||
for (i = 0; i < sizeof(kModuleNiceList); i++) {
|
for (i = 0; i < sizeof(kModuleNiceList); i++) {
|
||||||
if (Settings.module == pgm_read_byte(kModuleNiceList + i)) {
|
if (module == pgm_read_byte(kModuleNiceList + i)) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1346,6 +1346,9 @@ String AnyModuleName(uint32_t index)
|
|||||||
if (USER_MODULE == index) {
|
if (USER_MODULE == index) {
|
||||||
return String(SettingsText(SET_TEMPLATE_NAME));
|
return String(SettingsText(SET_TEMPLATE_NAME));
|
||||||
} else {
|
} else {
|
||||||
|
#ifdef ESP32
|
||||||
|
index = ModuleTemplate(index);
|
||||||
|
#endif
|
||||||
char name[TOPSZ];
|
char name[TOPSZ];
|
||||||
return String(GetTextIndexed(name, sizeof(name), index, kModuleNames));
|
return String(GetTextIndexed(name, sizeof(name), index, kModuleNames));
|
||||||
}
|
}
|
||||||
@ -1451,6 +1454,11 @@ void ModuleDefault(uint32_t module)
|
|||||||
{
|
{
|
||||||
if (USER_MODULE == module) { module = WEMOS; } // Generic
|
if (USER_MODULE == module) { module = WEMOS; } // Generic
|
||||||
Settings.user_template_base = module;
|
Settings.user_template_base = module;
|
||||||
|
|
||||||
|
#ifdef ESP32
|
||||||
|
module = ModuleTemplate(module);
|
||||||
|
#endif
|
||||||
|
|
||||||
char name[TOPSZ];
|
char name[TOPSZ];
|
||||||
SettingsUpdateText(SET_TEMPLATE_NAME, GetTextIndexed(name, sizeof(name), module, kModuleNames));
|
SettingsUpdateText(SET_TEMPLATE_NAME, GetTextIndexed(name, sizeof(name), module, kModuleNames));
|
||||||
#ifdef ESP8266
|
#ifdef ESP8266
|
||||||
|
@ -1594,24 +1594,47 @@ void GpioInit(void)
|
|||||||
|
|
||||||
#ifdef ESP8266
|
#ifdef ESP8266
|
||||||
if ((2 == Pin(GPIO_TXD)) || (H801 == TasmotaGlobal.module_type)) { Serial.set_tx(2); }
|
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
|
#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)));
|
uint32_t pin_cs = Pin(GPIO_SPI_CS);
|
||||||
if (TasmotaGlobal.spi_enabled) {
|
uint32_t pin_dc = Pin(GPIO_SPI_DC);
|
||||||
TasmotaGlobal.my_module.io[12] = AGPIO(GPIO_SPI_MISO);
|
if (PinUsed(GPIO_RC522_CS)) {
|
||||||
SetPin(12, AGPIO(GPIO_SPI_MISO));
|
pin_cs = Pin(GPIO_RC522_CS);
|
||||||
TasmotaGlobal.my_module.io[13] = AGPIO(GPIO_SPI_MOSI);
|
}
|
||||||
SetPin(13, AGPIO(GPIO_SPI_MOSI));
|
if (PinUsed(GPIO_ILI9341_CS)) {
|
||||||
TasmotaGlobal.my_module.io[14] = AGPIO(GPIO_SPI_CLK);
|
pin_cs = Pin(GPIO_ILI9341_CS);
|
||||||
SetPin(14, AGPIO(GPIO_SPI_CLK));
|
if (PinUsed(GPIO_ILI9341_DC)) {
|
||||||
AddLog_P(LOG_LEVEL_DEBUG, PSTR("SPI: Using GPIO12(MISO), GPIO13(MOSI) and GPIO14(CLK)"));
|
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
|
#endif // ESP8266
|
||||||
#ifdef ESP32
|
#ifdef ESP32
|
||||||
#ifdef USE_SPI
|
if (pin_cs < 99) {
|
||||||
if (PinUsed(GPIO_SPI_CS) || PinUsed(GPIO_SPI_DC)) {
|
/*
|
||||||
if ((15 == Pin(GPIO_SPI_CS)) && (!GetPin(12) && !GetPin(13) && !GetPin(14))) { // HSPI
|
// 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);
|
TasmotaGlobal.my_module.io[12] = AGPIO(GPIO_SPI_MISO);
|
||||||
SetPin(12, AGPIO(GPIO_SPI_MISO));
|
SetPin(12, AGPIO(GPIO_SPI_MISO));
|
||||||
TasmotaGlobal.my_module.io[13] = AGPIO(GPIO_SPI_MOSI);
|
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);
|
TasmotaGlobal.my_module.io[14] = AGPIO(GPIO_SPI_CLK);
|
||||||
SetPin(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);
|
TasmotaGlobal.my_module.io[19] = AGPIO(GPIO_SPI_MISO);
|
||||||
SetPin(19, AGPIO(GPIO_SPI_MISO));
|
SetPin(19, AGPIO(GPIO_SPI_MISO));
|
||||||
TasmotaGlobal.my_module.io[23] = AGPIO(GPIO_SPI_MOSI);
|
TasmotaGlobal.my_module.io[23] = AGPIO(GPIO_SPI_MOSI);
|
||||||
@ -1644,24 +1667,25 @@ void GpioInit(void)
|
|||||||
SetPin(18, AGPIO(GPIO_SPI_CLK));
|
SetPin(18, AGPIO(GPIO_SPI_CLK));
|
||||||
}
|
}
|
||||||
TasmotaGlobal.spi_enabled = (PinUsed(GPIO_SPI_CLK) && (PinUsed(GPIO_SPI_MOSI) || PinUsed(GPIO_SPI_MISO)));
|
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 (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)"),
|
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));
|
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)"),
|
AddLog_P(LOG_LEVEL_DEBUG, PSTR("SPI: Using GPIO%02d(MOSI) and GPIO%02d(CLK)"),
|
||||||
Pin(GPIO_SPI_MOSI), Pin(GPIO_SPI_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)"),
|
AddLog_P(LOG_LEVEL_DEBUG, PSTR("SPI: Using GPIO%02d(MISO) and GPIO%02d(CLK)"),
|
||||||
Pin(GPIO_SPI_MISO), Pin(GPIO_SPI_CLK));
|
Pin(GPIO_SPI_MISO), Pin(GPIO_SPI_CLK));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif // USE_SPI
|
|
||||||
#endif // ESP32
|
#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++) {
|
for (uint32_t i = 0; i < ARRAY_SIZE(TasmotaGlobal.my_module.io); i++) {
|
||||||
uint32_t mpin = ValidPin(i, TasmotaGlobal.my_module.io[i]);
|
uint32_t mpin = ValidPin(i, TasmotaGlobal.my_module.io[i]);
|
||||||
|
@ -33,9 +33,27 @@
|
|||||||
#define CODE_IMAGE_STR "webcam"
|
#define CODE_IMAGE_STR "webcam"
|
||||||
|
|
||||||
#define USE_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
|
#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 // ESP32
|
||||||
|
|
||||||
#endif // _TASMOTA_CONFIGURATIONS_ESP32_H_
|
#endif // _TASMOTA_CONFIGURATIONS_ESP32_H_
|
||||||
|
@ -359,19 +359,23 @@ const uint16_t kGpioNiceList[] PROGMEM = {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef USE_SPI
|
#ifdef USE_SPI
|
||||||
AGPIO(GPIO_SPI_MISO), // SPI MISO
|
AGPIO(GPIO_SPI_MISO), // SPI MISO
|
||||||
AGPIO(GPIO_SPI_MOSI), // SPI MOSI
|
AGPIO(GPIO_SPI_MOSI), // SPI MOSI
|
||||||
AGPIO(GPIO_SPI_CLK), // SPI Clk
|
AGPIO(GPIO_SPI_CLK), // SPI Clk
|
||||||
AGPIO(GPIO_SPI_CS), // SPI Chip Select
|
AGPIO(GPIO_SPI_CS), // SPI Chip Select
|
||||||
AGPIO(GPIO_SPI_DC), // SPI Data Direction
|
AGPIO(GPIO_SPI_DC), // SPI Data Direction
|
||||||
#ifdef USE_NRF24
|
#ifdef USE_NRF24
|
||||||
// AGPIO(GPIO_NRF24_CS),
|
// AGPIO(GPIO_NRF24_CS),
|
||||||
// AGPIO(GPIO_NRF24_DC),
|
// AGPIO(GPIO_NRF24_DC),
|
||||||
#endif
|
#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
|
||||||
#ifdef USE_DISPLAY_ILI9341
|
#ifdef USE_DISPLAY_ILI9341
|
||||||
// AGPIO(GPIO_ILI9341_CS),
|
AGPIO(GPIO_ILI9341_CS),
|
||||||
// AGPIO(GPIO_ILI9341_DC),
|
AGPIO(GPIO_ILI9341_DC),
|
||||||
#endif // USE_DISPLAY_ILI9341
|
#endif // USE_DISPLAY_ILI9341
|
||||||
#endif // USE_DISPLAY
|
#endif // USE_DISPLAY
|
||||||
#endif // USE_SPI
|
#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_TX), // Mitsubishi Electric HVAC TX pin
|
||||||
AGPIO(GPIO_MIEL_HVAC_RX), // Mitsubishi Electric HVAC RX pin
|
AGPIO(GPIO_MIEL_HVAC_RX), // Mitsubishi Electric HVAC RX pin
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_RC522
|
|
||||||
AGPIO(GPIO_RC522_RST), // RC522 Rfid reset
|
|
||||||
// AGPIO(GPIO_RC522_CS), // RC522 Rfid chip select
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*-------------------------------------------------------------------------------------------*\
|
/*-------------------------------------------------------------------------------------------*\
|
||||||
* ESP32 specifics
|
* ESP32 specifics
|
||||||
@ -2319,7 +2319,9 @@ const char kModuleNames[] PROGMEM =
|
|||||||
#ifdef USE_WEBCAM
|
#ifdef USE_WEBCAM
|
||||||
"ESP32-Cam|"
|
"ESP32-Cam|"
|
||||||
#endif // USE_WEBCAM
|
#endif // USE_WEBCAM
|
||||||
// "Odroid Go|""
|
#ifdef USE_ODROID_GO
|
||||||
|
"Odroid Go|"
|
||||||
|
#endif // USE_ODROID_GO
|
||||||
// "ESP32-Solo|"
|
// "ESP32-Solo|"
|
||||||
// "WT32-Eth01|"
|
// "WT32-Eth01|"
|
||||||
// "TTGO Watch|"
|
// "TTGO Watch|"
|
||||||
@ -2334,7 +2336,9 @@ const uint8_t kModuleNiceList[] PROGMEM = {
|
|||||||
#ifdef USE_WEBCAM
|
#ifdef USE_WEBCAM
|
||||||
ESP32_CAM_AITHINKER,
|
ESP32_CAM_AITHINKER,
|
||||||
#endif // USE_WEBCAM
|
#endif // USE_WEBCAM
|
||||||
// ODROID_GO,
|
#ifdef USE_ODROID_GO
|
||||||
|
ODROID_GO,
|
||||||
|
#endif // USE_ODROID_GO
|
||||||
// ESP32_SOLO,
|
// ESP32_SOLO,
|
||||||
// WT32_ETH01,
|
// WT32_ETH01,
|
||||||
// TTGO_WATCH,
|
// TTGO_WATCH,
|
||||||
@ -2435,46 +2439,46 @@ const mytmplt kModules[] PROGMEM =
|
|||||||
#endif // USE_WEBCAM
|
#endif // USE_WEBCAM
|
||||||
#ifdef USE_ODROID_GO
|
#ifdef USE_ODROID_GO
|
||||||
{ // ODROID_GO - (ESP32)
|
{ // ODROID_GO - (ESP32)
|
||||||
AGPIO(GPIO_KEY1), // 0 (I)O GPIO0, Button1
|
AGPIO(GPIO_KEY1), // 0 (I)O GPIO0, BTN-VOLUME
|
||||||
AGPIO(GPIO_USER), // 1 IO TXD0 GPIO1, U0TXD, CLK_OUT3, EMAC_RXD2
|
AGPIO(GPIO_TXD), // 1 IO TXD0 GPIO1, TXD0
|
||||||
AGPIO(GPIO_USER), // 2 IO GPIO2, ADC2_CH2, TOUCH2, RTC_GPIO12, HSPIWP, HS2_DATA0, SD_DATA0
|
AGPIO(GPIO_LEDLNK), // 2 IO GPIO2, STATUS LED
|
||||||
AGPIO(GPIO_USER), // 3 IO RXD0 GPIO3, U0RXD, CLK_OUT2
|
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), // 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
|
// 6 IO GPIO6, Flash CLK
|
||||||
// 7 IO GPIO7, Flash D0
|
// 7 IO GPIO7, Flash D0
|
||||||
// 8 IO GPIO8, Flash D1
|
// 8 IO GPIO8, Flash D1
|
||||||
AGPIO(GPIO_USER), // 9 IO GPIO9, Flash D2, U1RXD
|
0, // 9 IO GPIO9, Flash D2, U1RXD
|
||||||
AGPIO(GPIO_USER), // 10 IO GPIO10, Flash D3, U1TXD
|
0, // 10 IO GPIO10, Flash D3, U1TXD
|
||||||
// 11 IO GPIO11, Flash CMD
|
// 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), // 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_KEY1) +1, // 13 IO GPIO13, BTN-MENU
|
||||||
AGPIO(GPIO_USER), // 14 IO GPIO14, ADC2_CH6, TOUCH6, RTC_GPIO16, MTMS, HSPICLK, HS2_CLK, SD_CLK, EMAC_TXD2
|
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), // 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), // 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), // 17 IO GPIO17, HS1_DATA5, U2TXD, EMAC_CLK_OUT_180
|
||||||
AGPIO(GPIO_USER), // 18 IO GPIO18, VSPICLK, HS1_DATA7
|
AGPIO(GPIO_SPI_CLK), // 18 IO GPIO18, VSPI_CLK
|
||||||
AGPIO(GPIO_USER), // 19 IO GPIO19, VSPIQ, U0CTS, EMAC_TXD0
|
AGPIO(GPIO_SPI_MISO), // 19 IO GPIO19, VSPI_MISO
|
||||||
0, // 20
|
0, // 20
|
||||||
AGPIO(GPIO_USER), // 21 IO GPIO21, VSPIHD, EMAC_TX_EN
|
AGPIO(GPIO_ILI9341_DC), // 21 IO GPIO21, SPI_DC_LCD
|
||||||
AGPIO(GPIO_USER), // 22 IO LED GPIO22, VSPIWP, U0RTS, EMAC_TXD1
|
0, // 22 IO LED GPIO22, VSPI_CS1_TFLASH
|
||||||
AGPIO(GPIO_USER), // 23 IO GPIO23, VSPID, HS1_STROBE
|
AGPIO(GPIO_SPI_MOSI), // 23 IO GPIO23, VSPI_MOSI
|
||||||
0, // 24
|
0, // 24
|
||||||
AGPIO(GPIO_USER), // 25 IO GPIO25, DAC_1, ADC2_CH8, RTC_GPIO6, EMAC_RXD0
|
0, // 25 IO GPIO25, DAC_1 (PAM8304A)
|
||||||
AGPIO(GPIO_USER), // 26 IO GPIO26, DAC_2, ADC2_CH9, RTC_GPIO7, EMAC_RXD1
|
0, // 26 IO GPIO26, DAC_2 (PAM8304A)
|
||||||
AGPIO(GPIO_USER), // 27 IO GPIO27, ADC2_CH7, TOUCH7, RTC_GPIO17, EMAC_RX_DV
|
AGPIO(GPIO_KEY1) +2, // 27 IO GPIO27, BTN-SELECT
|
||||||
0, // 28
|
0, // 28
|
||||||
0, // 29
|
0, // 29
|
||||||
0, // 30
|
0, // 30
|
||||||
0, // 31
|
0, // 31
|
||||||
AGPIO(GPIO_USER), // 32 IO GPIO32, XTAL_32K_P (32.768 kHz crystal oscillator input), ADC1_CH4, TOUCH9, RTC_GPIO9
|
AGPIO(GPIO_SWT1) +4, // 32 IO GPIO32, BTN-A
|
||||||
AGPIO(GPIO_USER), // 33 IO GPIO33, XTAL_32K_N (32.768 kHz crystal oscillator output), ADC1_CH5, TOUCH8, RTC_GPIO8
|
AGPIO(GPIO_SWT1) +5, // 33 IO GPIO33, BTN-B
|
||||||
AGPIO(GPIO_USER), // 34 I NO PULLUP GPIO34, ADC1_CH6, RTC_GPIO4
|
AGPIO(GPIO_ADC_JOY), // 34 I NO PULLUP GPIO34, JOY-X (LEFT-RIGHT)
|
||||||
AGPIO(GPIO_USER), // 35 I NO PULLUP GPIO35, ADC1_CH7, RTC_GPIO5
|
AGPIO(GPIO_ADC_JOY) +1, // 35 I NO PULLUP GPIO35, JOY-Y (UP-DOWN)
|
||||||
AGPIO(GPIO_USER), // 36 I NO PULLUP GPIO36, SENSOR_VP, ADC_H, ADC1_CH0, RTC_GPIO0
|
AGPIO(GPIO_ADC_RANGE) +2, // 36 I NO PULLUP GPIO36, SENSOR_VP (BATTERY CARGER)
|
||||||
0, // 37 NO PULLUP
|
0, // 37 NO PULLUP
|
||||||
0, // 38 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
|
0 // Flag
|
||||||
},
|
},
|
||||||
#endif // USE_ODROID_GO
|
#endif // USE_ODROID_GO
|
||||||
|
@ -20,6 +20,6 @@
|
|||||||
#ifndef _TASMOTA_VERSION_H_
|
#ifndef _TASMOTA_VERSION_H_
|
||||||
#define _TASMOTA_VERSION_H_
|
#define _TASMOTA_VERSION_H_
|
||||||
|
|
||||||
const uint32_t VERSION = 0x09020001;
|
const uint32_t VERSION = 0x09020002;
|
||||||
|
|
||||||
#endif // _TASMOTA_VERSION_H_
|
#endif // _TASMOTA_VERSION_H_
|
||||||
|
34
tasmota/xdrv_80_odroidgo.ino
Normal file
34
tasmota/xdrv_80_odroidgo.ino
Normal file
@ -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 <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#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
|
@ -97,7 +97,18 @@ void Ili9341Init(uint8_t mode)
|
|||||||
|
|
||||||
void Ili9341InitDriver(void)
|
void Ili9341InitDriver(void)
|
||||||
{
|
{
|
||||||
|
uint32_t pin_cs = Pin(GPIO_SPI_CS);
|
||||||
|
uint32_t pin_dc = Pin(GPIO_SPI_DC);
|
||||||
if (!Settings.display_model) {
|
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;
|
Settings.display_model = XDSP_04;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -109,7 +120,7 @@ void Ili9341InitDriver(void)
|
|||||||
Settings.display_height = ILI9341_TFTHEIGHT;
|
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();
|
tft->begin();
|
||||||
|
|
||||||
#ifdef USE_DISPLAY_MODES1TO5
|
#ifdef USE_DISPLAY_MODES1TO5
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifdef USE_SPI
|
||||||
#ifdef USE_RC522
|
#ifdef USE_RC522
|
||||||
/*********************************************************************************************\
|
/*********************************************************************************************\
|
||||||
* MFRC522 - 13.56 MHz RFID reader
|
* MFRC522 - 13.56 MHz RFID reader
|
||||||
@ -97,8 +98,8 @@ void RC522ScanForTag(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void RC522Init(void) {
|
void RC522Init(void) {
|
||||||
if (PinUsed(GPIO_SPI_CS) && PinUsed(GPIO_RC522_RST)) {
|
if (PinUsed(GPIO_RC522_CS) && PinUsed(GPIO_RC522_RST)) {
|
||||||
Mfrc522 = new MFRC522(Pin(GPIO_SPI_CS), Pin(GPIO_RC522_RST));
|
Mfrc522 = new MFRC522(Pin(GPIO_RC522_CS), Pin(GPIO_RC522_RST));
|
||||||
SPI.begin();
|
SPI.begin();
|
||||||
Mfrc522->PCD_Init();
|
Mfrc522->PCD_Init();
|
||||||
// if (Mfrc522->PCD_PerformSelfTest()) { // Saves 0k5 code
|
// if (Mfrc522->PCD_PerformSelfTest()) { // Saves 0k5 code
|
||||||
@ -155,3 +156,4 @@ bool Xsns80(uint8_t function) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#endif // USE_RC522
|
#endif // USE_RC522
|
||||||
|
#endif // USE_SPI
|
||||||
|
Loading…
x
Reference in New Issue
Block a user