Controller SMS basato su SIM800L

SIM800L V2.0 GSM/GPRS è un modulo GSM/GPRS quad-band compatibile con Arduino. Il modulo consente di implementare le funzioni GSM (chiamate e SMS) e GPRS. Il vantaggio di questo modulo è l'interfaccia TTL, che ha una tensione di 5V, che permette di collegarlo direttamente ad Arduino o qualsiasi altro sistema con tensione di alimentazione di 5V. La maggior parte dei moduli GSM/GPRS presenti sul mercato richiedono connessioni al regolatore o conversione di livello, mentre nel SIM800L V.2 GSM/GPRS non richiede circuiti aggiuntivi di conversione di livello di interfaccia.
Diamo un esempio di progetto utilizzando SIM800L V.2 GSM/GPRS. Lo scopo del progetto è controllare gli interruttori utilizzando un controller SMS. Puoi accendere e spegnere facilmente la maggior parte degli elettrodomestici della casa, come un lama, un ventilatore e così via.
Caratteristiche del modulo SIM800L V.2 GSM/GPRS
Di seguito tutte le caratteristiche tecniche del modulo SIM800L V.2 GSM/GPRS:
- Interfaccia seriale TTL compatibile con microcontrollori compatibili Arduino da 3,3 V e 5 V.
- Il modulo SIM800L dispone di un'interfaccia seriale TTL.
- Spina di collegamento dell'antenna.
- Supporto di rete: quattro bande 850/900/1800/1900 MHz, in grado di effettuare chiamate, SMS e trasferimenti dati con un consumo della batteria notevolmente ridotto.
- Interfaccia VDD TTL UART, in modo da poter collegare direttamente MCU come 51MCU, ARM o MSP430.La spina VDD viene utilizzata per adattare la tensione TTL.
- Modello: SIMCOM SIM800L
- Tensione di funzionamento: da 3,7V a 5V;
- dimensioni: 40 mm x 28 mm x 3 mm
- Multislot GPRS classe 12/10
- Servizio a pacchetto GPRS classe B
- Conforme alla fase GSM 2/2+
- Classe 4 (2 Watt a 850/900 MHz)
- Classe 1 (1 Watt @ 1800/1900 MHz)
Materiali necessari

Avrai bisogno:
1. Modulo GSM/GPRS SIM800L V.2.
2. ArduinoUno.
3. Modulo relè a 4 canali 5V.
4. Fili - ponticelli.
5. Alimentazione 5V.
(Link attivi allo store per l'acquisto)
Assemblaggio e configurazione

Una volta collegati tutti i componenti, crea un programma e poi caricalo sul tuo Arduino. Ma prima devi installare la libreria GPRS, che puoi scaricare:
gprs.zip
[28,02 Kb] (download: 887)
Codice del programma per Arduino

Una volta collegato il SIM800L, il modulo relè a 4 canali e Arduino al computer, inserisci il codice seguente e il gioco è fatto.
#includere
#includere
#define TIMEOUT 5000
#define ATTIVO BASSO
#define SPENTO ALTO
byte Relè[] = {A0,A1,A2,A3};
byteStatRelay[4];
charbuffNumero[20];
char rigacorrente[500] = "";
int currentLineIndex = 0;
bool nextLineIsMessage = false;
Stringa numerorisposta = "089510863958";
GPRS;
impostazione nulla() {
for(int i=0; i < 4; i++) {
pinMode(Relè[i], USCITA);
digitalWrite(Relè[i], MATI);
StatRelay[i] = MATI;
}
Serial.begin(9600);
while(!Seriale);
Serial.println("Attiva SIM800L V2 >>> Leggi automaticamente gli SMS");
gprs.preInit();
ritardo(1000);
mentre (0!= gprs.init()) {
ritardo(1000);
Serial.print("errore di inizializzazionern");
}
// Gestisci il messaggio in modalità ASCII
if (0 != gprs.sendCmdAndWaitForResp("AT+CMGF=1rn", "OK", TIMEOUT)) {
ERRORE("ERRORE:CNMI");
ritorno;
}
// Leggi gli SMS in arrivo
if (0 != gprs.sendCmdAndWaitForResp("AT+CNMI=1,2,0,0,0rn", "OK", TIMEOUT)) {
ERRORE("ERRORE:CNMI");
ritorno;
}
int pjg = numerorisposta.lunghezza() + 1;
buffNumero[pjg];
numerorisposta.toCharArray(buffNumero,pjg);
Serial.print("Invia risposta al numero => ");
Serial.println(buffNumero);
Serial.println("Inizializzazione completata");
Serial.println("============================================= =============== ================");
}
ciclo vuoto() {
// Cambia stato Relè ON / OFF
for(int i=0; i < 4; i++) {
digitalWrite(Relay[i], StatRelay[i]);
}
// Se sono presenti dati di input da SIM800
se (gprs.serialSIM800.available()) {
char lastCharRead = gprs.serialSIM800.read();
// Salva tutti i dati su lastCharRead, quindi se c'è r o n, come segnale finale del messaggio in arrivo
if (lastCharRead == 'r' || lastCharRead == 'n') {
String ultimaRiga = String(rigacorrente);
// Se l'ultimo messaggio +CMT indica l'arrivo di un nuovo messaggio
if (lastLine.startsWith("+CMT:")) {
Serial.println(ultimaRiga);
nextLineIsMessage = vero;
} altrimenti se (lastLine.length() > 0) {
se (nextLineIsMessage) {
Serial.println(ultimaRiga);
// ================================================ ==== ================>> Funzione del controller relè
//Relè 1 Controller
if (lastLine.indexOf("Relè 1 ON") >= 0) {
StatRelay[0] = AKTIF;
Serial.print("Rispondi====>>>> ");
Serial.println("Stato relè 1 attivo");
gprs.sendSMS(buffNumber, "Stato relè 1 attivo");
}
else if (lastLine.indexOf("Relè 1 OFF") >= 0) {
StatRelay[0] = MATI;
Serial.print("Rispondi====>>>> ");
Serial.println("Stato relè 1 disattivato");
gprs.sendSMS(buffNumber, "Stato relè 1 disattivato");
}
//Relè 2 Controller
if (lastLine.indexOf("Relè 2 ON") >= 0) {
StatRelay[1] = AKTIF;
Serial.print("Rispondi====>>>> ");
Serial.println("Stato relè 2 attivo");
gprs.sendSMS(buffNumber, "Stato relè 2 attivo");
}
else if (lastLine.indexOf("Relè 2 OFF") >= 0) {
StatRelay[1] = MATI;
Serial.print("Rispondi====>>>> ");
Serial.println("Stato relè 2 disattivato");
gprs.sendSMS(buffNumber, "Stato relè 2 disattivato");
}
//Relè 3 Controller
if (lastLine.indexOf("Relè 3 ON") >= 0) {
StatRelay[2] = AKTIF;
Serial.print("Rispondi====>>>> ");
Serial.println("Stato relè 3 attivo");
gprs.sendSMS(buffNumber, "Stato relè 3 attivo");
}
else if (lastLine.indexOf("Relè 3 OFF") >= 0) {
StatRelè[2] = MATI;
Serial.print("Rispondi====>>>> ");
Serial.println("Stato relè 3 disattivato");
gprs.sendSMS(buffNumber, "Stato relè 3 disattivato");
}
//Relè 4 Controller
if (lastLine.indexOf("Relè 4 ON") >= 0) {
StatRelay[3] = AKTIF;
Serial.print("Rispondi====>>>> ");
Serial.println("Stato relè 4 attivo");
gprs.sendSMS(buffNumber, "Stato relè 1 attivo");
}
else if (lastLine.indexOf("Relè 4 OFF") >= 0) {
StatRelay[3] = MATI;
Serial.print("Rispondi====>>>> ");
Serial.println("Stato relè 4 disattivato");
gprs.sendSMS(buffNumber, "Stato relè 4 disattivato");
}
nextLineIsMessage = falso;
}
// ================================================ ==== ===================>>
}
//Cancella l'array di caratteri per la riga di lettura successiva
for ( int i = 0; i < sizeof(currentLine); ++i ) {
currentLine[i] = (car)0;
}
indiceLineacorrente = 0;
}
altro {
currentLine[currentLineIndex++] = lastCharRead;
}
}
}
Controllo del dispositivo

Lo strumento funziona inviando un SMS al SIM800L con una sequenza specifica di caratteri. Ad esempio, per attivare il relè 1, utilizzare il comando "Relè 1 ON" e per disattivarlo, utilizzare il comando "Relè 1 OFF". Per i restanti relè i comandi sono quasi gli stessi, ad eccezione del numero progressivo di ciascun relè che si desidera influenzare. Dopo aver inviato automaticamente il messaggio, SIM800 invierà una risposta sotto forma di messaggio sullo stato di ciascuna carta SIM.
Video di montaggio, configurazione e collaudo del dispositivo
Articolo originale in inglese
Masterclass simili
Particolarmente interessante

Trasforma un vecchio centro musicale in uno nuovo con le tue mani

Come ripristinare la batteria di un cacciavite

Come installare da soli il Bluetooth in qualsiasi autoradio

La bici elettrica fai-da-te più semplice

Non buttare via la tua vecchia cartuccia: trasformala in un power bank

Sostituzione delle batterie del cacciavite
Commenti (4)