diff --git a/examples/FileDownload/FileDownload.ino b/examples/FileDownload/FileDownload.ino index a9cebeb..f7eecc3 100644 --- a/examples/FileDownload/FileDownload.ino +++ b/examples/FileDownload/FileDownload.ino @@ -7,8 +7,9 @@ * TinyGSM Getting Started guide: * http://tiny.cc/tiny-gsm-readme * - * ATTENTION! Downloading big files requires quite a lot - * of knowledge - so this is for more experienced developers. + * ATTENTION! Downloading big files requires of knowledge of + * the TinyGSM internals and some modem specifics, + * so this is for more experienced developers. * **************************************************************/ @@ -22,17 +23,17 @@ // #define TINY_GSM_MODEM_ESP8266 // #define TINY_GSM_MODEM_XBEE -// Increase RX buffer -#define TINY_GSM_RX_BUFFER 1030 +// Increase RX buffer if needed +#define TINY_GSM_RX_BUFFER 1024 +#include +#include + +// Uncomment this if you want to see all AT commands //#define DUMP_AT_COMMANDS -//#define TINY_GSM_DEBUG Serial -// Your GPRS credentials -// Leave empty, if missing user or pass -const char apn[] = "YourAPN"; -const char user[] = ""; -const char pass[] = ""; +// Set serial for debug console (to the Serial Monitor, default speed 115200) +#define SerialMon Serial // Use Hardware Serial on Mega, Leonardo, Micro #define SerialAT Serial1 @@ -41,28 +42,34 @@ const char pass[] = ""; //#include //SoftwareSerial SerialAT(2, 3); // RX, TX -#include -#include + +// Your GPRS credentials +// Leave empty, if missing user or pass +const char apn[] = "YourAPN"; +const char user[] = ""; +const char pass[] = ""; + +// Server details +const char server[] = "vsh.pp.ua"; +const int port = 80; + +const char resource[] = "/TinyGSM/test_1k.bin"; +uint32_t knownCRC32 = 0x6f50d767; +uint32_t knownFileSize = 1024; // In case server does not send it #ifdef DUMP_AT_COMMANDS #include - StreamDebugger debugger(SerialAT, Serial); + StreamDebugger debugger(SerialAT, SerialMon); TinyGsm modem(debugger); #else TinyGsm modem(SerialAT); #endif -TinyGsmClient client(modem); -const char server[] = "cdn.rawgit.com"; -const int port = 80; - -const char resource[] = "/vshymanskyy/tinygsm/master/extras/test_1k.bin"; -uint32_t knownCRC32 = 0x6f50d767; -uint32_t knownFileSize = 1024; // In case server does not send it +TinyGsmClient client(modem); void setup() { // Set console baud rate - Serial.begin(115200); + SerialMon.begin(115200); delay(10); // Set GSM module baud rate @@ -71,12 +78,12 @@ void setup() { // Restart takes quite some time // To skip it, call init() instead of restart() - Serial.println("Initializing modem..."); + SerialMon.println(F("Initializing modem...")); modem.restart(); String modemInfo = modem.getModemInfo(); - Serial.print("Modem: "); - Serial.println(modemInfo); + SerialMon.print(F("Modem: ")); + SerialMon.println(modemInfo); // Unlock your SIM card with a PIN //modem.simUnlock("1234"); @@ -85,43 +92,42 @@ void setup() { void printPercent(uint32_t readLength, uint32_t contentLength) { // If we know the total length if (contentLength != -1) { - Serial.print("\r "); - Serial.print((100.0 * readLength) / contentLength); - Serial.print('%'); + SerialMon.print("\r "); + SerialMon.print((100.0 * readLength) / contentLength); + SerialMon.print('%'); } else { - Serial.println(readLength); + SerialMon.println(readLength); } } void loop() { - Serial.print("Waiting for network..."); + SerialMon.print(F("Waiting for network...")); if (!modem.waitForNetwork()) { - Serial.println(" fail"); + SerialMon.println(" fail"); delay(10000); return; } - Serial.println(" OK"); + SerialMon.println(" OK"); - Serial.print("Connecting to "); - Serial.print(apn); + SerialMon.print(F("Connecting to ")); + SerialMon.print(apn); if (!modem.gprsConnect(apn, user, pass)) { - Serial.println(" fail"); + SerialMon.println(" fail"); delay(10000); return; } - Serial.println(" OK"); + SerialMon.println(" OK"); - Serial.print("Connecting to "); - Serial.print(server); - - // if you get a connection, report back via serial: + SerialMon.print(F("Connecting to ")); + SerialMon.print(server); if (!client.connect(server, port)) { - Serial.println(" fail"); + SerialMon.println(" fail"); delay(10000); return; } - Serial.println(" OK"); - // Make a HTTP request: + SerialMon.println(" OK"); + + // Make a HTTP GET request: client.print(String("GET ") + resource + " HTTP/1.0\r\n"); client.print(String("Host: ") + server + "\r\n"); client.print("Connection: close\r\n\r\n"); @@ -129,20 +135,20 @@ void loop() { long timeout = millis(); while (client.available() == 0) { if (millis() - timeout > 5000L) { - Serial.println(">>> Client Timeout !"); + SerialMon.println(F(">>> Client Timeout !")); client.stop(); delay(10000L); return; } } - Serial.println("Reading response header"); + SerialMon.println(F("Reading response header")); uint32_t contentLength = knownFileSize; while (client.available()) { String line = client.readStringUntil('\n'); line.trim(); - //Serial.println(line); // Uncomment this to show response header + //SerialMon.println(line); // Uncomment this to show response header line.toLowerCase(); if (line.startsWith("content-length:")) { contentLength = line.substring(line.lastIndexOf(':') + 1).toInt(); @@ -151,7 +157,7 @@ void loop() { } } - Serial.println("Reading response data"); + SerialMon.println(F("Reading response data")); timeout = millis(); uint32_t readLength = 0; CRC32 crc; @@ -161,7 +167,7 @@ void loop() { while (readLength < contentLength && client.connected() && millis() - timeout < 10000L) { while (client.available()) { uint8_t c = client.read(); - //Serial.print((char)c); // Uncomment this to show data + //SerialMon.print((char)c); // Uncomment this to show data crc.update(c); readLength++; if (readLength % (contentLength / 13) == 0) { @@ -172,22 +178,24 @@ void loop() { } printPercent(readLength, contentLength); timeElapsed = millis() - timeElapsed; - Serial.println(); + SerialMon.println(); + + // Shutdown client.stop(); - Serial.println("Server disconnected"); + SerialMon.println(F("Server disconnected")); modem.gprsDisconnect(); - Serial.println("GPRS disconnected"); - Serial.println(); + SerialMon.println(F("GPRS disconnected")); float duration = float(timeElapsed) / 1000; - Serial.print("Content-Length: "); Serial.println(contentLength); - Serial.print("Actually read: "); Serial.println(readLength); - Serial.print("Calc. CRC32: 0x"); Serial.println(crc.finalize(), HEX); - Serial.print("Known CRC32: 0x"); Serial.println(knownCRC32, HEX); - Serial.print("Duration: "); Serial.print(duration); Serial.println("s"); + SerialMon.println(); + SerialMon.print("Content-Length: "); SerialMon.println(contentLength); + SerialMon.print("Actually read: "); SerialMon.println(readLength); + SerialMon.print("Calc. CRC32: 0x"); SerialMon.println(crc.finalize(), HEX); + SerialMon.print("Known CRC32: 0x"); SerialMon.println(knownCRC32, HEX); + SerialMon.print("Duration: "); SerialMon.print(duration); SerialMon.println("s"); // Do nothing forevermore while (true) { diff --git a/examples/HttpClient/HttpClient.ino b/examples/HttpClient/HttpClient.ino index 69e2e50..c52a664 100644 --- a/examples/HttpClient/HttpClient.ino +++ b/examples/HttpClient/HttpClient.ino @@ -10,6 +10,8 @@ * TinyGSM Getting Started guide: * http://tiny.cc/tiny-gsm-readme * + * For more HTTP API examples, see ArduinoHttpClient library + * **************************************************************/ // Select your modem: @@ -21,8 +23,17 @@ // #define TINY_GSM_MODEM_M590 // #define TINY_GSM_MODEM_ESP8266 -// Increase RX buffer -#define TINY_GSM_RX_BUFFER 600 +// Increase RX buffer if needed +//#define TINY_GSM_RX_BUFFER 512 + +#include +#include + +// Uncomment this if you want to see all AT commands +//#define DUMP_AT_COMMANDS + +// Set serial for debug console (to the Serial Monitor, default speed 115200) +#define SerialMon Serial // Use Hardware Serial on Mega, Leonardo, Micro #define SerialAT Serial1 @@ -31,9 +42,6 @@ //#include //SoftwareSerial SerialAT(2, 3); // RX, TX -//#define DUMP_AT_COMMANDS -//#define TINY_GSM_DEBUG Serial - // Your GPRS credentials // Leave empty, if missing user or pass @@ -41,18 +49,14 @@ const char apn[] = "YourAPN"; const char user[] = ""; const char pass[] = ""; -// Name of the server we want to connect to -const char server[] = "cdn.rawgit.com"; -const int port = 80; -// Path to download (this is the bit after the hostname in the URL) -const char resource[] = "/vshymanskyy/tinygsm/master/extras/logo.txt"; - -#include -#include +// Server details +const char server[] = "vsh.pp.ua"; +const char resource[] = "/TinyGSM/logo.txt"; +const int port = 80; #ifdef DUMP_AT_COMMANDS #include - StreamDebugger debugger(SerialAT, Serial); + StreamDebugger debugger(SerialAT, SerialMon); TinyGsm modem(debugger); #else TinyGsm modem(SerialAT); @@ -63,7 +67,7 @@ HttpClient http(client, server, port); void setup() { // Set console baud rate - Serial.begin(115200); + SerialMon.begin(115200); delay(10); // Set GSM module baud rate @@ -72,46 +76,45 @@ void setup() { // Restart takes quite some time // To skip it, call init() instead of restart() - Serial.println("Initializing modem..."); + SerialMon.println(F("Initializing modem...")); modem.restart(); String modemInfo = modem.getModemInfo(); - Serial.print("Modem: "); - Serial.println(modemInfo); + SerialMon.print(F("Modem: ")); + SerialMon.println(modemInfo); // Unlock your SIM card with a PIN //modem.simUnlock("1234"); } void loop() { - Serial.print(F("Waiting for network...")); + SerialMon.print(F("Waiting for network...")); if (!modem.waitForNetwork()) { - Serial.println(" fail"); + SerialMon.println(" fail"); delay(10000); return; } - Serial.println(" OK"); + SerialMon.println(" OK"); - Serial.print(F("Connecting to ")); - Serial.print(apn); + SerialMon.print(F("Connecting to ")); + SerialMon.print(apn); if (!modem.gprsConnect(apn, user, pass)) { - Serial.println(" fail"); + SerialMon.println(" fail"); delay(10000); return; } - Serial.println(" OK"); - + SerialMon.println(" OK"); - Serial.print(F("Performing HTTP GET request... ")); + SerialMon.print(F("Performing HTTP GET request... ")); int err = http.get(resource); if (err != 0) { - Serial.println("failed to connect"); + SerialMon.println(F("failed to connect")); delay(10000); return; } int status = http.responseStatusCode(); - Serial.println(status); + SerialMon.println(status); if (!status) { delay(10000); return; @@ -120,29 +123,32 @@ void loop() { while (http.headerAvailable()) { String headerName = http.readHeaderName(); String headerValue = http.readHeaderValue(); - //Serial.println(headerName + " : " + headerValue); + //SerialMon.println(headerName + " : " + headerValue); } int length = http.contentLength(); if (length >= 0) { - Serial.println(String("Content length is: ") + length); + SerialMon.print(F("Content length is: ")); + SerialMon.println(length); } if (http.isResponseChunked()) { - Serial.println("This response is chunked"); + SerialMon.println(F("The response is chunked")); } String body = http.responseBody(); - Serial.println("Response:"); - Serial.println(body); + SerialMon.println(F("Response:")); + SerialMon.println(body); - Serial.println(String("Body length is: ") + body.length()); + SerialMon.print(F("Body length is: ")); + SerialMon.println(body.length()); // Shutdown http.stop(); + SerialMon.println(F("Server disconnected")); modem.gprsDisconnect(); - Serial.println("GPRS disconnected"); + SerialMon.println(F("GPRS disconnected")); // Do nothing forevermore while (true) { diff --git a/examples/HttpsClient/HttpsClient.ino b/examples/HttpsClient/HttpsClient.ino index dfe5bd5..73cd3be 100644 --- a/examples/HttpsClient/HttpsClient.ino +++ b/examples/HttpsClient/HttpsClient.ino @@ -10,15 +10,26 @@ * TinyGSM Getting Started guide: * http://tiny.cc/tiny-gsm-readme * + * SSL/TLS is currently supported only with SIM8xx series + * For more HTTP API examples, see ArduinoHttpClient library + * **************************************************************/ -// Select your modem -// SSL/TLS is currently supported only with SIM8xx series +// Select your modem: #define TINY_GSM_MODEM_SIM800 -//#define TINY_GSM_MODEM_SIM808 +// #define TINY_GSM_MODEM_SIM808 + +// Increase RX buffer if needed +//#define TINY_GSM_RX_BUFFER 512 + +#include +#include -// Increase RX buffer -#define TINY_GSM_RX_BUFFER 64 +// Uncomment this if you want to see all AT commands +//#define DUMP_AT_COMMANDS + +// Set serial for debug console (to the Serial Monitor, default speed 115200) +#define SerialMon Serial // Use Hardware Serial on Mega, Leonardo, Micro #define SerialAT Serial1 @@ -27,9 +38,6 @@ //#include //SoftwareSerial SerialAT(2, 3); // RX, TX -//#define DUMP_AT_COMMANDS -//#define TINY_GSM_DEBUG Serial - // Your GPRS credentials // Leave empty, if missing user or pass @@ -37,18 +45,14 @@ const char apn[] = "YourAPN"; const char user[] = ""; const char pass[] = ""; -// Name of the server we want to connect to -const char server[] = "cdn.rawgit.com"; -const int port = 443; -// Path to download (this is the bit after the hostname in the URL) -const char resource[] = "/vshymanskyy/tinygsm/master/extras/logo.txt"; - -#include -#include +// Server details +const char server[] = "vsh.pp.ua"; +const char resource[] = "/TinyGSM/logo.txt"; +const int port = 443; #ifdef DUMP_AT_COMMANDS #include - StreamDebugger debugger(SerialAT, Serial); + StreamDebugger debugger(SerialAT, SerialMon); TinyGsm modem(debugger); #else TinyGsm modem(SerialAT); @@ -59,7 +63,7 @@ HttpClient http(client, server, port); void setup() { // Set console baud rate - Serial.begin(115200); + SerialMon.begin(115200); delay(10); // Set GSM module baud rate @@ -68,53 +72,51 @@ void setup() { // Restart takes quite some time // To skip it, call init() instead of restart() - Serial.println("Initializing modem..."); + SerialMon.println(F("Initializing modem...")); modem.restart(); String modemInfo = modem.getModemInfo(); - Serial.print("Modem: "); - Serial.println(modemInfo); + SerialMon.print(F("Modem: ")); + SerialMon.println(modemInfo); // Unlock your SIM card with a PIN //modem.simUnlock("1234"); -} -void loop() { if (!modem.hasSSL()) { - Serial.println("SSL is not supported by this modem"); - delay(10000); - return; + SerialMon.println(F("SSL is not supported by this modem")); + while(true) { delay(1000); } } +} - Serial.print(F("Waiting for network...")); +void loop() { + SerialMon.print(F("Waiting for network...")); if (!modem.waitForNetwork()) { - Serial.println(" fail"); + SerialMon.println(" fail"); delay(10000); return; } - Serial.println(" OK"); + SerialMon.println(" OK"); - Serial.print(F("Connecting to ")); - Serial.print(apn); + SerialMon.print(F("Connecting to ")); + SerialMon.print(apn); if (!modem.gprsConnect(apn, user, pass)) { - Serial.println(" fail"); + SerialMon.println(" fail"); delay(10000); return; } - Serial.println(" OK"); - + SerialMon.println(" OK"); - Serial.print(F("Performing HTTP GET request... ")); + SerialMon.print(F("Performing HTTPS GET request... ")); http.connectionKeepAlive(); // Currently, this is needed for HTTPS int err = http.get(resource); if (err != 0) { - Serial.println("failed to connect"); + SerialMon.println(F("failed to connect")); delay(10000); return; } int status = http.responseStatusCode(); - Serial.println(status); + SerialMon.println(status); if (!status) { delay(10000); return; @@ -123,29 +125,32 @@ void loop() { while (http.headerAvailable()) { String headerName = http.readHeaderName(); String headerValue = http.readHeaderValue(); - //Serial.println(headerName + " : " + headerValue); + //SerialMon.println(headerName + " : " + headerValue); } int length = http.contentLength(); if (length >= 0) { - Serial.println(String("Content length is: ") + length); + SerialMon.print(F("Content length is: ")); + SerialMon.println(length); } if (http.isResponseChunked()) { - Serial.println("This response is chunked"); + SerialMon.println(F("The response is chunked")); } String body = http.responseBody(); - Serial.println("Response:"); - Serial.println(body); + SerialMon.println(F("Response:")); + SerialMon.println(body); - Serial.println(String("Body length is: ") + body.length()); + SerialMon.print(F("Body length is: ")); + SerialMon.println(body.length()); // Shutdown http.stop(); + SerialMon.println(F("Server disconnected")); modem.gprsDisconnect(); - Serial.println("GPRS disconnected"); + SerialMon.println(F("GPRS disconnected")); // Do nothing forevermore while (true) { diff --git a/examples/WebClient/WebClient.ino b/examples/WebClient/WebClient.ino index 6f65c93..e764242 100644 --- a/examples/WebClient/WebClient.ino +++ b/examples/WebClient/WebClient.ino @@ -17,13 +17,16 @@ // #define TINY_GSM_MODEM_M590 // #define TINY_GSM_MODEM_ESP8266 +// Increase RX buffer if needed +//#define TINY_GSM_RX_BUFFER 512 + #include -// Your GPRS credentials -// Leave empty, if missing user or pass -const char apn[] = "YourAPN"; -const char user[] = ""; -const char pass[] = ""; +// Uncomment this if you want to see all AT commands +//#define DUMP_AT_COMMANDS + +// Set serial for debug console (to the Serial Monitor, default speed 115200) +#define SerialMon Serial // Use Hardware Serial on Mega, Leonardo, Micro #define SerialAT Serial1 @@ -32,17 +35,31 @@ const char pass[] = ""; //#include //SoftwareSerial SerialAT(2, 3); // RX, TX -TinyGsm modem(SerialAT); -TinyGsmClient client(modem); -const char server[] = "cdn.rawgit.com"; -const char resource[] = "/vshymanskyy/tinygsm/master/extras/logo.txt"; +// Your GPRS credentials +// Leave empty, if missing user or pass +const char apn[] = "YourAPN"; +const char user[] = ""; +const char pass[] = ""; -const int port = 80; +// Server details +const char server[] = "vsh.pp.ua"; +const char resource[] = "/TinyGSM/logo.txt"; +const int port = 80; + +#ifdef DUMP_AT_COMMANDS + #include + StreamDebugger debugger(SerialAT, SerialMon); + TinyGsm modem(debugger); +#else + TinyGsm modem(SerialAT); +#endif + +TinyGsmClient client(modem); void setup() { // Set console baud rate - Serial.begin(115200); + SerialMon.begin(115200); delay(10); // Set GSM module baud rate @@ -51,43 +68,43 @@ void setup() { // Restart takes quite some time // To skip it, call init() instead of restart() - Serial.println(F("Initializing modem...")); + SerialMon.println(F("Initializing modem...")); modem.restart(); String modemInfo = modem.getModemInfo(); - Serial.print("Modem: "); - Serial.println(modemInfo); + SerialMon.print(F("Modem: ")); + SerialMon.println(modemInfo); // Unlock your SIM card with a PIN //modem.simUnlock("1234"); } void loop() { - Serial.print(F("Waiting for network...")); + SerialMon.print(F("Waiting for network...")); if (!modem.waitForNetwork()) { - Serial.println(" fail"); + SerialMon.println(" fail"); delay(10000); return; } - Serial.println(" OK"); + SerialMon.println(" OK"); - Serial.print(F("Connecting to ")); - Serial.print(apn); + SerialMon.print(F("Connecting to ")); + SerialMon.print(apn); if (!modem.gprsConnect(apn, user, pass)) { - Serial.println(" fail"); + SerialMon.println(" fail"); delay(10000); return; } - Serial.println(" OK"); + SerialMon.println(" OK"); - Serial.print(F("Connecting to ")); - Serial.print(server); + SerialMon.print(F("Connecting to ")); + SerialMon.print(server); if (!client.connect(server, port)) { - Serial.println(" fail"); + SerialMon.println(" fail"); delay(10000); return; } - Serial.println(" OK"); + SerialMon.println(" OK"); // Make a HTTP GET request: client.print(String("GET ") + resource + " HTTP/1.0\r\n"); @@ -99,17 +116,19 @@ void loop() { // Print available data while (client.available()) { char c = client.read(); - Serial.print(c); + SerialMon.print(c); timeout = millis(); } } - Serial.println(); + SerialMon.println(); + + // Shutdown client.stop(); - Serial.println("Server disconnected"); + SerialMon.println(F("Server disconnected")); modem.gprsDisconnect(); - Serial.println("GPRS disconnected"); + SerialMon.println(F("GPRS disconnected")); // Do nothing forevermore while (true) {