/************************************************************** * * 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 * **************************************************************/ // Select your modem: #define TINY_GSM_MODEM_SIM800 //#define TINY_GSM_MODEM_SIM900 //#define TINY_GSM_MODEM_M590 #include // Set serial for debug console (to the Serial Monitor, speed 115200) #define SerialMon Serial // Set serial for AT commands (to the module) // Use Hardware Serial on Mega, Leonardo, Micro #define SerialAT Serial1 // or Software Serial on Uno, Nano //#include //SoftwareSerial SerialAT(2, 3); // RX, TX TinyGsm modem(SerialAT); // Module baud rate uint32_t rate = 0; // Set to 0 for Auto-Detect void setup() { // Set console baud rate SerialMon.begin(115200); delay(5000); } void loop() { if (!rate) { static uint32_t rates[] = { 115200, 9600, 57600, 19200, 38400, 74400, 74880, 230400, 460800, 2400, 4800, 14400, 28800 }; SerialMon.println("Autodetecting baud rate"); for (unsigned i = 0; i < sizeof(rates)/sizeof(rates[0]); i++) { SerialMon.print(String("Trying baud rate ") + rates[i] + "... "); SerialAT.begin(rates[i]); delay(10); if (modem.autoBaud(1000)) { rate = rates[i]; SerialMon.println(F("OK")); break; } else { SerialMon.println(F("fail")); } } } if (!rate) { SerialMon.println(F("***********************************************************")); SerialMon.println(F(" Module does not respond!")); SerialMon.println(F(" Check your Serial wiring")); SerialMon.println(F(" Check the module is correctly powered and turned on")); SerialMon.println(F("***********************************************************")); delay(30000L); return; } // Access AT commands from Serial Monitor SerialMon.println(F("***********************************************************")); SerialMon.println(F(" You can now send AT commands")); SerialMon.println(F(" Enter \"AT\" (without quotes), and you should see \"OK\"")); SerialMon.println(F(" If it doesn't work, select \"Both NL & CR\" in Serial Monitor")); SerialMon.println(F("***********************************************************")); while(true) { if (SerialAT.available()) { SerialMon.write(SerialAT.read()); } if (SerialMon.available()) { SerialAT.write(SerialMon.read()); } delay(0); } }