Add source and examples
This commit is contained in:
		
							
								
								
									
										75
									
								
								examples/BlynkClient/BlynkClient.ino
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								examples/BlynkClient/BlynkClient.ino
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,75 @@ | ||||
| /************************************************************** | ||||
|  * | ||||
|  * For this example, you need to install Blynk library: | ||||
|  *   https://github.com/blynkkk/blynk-library/releases/latest | ||||
|  * | ||||
|  * TinyGSM Getting Started guide: | ||||
|  *   http://tiny.cc/tiny-gsm-readme | ||||
|  * | ||||
|  ************************************************************** | ||||
|  * | ||||
|  * Blynk is a platform with iOS and Android apps to control | ||||
|  * Arduino, Raspberry Pi and the likes over the Internet. | ||||
|  * You can easily build graphic interfaces for all your | ||||
|  * projects by simply dragging and dropping widgets. | ||||
|  * | ||||
|  * Blynk supports many development boards with WiFi, Ethernet, | ||||
|  * GSM, Bluetooth, BLE, USB/Serial connection methods. | ||||
|  * See more in Blynk library examples and community forum. | ||||
|  * | ||||
|  *                http://www.blynk.io/ | ||||
|  * | ||||
|  * Change GPRS apm, user, pass, and Blynk auth token to run :) | ||||
|  **************************************************************/ | ||||
|  | ||||
| #define BLYNK_PRINT Serial    // Comment this out to disable prints and save space | ||||
|  | ||||
| // Default heartbeat interval for GSM is 60 | ||||
| // If you want override this value, uncomment and set this option: | ||||
| //#define BLYNK_HEARTBEAT 30 | ||||
|  | ||||
| #include <TinyGsmClient.h> | ||||
| #include <BlynkSimpleSIM800.h> | ||||
|  | ||||
| // You should get Auth Token in the Blynk App. | ||||
| // Go to the Project Settings (nut icon). | ||||
| char auth[] = "YourAuthToken"; | ||||
|  | ||||
| // Your GPRS credentials | ||||
| // Leave empty, if missing user or pass | ||||
| char apn[]  = "YourAPN"; | ||||
| char user[] = ""; | ||||
| char pass[] = ""; | ||||
|  | ||||
| // Hardware Serial on Mega, Leonardo, Micro | ||||
| #define GsmSerial Serial1 | ||||
|  | ||||
| // or Software Serial on Uno, Nano | ||||
| //#include <SoftwareSerial.h> | ||||
| //SoftwareSerial GsmSerial(2, 3); // RX, TX | ||||
|  | ||||
| TinyGsmClient gsm(GsmSerial); | ||||
|  | ||||
| void setup() | ||||
| { | ||||
|   // Set console baud rate | ||||
|   Serial.begin(115200); | ||||
|   delay(10); | ||||
|  | ||||
|   // Set GSM module baud rate | ||||
|   GsmSerial.begin(115200); | ||||
|   delay(3000); | ||||
|  | ||||
|   // Restart takes quite some time | ||||
|   // You can skip it in many cases | ||||
|   Serial.println("Restarting modem..."); | ||||
|   gsm.restart(); | ||||
|  | ||||
|   Blynk.begin(auth, gsm, apn, user, pass); | ||||
| } | ||||
|  | ||||
| void loop() | ||||
| { | ||||
|   Blynk.run(); | ||||
| } | ||||
|  | ||||
							
								
								
									
										153
									
								
								examples/FileDownload/FileDownload.ino
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										153
									
								
								examples/FileDownload/FileDownload.ino
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,153 @@ | ||||
| /************************************************************** | ||||
|  * | ||||
|  * For this example, you need to install CRC32 library: | ||||
|  *   https://github.com/vshymanskyy/CRC32.git | ||||
|  * | ||||
|  * TinyGSM Getting Started guide: | ||||
|  *   http://tiny.cc/tiny-gsm-readme | ||||
|  * | ||||
|  **************************************************************/ | ||||
|  | ||||
| #include <TinyGsmClient.h> | ||||
| #include <CRC32.h> | ||||
|  | ||||
| // Your GPRS credentials | ||||
| // Leave empty, if missing user or pass | ||||
| char apn[]  = "YourAPN"; | ||||
| char user[] = ""; | ||||
| char pass[] = ""; | ||||
|  | ||||
| // Use Hardware Serial on Mega, Leonardo, Micro | ||||
| #define GsmSerial Serial1 | ||||
|  | ||||
| // or Software Serial on Uno, Nano | ||||
| //#include <SoftwareSerial.h> | ||||
| //SoftwareSerial GsmSerial(2, 3); // RX, TX | ||||
|  | ||||
| TinyGsmClient client(GsmSerial); | ||||
|  | ||||
| char server[] = "cdn.rawgit.com"; | ||||
| char resource[] = "/vshymanskyy/tinygsm/master/extras/test_10k.hex"; | ||||
| uint32_t knownCRC32 = 0x54b3dcbf; | ||||
| uint32_t knownFileSize = 10240;   // In case server does not send it | ||||
|  | ||||
| void setup() { | ||||
|   // Set console baud rate | ||||
|   Serial.begin(115200); | ||||
|   delay(10); | ||||
|  | ||||
|   // Set GSM module baud rate | ||||
|   GsmSerial.begin(115200); | ||||
|   delay(3000); | ||||
|  | ||||
|   // Restart takes quite some time | ||||
|   // You can skip it in many cases | ||||
|   Serial.println("Restarting modem..."); | ||||
|   client.restart(); | ||||
| } | ||||
|  | ||||
| void printPercent(uint32_t readLength, uint32_t contentLength) { | ||||
|   // If we know the total length | ||||
|   if (contentLength != -1) { | ||||
|     Serial.print(String("\r ") + ((100.0 * readLength) / contentLength) + "%"); | ||||
|   } else { | ||||
|     Serial.println(readLength); | ||||
|   } | ||||
| } | ||||
|  | ||||
| void loop() { | ||||
|   Serial.print("Connecting to "); | ||||
|   Serial.print(apn); | ||||
|   if (!client.networkConnect(apn, user, pass)) { | ||||
|     Serial.println(" failed"); | ||||
|     delay(10000); | ||||
|     return; | ||||
|   } | ||||
|   Serial.println(" OK"); | ||||
|  | ||||
|   Serial.print("Connecting to "); | ||||
|   Serial.print(server); | ||||
|  | ||||
|   // if you get a connection, report back via serial: | ||||
|   if (!client.connect(server, 80)) { | ||||
|     Serial.println(" failed"); | ||||
|     delay(10000); | ||||
|     return; | ||||
|   } | ||||
|   Serial.println(" OK"); | ||||
|   // Make a HTTP 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"); | ||||
|  | ||||
|   long timeout = millis(); | ||||
|   while (client.available() == 0) { | ||||
|     if (millis() - timeout > 5000L) { | ||||
|       Serial.println(">>> Client Timeout !"); | ||||
|       client.stop(); | ||||
|       delay(10000L); | ||||
|       return; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   Serial.println("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 | ||||
|     line.toLowerCase(); | ||||
|     if (line.startsWith("content-length:")) { | ||||
|       contentLength = line.substring(line.lastIndexOf(':') + 1).toInt();   | ||||
|     } else if (line.length() == 0) { | ||||
|       break; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   Serial.println("Reading response data"); | ||||
|   timeout = millis(); | ||||
|   uint32_t readLength = 0; | ||||
|   CRC32 crc; | ||||
|  | ||||
|   unsigned long timeElapsed = millis(); | ||||
|   printPercent(readLength, contentLength); | ||||
|   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 | ||||
|       crc.update(c); | ||||
|       readLength++; | ||||
|       if (readLength % (contentLength / 13) == 0) { | ||||
|         printPercent(readLength, contentLength); | ||||
|       } | ||||
|       timeout = millis(); | ||||
|     } | ||||
|   } | ||||
|   printPercent(readLength, contentLength); | ||||
|   timeElapsed = millis() - timeElapsed; | ||||
|   Serial.println(); | ||||
|  | ||||
|   client.stop(); | ||||
|   Serial.println("Server disconnected"); | ||||
|  | ||||
|   client.networkDisconnect(); | ||||
|   Serial.println("GPRS disconnected"); | ||||
|   Serial.println(); | ||||
|  | ||||
|   float timeSpent = float(timeElapsed) / 1000; | ||||
|   float theorLimit = ((8.0 * readLength) / 85.6) / 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("Time spent:     ");   Serial.print(timeSpent); Serial.println("s"); | ||||
|   Serial.print("85.6kBps limit: ");   Serial.print(theorLimit); Serial.println("s"); | ||||
|  | ||||
|   // Do nothing forevermore | ||||
|   while (true) { | ||||
|     delay(1000); | ||||
|   } | ||||
| } | ||||
|  | ||||
							
								
								
									
										130
									
								
								examples/MqttClient/MqttClient.ino
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										130
									
								
								examples/MqttClient/MqttClient.ino
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,130 @@ | ||||
| /************************************************************** | ||||
|  * | ||||
|  * For this example, you need to install PubSubClient library: | ||||
|  *   https://github.com/knolleary/pubsubclient/releases/latest | ||||
|  * | ||||
|  * TinyGSM Getting Started guide: | ||||
|  *   http://tiny.cc/tiny-gsm-readme | ||||
|  * | ||||
|  ************************************************************** | ||||
|  * Use Mosquitto client tools to work with MQTT | ||||
|  *   Ubuntu/Linux: sudo apt-get install mosquitto-clients | ||||
|  *   Windows:      https://mosquitto.org/download/ | ||||
|  * | ||||
|  * Subscribe for messages: | ||||
|  *   mosquitto_sub -h test.mosquitto.org -t GsmClientTest/init -t GsmClientTest/ledStatus -q 1 | ||||
|  * Toggle led: | ||||
|  *   mosquitto_pub -h test.mosquitto.org -t GsmClientTest/led -q 1 -m "toggle" | ||||
|  * | ||||
|  * You can use Node-RED for wiring together MQTT-enabled devices | ||||
|  *   https://nodered.org/ | ||||
|  * Also, take a look at these additional Node-RED modules: | ||||
|  *   node-red-contrib-blynk-websockets | ||||
|  *   node-red-dashboard | ||||
|  * | ||||
|  **************************************************************/ | ||||
|  | ||||
| #include <TinyGsmClient.h> | ||||
| #include <PubSubClient.h> | ||||
|  | ||||
| // Your GPRS credentials | ||||
| // Leave empty, if missing user or pass | ||||
| char apn[]  = "YourAPN"; | ||||
| char user[] = ""; | ||||
| char pass[] = ""; | ||||
|  | ||||
| // Use Hardware Serial on Mega, Leonardo, Micro | ||||
| #define GsmSerial Serial1 | ||||
|  | ||||
| // or Software Serial on Uno, Nano | ||||
| //#include <SoftwareSerial.h> | ||||
| //SoftwareSerial GsmSerial(2, 3); // RX, TX | ||||
|  | ||||
| TinyGsmClient gsm(GsmSerial); | ||||
| PubSubClient mqtt(gsm); | ||||
|  | ||||
| const char* broker = "test.mosquitto.org"; | ||||
|  | ||||
| const char* topicLed = "GsmClientTest/led"; | ||||
| const char* topicInit = "GsmClientTest/init"; | ||||
| const char* topicLedStatus = "GsmClientTest/ledStatus"; | ||||
|  | ||||
| #define LED_PIN 13 | ||||
| int ledStatus = LOW; | ||||
|  | ||||
| long lastReconnectAttempt = 0; | ||||
|  | ||||
| void setup() { | ||||
|   pinMode(LED_PIN, OUTPUT); | ||||
|  | ||||
|   // Set console baud rate | ||||
|   Serial.begin(115200); | ||||
|   delay(10); | ||||
|  | ||||
|   // Set GSM module baud rate | ||||
|   GsmSerial.begin(115200); | ||||
|   delay(3000); | ||||
|  | ||||
|   // Restart takes quite some time | ||||
|   // You can skip it in many cases | ||||
|   Serial.println("Restarting modem..."); | ||||
|   gsm.restart(); | ||||
|  | ||||
|   Serial.print("Connecting to "); | ||||
|   Serial.print(apn); | ||||
|   if (!gsm.networkConnect(apn, user, pass)) { | ||||
|     Serial.println(" failed"); | ||||
|     while (true); | ||||
|   } | ||||
|   Serial.println(" OK"); | ||||
|  | ||||
|   // MQTT Broker setup | ||||
|   mqtt.setServer(broker, 1883); | ||||
|   mqtt.setCallback(mqttCallback); | ||||
| } | ||||
|  | ||||
| boolean mqttConnect() { | ||||
|   Serial.print("Connecting to "); | ||||
|   Serial.print(broker); | ||||
|   if (!mqtt.connect("GsmClientTest")) { | ||||
|     Serial.println(" failed"); | ||||
|     return false; | ||||
|   } | ||||
|   Serial.println(" OK"); | ||||
|   mqtt.publish(topicInit, "GsmClientTest started"); | ||||
|   mqtt.subscribe(topicLed); | ||||
|   return mqtt.connected(); | ||||
| } | ||||
|  | ||||
| void loop() { | ||||
|  | ||||
|   if (mqtt.connected()) { | ||||
|     mqtt.loop(); | ||||
|   } else { | ||||
|     // Reconnect every 10 seconds | ||||
|     unsigned long t = millis(); | ||||
|     if (t - lastReconnectAttempt > 10000L) { | ||||
|       lastReconnectAttempt = t; | ||||
|       if (mqttConnect()) { | ||||
|         lastReconnectAttempt = 0; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|  | ||||
| } | ||||
|  | ||||
| void mqttCallback(char* topic, byte* payload, unsigned int len) { | ||||
|   Serial.print("Message arrived ["); | ||||
|   Serial.print(topic); | ||||
|   Serial.print("]: "); | ||||
|   Serial.write(payload, len); | ||||
|   Serial.println(); | ||||
|  | ||||
|   // Only proceed if incoming message's topic matches | ||||
|   if (String(topic) == topicLed) { | ||||
|     ledStatus = !ledStatus; | ||||
|     digitalWrite(LED_PIN, ledStatus); | ||||
|     mqtt.publish(topicLedStatus, ledStatus ? "1" : "0"); | ||||
|   } | ||||
| } | ||||
|  | ||||
							
								
								
									
										92
									
								
								examples/WebClient/WebClient.ino
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										92
									
								
								examples/WebClient/WebClient.ino
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,92 @@ | ||||
| /************************************************************** | ||||
|  * | ||||
|  * This sketch connects to a website and downloads a page. | ||||
|  * It can be used to perform HTTP/RESTful API calls. | ||||
|  * | ||||
|  * TinyGSM Getting Started guide: | ||||
|  *   http://tiny.cc/tiny-gsm-readme | ||||
|  * | ||||
|  **************************************************************/ | ||||
|  | ||||
| #include <TinyGsmClient.h> | ||||
|  | ||||
| // Your GPRS credentials | ||||
| // Leave empty, if missing user or pass | ||||
| char apn[]  = "YourAPN"; | ||||
| char user[] = ""; | ||||
| char pass[] = ""; | ||||
|  | ||||
| // Use Hardware Serial on Mega, Leonardo, Micro | ||||
| #define GsmSerial Serial1 | ||||
|  | ||||
| // or Software Serial on Uno, Nano | ||||
| //#include <SoftwareSerial.h> | ||||
| //SoftwareSerial GsmSerial(2, 3); // RX, TX | ||||
|  | ||||
| TinyGsmClient client(GsmSerial); | ||||
|  | ||||
| char server[] = "cdn.rawgit.com"; | ||||
| char resource[] = "/vshymanskyy/tinygsm/master/extras/logo.txt"; | ||||
|  | ||||
| void setup() { | ||||
|   // Set console baud rate | ||||
|   Serial.begin(115200); | ||||
|   delay(10); | ||||
|  | ||||
|   // Set GSM module baud rate | ||||
|   GsmSerial.begin(115200); | ||||
|   delay(3000); | ||||
|  | ||||
|   // Restart takes quite some time | ||||
|   // You can skip it in many cases | ||||
|   Serial.println("Restarting modem..."); | ||||
|   client.restart(); | ||||
| } | ||||
|  | ||||
| void loop() { | ||||
|   Serial.print("Connecting to "); | ||||
|   Serial.print(apn); | ||||
|   if (!client.networkConnect(apn, user, pass)) { | ||||
|     Serial.println(" failed"); | ||||
|     delay(10000); | ||||
|     return; | ||||
|   } | ||||
|   Serial.println(" OK"); | ||||
|  | ||||
|   Serial.print("Connecting to "); | ||||
|   Serial.print(server); | ||||
|   if (!client.connect(server, 80)) { | ||||
|     Serial.println(" failed"); | ||||
|     delay(10000); | ||||
|     return; | ||||
|   } | ||||
|   Serial.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"); | ||||
|  | ||||
|   unsigned long timeout = millis(); | ||||
|   while (client.connected() && millis() - timeout < 10000L) { | ||||
|     // Print available data | ||||
|     while (client.available()) { | ||||
|       char c = client.read(); | ||||
|       Serial.print(c); | ||||
|       timeout = millis(); | ||||
|     } | ||||
|   } | ||||
|   Serial.println(); | ||||
|  | ||||
|   client.stop(); | ||||
|   Serial.println("Server disconnected"); | ||||
|  | ||||
|   client.networkDisconnect(); | ||||
|   Serial.println("GPRS disconnected"); | ||||
|  | ||||
|   // Do nothing forevermore | ||||
|   while (true) { | ||||
|     delay(1000); | ||||
|   } | ||||
| } | ||||
|  | ||||
		Reference in New Issue
	
	Block a user