Come inviare e ricevere SMS utilizzando il modem GSM

Prova Il Nostro Strumento Per Eliminare I Problemi





In questo articolo impareremo come inviare e ricevere SMS utilizzando il modem GSM controllato da Arduino. Vediamo cos'è il modem GSM, come interfacciarlo con Arduino, come inviare SMS con il setup.

Esploreremo anche quali sono tutte le applicazioni che possiamo ottenere con il modem GSM oltre all'invio di messaggi di testo da parte di una persona.



Cos'è il modem GSM?

GSM sta per Global System for Mobile communications, uno standard sviluppato da ETSI (European Telecommunications Standard Institute) che ha descritto i protocolli per la comunicazione 2G.

È il primo protocollo digitale per la comunicazione mobile ottimizzato per la comunicazione vocale full duplex. In poche parole, la comunicazione full duplex significa che entrambe le parti possono inviare / ricevere dati (o voce) simultaneamente.



Il protocollo GSM consente anche il trasferimento di dati a pacchetto, come GPRS e EDGE.

Modem GSM SIM800:

Il modem GSM è un hardware che accetta una carta SIM valida (Subscriber Identity Module), praticamente funzionerà qualsiasi SIM, che supporti il ​​protocollo GSM e con un abbonamento alla rete.

È come un telefono cellulare senza schermo e tastiera. Dispone di quattro pin I / O a seconda del modello scelto.

Due per TX e RX (trasmissione e ricezione), altri due pin per VCC e GND, che è comune a tutti.

Consiste anche della porta RS232 per la comunicazione seriale tra il modem e il computer, tuttavia non la useremo in questo progetto.

Ha una presa di alimentazione CC standard, che può essere alimentata da fonti di alimentazione esterne come adattatori di tensione.

Ha una tensione di lavoro che va da 5 a 12V su jack DC, a seconda del modello. Dispone di 3 indicatori LED, per alimentazione, stato e rete.

Il LED di alimentazione indica la presenza di alimentazione, il LED di stato indica se il modem GSM è in funzione o meno, il LED di rete indica l'istituzione della rete mobile.

Inizialmente il LED di rete lampeggia ogni secondo durante la ricerca della rete, una volta stabilita la rete mobile lampeggia ogni 3 secondi.

È necessario premere il pulsante di accensione per 2 o 3 secondi per attivare il modem GSM, una volta terminato, si aggancia alla rete mobile.

Per verificare che il tuo modem GSM funzioni basta chiamare il numero di cui hai inserito la scheda SIM. Dovresti ricevere il tono di chiamata. In caso affermativo, il modulo funziona correttamente.

Utilizzeremo il modem GSM SIM800 che supporta quad-band 850/900/1800/1900 MHz. se possiedi un modem SIM900, non devi preoccuparti, il programma e il circuito sono compatibili in questo progetto.

Ora, ti saresti fatto un'idea del modem GSM, ora impariamo come interfacciarlo con arduino.

Schema elettrico:

Come puoi dedurre dal diagramma, la connessione del circuito è semplicissima. Hai solo bisogno di 3 pin di intestazione da maschio a femmina. Un cavo USB è obbligatorio in questo progetto, poiché comunicheremo tramite monitor seriale.

Alimentare sempre il modem GSM con l'adattatore esterno. La potenza di arduino è insufficiente per il modem GSM potrebbe addirittura sovraccaricare il regolatore di tensione di arduino.

È tutta una questione di hardware. Ora passiamo alla codifica.

Programma:

//-------------Program developed by R.Girish---------------//
#include
#define rxPin 9 // gsm TX------> arduino 9
#define txPin 8 //gsm RX--------> arduino 8
SoftwareSerial mySerial = SoftwareSerial(rxPin, txPin)
char text[150]
String message=''
int x
void setup()
{
Serial.begin(9600)
while (!Serial){}
mySerial.begin(9600)
delay(1000)
Serial.println('Write your message (with dot at end):')
}
void loop()
{
x=0
while( Serial.available()>0 )
{
text[x] = Serial.read()
message += text[x]
x++
if (text[x-1]==46)
{
Serial.println('Your message is sending......')
SendTextMessage()
ShowSerialData()
delay(1000)
Serial.println('r')
Serial.println('Success')
message=''
x=0
}}}
void SendTextMessage()
{
mySerial.print('AT+CMGF=1r')
delay(1000)
mySerial.print('AT+CMGS='+91xxxxxxxxxx'r') // Replace x with your 10 digit phone number
delay(1000)
mySerial.println(message)
mySerial.print('r')
delay(1000)
mySerial.println((char)26)
mySerial.println()
}
void ShowSerialData()
{
while(mySerial.available()!=0)
Serial.write(mySerial.read())
}
//-------------Program developed by R.Girish---------------//

Non dimenticare il punto (.) A ogni fine del messaggio , altrimenti non invierà il messaggio al numero prescritto nel programma. Sostituisci x con il tuo numero di telefono digitale 10 nel programma. Assicurati di avere un piano SMS funzionante sulla tua scheda SIM.

Se non vieni dall'India, modifica il codice del paese nel programma.

Per esempio:

Per il Regno Unito: +44
Per gli USA: +1
Per il Canada: +1
Per la Russia: +7

È inoltre possibile automatizzare il messaggio inviato dal modem GSM codificando opportunamente Arduino. Puoi ricevere avvisi di messaggi automatici sul tuo telefono come: allarme antifurto, allarme antincendio, avviso meteo nella tua zona ecc.

Puoi anche collegarti ad internet con GPRS in modem GSM, ma è oggetto di un altro articolo.

In uno dei prossimi articoli impareremo Come ricevere SMS utilizzando modem GSM e Arduino

Se hai ulteriori domande su come inviare SMS utilizzando il modem GSM, non esitare a chiedere nella sezione commenti.

Come ricevere SMS utilizzando il modem GSM

Nella discussione precedente abbiamo appreso come inviare un messaggio di testo utilizzando il modem GSM e abbiamo anche discusso le basi del modem GSM.

In questa sezione parleremo di come ricevere SMS tramite monitor seriale dell'IDE di arduino. Non riceveremo solo SMS, ma invieremo anche messaggi di testo premendo diversi tasti. Per un istante, premendo 's' invierà un messaggio di testo pre-immesso, premendo 'r' riceverà SMS in tempo reale.

Ecco il prototipo dell'autore:

Come funziona

Il circuito per ricevere SMS utilizzando una modalità GSM è molto semplice, bastano 3 pin header maschio a femmina. Il TX del modem GSM è collegato al pin n.9 di arduino e l'RX del modem GSM è collegato al pin n.8 di arduino e viene fornita anche la connessione terra-terra tra GSM e arduino.

Utilizzare sempre un alimentatore esterno per il modem GSM, non collegare 5Vcc da arduino al modem GSM, poiché ci sono buone possibilità di sovraccaricare il regolatore di tensione di arduino.

Non dimenticare di implementare una riduzione della tariffa SMS o qualcosa di simile sul tuo abbonamento SMS per ridurre le tue spese SMS.

In caso contrario, il saldo dell'account sarà vuoto dopo aver inviato diversi SMS, poiché non ci sarà alcun riconoscimento dal tuo provider di telefonia mobile dopo ogni SMS inviato, poiché la scheda SIM è nel modem GSM.

L'unico riconoscimento che ricevi è un SMS di avviso, relativo al tuo account vuoto, quindi fai attenzione alle tue spese. Ora passiamo alla parte di codifica di questo progetto.

Programma:

//-----------------Program developed by R.Girish-------------//
#include
SoftwareSerial gsm(9,8)
void setup()
{
gsm.begin(9600) // Setting the baud rate of GSM Module
Serial.begin(9600) // Setting the baud rate of Serial Monitor (Arduino)
delay(100)
}
void loop()
{
if (Serial.available()>0)
switch(Serial.read())
{
case 's':
Send()
break
case 'r':
Recieve()
break
case 'S':
Send()
break
case 'R':
Recieve()
break
}
if (gsm.available()>0)
Serial.write(gsm.read())
}
void Send()
{
gsm.println('AT+CMGF=1')
delay(1000)
gsm.println('AT+CMGS='+91xxxxxxxxxx'r') // Replace x with mobile number
delay(1000)
gsm.println('Hello I am GSM modem!!!')// The SMS text you want to send
delay(100)
gsm.println((char)26) // ASCII code of CTRL+Z
delay(1000)
}
void Recieve()
{
gsm.println('AT+CNMI=2,2,0,0,0') // AT Command to receive a live SMS
delay(1000)
}
//-----------------Program developed by R.Girish-------------//

Immissione dei numeri di telefono

Immettere il numero di telefono del destinatario su 'xxxxxxxxxxx' nel programma con il prefisso del paese all'inizio.

Inserisci il testo che vuoi inviare al programma tra virgolette: gsm.println ('Hello I am GSM modem !!!') // Il testo SMS che vuoi inviare

Compila il programma e caricalo su arduino.

Inserire la scheda SIM e alimentare il modem GSM con alimentatore esterno e premere il pulsante di accensione per 3 secondi (a seconda del modello), attendere da 10 a 20 secondi per stabilire la rete mobile, il LED di rete dovrebbe lampeggiare una volta ogni 3 secondi. Se tutto quanto indicato sopra è stato fatto, siamo pronti per il passaggio successivo.

Ora apri monitor seriale e premi “r” il modem GSM è pronto per ricevere SMS. Ora invia un SMS da qualsiasi telefono cellulare al numero della SIM inserita sul modem GSM.
Il messaggio di testo dovrebbe apparire sul monitor seriale, qualcosa di simile a quello illustrato di seguito:

Il “Hello world” è il messaggio inviato al modem GSM e viene visualizzato anche il numero da cui viene inviato il messaggio di testo.

Ora, lascia inviare SMS al numero pre-inserito nel programma con messaggio pre-inserito. Premi “s” e vedrai qualcosa di simile illustrato di seguito: L'SMS inviato è “Hello I am GSM modem”.

Ora sai come inviare e come ricevere SMS utilizzando il modem GSM.




Precedente: Circuito controller motore Bluetooth Avanti: Come progettare un circuito di riscaldamento a induzione