From 548a1ce22d44899180ff1e9fa40a453be94d42f4 Mon Sep 17 00:00:00 2001 From: Klaus K Wilting Date: Tue, 20 Mar 2018 21:38:41 +0100 Subject: [PATCH] v1.2.1: TTGOv1 support (experimental) --- README.md | 5 +- platformio.ini | 30 +++++++++-- src/hal/heltec.h | 4 +- src/hal/ttgov1.h | 22 +++++++++ src/hal/{ttgo.h => ttgov2.h} | 96 ++++++++++++++++++------------------ src/main.cpp | 3 +- src/main.h | 2 +- 7 files changed, 104 insertions(+), 58 deletions(-) create mode 100644 src/hal/ttgov1.h rename src/hal/{ttgo.h => ttgov2.h} (97%) diff --git a/README.md b/README.md index 00f722ec..401c9d99 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Paxcounter -Wifi & Bluetooth driven, LoRaWAN enabled, battery powered mini ESP32 Paxcounter -built on cheap ESP32 boards +**Wifi & Bluetooth driven, LoRaWAN enabled, battery powered mini ESP32 Paxcounter +built on cheap ESP32 boards** @@ -8,6 +8,7 @@ built on cheap ESP32 boards Currently supported IoT boards: - Heltec LoRa-32 +- TTGOv1 - TTGOv2 - Pycom LoPy - Pycom LoPy4 diff --git a/platformio.ini b/platformio.ini index e38ee0a5..c6ada60b 100644 --- a/platformio.ini +++ b/platformio.ini @@ -9,8 +9,9 @@ ; http://docs.platformio.org/page/projectconf.html [platformio] -env_default = heltec_wifi_lora_32 -;env_default = ttgo +;env_default = heltec_wifi_lora_32 +;env_default = ttgov2 +env_default = ttgov1 ;env_default = lopy ;env_default = lopy4 @@ -34,7 +35,7 @@ build_flags = ;FreeRTOS single core operation, switches off core 1 (see arduino-esp32/cores/esp32/main.cpp) ; -DCONFIG_FREERTOS_UNICORE -[env:ttgo] +[env:ttgov1] platform = espressif32 board = esp32dev framework = arduino @@ -50,7 +51,28 @@ build_flags = ;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/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) ; -DCONFIG_FREERTOS_UNICORE diff --git a/src/hal/heltec.h b/src/hal/heltec.h index 665cdb70..d439b0f1 100644 --- a/src/hal/heltec.h +++ b/src/hal/heltec.h @@ -2,8 +2,8 @@ #define HELTEC #define HAS_DISPLAY // has OLED-Display -#define HAS_LED // has on usable board LED -#define HAS_BUTTON // has onboard button +#define HAS_LED // has usable on board LED +#define HAS_BUTTON // has usable on board button #define CFG_sx1276_radio 1 // re-define pin definitions of pins_arduino.h diff --git a/src/hal/ttgov1.h b/src/hal/ttgov1.h new file mode 100644 index 00000000..3025987d --- /dev/null +++ b/src/hal/ttgov1.h @@ -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 \ No newline at end of file diff --git a/src/hal/ttgo.h b/src/hal/ttgov2.h similarity index 97% rename from src/hal/ttgo.h rename to src/hal/ttgov2.h index 0407bbf4..8e298f83 100644 --- a/src/hal/ttgo.h +++ b/src/hal/ttgov2.h @@ -1,48 +1,48 @@ -// Hardware related definitions for TTGO V2 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 LMIC_UNUSED_PIN // not sure -#define DIO0 26 // wired on PCB -#define DIO1 33 // needs to be wired external -#define DIO2 32 // needs to be wired external (but not necessary for LoRa) - -// Hardware pin definitions for TTGO V2 Board with OLED SSD1306 0,96" I2C Display -#define OLED_RST U8X8_PIN_NONE // to be checked if really not connected -#define OLED_SDA 21 // ESP32 GPIO4 (Pin4) -- SD1306 Data -#define OLED_SCL 22 // ESP32 GPIO15 (Pin15) -- SD1306 Clock - - -/* - ESP32 LoRa module (SPI) OLED display (I2C) - --------- ----------------- ------------------ - 5 SCK SCK - 27 MOSI MOSI - 19 MISO MISO - 18 SS NSS - 14 RST - 26 DIO0 - 33 DIO1 (see note {1}) - 32 DIO2 (see note {2}) - 22 SCL SCL - 21 SDA SDA - 22 LED (useless, see note {3}) - - {1} Must be manually wired! - DIO1 is wired to a separate pin but is not wired on-board to pin/GPIO33. - Explicitly wire board pin labeled DIO1 to pin 33 (see TTGO V2.0 pinout). - {2} Must be manually wired! - DIO2 is wired to a separate pin but is not wired on-board to pin/GPIO32. - Explicitly wire board pin labeled DIO2 to pin 32 (see TTGO V2.0 pinout). - {3} The on-board LED is wired to SCL (used by display) therefore totally useless! - */ - +// Hardware related definitions for TTGO V2 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 LMIC_UNUSED_PIN // not sure +#define DIO0 26 // wired on PCB +#define DIO1 33 // needs to be wired external +#define DIO2 32 // needs to be wired external (but not necessary for LoRa) + +// Hardware pin definitions for TTGO V2 Board with OLED SSD1306 0,96" I2C Display +#define OLED_RST U8X8_PIN_NONE // to be checked if really not connected +#define OLED_SDA 21 // ESP32 GPIO4 (Pin4) -- SD1306 Data +#define OLED_SCL 22 // ESP32 GPIO15 (Pin15) -- SD1306 Clock + + +/* + ESP32 LoRa module (SPI) OLED display (I2C) + --------- ----------------- ------------------ + 5 SCK SCK + 27 MOSI MOSI + 19 MISO MISO + 18 SS NSS + 14 RST + 26 DIO0 + 33 DIO1 (see note {1}) + 32 DIO2 (see note {2}) + 22 SCL SCL + 21 SDA SDA + 22 LED (useless, see note {3}) + + {1} Must be manually wired! + DIO1 is wired to a separate pin but is not wired on-board to pin/GPIO33. + Explicitly wire board pin labeled DIO1 to pin 33 (see TTGO V2.0 pinout). + {2} Must be manually wired! + DIO2 is wired to a separate pin but is not wired on-board to pin/GPIO32. + Explicitly wire board pin labeled DIO2 to pin 32 (see TTGO V2.0 pinout). + {3} The on-board LED is wired to SCL (used by display) therefore totally useless! + */ + diff --git a/src/main.cpp b/src/main.cpp index d3846b40..ec5a8adf 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -326,8 +326,9 @@ void setup() { 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_init(NULL, NULL); + esp_event_loop_init(NULL, NULL); // not sure if necessary -> to be checked // Print chip information on startup #ifdef VERBOSE diff --git a/src/main.h b/src/main.h index 08aeeee9..f34a716a 100644 --- a/src/main.h +++ b/src/main.h @@ -1,5 +1,5 @@ // program version -#define PROGVERSION "1.2.0" // use max 10 chars here! +#define PROGVERSION "1.2.1" // use max 10 chars here! #define PROGNAME "PAXCNT" // Verbose enables serial output