diff --git a/examples/TextToSpeech/TextToSpeech.ino b/examples/TextToSpeech/TextToSpeech.ino new file mode 100644 index 0000000..ed3532d --- /dev/null +++ b/examples/TextToSpeech/TextToSpeech.ino @@ -0,0 +1,91 @@ +/** + * @file TextToSpeech.ino + * @author Lewis He (lewishe@outlook.com) + * @license MIT + * @copyright Copyright (c) 2024 ShenZhen XinYuan Electronic Technology Co., Ltd + * @date 2024-12-11 + * @note Only support A7670X A7608X , Not support SIM7670G + */ +// See all AT commands, if wanted +// #define DUMP_AT_COMMANDS + +#include "utilities.h" +#include +#include "Arduino.h" + +#ifdef DUMP_AT_COMMANDS // if enabled it requires the streamDebugger lib +#include +StreamDebugger debugger(SerialAT, Serial); +TinyGsm modem(debugger); +#else +TinyGsm modem(SerialAT); +#endif + +void setup() +{ + Serial.begin(115200); // Set console baud rate + + Serial.println("Start Sketch"); + + SerialAT.begin(115200, SERIAL_8N1, MODEM_RX_PIN, MODEM_TX_PIN); + +#ifdef BOARD_POWERON_PIN + pinMode(BOARD_POWERON_PIN, OUTPUT); + digitalWrite(BOARD_POWERON_PIN, HIGH); +#endif + + // Set modem reset pin ,reset modem + pinMode(MODEM_RESET_PIN, OUTPUT); + digitalWrite(MODEM_RESET_PIN, !MODEM_RESET_LEVEL); delay(100); + digitalWrite(MODEM_RESET_PIN, MODEM_RESET_LEVEL); delay(2600); + digitalWrite(MODEM_RESET_PIN, !MODEM_RESET_LEVEL); + + pinMode(BOARD_PWRKEY_PIN, OUTPUT); + digitalWrite(BOARD_PWRKEY_PIN, LOW); + delay(100); + digitalWrite(BOARD_PWRKEY_PIN, HIGH); + delay(100); + digitalWrite(BOARD_PWRKEY_PIN, LOW); + + // Check if the modem is online + Serial.println("Start modem..."); + + int retry = 0; + while (!modem.testAT(1000)) { + Serial.println("."); + if (retry++ > 10) { + digitalWrite(BOARD_PWRKEY_PIN, LOW); + delay(100); + digitalWrite(BOARD_PWRKEY_PIN, HIGH); + delay(1000); + digitalWrite(BOARD_PWRKEY_PIN, LOW); + retry = 0; + } + } + Serial.println(); + + delay(5000); + + // Mode 1. Start to synth and play, is in UCS2 coding format. + String text = "6B228FCE4F7F75288BED97F3540862107CFB7EDF"; + if (modem.textToSpeech(text, 1)) { + Serial.println("Play successfully."); + } + +} + +uint32_t count = 0; + +void loop() +{ + String text = "millis" + String(count++); + // Mode: 2. Start to synth and play, is in ASCII coding format, + if (modem.textToSpeech(text, 2)) { + Serial.println("Play successfully."); + } + delay(1000); +} + +#ifndef TINY_GSM_FORK_LIBRARY +#error "No correct definition detected, Please copy all the [lib directories](https://github.com/Xinyuan-LilyGO/LilyGO-T-A76XX/tree/main/lib) to the arduino libraries directory , See README" +#endif diff --git a/examples/TextToSpeech/utilities.h b/examples/TextToSpeech/utilities.h new file mode 100644 index 0000000..c018d25 --- /dev/null +++ b/examples/TextToSpeech/utilities.h @@ -0,0 +1,273 @@ +/** + * @file utilities.h + * @author Lewis He (lewishe@outlook.com) + * @license MIT + * @copyright Copyright (c) 2023 Shenzhen Xin Yuan Electronic Technology Co., Ltd + * @date 2023-11-15 + * + */ + +#pragma once + +// Note: +// When using ArduinoIDE, you must select a corresponding board type. +// If you don’t know which board type you have, please click on the link to view it. +// 使用ArduinoIDE ,必须选择一个对应的板型 ,如果你不知道你的板型是哪种,请点击链接进行查看 + +// Products Link:https://www.lilygo.cc/products/t-sim-a7670e +// #define LILYGO_T_A7670 + +// Products Link: https://lilygo.cc/products/t-call-v1-4 +// T-Call-A767X V1.0 and V1.1 have different Pinmaps and cannot be used universally. +// #define LILYGO_T_CALL_A7670_V1_0 + +//! SIM7672G and SIM7670G are exactly the same, except for the name change +// Products Link: https://lilygo.cc/products/t-sim-7670g-s3 +// #define LILYGO_T_SIM767XG_S3 + +// Products Link: https://lilygo.cc/products/t-a7608e-h?variant=42860532433077 +// #define LILYGO_T_A7608X + +// Products Link: https://lilygo.cc/products/t-a7608e-h?variant=43932699033781 +// #define LILYGO_T_A7608X_S3 + +// Products Link: https://lilygo.cc/products/a-t-pcie?variant=42335922094261 +// #define LILYGO_T_PCIE_A767X + + + +#if defined(LILYGO_T_A7670) + +#define MODEM_BAUDRATE (115200) +#define MODEM_DTR_PIN (25) +#define MODEM_TX_PIN (26) +#define MODEM_RX_PIN (27) +// The modem boot pin needs to follow the startup sequence. +#define BOARD_PWRKEY_PIN (4) +#define BOARD_ADC_PIN (35) +// The modem power switch must be set to HIGH for the modem to supply power. +#define BOARD_POWERON_PIN (12) +#define MODEM_RING_PIN (33) +#define MODEM_RESET_PIN (5) +#define BOARD_MISO_PIN (2) +#define BOARD_MOSI_PIN (15) +#define BOARD_SCK_PIN (14) +#define BOARD_SD_CS_PIN (13) +#define BOARD_BAT_ADC_PIN (35) +#define MODEM_RESET_LEVEL HIGH +#define SerialAT Serial1 + +#define MODEM_GPS_ENABLE_GPIO (-1) +#define MODEM_GPS_ENABLE_LEVEL (-1) + +#ifndef TINY_GSM_MODEM_A7670 +#define TINY_GSM_MODEM_A7670 +#endif + +// It is only available in V1.4 version. In other versions, IO36 is not connected. +#define BOARD_SOLAR_ADC_PIN (36) + + +#elif defined(LILYGO_T_CALL_A7670_V1_0) +#define MODEM_BAUDRATE (115200) +#define MODEM_DTR_PIN (14) +#define MODEM_TX_PIN (26) +#define MODEM_RX_PIN (25) +// The modem boot pin needs to follow the startup sequence. +#define BOARD_PWRKEY_PIN (4) +#define BOARD_LED_PIN (12) +// There is no modem power control, the LED Pin is used as a power indicator here. +#define BOARD_POWERON_PIN (BOARD_LED_PIN) +#define MODEM_RING_PIN (13) +#define MODEM_RESET_PIN (27) +#define MODEM_RESET_LEVEL LOW +#define SerialAT Serial1 + + +#define MODEM_GPS_ENABLE_GPIO (-1) +#define MODEM_GPS_ENABLE_LEVEL (-1) + + +#ifndef TINY_GSM_MODEM_A7670 +#define TINY_GSM_MODEM_A7670 +#endif + +#elif defined(LILYGO_T_CALL_A7670_V1_1) + +#define MODEM_BAUDRATE (115200) +#define MODEM_DTR_PIN (32) +#define MODEM_TX_PIN (27) +#define MODEM_RX_PIN (26) +// The modem boot pin needs to follow the startup sequence. +#define BOARD_PWRKEY_PIN (4) +#define BOARD_LED_PIN (13) +// There is no modem power control, the LED Pin is used as a power indicator here. +#define BOARD_POWERON_PIN (BOARD_LED_PIN) +#define MODEM_RING_PIN (33) +#define MODEM_RESET_PIN (5) +#define MODEM_RESET_LEVEL LOW +#define SerialAT Serial1 + +#define MODEM_GPS_ENABLE_GPIO (-1) +#define MODEM_GPS_ENABLE_LEVEL (-1) + +#ifndef TINY_GSM_MODEM_A7670 +#define TINY_GSM_MODEM_A7670 +#endif + +#elif defined(LILYGO_T_SIM767XG_S3) +#define MODEM_BAUDRATE (115200) +#define MODEM_DTR_PIN (9) +#define MODEM_TX_PIN (11) +#define MODEM_RX_PIN (10) +// The modem boot pin needs to follow the startup sequence. +#define BOARD_PWRKEY_PIN (18) +#define BOARD_LED_PIN (12) +// There is no modem power control, the LED Pin is used as a power indicator here. +#define BOARD_POWERON_PIN (BOARD_LED_PIN) +#define MODEM_RING_PIN (3) +#define MODEM_RESET_PIN (17) +#define MODEM_RESET_LEVEL LOW +#define SerialAT Serial1 + +#define BOARD_BAT_ADC_PIN (4) +#define BOARD_SOLAR_ADC_PIN (5) +#define BOARD_MISO_PIN (47) +#define BOARD_MOSI_PIN (14) +#define BOARD_SCK_PIN (21) +#define BOARD_SD_CS_PIN (13) + +#ifndef TINY_GSM_MODEM_SIM7672 +#define TINY_GSM_MODEM_SIM7672 +#endif + +#define MODEM_GPS_ENABLE_GPIO (4) +#define MODEM_GPS_ENABLE_LEVEL (1) + + +#elif defined(LILYGO_T_A7608X) + +#define MODEM_BAUDRATE (115200) +#define MODEM_DTR_PIN (25) +#define MODEM_TX_PIN (26) +#define MODEM_RX_PIN (27) +// The modem boot pin needs to follow the startup sequence. +#define BOARD_PWRKEY_PIN (4) +#define BOARD_BAT_ADC_PIN (35) +// The modem power switch must be set to HIGH for the modem to supply power. +#define BOARD_POWERON_PIN (12) //T-A7608-V2 is onboard led +#define MODEM_RING_PIN (33) +#define MODEM_RESET_PIN (5) //T-A7608-V2 no connection +#define BOARD_MISO_PIN (2) +#define BOARD_MOSI_PIN (15) +#define BOARD_SCK_PIN (14) +#define BOARD_SD_CS_PIN (13) + +#define MODEM_RESET_LEVEL HIGH +#define SerialAT Serial1 + + +#ifndef TINY_GSM_MODEM_A7608 +#define TINY_GSM_MODEM_A7608 +#endif + +// only version v1.1 or V2 has solar adc pin +#define BOARD_SOLAR_ADC_PIN (34) + + +// 127 is defined in GSM as the AUXVDD index +#define MODEM_GPS_ENABLE_GPIO (127) +#define MODEM_GPS_ENABLE_LEVEL (1) + +#elif defined(LILYGO_T_A7608X_S3) + +#define MODEM_BAUDRATE (115200) +#define MODEM_DTR_PIN (7) +#define MODEM_TX_PIN (17) +#define MODEM_RX_PIN (18) +// The modem boot pin needs to follow the startup sequence. +#define BOARD_PWRKEY_PIN (15) +#define BOARD_BAT_ADC_PIN (4) +// The modem power switch must be set to HIGH for the modem to supply power. +// #define BOARD_POWERON_PIN (12) +#define MODEM_RING_PIN (6) +#define MODEM_RESET_PIN (16) +#define BOARD_MISO_PIN (47) +#define BOARD_MOSI_PIN (14) +#define BOARD_SCK_PIN (21) +#define BOARD_SD_CS_PIN (13) + +#define MODEM_RESET_LEVEL LOW +#define SerialAT Serial1 + +#ifndef TINY_GSM_MODEM_A7608 +#define TINY_GSM_MODEM_A7608 +#endif + +// only version v1.1 has solar adc pin +#define BOARD_SOLAR_ADC_PIN (3) + +// 127 is defined in GSM as the AUXVDD index +#define MODEM_GPS_ENABLE_GPIO (127) +#define MODEM_GPS_ENABLE_LEVEL (1) + +#elif defined(LILYGO_T_A7608X_DC_S3) + +#define MODEM_DTR_PIN (5) +#define MODEM_RX_PIN (42) +#define MODEM_TX_PIN (41) +// The modem boot pin needs to follow the startup sequence. +#define BOARD_PWRKEY_PIN (38) +#define MODEM_RING_PIN (6) +#define MODEM_RESET_PIN (40) +#define MODEM_RTS_PIN (1) +#define MODEM_CTS_PIN (2) + +#define MODEM_RESET_LEVEL LOW +#define SerialAT Serial1 + +#ifndef TINY_GSM_MODEM_A7608 +#define TINY_GSM_MODEM_A7608 +#endif + +// 127 is defined in GSM as the AUXVDD index +#define MODEM_GPS_ENABLE_GPIO (127) +#define MODEM_GPS_ENABLE_LEVEL (1) + + +#elif defined(LILYGO_T_PCIE_A767X) + +#define MODEM_DTR_PIN (32) +#define MODEM_RX_PIN (26) +#define MODEM_TX_PIN (27) +// The modem power switch must be set to HIGH for the modem to supply power. +#define BOARD_POWERON_PIN (25) +// The modem boot pin needs to follow the startup sequence. +#define BOARD_PWRKEY_PIN (4) +#define MODEM_RING_PIN (33) +#define BOARD_LED_PIN (12) +#define PMU_IRQ (35) + +// No connect to reset pin to modem ,set dummy reset pin +#define MODEM_RESET_PIN (BOARD_LED_PIN) +#define MODEM_RESET_LEVEL (0) + +#define SerialAT Serial1 + +#ifndef TINY_GSM_MODEM_A7670 +#define TINY_GSM_MODEM_A7670 +#endif + +// 127 is defined in GSM as the AUXVDD index +#define MODEM_GPS_ENABLE_GPIO (4) +#define MODEM_GPS_ENABLE_LEVEL (0) + +#else +#error "Use ArduinoIDE, please open the macro definition corresponding to the board above " +#endif + +// T-Call-A767X V1.0 and V1.1 have different Pinmaps and cannot be used universally , Invalid version +// #define LILYGO_T_CALL_A7670_V1_1 + +// #define LILYGO_T_A7608X_DC_S3 + diff --git a/platformio.ini b/platformio.ini index aeda892..c3778f7 100644 --- a/platformio.ini +++ b/platformio.ini @@ -17,10 +17,10 @@ ; !default_envs 必须选择一个对应的板型 ,如果你不知道你的板型是哪种,请点击链接进行查看 ; https://www.lilygo.cc/products/t-sim-a7670e -default_envs = T-A7670X +; default_envs = T-A7670X ; https://www.lilygo.cc/products/t-call-v1-4 -; default_envs = T-Call-A7670X-V1-0 +default_envs = T-Call-A7670X-V1-0 ; Products Link: https://lilygo.cc/products/t-sim-7670g-s3 @@ -55,6 +55,7 @@ default_envs = T-A7670X ; src_dir = examples/HttpClient ; src_dir = examples/HttpsClient ; src_dir = examples/GPS_BuiltIn +; src_dir = examples/GPS_BuiltInEx ; src_dir = examples/GPS_Acceleration ; src_dir = examples/GPS_NMEA_Parse ; src_dir = examples/GPS_NMEA_Output @@ -88,8 +89,8 @@ default_envs = T-A7670X ; src_dir = examples/SimHatRelay ; src_dir = examples/SimHatAccelerometer ; src_dir = examples/ULP_Monitor -src_dir = examples/SecureClient - +; src_dir = examples/SecureClient +src_dir = examples/TextToSpeech [env] platform = espressif32@6.4.0