Controlador SMS basat en SIM800L

SIM800L V2.0 GSM/GPRS és un mòdul GSM/GPRS de quatre bandes compatible amb Arduino. El mòdul s'utilitza per implementar funcions GSM (trucades i SMS) i GPRS. L'avantatge d'aquest mòdul és la interfície TTL, que té una tensió de 5V, que permet connectar-lo directament a Arduino o qualsevol altre sistema amb una tensió d'alimentació de 5V. La majoria dels mòduls GSM/GPRS del mercat requereixen connexions de regulador o conversió de nivell, mentre que a SIM800L V.2 GSM/GPRS no requereix circuits de conversió de nivell d'interfície addicionals.
Donem un exemple d'un projecte que utilitza SIM800L V.2 GSM/GPRS. L'objectiu del projecte és controlar els interruptors mitjançant un controlador SMS. Podeu encendre i apagar fàcilment la majoria dels electrodomèstics de la casa, com ara una llama, un ventilador, etc.
Característiques del mòdul SIM800L V.2 GSM/GPRS
A continuació es mostren totes les característiques tècniques del mòdul SIM800L V.2 GSM/GPRS:
- Interfície sèrie TTL compatible amb microcontroladors compatibles amb Arduino de 3,3 V i 5 V.
- El mòdul SIM800L té una interfície sèrie TTL.
- Endoll de connexió d'antena.
- Suport a la xarxa: quatre bandes 850/900/1800/1900 MHz, capaços de fer trucades, SMS i transferències de dades amb un consum de bateria molt reduït.
- Interfície VDD TTL UART, de manera que podeu connectar directament MCU com ara 51MCU, ARM o MSP430.El connector VDD s'utilitza per fer coincidir la tensió TTL.
- Model: SIMCOM SIM800L
- Tensió de funcionament: de 3,7 V a 5 V;
- mides: 40mm x 28mm x 3mm
- GPRS multislot classe 12/10
- Servei de paquets GPRS classe B
- Compleix amb GSM fase 2/2+
- Classe 4 (2 watts a 850/900 MHz)
- Classe 1 (1 watt @ 1800/1900 MHz)
Materials necessaris

Necessitareu:
1. Mòdul SIM800L V.2 GSM/GPRS.
2. Arduino Uno.
3. Mòdul de relé de 4 canals 5V.
4. Cables - ponts.
5. Alimentació 5V.
(Enllaços actius a la botiga per comprar)
Muntatge i configuració

Un cop hàgiu connectat tots els components, creeu un programa i després pengeu-lo al vostre Arduino. Però primer, heu d'instal·lar la biblioteca GPRS, que podeu descarregar:
gprs.zip
[28,02 Kb] (descàrregues: 887)
Codi de programa per a Arduino

Un cop hàgiu connectat el vostre SIM800L, el mòdul de relé de 4 canals i l'Arduino al vostre ordinador, introduïu el codi següent i ja heu acabat.
#incloure
#incloure
#definir TIMEOUT 5000
#definir ACTIVE BAIX
#definir OFF ALTA
byte Relé[] = {A0,A1,A2,A3};
byte StatRelay[4];
char buffNumber[20];
char currentLine[500] = "";
int currentLineIndex = 0;
bool nextLineIsMessage = fals;
String replyNumber = "089510863958";
GPRS gprs;
void setup() {
for(int i=0; i <4; i++) {
pinMode(Relé[i], SORTIDA);
digitalWrite(Relé[i], MATI);
StatRelay[i] = MATI;
}
Serial.begin(9600);
mentre(!Serial);
Serial.println("Activa SIM800L V2 >>> Llegeix SMS automàticament");
gprs.preInit();
retard (1000);
mentre que (0 != gprs.init()) {
retard (1000);
Serial.print ("error d'inici");
}
// Gestiona el missatge al mode ASCII
si (0 != gprs.sendCmdAndWaitForResp("AT+CMGF=1rn", "D'acord", TEMPS D'EXPLICAT)) {
ERROR ("ERROR:CNMI");
tornar;
}
// Llegeix els SMS entrants
si (0 != gprs.sendCmdAndWaitForResp("AT+CNMI=1,2,0,0,0rn", "D'acord", TEMPS D'EXPLICAT)) {
ERROR ("ERROR:CNMI");
tornar;
}
int pjg = replyNumber.length() + 1;
buffNumber[pjg];
replyNumber.toCharArray(buffNumber,pjg);
Serial.print("Envia la resposta al número => ");
Serial.println(buffNumber);
Serial.println("Inicialització feta");
Serial.println ("================================================ =============== =================");
}
bucle buit() {
// Canvia l'estat Relé ON / OFF
for(int i=0; i <4; i++) {
digitalWrite(Relé[i], StatRelay[i]);
}
// Si hi ha dades d'entrada de SIM800
si (gprs.serialSIM800.available()) {
char lastCharRead = gprs.serialSIM800.read();
// Desa totes les dades a lastCharRead, llavors si hi ha r o n, com a senyal final del missatge entrant
if (últimCharRead == 'r' || lastCharRead == 'n') {
String lastLine = String(currentLine);
// Si l'últim missatge +CMT indica que arriba un missatge nou
if (lastLine.startsWith("+CMT:")) {
Serial.println (última línia);
nextLineIsMessage = cert;
} else if (lastLine.length() > 0) {
if (nextLineIsMessage) {
Serial.println (última línia);
// =================================================== ==== ================>> Funció del controlador de relé
//Relé 1 Controlador
if (lastLine.indexOf("Relé 1 ON") >= 0) {
StatRelay[0] = AKTIF;
Serial.print("Resposta====>>>> ");
Serial.println("Estat del relé 1 actiu");
gprs.sendSMS(buffNumber, "Estat del relé 1 actiu");
}
else if (lastLine.indexOf("Relé 1 OFF") >= 0) {
StatRelay[0] = MATI;
Serial.print("Resposta====>>>> ");
Serial.println("Estat del relé 1 desactivat");
gprs.sendSMS(buffNumber, "Estat del relé 1 desactivat");
}
//Controlador de relé 2
if (lastLine.indexOf("Relé 2 ON") >= 0) {
StatRelay[1] = AKTIF;
Serial.print("Resposta====>>>> ");
Serial.println("Estat del relé 2 actiu");
gprs.sendSMS(buffNumber, "Estat actiu del relé 2");
}
else if (lastLine.indexOf("Relé 2 OFF") >= 0) {
StatRelay[1] = MATI;
Serial.print("Resposta====>>>> ");
Serial.println("Estat del relé 2 desactivat");
gprs.sendSMS(buffNumber, "Estat del relé 2 desactivat");
}
//Controlador de relé 3
if (lastLine.indexOf("Relé 3 ON") >= 0) {
StatRelay[2] = AKTIF;
Serial.print("Resposta====>>>> ");
Serial.println("Estat del relé 3 actiu");
gprs.sendSMS(buffNumber, "Estat del relé 3 actiu");
}
else if (lastLine.indexOf("Relé 3 OFF") >= 0) {
StatRelay[2] = MATI;
Serial.print("Resposta====>>>> ");
Serial.println("Estat del relé 3 desactivat");
gprs.sendSMS(buffNumber, "Estat del relé 3 desactivat");
}
//Controlador de relé 4
if (lastLine.indexOf("Relé 4 ON") >= 0) {
StatRelay[3] = AKTIF;
Serial.print("Resposta====>>>> ");
Serial.println("Estat del relé 4 actiu");
gprs.sendSMS(buffNumber, "Estat del relé 1 actiu");
}
else if (lastLine.indexOf("Relé 4 OFF") >= 0) {
StatRelay[3] = MATI;
Serial.print("Resposta====>>>> ");
Serial.println("Estat del relé 4 desactivat");
gprs.sendSMS(buffNumber, "Estat del relé 4 desactivat");
}
nextLineIsMessage = fals;
}
// =================================================== ==== ====================>>
}
//Esborra la matriu de caràcters per a la següent línia de lectura
for ( int i = 0; i < sizeof (currentLine); ++i ) {
currentLine[i] = (car)0;
}
currentLineIndex = 0;
}
altrament {
currentLine[currentLineIndex++] = lastCharRead;
}
}
}
Comprovació del dispositiu

L'eina funciona enviant un SMS al SIM800L amb una seqüència específica de caràcters. Per exemple, per activar el relé 1, utilitzeu l'ordre "Relé 1 ON" i per desactivar-lo, utilitzeu l'ordre "Relé 1 OFF". Per a la resta de relés, les ordres són gairebé les mateixes, excepte el número de seqüència de cada relé en què voleu influir. Després d'enviar el missatge automàticament, SIM800 enviarà una resposta en forma de missatge sobre l'estat de cada targeta SIM.
Vídeo de muntatge, configuració i prova del dispositiu
Article original en anglès
Classes magistrals similars
Particularment interessant

Actualitzant un antic centre de música a un de nou amb les teves pròpies mans

Com restaurar la bateria d'un tornavís

Com instal·lar Bluetooth a qualsevol ràdio de cotxe tu mateix

La bicicleta elèctrica de bricolatge més senzilla

No llenceu el vostre cartutx antic: convertiu-lo en un banc d'energia

Substitució de les bateries del tornavís
Comentaris (4)