-
Notifications
You must be signed in to change notification settings - Fork 61
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
4 changed files
with
386 additions
and
10 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,132 @@ | ||
/** | ||
* @file GPS_NMEA_Output.ino | ||
* @author Lewis He ([email protected]) | ||
* @license MIT | ||
* @copyright Copyright (c) 2024 Shenzhen Xin Yuan Electronic Technology Co., Ltd | ||
* @date 2024-08-13 | ||
* | ||
*/ | ||
#include "utilities.h" | ||
|
||
#define TINY_GSM_RX_BUFFER 1024 // Set RX buffer to 1Kb | ||
#define SerialAT Serial1 | ||
|
||
// See all AT commands, if wanted | ||
#define DUMP_AT_COMMANDS | ||
|
||
#include <TinyGsmClient.h> | ||
#include <TinyGPSPlus.h> | ||
#ifdef DUMP_AT_COMMANDS // if enabled it requires the streamDebugger lib | ||
#include <StreamDebugger.h> | ||
StreamDebugger debugger(SerialAT, Serial); | ||
TinyGsm modem(debugger); | ||
#else | ||
TinyGsm modem(SerialAT); | ||
#endif | ||
|
||
|
||
uint32_t check_interval = 0; | ||
|
||
void displayInfo(); | ||
|
||
void setup() | ||
{ | ||
Serial.begin(115200); | ||
// Turn on DC boost to power on the modem | ||
#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); | ||
|
||
// Turn on modem | ||
pinMode(BOARD_PWRKEY_PIN, OUTPUT); | ||
digitalWrite(BOARD_PWRKEY_PIN, LOW); | ||
delay(100); | ||
digitalWrite(BOARD_PWRKEY_PIN, HIGH); | ||
delay(1000); | ||
digitalWrite(BOARD_PWRKEY_PIN, LOW); | ||
|
||
// Set modem baud | ||
SerialAT.begin(115200, SERIAL_8N1, MODEM_RX_PIN, MODEM_TX_PIN); | ||
|
||
Serial.println("Start modem..."); | ||
delay(3000); | ||
|
||
/* | ||
* During testing, it was found that there may be a power outage. | ||
Add a loop detection here. When the GPS timeout does not start, | ||
resend the AT to check if the modem is online | ||
* */ | ||
Serial.print("Modem starting..."); | ||
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); //Ton = 1000ms ,Min = 500ms, Max 2000ms | ||
digitalWrite(BOARD_PWRKEY_PIN, LOW); | ||
retry = 0; | ||
} | ||
} | ||
Serial.println(); | ||
|
||
delay(200); | ||
|
||
|
||
Serial.println("Before running, please check whether the version you purchased supports the GPS function. Regardless of whether the PCB contains an antenna connector, the A7670G does not include a built-in GPS function. If the A7670G you purchased claims to support GPS, then please run examples/GPSShield\n\n"); | ||
Serial.println("Before running, please check whether the version you purchased supports the GPS function. Regardless of whether the PCB contains an antenna connector, the A7670G does not include a built-in GPS function. If the A7670G you purchased claims to support GPS, then please run examples/GPSShield\n\n"); | ||
Serial.println("Before running, please check whether the version you purchased supports the GPS function. Regardless of whether the PCB contains an antenna connector, the A7670G does not include a built-in GPS function. If the A7670G you purchased claims to support GPS, then please run examples/GPSShield\n\n"); | ||
|
||
|
||
retry = 15; | ||
Serial.println("Enabling GPS/GNSS/GLONASS"); | ||
while (!modem.enableGPS(MODEM_GPS_ENABLE_GPIO)) { | ||
Serial.print("."); | ||
if (retry-- <= 0) { | ||
Serial.println("GPS startup failed. Please check whether the board you ordered contains GPS function."); delay(1000); | ||
} | ||
} | ||
|
||
Serial.println(); | ||
Serial.println("GPS Enabled"); | ||
|
||
modem.setGPSBaud(115200); | ||
|
||
modem.setGPSMode(3); //GPS + BD | ||
|
||
modem.configNMEASentence(1, 1, 1, 1, 1, 1); | ||
|
||
modem.setGPSOutputRate(1); | ||
|
||
modem.enableNMEA(); | ||
|
||
Serial.println("Next you should see NMEA sentences in the serial monitor"); | ||
|
||
} | ||
|
||
void loop() | ||
{ | ||
if (millis() > check_interval) { | ||
if (modem.isEnableGPS() == false) { | ||
Serial.println("Restart GPS!"); | ||
modem.enableGPS(); | ||
delay(3000); | ||
} | ||
check_interval = millis() + 15000; | ||
} | ||
|
||
while (SerialAT.available()) { | ||
int ch = SerialAT.read(); | ||
Serial.write(ch); | ||
} | ||
|
||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,243 @@ | ||
/** | ||
* @file utilities.h | ||
* @author Lewis He ([email protected]) | ||
* @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 | ||
|
||
|
||
// T-Call-A767X V1.0 and V1.1 have different Pinmaps and cannot be used universally. | ||
// #define LILYGO_T_CALL_A7670_V1_0 | ||
|
||
// T-Call-A767X V1.0 and V1.1 have different Pinmaps and cannot be used universally. | ||
// #define LILYGO_T_CALL_A7670_V1_1 | ||
|
||
//! SIM7672G and SIM7670G are exactly the same, except for the name change | ||
// #define LILYGO_T_SIM767XG_S3 | ||
|
||
// #define LILYGO_T_A7608X | ||
|
||
// #define LILYGO_T_A7608X_S3 | ||
|
||
// #define LILYGO_T_A7608X_DC_S3 | ||
|
||
|
||
|
||
|
||
|
||
#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) | ||
|
||
|
||
#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) | ||
|
||
|
||
#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) | ||
|
||
#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) | ||
|
||
|
||
#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) | ||
|
||
#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) | ||
|
||
#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) | ||
|
||
#else | ||
#error "Use ArduinoIDE, please open the macro definition corresponding to the board above <utilities.h>" | ||
#endif | ||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.