SIM800Plus is a lightweight Arduino library designed for managing GSM/GPRS connections using the SIMCom SIM800L module.
This version extends the original library to add additional methods, including sending raw byte arrays in POST requests, improving data transmission flexibility.
Originally based on Olivier Staquet's SIM800L driver.
- GSM/GPRS connectivity management.
- HTTP and HTTPS connections (GET and POST methods).
- Supports POST with raw byte arrays (send integer arrays instead of only strings).
- Signal strength and network registration checks.
- Power management features.
- Supports both SoftwareSerial and HardwareSerial.
- Download or clone this repository.
- Move the
SIM800Plusfolder into your Arduinolibrariesdirectory. - Restart Arduino IDE.
Or, if using PlatformIO:
lib_deps =
MesutEmpire/SIM800Plus#include <SIM800Plus.h>
#include <SoftwareSerial.h>
SoftwareSerial simSerial(10, 11); // RX, TX
SIM800Plus modem(simSerial);
void setup() {
Serial.begin(9600);
simSerial.begin(9600);
if (modem.connectGPRS("your_apn", "your_user", "your_pass")) {
Serial.println("GPRS Connected!");
} else {
Serial.println("GPRS Connection Failed.");
}
String response;
if (modem.doGet("http://example.com", response)) {
Serial.println("Server Response:");
Serial.println(response);
} else {
Serial.println("GET request failed.");
}
}
void loop() {
// Nothing here
}➔ New feature added:
doPost()can now accept raw byte arrays (integers) as the body,
allowing you to send binary or structured data more efficiently over HTTP/S connections.
Example sending raw data:
uint8_t rawData[] = {0x01, 0x02, 0x03, 0x04}; // Your raw data
String response;
if (modem.doPost("http://example.com/endpoint", rawData, sizeof(rawData), response)) {
Serial.println("POST request successful.");
Serial.println(response);
} else {
Serial.println("POST request failed.");
}SIM800Plus.handSIM800Plus.cppcontain full API documentation via comments.- Basic examples are available inside the
examples/directory.
- Arduino Uno, Mega, Nano, Leonardo
- ESP8266, ESP32 (using HardwareSerial or SoftwareSerial)
- STM32, RP2040 boards
- Any board supporting SoftwareSerial or equivalent.
This library is licensed under the MIT License.
Originally created by Olivier Staquet,
modified and extended by Samuel Wainaina in 2025.
Big thanks to Olivier Staquet for the original Arduino-SIM800L-driver!