Fai da te fai da te
Corsi di perfezionamento, istruzioni, consigli utili, ricette.
» » »Controller SMS basato su SIM800L
Controller SMS basato su SIM800L

SIM800L V2.0 GSM / GPRS è un modulo GSM / GPRS quad-band compatibile con Arduino. Il modulo viene utilizzato per implementare le funzioni di GSM (chiamate e SMS) e GPRS. Il vantaggio di questo modulo è l'interfaccia TTL con una tensione di 5 V, che consente di collegarlo direttamente a un Arduino o qualsiasi altro sistema con un alimentatore da 5 V. La maggior parte dei moduli GSM / GPRS sul mercato richiede connessioni del regolatore o conversione di livello, mentre in SIM800L V.2 GSM / GPRS non richiede ulteriori circuiti di conversione a livello di interfaccia.

Ecco un esempio di progetto che utilizza SIM800L V.2 GSM / GPRS. Il significato del progetto è controllare gli interruttori usando il controller SMS. Puoi accendere e spegnere facilmente la maggior parte degli elettrodomestici in casa, come un lama, un ventilatore e così via.

Caratteristiche del modulo SIM800L V.2 GSM / GPRS


Di seguito sono riportate tutte le specifiche tecniche del modulo SIM800L V.2 GSM / GPRS:
  • Interfaccia seriale TTL compatibile con microcontrollori 3.3V e 5V compatibile con Arduino.
  • Il modulo SIM800L ha un'interfaccia seriale TTL.
  • Spina dell'antenna
  • Supporto di rete: quattro bande 850/900/1800/1900 MHz, in grado di effettuare chiamate, SMS e trasferimento dati con un consumo della batteria significativamente ridotto.
  • Interfaccia UART VDD TTL, in modo da poter collegare direttamente un MCU come 51MCU, ARM o MSP430. Spina VDD utilizzata per abbinare la tensione TTL.
  • Modello: SIMCOM SIM800L
  • Tensione di funzionamento: da 3,7 V a 5 V;
  • dimensioni: 40mm x 28mm x 3mm
  • Classe GPRS multislot 12/10
  • Classe di servizio batch GPRS B
  • Corrisponde alla fase GSM 2/2 +
  • Classe 4 (2 Watt a 850/900 MHz)
  • Classe 1 (1 Wat @ 1800/1900 MHz)


Materiali richiesti


Controller SMS basato su SIM800L


Avrai bisogno di:


1. .
2. .
3. .
4. .
5. .
(Link attivi al negozio per l'acquisto)

Assemblaggio e configurazione


Controller SMS basato su SIM800L


Dopo aver collegato tutti i componenti, creare un programma e quindi scaricarlo su Arduino. Ma prima devi installare la libreria GPRS, che puoi scaricare:

[28.02 Kb] (download: 481)


Codice del programma per Arduino


Controller SMS basato su SIM800L


Dopo aver collegato il SIM800L, il modulo relè a 4 canali e Arduino al computer, inserire il codice seguente e il gioco è fatto.


#include
#include
#define TIMEOUT 5000
#define ATTIVO BASSO
#define OFF ALTO

byte relè [] = {A0, A1, A2, A3};
byte StatRelay [4];
char buffNumber [20];
char currentLine [500] = "";
int currentLineIndex = 0;
bool nextLineIsMessage = false;
String replyNumber = "089510863958";
GPRS gprs;

void setup () {
per (int i = 0; i <4; i ++) {
pinMode (relè [i], OUTPUT);
digitalWrite (Relay [i], MATI);
StatRelay [i] = MATI;
}

Serial.begin (9600);
while (! Serial);
Serial.println ("Attiva SIM800L V2 >>> Leggi automaticamente SMS");
gprs.preInit ();
ritardo (1000);
while (0! = gprs.init ()) {
ritardo (1000);
Serial.print ("init errorrn");
}

// Gestisci il messaggio in modalità ASCII
if (0! = gprs.sendCmdAndWaitForResp ("AT + CMGF = 1rn", "OK", TIMEOUT)) {
ERRORE ("ERRORE: CNMI");
tornare;
}
// Leggi SMS in arrivo
if (0! = gprs.sendCmdAndWaitForResp ("AT + CNMI = 1,2,0,0,0rn", "OK", TIMEOUT)) {
ERRORE ("ERRORE: CNMI");
tornare;
}
int pjg = replyNumber.length () + 1;
buffNumber [pjg];
replyNumber.toCharArray (buffNumber, pjg);
Serial.print ("Invia risposta a numero =>");
Serial.println (buffNumber);
Serial.println ("Inizializzazione completata");
Serial.println ("============================================= ================= ");
}

void loop () {
// Cambia stato Relè ON / OFF
per (int i = 0; i <4; i ++) {
digitalWrite (Relay [i], StatRelay [i]);
}

// Se sono presenti dati di input da SIM800
if (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 lastLine = String (currentLine);

// Se l'ultimo messaggio + CMT indica che arriva un nuovo messaggio
if (lastLine.startsWith ("+ CMT:")) {
Serial.println (lastLine);
nextLineIsMessage = true;
} else if (lastLine.length ()> 0) {
if (nextLineIsMessage) {
Serial.println (lastLine);

// ================================================= ================== >> Funzione del controller relè

// Controller relè 1

if (lastLine.indexOf ("Relay 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");
}

// Controller relè 2

if (lastLine.indexOf ("Relay 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 ("Relay 2 OFF")> = 0) {
StatRelay [1] = MATI;
Serial.print ("Rispondi ==== >>>>");
Serial.println ("Stato relè 2 disattivato");
gprs.sendSMS (buffNumber, "Stato relè 2 disattivato");
}

// Controller relè 3
if (lastLine.indexOf ("Relay 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) {
StatRelay [2] = MATI;
Serial.print ("Rispondi ==== >>>>");
Serial.println ("Stato relè 3 disattivato");
gprs.sendSMS (buffNumber, "Stato relè 3 disattivato");
}

// Controller relè 4
if (lastLine.indexOf ("Relay 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 ("Relay 4 OFF")> = 0) {
StatRelay [3] = MATI;
Serial.print ("Rispondi ==== >>>>");
Serial.println ("Stato relè 4 disattivato");
gprs.sendSMS (buffNumber, "Stato relè 4 disattivato");
}
nextLineIsMessage = false;
}

// ================================================= ==================== >>

}
// Cancella array di caratteri per la riga successiva di lettura
per (int i = 0; i 


Controllo del dispositivo


Controller SMS basato su SIM800L


Lo strumento funziona inviando SMS a SIM800L con una specifica sequenza di caratteri. Ad esempio, per abilitare il relè 1, utilizzare il comando "Relay 1 ON" e per disattivarlo, utilizzare il comando "Relay 1 OFF". Il resto dei relè ha quasi gli stessi comandi, ad eccezione del numero seriale di ciascun relè su cui si desidera agire. Dopo aver inviato automaticamente un messaggio, il SIM800 invierà una risposta sotto forma di messaggio di stato per ciascuna carta SIM.

Montaggio video, configurazione e verifica del dispositivo



Commenti (4)
  1. qeeeq
    #1 qeeeq ospiti 26 agosto 2017 alle 23:50
    0
    Wow! Come si suol dire, tutto geniale è semplice. Non dovevo nemmeno comprare nulla, probabilmente in ciascuna di queste spazzature a casa alla rinfusa
  2. Alexey
    #2 Alexey ospiti 16 dicembre 2017 16:53
    0
    Non funziona. Durante la compilazione, scrive "Arduino: 1.8.5 Hourly Build 2017/08/28 06:33 (Windows 7), Board:" Arduino / Genuino Uno "
    1. Denis
      #3 Denis ospiti 17 dicembre 2017 08:11
      0
      È necessario utilizzare un percorso senza lettere russe al progetto.
  3. Andrew
    #4 Andrew ospiti 10 febbraio 2019 11:54
    0
    Ci sono molti errori nello schizzo. Non funzionerà