|
|
@ -1,47 +1,77 @@ |
|
|
|
/**************************************************************
|
|
|
|
* |
|
|
|
* To run this tool you need StreamDebugger library: |
|
|
|
* https://github.com/vshymanskyy/StreamDebugger
|
|
|
|
* or from http://librarymanager/all#StreamDebugger
|
|
|
|
* This script tries to auto-detect the baud rate |
|
|
|
* and allows direct AT commands access |
|
|
|
* |
|
|
|
* TinyGSM Getting Started guide: |
|
|
|
* http://tiny.cc/tiny-gsm-readme
|
|
|
|
* |
|
|
|
**************************************************************/ |
|
|
|
|
|
|
|
#include <TinyGsmClient.h>
|
|
|
|
#include <StreamDebugger.h>
|
|
|
|
|
|
|
|
char apn[] = "YourAPN"; |
|
|
|
char user[] = ""; |
|
|
|
char pass[] = ""; |
|
|
|
// Set serial for debug console (to the Serial Monitor, speed 115200)
|
|
|
|
#define SerialMonitor Serial
|
|
|
|
|
|
|
|
// Set serial for AT commands (to the module)
|
|
|
|
// Use Hardware Serial on Mega, Leonardo, Micro
|
|
|
|
#define GsmSerial Serial1
|
|
|
|
#define SerialAT Serial1
|
|
|
|
|
|
|
|
// or Software Serial on Uno, Nano
|
|
|
|
//#include <SoftwareSerial.h>
|
|
|
|
//SoftwareSerial GsmSerial(2, 3); // RX, TX
|
|
|
|
//#include <SoftwareSerialMonitor.h>
|
|
|
|
//SoftwareSerial SerialAT(2, 3); // RX, TX
|
|
|
|
|
|
|
|
StreamDebugger DebugSerial(GsmSerial, Serial); |
|
|
|
TinyGsmClient gsm(DebugSerial); |
|
|
|
#include <TinyGsmClient.h>
|
|
|
|
TinyGsmClient gsm(SerialAT); |
|
|
|
|
|
|
|
void setup() { |
|
|
|
// Set console baud rate
|
|
|
|
Serial.begin(115200); |
|
|
|
delay(10); |
|
|
|
SerialMonitor.begin(115200); |
|
|
|
delay(5000); |
|
|
|
} |
|
|
|
|
|
|
|
// Set GSM module baud rate
|
|
|
|
GsmSerial.begin(115200); |
|
|
|
delay(3000); |
|
|
|
void loop() { |
|
|
|
// Detect module baud rate
|
|
|
|
uint32_t rate = 0; |
|
|
|
uint32_t rates[] = { 115200, 9600, 57600, 19200, 74400, 74880 }; |
|
|
|
|
|
|
|
gsm.networkConnect(apn, user, pass); |
|
|
|
SerialMonitor.println("Autodetecting baud rate"); |
|
|
|
for (unsigned i = 0; i < sizeof(rates)/sizeof(rates[0]); i++) { |
|
|
|
SerialMonitor.print(String("Trying baud rate ") + rates[i] + "... "); |
|
|
|
SerialAT.begin(rates[i]); |
|
|
|
delay(10); |
|
|
|
if (gsm.autoBaud(3000)) { |
|
|
|
rate = rates[i]; |
|
|
|
SerialMonitor.println(F("OK")); |
|
|
|
break; |
|
|
|
} else { |
|
|
|
SerialMonitor.println(F("fail")); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// Access AT commands from Serial
|
|
|
|
DebugSerial.directAccess(); |
|
|
|
} |
|
|
|
if (!rate) { |
|
|
|
SerialMonitor.println(F("***********************************************************")); |
|
|
|
SerialMonitor.println(F(" Module does not respond!")); |
|
|
|
SerialMonitor.println(F(" Check your Serial wiring")); |
|
|
|
SerialMonitor.println(F(" Check the module is correctly powered and turned on")); |
|
|
|
SerialMonitor.println(F("***********************************************************")); |
|
|
|
delay(30000L); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
void loop() { |
|
|
|
// Access AT commands from Serial Monitor
|
|
|
|
SerialMonitor.println(F("***********************************************************")); |
|
|
|
SerialMonitor.println(F(" You can now send AT commands")); |
|
|
|
SerialMonitor.println(F(" Enter \"AT\" (without quotes), and you should see \"OK\"")); |
|
|
|
SerialMonitor.println(F(" If it doesn't work, select \"Both NL & CR\" in Serial Monitor")); |
|
|
|
SerialMonitor.println(F("***********************************************************")); |
|
|
|
|
|
|
|
while(true) { |
|
|
|
if (SerialAT.available()) { |
|
|
|
SerialMonitor.write(SerialAT.read()); |
|
|
|
} |
|
|
|
if (SerialMonitor.available()) { |
|
|
|
SerialAT.write(SerialMonitor.read()); |
|
|
|
} |
|
|
|
delay(0); |
|
|
|
} |
|
|
|
} |
|
|
|
|