Come configurare smartphone e PC. Portale informativo
  • casa
  • Consigli
  • Sistema di allarme GSM a basso costo con il cervello di Arduino. Controlliamo la presa tramite SMS

Sistema di allarme GSM a basso costo con il cervello di Arduino. Controlliamo la presa tramite SMS

Un articolo per chi vuole obbligare Arduino a inviare SMS tramite questo Modulo GSM ... Il modulo NEOWAY M590 basato sul chip SIM900 è adatto per creare un allarme fatto in casa, una casa intelligente. Esiste anche un modulo GSM alternativo che si collega direttamente ad Arduino tramite 5 Volt: Sim800L EVB v2.0

Formulazione del problema

  • Utilizzando solo Arduino e modulo GSM, controlla il LED tramite una telefonata.
  • Invia SMS (mentre tramite il comando proveniente dal monitor della porta all'IDE di Arduino)

Connessione ad Arduino

Colleghiamo il modulo GSM ad Arduino.
Modulo 5V -> Arduino 5V
Modulo GND -> GND Arduino
Modulo TX -> digitale pin2 Arduino
Modulo RX -> digitale pin3 Arduino
Puoi vedere il pinout nella foto. L'ordine dei contatti è il seguente: 1 - + 5V, 2 - GND, 7 - TX, 8 - RX.


Puoi alimentare il modulo da 4V a 5V, io ho usato un'uscita a 5 volt.

Il modulo richiede un'alimentazione separata, poiché consuma fino a 2A di picco. Il condensatore molto probabilmente non ti salverà. Pertanto, se alimentato da Arduino, potrebbe non funzionare o presentare errori.

La massa di Arduino e del modulo GSM devono essere collegate con alimentazione separata, ma prima è necessario misurare la tensione tra queste "masse" con un multimetro. Alcuni alimentatori per computer hanno una caduta di tensione fino a 100 V attraverso lo chassis USB e la messa a terra. La corrente è scarsa e non può uccidere, ma è facile distruggere l'Arduino o il modulo GSM, o entrambi.

Schizzo

#includere< SoftwareSerial... h> SoftwareSerial mySerial (2, 3); // RX, TX int ch = 0; led int = 13; Stringa val = ""; configurazione nulla () (
ritardo (2000); // tempo per inizializzare il modulo pinMode (led, OUTPUT); digitalWrite (led, LOW); Seriale... iniziare (9600); // velocità della porta Seriale... println ("Tester GSM v1.0"); mioSerial. iniziare (9600); mioSerial. println ("AT + CLIP = 1"); // attiva il ritardo AON (100); mioSerial. println ("AT + CMGF = 1"); // Modalità di codifica SMS - normale (per l'inglese) ritardo (100); mioSerial. println ("AT + CSCS = \" GSM \ ""); // modalità di codifica del testo ritardo (100); ) void loop() (if (mySerial. available()) ( // se il modulo GSM ci ha inviato qualcosa, allora mentre (mySerial. disponibile ()) ( // salva la stringa di input nella variabile val ch = mySerial. leggere (); val + = carattere (ch); ritardo (10); ) if (val. indexOf ("RING")> - 1) ( // se viene trovata una chiamata, controlla il numero if (val. indexOf ("71234567890")> - 1) ( // se il numero del chiamante è il nostro. Inserisci il tuo numero senza "+" Seriale... println ( "--- RILEVATO SQUILLO PRINCIPALE ---"); mioSerial. println ("ATH0"); // interrompe la connessione digitalWrite (led, HIGH); // accendi il LED per 3 sec ritardo (3000); digitalWrite (led, LOW); // spengo il relè)) else Seriale... println (val); // stampa la riga ricevuta sul monitor della porta val = ""; ) Se ( Seriale... a disposizione ()) ( // se viene inserito qualcosa nel monitor della porta mentre ( Seriale... a disposizione ()) ( // salva la stringa nella variabile val ch = Seriale... leggere (); val + = carattere (ch); ritardo (10); ) //mySerial.println(val); // trasferimento di tutti i comandi digitati nel monitor della porta al modulo GSM if (val. indexOf ("sendsms")> - 1) ( // se hai visto il comando per inviare SMS sms (String ("ciao mondo"), String ("+71234567890")); // invia SMS al numero +71234567890) val = ""; // chiaro)) void sms (stringa di testo, stringa di telefono) // procedura per l'invio di SMS { Seriale... println ("Invio SMS avviato"); mioSerial. println ("AT + CMGS = \" "+ telefono +" \ ""); ritardo (500); mioSerial. stampa (testo); ritardo (500); mioSerial. stampa ((carattere) 26); ritardo (500); Seriale... println ("Invio SMS completato"); ritardo (2000); )

Visita medica


GPRS

Nella versione considerata del modulo 1.30, il supporto GPRS è ridotto. Non sono riuscito a connettermi al server tramite il suo nome DNS (ad esempio mysite.ru), è risultato solo tramite l'indirizzo IP. Non ci sono stati tali problemi in un altro modulo SIM800L.

Elenco di alcuni comandi AT:

Questa libreria consente di eseguire la maggior parte delle operazioni di base eseguite da un telefono GSM: lavorare con le chiamate vocali, inviare e ricevere SMS, nonché connettersi a Internet tramite GPRS.

La scheda di espansione GSM contiene un modem che trasmette i dati alla rete GSM attraverso la porta seriale. Tutte le operazioni vengono eseguite dal modem sotto forma di una sequenza di comandi AT. Per migliorare la leggibilità del codice, la libreria astrae le funzioni di basso livello che lavorano con il modem e la scheda SIM. Il modem GSM comunica con Arduino tramite un'interfaccia seriale utilizzando la libreria SoftwareSerial.

Ogni comando eseguito dal modem, di regola, è un frammento di una sequenza di comandi volti a svolgere una funzione. La libreria GSM è progettata con questo in mente, ed è in grado di ricevere/restituire informazioni in qualsiasi fase dell'esecuzione di una sequenza di comandi.

Struttura della biblioteca

La funzionalità della libreria GSM è abbastanza ampia, quindi combina diverse classi:

  • Classe gsm responsabile del controllo del radiomodem. Questa classe contiene funzioni di basso livello per il collegamento e la registrazione di una scheda di espansione nella rete GSM. Un'istanza di questa classe deve essere dichiarata in tutti i programmi che utilizzano GSM/GPRS.
  • Classe GSMVoiceCall responsabile delle chiamate vocali.
  • Classe GSM_SMS responsabile per l'invio e la ricezione di messaggi SMS.
  • Classe GPRS responsabile della connessione a Internet.
  • In classe GSMClient implementato un client simile al client nelle librerie Ethernet e WiFi.
  • In classe GSMServer implementato un server simile al server nelle librerie Ethernet e WiFi. Nota: alcuni ISP/operatori bloccano le connessioni in entrata dalla rete Internet globale, consentendo solo le connessioni intranet. Verifica con il tuo operatore le restrizioni applicabili al trasferimento dei dati.
  • Molte classi di supporto come GSMScanner, GSMModem e così via.

Compatibilità libreria Ethernet

Gli sviluppatori hanno compiuto ogni sforzo per garantire che la libreria GSM sia il più compatibile possibile con la libreria Ethernet. Per questo motivo, il porting del codice utilizzando le librerie Ethernet o WiFi su un Arduino con una scheda di espansione GSM dovrebbe essere abbastanza semplice. Tuttavia, per eseguire programmi scritti per Ethernet, non è sufficiente copiare semplicemente il codice sulla scheda di espansione GSM. Ciò potrebbe richiedere piccole modifiche al programma, come la connessione delle librerie GSM e GPRS, la ricezione delle impostazioni di rete dal provider, ecc.

Esempi di

Tutti gli esempi di lavoro con la scheda di espansione GSM possono essere convenzionalmente suddivisi in due gruppi. Il primo gruppo contiene esempi che dimostrano le capacità della scheda (ad esempio, invio di un messaggio SMS, connessione a Internet, ecc.). Il secondo gruppo è un toolkit con il quale è possibile eseguire il debug delle funzionalità della libreria Arduino e dell'hardware a basso livello.

Arduino è una piattaforma hardware utilizzata per creare rapidamente una varietà di dispositivi elettronici, inclusi quelli di sicurezza. Grazie al design semplice, alla semplicità del linguaggio di programmazione e all'uso di codici aperti, anche un non professionista può realizzare autonomamente un allarme multifunzionale per proteggere la propria casa, cottage estivo, appartamento o garage. Il modulo GSM Arduino sarà l'opzione migliore per creare un sistema di sicurezza economico che può essere configurato in modo ottimale per un oggetto specifico.

Area di applicazione

La piattaforma hardware Arduino è ampiamente utilizzata nel processo di creazione di vari sistemi e dispositivi elettronici in grado di ricevere ed elaborare segnali da sensori e sensori analogici o digitali variamente funzionali. I risultati dell'elaborazione dei segnali ricevuti possono essere utilizzati per controllare attuatori e sistemi esterni collegati ad Arduino.

Un esempio di utilizzo di questi moduli nel video:

Appuntamento

La piattaforma hardware Arduino permette di interagire efficacemente con l'ambiente controllato attraverso un'ampia gamma di sensori funzionali in grado di monitorare vari parametri. Grazie a ciò, sulla base di tali piattaforme, è possibile formare complessi di sicurezza che monitoreranno i movimenti lungo il perimetro protetto, l'apertura di finestre e porte e i danni ai vetri. Oltre ai sensori di sicurezza, possono essere utilizzati anche sensori di temperatura, sensori di controllo perdite di acqua o gas.

Utilizzando il modulo GSM Arduino con la piattaforma, le informazioni su un pericolo o una situazione di emergenza presso la struttura possono essere consegnate al proprietario il più rapidamente possibile. A tale scopo viene utilizzata una delle reti degli operatori mobili.

Una caratteristica distintiva dei dispositivi Arduino è che il loro microcontrollore può essere programmato dall'utente utilizzando il linguaggio Arduino basato su Wiring. Grazie a questo, chiunque può programmare l'algoritmo per il funzionamento dell'antifurto creato secondo le esigenze di uno specifico oggetto protetto e le peculiarità della sua applicazione.

Vantaggi dell'utilizzo

Oggi esistono molte piattaforme hardware e microcontrollori in grado di ricevere informazioni da sensori esterni, elaborarle e inviare segnali di controllo a sistemi esecutivi. La piattaforma Arduino semplifica il più possibile l'implementazione dei processi elencati e presenta un'ampia gamma di vantaggi rispetto ad altri dispositivi di questo tipo.

  1. A basso costo. Le piattaforme sono dispositivi abbastanza economici rispetto alle loro controparti, il che non pregiudica in alcun modo la loro funzionalità.
  2. Multipiattaforma. Il software Arduino funziona efficacemente su piattaforme operative come Windows, Linux, Macintosh-OSX.
  3. Facilità di programmazione. Per configurare i microcontrollori, viene utilizzato l'ambiente di programmazione Processing. È ideale sia per gli utenti professionali che per quelli inesperti che lavorano con i dispositivi Arduino.
  4. Aggiornabilità. Il software specializzato Arduino è open source, che consente agli utenti esperti di adattarlo a requisiti specifici.

Alta affidabilità della piattaforma hardware. Le schede Arduino sono disponibili con microcontrollori ATMEGA8 e ATMEGA168 (modelli precedenti) e con controller ATmega32u4, Atmel ATmega328 (modelli più recenti), che sono altamente funzionali e affidabili.

Principio di funzionamento

Per garantire il funzionamento completo di sistemi di sicurezza o altri dispositivi realizzati utilizzando piattaforme Arduino, è necessario disporre di un modulo GSM per Arduino. Può essere utilizzato per accedere a Internet, effettuare chiamate vocali o inviare messaggi SMS.

La scheda GSM utilizza uno speciale radiomodem M10, la cui interazione è assicurata da appositi comandi AT. Lo scambio di informazioni con il modem è implementato utilizzando un'interfaccia seriale software che possiede codici digitali.

Il modem GSM utilizzato in Arduino è un modem a 4 bande che può operare sulle seguenti frequenze: GSM 850MHz e 900MHz, PCS1900MHz e DCS1800MHz. Il modem supporta protocolli come TCP/UDP e HTTP, che forniscono connessioni tramite GPRS. La velocità di trasmissione dei pacchetti di informazioni in questa modalità sarà di circa 90 kbps.

L'invio di SMS tramite Arduino e modulo GSM è implementato se è installata una scheda SIM di uno degli operatori cellulari. "

Inoltre, sarà possibile trasmettere messaggi vocali, effettuare chiamate: ciò richiede un microfono aggiuntivo e un altoparlante esterno. L'installazione di una scheda SIM consentirà di utilizzare Arduino in modalità cellulare o GPRS.

Come collegare i moduli ad arduino

Prima di collegare il modulo GSM ad Arduino, è necessario installare nel suo slot una scheda SIM adatta di uno degli operatori di telefonia mobile. Successivamente, il modulo viene collegato alla piattaforma hardware Arduino secondo le istruzioni e viene eseguito il suo firmware. A tale scopo viene utilizzato un PC, che è collegato al dispositivo tramite un cavo USB. Dopo aver caricato l'ambiente Arduino, premere il pulsante Carica, che avvierà il processo di caricamento del software. Al termine di questo processo, la piattaforma può essere scollegata dal computer e alimentata da un sistema di alimentazione esterno.

Caratteristiche comparative dei moduli GSM

Il mercato consumer ha un'ampia selezione di diversi moduli GSM per Arduino. Di seguito sono elencate le caratteristiche principali di quelli più popolari.

Neoway M590

Il modulo GSM Arduino M590 è un dispositivo di comunicazione wireless utilizzato per ricevere e trasmettere informazioni nelle reti mobili. Il modulo di questa serie è realizzato su una scheda con strapping minimo ed è posizionato come modulo GSM per la piattaforma hardware Arduino.

Utilizzando questo dispositivo, è possibile stabilire una comunicazione mobile con un telefono esterno, inviare messaggi SMS, scambiare informazioni secondo lo standard GPRS Class-10. Il modulo di questo design non ha un ingresso microfono, il che limita la capacità di ricevere comunicazioni vocali: è possibile stabilire una connessione, ma il suono non verrà trasmesso.

L'M590 è controllato da comandi AT tramite comunicazione seriale. Le frequenze da 900 MHz a 1800 MHz vengono utilizzate come frequenze radio di lavoro. La tensione di alimentazione è nell'intervallo 3,3 ... 5 V. Pertanto, il modulo GSM Neoway M590 è collegato ad Arduino tramite uno speciale convertitore di tensione 5 V "3,3 V.

Modulo GSM SIM800L

Il modulo Compact Sim800l GPRS GSM si riferisce ai dispositivi utilizzati per supportare le comunicazioni mobili. Il modulo è costruito sulla meringa SIM-800L, realizzata da SIMCom Wireless Solutions ed è progettato per fornire servizi ai servizi delle reti di informazione GPRS\GSM, utilizzando frequenze da 850 MHz a 1900 MHz. Può essere utilizzato per inviare messaggi SMS, effettuare chiamate e scambiare informazioni tramite i canali GPRS.

Il modulo GSM si completa con un'antenna; se hai bisogno di migliorare il livello del segnale, puoi utilizzare antenne aggiuntive. Per il controllo del modulo si può utilizzare un PC, collegato tramite apposita scheda per la conversione di interfacce USB-UART, oppure direttamente tramite la stessa UART. Se si utilizza il modulo GSM GPRS Sim800l , la connessione ad Arduino deve essere implementata tramite un convertitore di livello logico. Ciò è dovuto al fatto che in SIM800L il valore di tensione a un livello logico alto è 2,8 V e in Arduino - 3,3 ... 5 V.

Scudo GPRS di Seeed Studio

Il collegamento del modulo GSM ad Arduino consentirà di utilizzare le tecnologie di scambio dati GSM/GPRS, nonché di effettuare chiamate e inviare messaggi SMS. I dispositivi di questo tipo sono costruiti utilizzando il modulo SIMCom SIM900. Hanno uno slot per l'installazione di una scheda SIM, un connettore per un'antenna esterna, un set di jack da 3,5 mm per l'ingresso e l'uscita audio. L'Arduino GSM Shield è controllato e gestito tramite connessioni seriali e una serie di comandi AT specializzati.

Questo modulo è una scheda speciale utilizzata per controllare da remoto dispositivi digitali, nonché per scambiare informazioni. L'utilizzo di SIM900 permette ad Arduino di lavorare utilizzando le tecnologie GSM/GPRS, fornendo comunicazione vocale, invio di SMS e scambio dati tramite reti cellulari e mobili.

Per il funzionamento di questo modulo, sono collegati un controller di controllo, una fonte di alimentazione, un'antenna e viene installata anche una scheda SIM di un operatore di telefonia mobile. Tramite appositi jumper si configura la modalità di scambio dati con il controllore. Se necessario, puoi collegare un altoparlante e un microfono.

Il modulo GSM e GPRS nei progetti Arduino consente di connettersi a dispositivi autonomi remoti tramite una normale comunicazione cellulare. Possiamo inviare comandi ai dispositivi e ricevere informazioni da essi tramite comandi SMS o tramite una connessione Internet aperta tramite GPRS. In questo articolo, esamineremo i moduli più popolari per Arduino, scopriremo la connessione e prenderemo in considerazione esempi di programmazione.

Moduli GSM GPRS

Il modulo GSM viene utilizzato per espandere le capacità delle schede Arduino convenzionali: invio di SMS, chiamate, scambio di dati tramite GPRS. Esistono diversi tipi di moduli, i più comunemente usati sono SIM900, SIM800L, A6, A7.

Descrizione del modulo SIM900

Il modulo SIM900 è utilizzato in vari sistemi di automazione. L'interfaccia UART viene utilizzata per scambiare dati con altri dispositivi. Il modulo offre la possibilità di effettuare chiamate, scambiare messaggi di testo. Il lavoro del modulo viene rilasciato sul componente SIM900, creato da SIMCom Wireless Solution.

Specifiche:

  • Intervallo di tensione 4,8-5,2 V;
  • In modalità normale, la corrente raggiunge 450 mA, la corrente massima in modalità pulsata è 2 A;
  • supporto 2G;
  • Potenza di trasmissione: 1 W 1800 e 1900 MHz, 2 W 850 e 900 MHz;
  • Esistono protocolli TCP e UDP integrati;
  • GPRS multislot classe 10/8;
  • Temperatura di lavoro da -30C a 75C.

Utilizzando il dispositivo, è possibile tracciare il percorso di trasporto insieme a un dispositivo GLONASS o GPS. La capacità di inviare messaggi SMS viene utilizzata nella segnalazione wireless e in vari sistemi di sicurezza.

Descrizione del modulo SIM800L

Il modulo è basato sul componente SIM800L e viene utilizzato per inviare SMS, effettuare chiamate e scambiare dati tramite GPRS. Nel modulo è installata una scheda micro SIM. Il dispositivo dispone di un'antenna incorporata e di un connettore a cui è possibile collegare un'antenna esterna. L'alimentazione al modulo è fornita da una sorgente esterna o tramite un convertitore DC-DC. Il controllo viene effettuato utilizzando un computer tramite UART, Arduino, Raspberry Pi o dispositivi simili.

Specifiche:

  • Gamma di tensione 3,7 V - 4,2 V;
  • Supporto per rete a 4 bande 900/1800/1900 MHz;
  • GPRS classe 12 (85,6 kB/s);
  • Corrente massima 500mA;
  • supporto 2G;
  • Ricerca automatica in quattro gamme di frequenza;
  • Temperatura di lavoro da -30C a 75C.

Descrizione del modulo A6

Il modulo A6 è stato sviluppato da AI-THINKER nel 2016. Il dispositivo è utilizzato per lo scambio di messaggi SMS e lo scambio di dati tramite GPRS. La scheda è caratterizzata da un basso consumo energetico e dimensioni ridotte. Il dispositivo è completamente compatibile con gli operatori mobili russi.

Specifiche:

  • Intervallo di tensione 4,5 - 5,5 V;
  • Alimentazione 5V;
  • Intervallo di temperatura di esercizio da -30C a 80C;
  • Consumo di corrente massimo 900mA;
  • GPRS classe 10;
  • Supporta i protocolli PPP, TCP, UDP, MUX.

Il modulo supporta le schede microsym.

Descrizione del modulo A7

A7 è l'ultimo modulo di AI-THINKER. Rispetto al suo predecessore, l'A6 ha il GPS integrato per semplificare il design del dispositivo.

Specifiche:

  • Intervallo di tensione operativa 3,3 V-4,6 V;
  • Tensione di alimentazione 5V;
  • Frequenze 850/900/1800/1900 MHz;
  • GPRS classe 10: max. 85,6 kbps;
  • Soppressione dell'eco e del rumore.

Il dispositivo supporta schede micro SIM. Il modulo supporta lo scambio di chiamate, lo scambio di messaggi SMS, la trasmissione di dati tramite GPRS, la ricezione di segnali tramite GPS.

Dove acquistare moduli GSM per arduino

Tradizionalmente, prima di iniziare, alcuni suggerimenti e collegamenti utili ai venditori di Aliexpress.

AT + CMGF = 1 incl. modalità testo (SMS solo in latino)
AT + CSCS = "GSM" incl. regime
AT + CLIP = 1 abilitare l'identificazione del numero di chiamata in entrata
Se si invia un comando con 0, l'identificazione del numero verrà disabilitata e il modulo invierà solo il messaggio "RING" al posto del numero del chiamante.
AT + CMGS = "+ 79123456789" Invio di SMS
ATI Ottieni informazioni sul dispositivo
AT + DPI = 19200 impostazione della velocità della porta
AT + GSN restituirà l'IMEI del modulo
AT + CCLK? leggi l'ora dal modulo
AT + CCLK = "aa / mm / gg, hh: mm: ss + zz" dove va in ordine "anno/mese/data, ora:minuti:secondi+fuso orario". I dati devono essere inviati con degli zeri iniziali, cioè, ad esempio, se il mese che abbiamo è "4", allora "04" deve essere inviato.
Puoi recuperare l'ora e la data correnti inviando lo stesso comando, solo con il segno "?":
AT + CME = 0 livello di informazione sull'errore. Può essere da 0 a 2.
0 - disabilitato. Scriverà solo ERRORE.
1 - codice di errore. Restituirà un codice di errore numerico.
2 - descrizione dell'errore. Scriverà esattamente cosa non gli piace della squadra.
Per lavorare con il modulo attraverso il terminale, è più conveniente utilizzare le modalità ATV1, ATE1 AT + CMEE = 2, per comunicare con il microcontrollore è meglio usare ATV0, ATE0 e AT + CMEE = 0 - questo lo farà più facile elaborare le risposte ricevute.
Queste impostazioni non vengono salvate dopo il riavvio del modulo, quindi è necessario includere questi comandi nel codice del programma.
AT + CSQ informazioni sulla qualità del segnale.
Il modulo restituirà due numeri + CSQ: 17.0
17 - livello del segnale. Può essere nell'intervallo 0..31 o 99. Più sono e meglio è, ma 99 significa la sua assenza.
0 - tasso di errore di comunicazione (cosiddetto RXQUAL). Può essere compreso tra 0 e 7, più basso è il numero, migliore è la qualità della connessione.
AT + POLIZIOTTI? informazioni sull'operatore nella cui rete è registrato il modulo
ATD + 79121234567; componendo un numero. (";" necessariamente)
Il modulo chiamerà il numero specificato e restituirà una delle opzioni
OCCUPATO - il numero è occupato
NO DIALTONE - nessun segnale sulla linea
NESSUN CARRIER - nessuna rete o altro problema (ad esempio, non ci sono soldi nel conto)
NA RISPOSTA - nessuna risposta
CONNETTI - c'è un contatto!
AT + CMGR = 3.0
Modulo GSM GPRS KEYES SIM900 di altissima qualità Modulo SIM800C per arduino da un fornitore fidato
Scudo di sviluppo compatibile con Arduino basato sul modulo SIM900 GPRS / GSM Modulo GSM GPRS mini A6 economico

Collegamento dello shield GSM GPRS ad Arduino

In questa sezione esamineremo le problematiche relative al collegamento dei moduli GSM alla scheda aduino. Quasi tutti gli esempi sono basati su Arduino Uno, ma la maggior parte degli esempi andrà per schede Mega, Nano, ecc.

Collegamento del modulo SIM800

Per il collegamento è necessaria una scheda Arduino, un modulo SIM800L, un convertitore di tensione step-down, cavi per il collegamento e una batteria da 12V. Il modulo SIM800L richiede una tensione di 3,7 V, che non è standard per Arduino, per questo è necessario un convertitore di tensione step-down.

Il pinout del modulo SIM800 è mostrato in figura.

La scheda Arduino deve essere collegata al computer tramite un cavo USB. Collegare una batteria da 12 V attraverso il convertitore: -12 V alla massa Arduino, dalla massa al convertitore al negativo, + 12V al convertitore al positivo. Le uscite del modulo TX e RX devono essere collegate ai pin 2 e 3 di Arduino. Più moduli possono essere collegati a qualsiasi pin digitale.

Collegamento del modulo A6

Il modulo A6 è più economico del SIM900 ed è molto facile da collegare ad Arduino. Il modulo è alimentato a 5V, quindi non sono necessari ulteriori riduttori di tensione per il collegamento.

Per connettersi, avrai bisogno di una scheda Arduino (in questo caso viene considerato Arduino UNO), modulo GSM A6, cavi di collegamento. Lo schema di collegamento è mostrato in figura.

Il pin RX del modulo GSM deve essere collegato al TX sulla scheda Arduino, il pin TX deve essere collegato al pin RX sull'Arduino. La massa del modulo è collegata alla massa del microcontrollore. Il pin Vcc del modulo GSM deve essere connesso a PWR_KEY.

Connessione tramite schermo GSM-GPRS

Prima di effettuare il collegamento è importante prestare attenzione alla tensione di schermatura. La corrente al momento di una chiamata o di invio dati può raggiungere valori di 15-2 A, quindi non bisogna alimentare lo shield direttamente dall'Arduino.

Prima di connettersi ad Arduino, è necessario installare una scheda SIM sullo shield GSM-GPRS. È inoltre necessario impostare i jumper TX e RX come mostrato in figura.

Il collegamento viene effettuato come segue: il primo contatto (filo giallo in figura) dallo shield deve essere collegato a TX sull'Arduino. Il secondo pin (filo verde) si collega a RX su Arduino. La terra dello scudo si collega alla terra dell'aruino. Il microcontrollore è alimentato tramite un cavo USB.

Lo schema della connessione tra lo shield e la scheda Arduino è mostrato in figura.

Per funzionare è necessario installare la libreria GPRS_Shield_Arduino.

Per verificare la correttezza del circuito assemblato, è necessario effettuare le seguenti operazioni: collegare RESET e GND sull'Arduino (questo porterà al fatto che i dati verranno trasmessi direttamente dallo shield al computer), inserire la SIM card lo scudo e accendere il potere dello scudo. La scheda Arduino deve essere collegata al computer e il pulsante di accensione deve essere premuto. Se tutto è collegato correttamente, il LED rosso si accenderà e il verde lampeggerà.

Breve descrizione dell'interazione tramite comandi AT

I comandi AT sono un insieme di comandi speciali per il modem, costituiti da brevi stringhe di testo. Affinché il modem riconosca il comando impartitogli, le righe devono iniziare con le lettere at. La stringa verrà accettata quando il modem è in modalità comando. I comandi AT possono essere inviati utilizzando il software di comunicazione o manualmente dalla tastiera. Quasi tutti i comandi possono essere suddivisi in 3 modalità: modalità test, in cui il modulo risponde se supporta il comando; lettura - emissione dei parametri di comando correnti; registrazione - verranno registrati nuovi valori.

Elenco dei comandi AT più utilizzati:

  • AT - per verificare se il modulo è collegato correttamente. Se tutto è OK, restituisce OK.
  • A / - ripeti il ​​comando precedente.
  • AT + DPI? - ottenere informazioni sulla velocità della porta. La risposta è + IPR: 0 OK (0 in questo caso è automatico).
  • AT+ICF? - impostazione della trasmissione. La risposta sarà + ICF: bit, parità.
  • AT + IFC? - controllo della trasmissione. La risposta sarà + IFC: terminale dal modulo, modulo dal terminale (0 - nessun controllo, 1 - controllo software, 2 - controllo hardware).
  • AT + GCAP - mostra le capacità del modulo. Un esempio di risposta è + GCAP: + FCLASS, + CGSM.
  • AT + GSN - ottenere il modulo IMEI. Esempio di risposta 01322600XXXXXXX.
  • AT + POLIZIOTTI? - mostra gli operatori disponibili.
  • AT + CPAS - stato del modulo. Risposta + CPAS: 0. 0 - pronto per il lavoro, 3 - chiamata in arrivo, 4 - connessione vocale, 2 - sconosciuto.
  • AT + CCLK? - informazioni sull'ora e la data correnti.
  • AT + CLIP = 1 - abilita / disabilita l'ID chiamante. 1 - abilitato, 0 - disabilitato.
  • AT + CSCB = 0 - ricevi messaggi SMS speciali. 0 - abilitato, 1 - disabilitato.
  • AT + CSCS = “GSM” - Codifica messaggi SMS. È possibile selezionare una delle seguenti codifiche: IRA, GSM, UCS2, HEX, PCCP, PCDN, 8859-1.
  • AT + CMEE = 0 - ricezione di informazioni sull'errore.
  • AT + CPIN = XXXX - inserisci il codice pin della carta SIM.
  • AT&F - ripristina le impostazioni di fabbrica.
  • AT + CPOWD = 1 - arresto urgente (0) o normale (1) del modulo.
  • ATD + 790XXXXXXXX - chiamare al numero + 790XXXXXXXX.
  • ATA - risposta alla chiamata.
  • AT + CMGS = "+ 790XXXXXXXX"> Test sms - invio di un messaggio SMS al numero + 790XXXXXXXX.

In questo caso vengono considerati i comandi base per il modulo SIM900. Per moduli diversi, i comandi potrebbero differire leggermente. I dati per il modulo verranno alimentati tramite un apposito programma "terminale", che deve essere installato sul computer. Puoi anche inviare comandi al modulo attraverso il monitor della porta nell'IDE di Arduino.

Schizzi per lavorare con il modulo GSM

Invio SMS su esempio SIM900

Prima di inviare un messaggio, è necessario configurare il modulo. Prima di tutto, devi tradurre il messaggio trasmesso in formato testo. Per questo c'è un comando AT + CMGF = 1. È necessario trasferire la codifica al GSM con il comando AT + CSCS = "GSM". Questa codifica è la più conveniente, poiché i caratteri sono rappresentati in codice ASCII, che il compilatore comprende facilmente.

Quindi è necessario digitare un messaggio SMS. Per fare ciò, viene inviato un comando con il numero dell'abbonato AT + CMGS = "+ 79XXXXXXXXX" r, in risposta si suggerisce di digitare un testo SMS. Devi inviare un messaggio. Al termine, è necessario inviare il codice combinato Ctrl + Z, il modulo consentirà l'invio del testo al destinatario. Quando il messaggio è stato inviato, tornerà OK.

L'interazione con il modulo si basa su indici che vengono assegnati ad ogni nuovo messaggio. Questo indice può essere utilizzato per indicare quale messaggio eliminare o leggere.

Ricezione di SMS. Per leggere i messaggi SMS utilizzare il comando AT + CNMI = 2,2,0,0,0. Quando il modulo riceve un SMS, invierà alla porta seriale + CMTI: "SM", 2 (in questo caso 2 è il numero progressivo del messaggio). Per leggerlo è necessario inviare il comando AT + CMGR = 2.

Ricezione di una chiamata vocale. Prima di tutto, per una conversazione, è necessario collegare un altoparlante e un microfono al modulo. Quando si riceve una chiamata, verrà mostrato il numero da cui è stata effettuata. Per eseguire il lavoro è necessario abilitare la libreria GSM:

#includere

Se la carta SIM è bloccata, è necessario inserire il suo codice PIN. Se non è richiesto un codice PIN, questo campo deve essere lasciato vuoto.

#define PINNUMBER “”

In setup(), deve essere eseguita l'inizializzazione del trasferimento dei dati al computer. Il passaggio successivo consiste nel creare una variabile locale per tenere traccia dello stato della connessione di rete. Lo schizzo non verrà eseguito finché la carta SIM non sarà connessa alla rete.

booleano notConnected = vero;

La funzione gsmAccess.begin() viene utilizzata per connettersi alla rete. Una volta stabilita la connessione, verrà restituito il valore GSM_READY.

vcs.hangCall (); - una funzione che mostra che il modem è pronto a ricevere chiamate.

getvoiceCallStatus() - Determina lo stato dello schizzo. Se qualcuno chiama, restituisce RECEIVINGCALL. Per registrare il numero, è necessario utilizzare la funzione retrieveCallingNumber(). Quando si risponde alla chiamata, TALKING tornerà. Lo schizzo attenderà quindi una nuova riga per interrompere la conversazione.

Stabilisci una connessione GPRS e invia i dati a un server remoto

Innanzitutto, è necessario installare la libreria SoftwareSerial, che consente di fornire il trasferimento di informazioni seriali e collegare il modulo GSM e il microcontrollore Arduino.

Per inviare dati al server, è necessario inviare i seguenti comandi:

AT + SAPBR = 1.1 - Apertura del carrello.

I prossimi tre comandi riguardano l'impostazione delle impostazioni della connessione di rete.

AT + SAPBR = 3,1, \ ”APN \”, \ ”internet.mts.ru \” - seleziona operatore mts, nome punto di accesso.

AT + SAPBR = 3,1, \ ”USER \”, \ ”mts \” - la scelta dell'utente mts.

AT + SAPBR = 3,1, \ ”PWD \”, \ ”mts \”

AT + SAPBR = 1.1 - creazione della connessione.

AT + HTTPINIT - inizializza http.

AT + HTTPPARA = "URL", - indirizzo URL.

AT + HTTPREAD - in attesa di una risposta.

AT + HTTPTERM - interrompe http.

Se tutto è stato eseguito correttamente, nel monitor della porta appariranno le righe con i comandi AT. Se non c'è connessione con il modem, mostrerà una riga alla volta. Se la connessione GPRS è stata stabilita con successo, il LED sul modulo inizierà a lampeggiare.

Voglio presentarti un modo molto semplice per controllare l'alimentazione da remoto.
Utilizzeremo prese radiocomandate già pronte, quindi non dovremo saldare nulla. Questo è molto bello, perché è meglio lasciare 220V (per i principianti) da soli.

Il codice

Se non stai usando GSMSHIELD, ma qualche altra libreria, il codice ovviamente sarà diverso, ma il principio sarà lo stesso. A determinati intervalli di tempo, controlliamo se abbiamo SMS non letti, li analizziamo e se un comando valido proviene da un numero autorizzato, quindi inviamo un segnale radio utilizzando le funzioni mySwitch.switchOff o mySwitch.switchOn, passando loro l'indirizzo della presa.
ca. Nel mio caso, per lo shield Seeedstudio, ho dovuto accedere a GSM.cpp e modificare i pin impostati su 7 e 8./ * Codice di esempio interruttore GSM Arduino Accendere/spegnere prese radiocomandate Autore: Vladislav Ross, 2014 Contatto: [e-mail protetta] Devi scaricare: 1. rc-switch https://code.google.com/p/rc-switch/ 2. GSMSHIELD http://www.gsmlib.org/ Per GSMSHIELD: * Per cambiare i pin per Software Serial, utilizzare le due linee in GSM.cpp. * Se stai usando Mega, decommenta la riga "#define MEGA" in HWSerial.h * Puoi abilitare i messaggi di debug sulla porta seriale definendo DEBUG_ON * / #include "SIM900.h" #include #include "sms.h" #include "call.h" #include // pin trasmettitore 433MHz const byte RCpin = 12; char groupAddress = "11111"; char smsLetters = "ABC"; char * deviceAddresses = ("10000", // A "01000", // B "00100" // C); char adminNumber = "+74991356235"; // il tuo numero di telefono ChiamaChiamata GSM; SMSGSMsms; RCSwitch mySwitch = RCSwitch (); numero di caratteri; byte statistica = 0; char smsText; posizione del byte; int deviceLetterIdx = -1; byte i, j; void setup() (gsm.begin (2400); delay (10000); for (i = 1; i<= 21; i++) { sms.DeleteSMS(i); } mySwitch.enableTransmit(RCpin); }; void loop() { //hang up all incoming calls /*stat=call.CallStatus(); if(stat==CALL_INCOM_VOICE) { call.HangUp(); }*/ position = sms.IsSMSPresent(SMS_UNREAD); //get new SMS if (position) { sms.GetSMS(position, number, smsText, 10); sms.DeleteSMS(position); if(strcmp(number, adminNumber) == 0) //accept SMS only from defined number { for (i = 0; i < sizeof(smsText) - 1; i++) { if(deviceLetterIdx != -1) { //got letter, now expecting 0 or 1 if(smsText[i] == "0") { mySwitch.switchOff(groupAddress, deviceAddresses); delay(500); } if(smsText[i] == "1") { mySwitch.switchOn(groupAddress, deviceAddresses); delay(500); } deviceLetterIdx = -1; } else { //waiting for letter A,B,C... for(j = 0; j < sizeof(smsLetters) - 1; j++) { if(smsLetters[j] == smsText[i]) { deviceLetterIdx = j; break; } } } } } } delay(10000); }; GitHub .

I problemi?

Se le prese non vogliono passare a nessuna, puoi provare a ricevere un segnale dal tuo telecomando al ricevitore. C'è un codice di esempio in rc-switch.

Qual è il prossimo?

Come può essere ulteriormente sviluppato questo progetto:
Innanzitutto, abbiamo ancora un mucchio di pin rimasti sull'Arduino stesso e sullo shield GSM. È possibile collegare ad essi alcuni sensori o dispositivi. Ad esempio, fai il monitoraggio remoto della temperatura o innaffia i fiori.
In secondo luogo, abbiamo utilizzato solo SMS e il modulo può ancora trasmettere voce e GPRS. Il GPRS può trasferire molti più dati. Inoltre, non puoi riagganciare il telefono quando chiami, ma, ad esempio, rispondere a una chiamata e farti ascoltare cosa sta succedendo sul posto.
È anche possibile che tu voglia ricevere SMS di controllo non da un numero, ma da più. In questo caso, consiglierei di memorizzare i numeri nella rubrica, in libreria ci sono funzioni corrispondenti.

Principali articoli correlati