Open tihhanovski opened 2 years ago
Sample code:
//see https://github.com/vshymanskyy/TinyGSM/blob/master/examples/HttpsClient/HttpsClient.ino //see https://randomnerdtutorials.com/esp32-sim800l-publish-data-to-cloud/ #include <Arduino.h> #include <ArduinoHttpClient.h> // APN (example: internet.vodafone.pt) use https://wiki.apnchanger.org const char apn[] = "internet.tele2.ee"; const char gprsUser[] = ""; // GPRS User const char gprsPass[] = ""; // GPRS Password // SIM card PIN (leave empty, if not defined) const char simPIN[] = "0000"; // TTGO T-Call pins #define MODEM_RST 5 #define MODEM_PWKEY 4 #define MODEM_POWER_ON 23 #define MODEM_TX 27 #define MODEM_RX 26 #define I2C_SDA 21 #define I2C_SCL 22 // Set serial for debug console (to Serial Monitor, default speed 115200) #define SerialMon Serial // Set serial for AT commands (to SIM800 module) #define SerialAT Serial1 // Configure TinyGSM library #define TINY_GSM_MODEM_SIM800 // Modem is SIM800 #define TINY_GSM_RX_BUFFER 1024 // Set RX buffer to 1Kb #include <Wire.h> #include <TinyGsmClient.h> #ifdef DUMP_AT_COMMANDS #include <StreamDebugger.h> StreamDebugger debugger(SerialAT, SerialMon); TinyGsm modem(debugger); #else TinyGsm modem(SerialAT); #endif // I2C for SIM800 (to keep it running when powered from battery) TwoWire I2CPower = TwoWire(0); // TinyGSM Client for Internet connection TinyGsmClientSecure client(modem); #define IP5306_ADDR 0x75 #define IP5306_REG_SYS_CTL0 0x00 bool setPowerBoostKeepOn(int en){ I2CPower.beginTransmission(IP5306_ADDR); I2CPower.write(IP5306_REG_SYS_CTL0); if (en) { I2CPower.write(0x37); // Set bit1: 1 enable 0 disable boost keep on } else { I2CPower.write(0x35); // 0x37 is default reg value } return I2CPower.endTransmission() == 0; } const char server[] = "dev.intellisoft.ee"; const char resource[] = "/"; const int port = 443; HttpClient http(client, server, port); void setup() { // Set serial monitor debugging window baud rate to 115200 SerialMon.begin(115200); // Start I2C communication //I2CPower.begin(I2C_SDA, I2C_SCL, 400); //I2CPower.begin(I2C_SDA, I2C_SCL, 400000); // Keep power when running from battery //bool isOk = setPowerBoostKeepOn(1); //SerialMon.println(String("IP5306 KeepOn ") + (isOk ? "OK" : "FAIL")); // Set modem reset, enable, power pins pinMode(MODEM_PWKEY, OUTPUT); pinMode(MODEM_RST, OUTPUT); pinMode(MODEM_POWER_ON, OUTPUT); digitalWrite(MODEM_PWKEY, LOW); digitalWrite(MODEM_RST, HIGH); digitalWrite(MODEM_POWER_ON, HIGH); // Set GSM module baud rate and UART pins SerialAT.begin(115200, SERIAL_8N1, MODEM_RX, MODEM_TX); delay(3000); // Restart SIM800 module, it takes quite some time // To skip it, call init() instead of restart() SerialMon.println("Initializing modem..."); modem.restart(); // use modem.init() if you don't need the complete restart // Unlock your SIM card with a PIN if needed if (strlen(simPIN) && modem.getSimStatus() != 3 ) { modem.simUnlock(simPIN); } } void loop() { SerialMon.print("Connecting to APN: "); SerialMon.print(apn); if (!modem.gprsConnect(apn, gprsUser, gprsPass)) { SerialMon.println(" fail"); } else { SerialMon.println(" OK"); SerialMon.println("Wait for network"); if (!modem.waitForNetwork()) { SerialMon.println(" fail"); delay(10000); return; } if (modem.isGprsConnected()) { SerialMon.println("GPRS connected"); } SerialMon.print(F("Performing HTTPS GET request... ")); http.connectionKeepAlive(); // Currently, this is needed for HTTPS int err = http.get(resource); if (err != 0) { SerialMon.println(F("failed to connect")); delay(10000); return; } int status = http.responseStatusCode(); SerialMon.print(F("Response status code: ")); SerialMon.println(status); if (!status) { delay(10000); return; } SerialMon.println(F("Response Headers:")); while (http.headerAvailable()) { String headerName = http.readHeaderName(); String headerValue = http.readHeaderValue(); SerialMon.println(" " + headerName + " : " + headerValue); } int length = http.contentLength(); if (length >= 0) { SerialMon.print(F("Content length is: ")); SerialMon.println(length); } if (http.isResponseChunked()) { SerialMon.println(F("The response is chunked")); } String body = http.responseBody(); SerialMon.println(F("Response:")); SerialMon.println(body); SerialMon.print(F("Body length is: ")); SerialMon.println(body.length()); // Shutdown http.stop(); SerialMon.println(F("Server disconnected")); modem.gprsDisconnect(); SerialMon.println(F("GPRS disconnected")); } }
Sample code: