diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index 0ae7aa7..8cba49c 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -23,7 +23,7 @@ with your board before submitting any issues. Main processor board: Modem: -TinyGSM version: +TinyGSM version: Code: ### Scenario, steps to reproduce diff --git a/README.md b/README.md index 3afadf6..bf81e51 100644 --- a/README.md +++ b/README.md @@ -33,52 +33,24 @@ Arduino GSM library uses 15868 bytes (49%) of Flash and 1113 bytes (54%) of RAM TinyGSM also pulls data gently from the modem (whenever possible), so it can operate on very little RAM. **Now, you have more space for your experiments.** -## Features - -Feature \ Modem | SIM8xx | u-Blox | A6/A7/A20 | Neoway M590| ESP8266 |Digi XBee|Quectel BG96|Quectel M95|Quectel MC60(E)| SIM7000 | Monarch | ---- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | -**Data connections** -TCP (HTTP, MQTT, Blynk, ...) | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -UDP | ◌ | ◌ | | | | ◌ | ◌ | | | ◌ | ◌ | -SSL/TLS (HTTPS) | ✔¹ | ✔ | x | x | ✔ | ✔ | ◌ | | | ◌ | ✔ | -**USSD** -Sending USSD requests | ✔ | | ✔ | ✔ | x | | | | | ✔ | | -Decoding 7,8,16-bit response | ✔ | | ✔ | ✔ | x | | | | | ✔ | | -**SMS** -Sending | ✔ | ✔ | ✔ | ✔ | x | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -Sending Unicode | ✔ | | ◌ | x | x | | ✔ | ✔ | ✔ | ✔ | | -Reading | | | | | x | | | | | | | -Incoming message event | | | | ? | x | | | | | | | -**Calls** -Dial, hangup | ✔ | | ✔ | x | x | x | | | | | | -Receiving calls | ✔ | | ✔ | x | x | x | | | | | | -Incoming event (RING) | ◌ | | ◌ | x | x | x | | | | | | -DTMF sending | ✔ | | ✔ | x | x | x | | | | | | -DTMF decoding | ◌ | | x | x | x | x | | | | | | -**Location** -GSM location service | ✔ | ✔ | x | x | x | x | | x | ✔ | ✔ | x | -GPS/GNSS | ✔¹ | x | ◌¹ | x | x | x | | x | | ✔ | x | -**Credits** -Primary Author/Contributor |[vshymanskyy](https://github.com/vshymanskyy)|[vshymanskyy](https://github.com/vshymanskyy)|[vshymanskyy](https://github.com/vshymanskyy)|[vshymanskyy](https://github.com/vshymanskyy)|[vshymanskyy](https://github.com/vshymanskyy)|[SRGDamia1](https://github.com/SRGDamia1/)|[vshymanskyy](https://github.com/vshymanskyy) |[replicadeltd](https://github.com/replicadeltd)|[V1pr](https://github.com/V1pr)|[captFuture](https://github.com/captFuture/)|[nootropicdesign](https://github.com/nootropicdesign/)| - -✔ - implemented  ◌ - planned  x - not available on this modem -¹ - only some device models or firmware revisions have this feature (SIM8xx R14.18, A7, etc.) ## Supported modems - SIMCom SIM800 series (SIM800A, SIM800C, SIM800L, SIM800H, SIM808, SIM868) - SIMCom SIM900 series (SIM900A, SIM900D, SIM908, SIM968) +- SIMCom WCDMA/HSPA/HSPA+ Modules (SIM5360, SIM5320, SIM5300E, SIM5300EA) +- SIMCom LTE Modules (SIM7100E, SIM7500E, SIM7500A, SIM7600C, SIM7600E) +- SIMCom SIM7000E CAT-M1/NB-IoT Module - AI-Thinker A6, A6C, A7, A20 - ESP8266 (AT commands interface, similar to GSM modems) - Digi XBee WiFi and Cellular (using XBee command mode) - Neoway M590 -- u-blox Cellular Modems (many modules including LEON-G100, LISA-U2xx, SARA-G3xx, SARA-U2xx, TOBY-L2xx, LARA-R2xx, MPCI-L2xx, SARA-R4xx, SARA-N4xx, _but NOT SARA-N2xx_) +- u-blox 2G, 3G, 4G, and LTE Cat1 Cellular Modems (many modules including LEON-G100, LISA-U2xx, SARA-G3xx, SARA-U2xx, TOBY-L2xx, LARA-R2xx, MPCI-L2xx) +- u-blox LTE-M Modems (SARA-R4xx, SARA-N4xx, _but NOT SARA-N2xx_) - Sequans Monarch LTE Cat M1/NB1 - Quectel BG96 - Quectel M95 - Quectel MC60 ***(alpha)*** -- SIMCom SIM7000 ***(alpha)*** -- SIMCom SIM5360 ***(alpha)*** ### Supported boards/modules - Arduino MKR GSM 1400 @@ -92,14 +64,62 @@ Primary Author/Contributor |[vshymanskyy](https://github.com/vshymanskyy)|[vsh More modems may be supported later: - [ ] Quectel M10, UG95 -- [ ] SIMCom SIM5320, SIM5360, SIM5216 -- [ ] SIMCom SIM7020, SIM7100 +- [ ] SIMCom SIM7020 - [ ] Telit GL865 - [ ] ZTE MG2639 - [ ] Hi-Link HLK-RM04 Watch this repo for new updates! And of course, contributions are welcome ;) +## Features + +**Data connections** +- TCP (HTTP, MQTT, Blynk, ...) + - ALL modules support TCP connections +- UDP + - Not yet supported on any module, though it may be some day +- SSL/TLS (HTTPS) + - Supported on¹: + - SIM800, u-Blox, XBee _cellular_, ESP8266, and Sequans Monarch + ¹ - only some device models or firmware revisions have this feature (SIM8xx R14.18, A7, etc.) + - Not yet supported on: + - Quectel modems, SIM7000, SIM5360/5320/7100/7500/7600 + - Not possible on: + - SIM900, A6/A7, M560, XBee _WiFi_ + +**USSD** +Sending USSD requests and decoding 7,8,16-bit responses + - Supported on: + - SIM800/SIM900, SIM7000 + - Not yet supported on: + - Quectel modems, SIM5360/5320/7100/7500/7600, XBee + +**SMS** +Only _sending_ SMS is supported, not receiving + - Supported on: + - SIM800/SIM900, SIM7000, XBee + - Not yet supported on: + - Quectel modems, SIM5360/5320/7100/7500/7600 + +**Calls** +- Only Supported on SIM800 and A6/A7/A20 + - Dial, hangup + - Receiving calls + - Incoming event (RING) + - DTMF sending + - DTMF decoding + +**Location** +- GPS/GNSS + - SIM808 and SIM7000 only +- GSM location service + - SIM800, SIM and SIM7000 only + +**Credits** +Primary Author/Contributor |[vshymanskyy](https://github.com/vshymanskyy)|[vshymanskyy](https://github.com/vshymanskyy)|[vshymanskyy](https://github.com/vshymanskyy)|[vshymanskyy](https://github.com/vshymanskyy)|[vshymanskyy](https://github.com/vshymanskyy)|[SRGDamia1](https://github.com/SRGDamia1/)|[vshymanskyy](https://github.com/vshymanskyy) |[replicadeltd](https://github.com/replicadeltd)|[V1pr](https://github.com/V1pr)|[captFuture](https://github.com/captFuture/)|[nootropicdesign](https://github.com/nootropicdesign/)| + +✔ - implemented  ◌ - planned  x - not available on this modem + ## Donation [![Donate BountySource](https://img.shields.io/badge/Donate-BountySource-149E5E.svg)](https://salt.bountysource.com/checkout/amount?team=tinygsm-dev) @@ -166,11 +186,16 @@ In some cases **9600** is unstable, but using **38400** helps, etc. Be sure to set correct TX/RX pins in the sketch. Please note that not every Arduino pin can serve as TX or RX pin. **Read more about SoftSerial options and configuration [here](https://www.pjrc.com/teensy/td_libs_AltSoftSerial.html) and [here](https://www.arduino.cc/en/Reference/SoftwareSerial).** -### ESP32 HardwareSerial +### ESP32 Notes + +#### HardwareSerial When using ESP32 `HardwareSerial`, you may need to specify additional parameters to the `.begin()` call. Please [refer to this comment](https://github.com/vshymanskyy/TinyGSM/issues/91#issuecomment-356024747). +#### HttpClient +If you are using an ESP32, you must will not be able to compile the HttpClient or HttpsClient examples if you are using ESP32 core >1.0.1. Downgrade to version 1.0.1 or use the WebClient example. Please comment on the issue on the ESP32 core, not in this library: https://github.com/espressif/arduino-esp32/issues/2755 + ### SAMD21 When using SAMD21-based boards, you may need to use a sercom uart port instead of `Serial1`. diff --git a/examples/AllFunctions/AllFunctions.ino b/examples/AllFunctions/AllFunctions.ino index 9116ce4..f6df8a6 100644 --- a/examples/AllFunctions/AllFunctions.ino +++ b/examples/AllFunctions/AllFunctions.ino @@ -16,6 +16,7 @@ // #define TINY_GSM_MODEM_SIM900 // #define TINY_GSM_MODEM_SIM7000 // #define TINY_GSM_MODEM_SIM5360 +// #define TINY_GSM_MODEM_SIM7600 // #define TINY_GSM_MODEM_UBLOX // #define TINY_GSM_MODEM_SARAR4 // #define TINY_GSM_MODEM_M95 diff --git a/examples/BlynkClient/BlynkClient.ino b/examples/BlynkClient/BlynkClient.ino index 6f48fa7..afaed31 100644 --- a/examples/BlynkClient/BlynkClient.ino +++ b/examples/BlynkClient/BlynkClient.ino @@ -35,6 +35,7 @@ // #define TINY_GSM_MODEM_SIM900 // #define TINY_GSM_MODEM_SIM7000 // #define TINY_GSM_MODEM_SIM5360 +// #define TINY_GSM_MODEM_SIM7600 // #define TINY_GSM_MODEM_UBLOX // #define TINY_GSM_MODEM_SARAR4 // #define TINY_GSM_MODEM_M95 diff --git a/examples/FileDownload/FileDownload.ino b/examples/FileDownload/FileDownload.ino index a4f11b1..5d935bc 100644 --- a/examples/FileDownload/FileDownload.ino +++ b/examples/FileDownload/FileDownload.ino @@ -20,6 +20,7 @@ // #define TINY_GSM_MODEM_SIM900 // #define TINY_GSM_MODEM_SIM7000 // #define TINY_GSM_MODEM_SIM5360 +// #define TINY_GSM_MODEM_SIM7600 // #define TINY_GSM_MODEM_UBLOX // #define TINY_GSM_MODEM_SARAR4 // #define TINY_GSM_MODEM_M95 @@ -57,7 +58,7 @@ #define TINY_GSM_DEBUG SerialMon //#define LOGGING // <- Logging is for the HTTP library -// Add a reception delay, if needed +// Add a reception delay - may be needed for a fast processor at a slow baud rate //#define TINY_GSM_YIELD() { delay(2); } #define TINY_GSM_USE_GPRS true diff --git a/examples/HttpClient/HttpClient.ino b/examples/HttpClient/HttpClient.ino index e214303..37bd6f2 100644 --- a/examples/HttpClient/HttpClient.ino +++ b/examples/HttpClient/HttpClient.ino @@ -25,6 +25,7 @@ // #define TINY_GSM_MODEM_SIM900 // #define TINY_GSM_MODEM_SIM7000 // #define TINY_GSM_MODEM_SIM5360 +// #define TINY_GSM_MODEM_SIM7600 // #define TINY_GSM_MODEM_UBLOX // #define TINY_GSM_MODEM_SARAR4 // #define TINY_GSM_MODEM_M95 @@ -62,7 +63,7 @@ #define TINY_GSM_DEBUG SerialMon //#define LOGGING // <- Logging is for the HTTP library -// Add a reception delay, if needed +// Add a reception delay - may be needed for a fast processor at a slow baud rate //#define TINY_GSM_YIELD() { delay(2); } #define TINY_GSM_USE_GPRS true diff --git a/examples/HttpsClient/HttpsClient.ino b/examples/HttpsClient/HttpsClient.ino index d7c6da2..04874dd 100644 --- a/examples/HttpsClient/HttpsClient.ino +++ b/examples/HttpsClient/HttpsClient.ino @@ -55,7 +55,7 @@ #define TINY_GSM_DEBUG SerialMon //#define LOGGING // <- Logging is for the HTTP library -// Add a reception delay, if needed +// Add a reception delay - may be needed for a fast processor at a slow baud rate //#define TINY_GSM_YIELD() { delay(2); } #define TINY_GSM_USE_GPRS true diff --git a/examples/MqttClient/MqttClient.ino b/examples/MqttClient/MqttClient.ino index b2aa5b5..4b3878b 100644 --- a/examples/MqttClient/MqttClient.ino +++ b/examples/MqttClient/MqttClient.ino @@ -34,6 +34,7 @@ // #define TINY_GSM_MODEM_SIM900 // #define TINY_GSM_MODEM_SIM7000 // #define TINY_GSM_MODEM_SIM5360 +// #define TINY_GSM_MODEM_SIM7600 // #define TINY_GSM_MODEM_UBLOX // #define TINY_GSM_MODEM_SARAR4 // #define TINY_GSM_MODEM_M95 @@ -68,7 +69,7 @@ #define GSM_AUTOBAUD_MIN 9600 #define GSM_AUTOBAUD_MAX 38400 -// Add a reception delay, if needed +// Add a reception delay - may be needed for a fast processor at a slow baud rate //#define TINY_GSM_YIELD() { delay(2); } #define TINY_GSM_USE_GPRS true diff --git a/examples/WebClient/WebClient.ino b/examples/WebClient/WebClient.ino index 3436d3b..9c63c62 100644 --- a/examples/WebClient/WebClient.ino +++ b/examples/WebClient/WebClient.ino @@ -15,6 +15,7 @@ // #define TINY_GSM_MODEM_SIM900 // #define TINY_GSM_MODEM_SIM7000 // #define TINY_GSM_MODEM_SIM5360 +// #define TINY_GSM_MODEM_SIM7600 // #define TINY_GSM_MODEM_UBLOX // #define TINY_GSM_MODEM_SARAR4 // #define TINY_GSM_MODEM_M95 @@ -55,7 +56,7 @@ #define GSM_AUTOBAUD_MIN 9600 #define GSM_AUTOBAUD_MAX 115200 -// Add a reception delay, if needed +// Add a reception delay - may be needed for a fast processor at a slow baud rate //#define TINY_GSM_YIELD() { delay(2); } // Uncomment this if you want to use SSL @@ -99,7 +100,7 @@ const char resource[] = "/TinyGSM/logo.txt"; void setup() { // Set console baud rate SerialMon.begin(115200); - delay(10); + delay(10); // !!!!!!!!!!! // Set your reset, enable, power pins here diff --git a/tools/Diagnostics/Diagnostics.ino b/tools/Diagnostics/Diagnostics.ino index 0cb5d22..fa6ce16 100644 --- a/tools/Diagnostics/Diagnostics.ino +++ b/tools/Diagnostics/Diagnostics.ino @@ -16,6 +16,7 @@ // #define TINY_GSM_MODEM_SIM900 // #define TINY_GSM_MODEM_SIM7000 // #define TINY_GSM_MODEM_SIM5360 +// #define TINY_GSM_MODEM_SIM7600 // #define TINY_GSM_MODEM_UBLOX // #define TINY_GSM_MODEM_SARAR4 // #define TINY_GSM_MODEM_M95 @@ -56,7 +57,7 @@ #define GSM_AUTOBAUD_MIN 9600 #define GSM_AUTOBAUD_MAX 115200 -// Add a reception delay, if needed +// Add a reception delay - may be needed for a fast processor at a slow baud rate //#define TINY_GSM_YIELD() { delay(2); } // Uncomment this if you want to use SSL