Salve a tutti, spulciando su ebay mi è capitato di incontrare un modulo GSM alla modica cifra di 20 euro circa e, preso dall'entusiasmo di ampliare le mie conoscenze, lo comprai immediatamente senza pensarci mezza volta...
Per chi non lo sapesse questo modulo permette di ricevere/inviare SMS, chiamare e ricevere chiamate mediante una scheda telefonica inserita nell'apposito slot. Esistono varii tipi di moduli GSM, ma il SIMCOM SIM900 è il piu diffuso e semplice da usare con un minimo di conoscenze.
La board ha due header per i collegamenti, uno a due poli e l'altro a dodici poli. Quello a due poli serve per collegare un alimentatore. il produttore nei dati tecnici specifica che la board può assorbire fino a 2A (io ho usato un alimentatore switching da 1A). Il secondo header serve per la seriale che tramite dei jumper permette di selezionare l'interfaccia adeguata al tipo di sistema che si usa per interfacciarlo.
Come è possibile notare, si possono usare tre configurazioni: 3,3v, 5v e RS232 standard.
Per interfacciarlo al computer per fare qualche prova ci sono due metodi: collegarlo ad un convertitore USB-RS232 ( è consigliato usare quelli con a bordo l'integrato PL-2303. ) o usare l'arduino come "intermediante". E' preferibile usare la prima, perchè è diretta e sicura al 100% per tutto quello che mostrerò in questo documento. Prima di tutto accertiamoci che la porta seriale USB funzioni e se il sistema operativo non ha installato automaticamente i driver e/o ha riportato errori. NB: Alcune parti di questa guida sono state testate solo tramite windows, per tanto non assicuro che eventuali emulatori installati su sistemi Linux e/o OSX permettono il funzionamento completo di alcuni programmi presenti nel pacchetto allegato all'articolo.
Adesso è necessario effettuare i collegamenti tra adattatore USB to 232 e modulo GSM come nelle foto, facendo bene attenzione a non combinare pasticci.
Il modulo SIM900A esce di fabbrica con un firmware di base (che può non funzionare in tutte le nazioni ) per verificare ciò è sufficiente inserire una qualunque scheda sim attiva e con il codice PIN -> disattivato <- che non sia 3 (La H3G detta comunemente tre ha solo ripetitori UMTS e non GSM, per tanto il modulo non ho idea di come si comporti e presuppongo vada in roaming con la tim o è addririttura possibile che non si agganci proprio a nessun ripetitore). Nella board è presente un LED di status che serve ad indicare lo stato del ricevitore. Lo stato si nota in base alla frequenza di lampeggio del led:
[64ms ON/800ms OFF] -> Non trova la rete
[64ms ON/3000ms OFF] -> è agganciato ad un ripetitore
[64ms ON/300ms OFF] -> Avviene comunicazione di rete
Io personalmente ci ho perso un bel po di tempo per capire il perchè questo modulo non si agganciasse alla rete. Spulciando in giro per google ho intravisto che in base al firmware presente nel modulo può non funzionare e che infatti tutta l'europa è irraggiungibile se non viene cambiato il firmware con uno sbloccato. Si possono tentare tutti i tipi di comandi possibili ed immaginabili, ma se il firmware non permette l'aggancio alle celle europee non si può accedere a nessun tipo di servizio, infatti provando a telefonare al numero della sim risulta irraggiungibile.
Per chi ha questo tipo di problema, allora ha trovato la soluzione perchè ho deciso di condividere questa mia esperienza così da evitare che qualcuno con pazienza limitata faccia volare tutto dalla finestra di un grattacielo xD.
Materiale necessario:
- Modulo GSM
- USB to 232
- Utility per flash
- Firmware da fleshare
NB: il convertitore USB/RS232 deve essere un convertitore con il tipo di integrato descritto sopra. Io ho eseguito tutto quello che è presente in questa guida con quel convertitore, per tanto lo consiglio. NON USARE LE SERIALI DELLA BOARD ARDUINO NE TANTOMENO IL "bridge" SUGGERITO IN GIRO PER LA RETE. questa è un'operazione estremamente DELICATA. Ho testato tutto sul modulo SIM900A e non assicuro il funzionamento di questa guida su altri modelli quali SIM900/SIM900B/SIM900D/SIM908 ecc..
Prima di tutto estraiamo l'utility "Simcom - sim900 Customer flash loader V1.01" e il firmware "1137B01SIM900M64_ST_ENHANCE" (presenti nell'allegato).
Apriamo l'utility, ed a primo impatto si può notare l'interfaccia intuitiva:
1. Clicca su Browse e vai a pescare il file "1137B01SIM900M64_ST_ENHANCE.cla" presente nella cartella del firmware
2. Inserisci l'adattatore e aspetta che venga riconosciuto
3. Seleziona la porta COM (Nel mio caso la "COM2")
Non è necessario cambiare il baudrate, per fleshare va lasciato così.
4. Clicca su start
5. Accendi la board appena richiesto
6. Appena spunta "Flash Loader Downloaded in RAM" tenere premuto il tasto ON/OFF della board, se non è presente allora ha l'auto ON e non è necessario premerlo, farà tutto da solo (come nel mio caso)
7. Aspetta che finisca tutto e spunti "Download done"
8. Riavvia la board intervenendo sull'alimentazione
Arrivati a questo punto il modem SIM900A si potrà agganciare alle celle italiane... Adesso vi mostrerò come è possibile usare questo modulo in modo molto semplice.
Materiale necessario:
1. SIM valida e attiva (Non TRE)
2. SSCOM 3.2
NB: SSCOM è presente nel pacchetto allegato.
Iniziamo configurando il modem:
1. Colleghiamo il cavetto USB-TO-232
2. Inseriamo la SIM
3. Alimentiamo la board
4. Attendiamo che il led di status lampeggi alla frequenza 64 ON/ 3000 OFF
5. Apriamo SSCOM
6. Selezioniamo la porta (Nel mio caso la COM2)
7. Selezioniamo il Baudrate a 115200
8. Facciamo click su "Open Com"
Se tutto è andato a buon fine dovrebbe comparire tutto come nello screenshot:
I comandi vanno inseriti nella casella "Data Input" e per inviarli basta semplicemente fare click su "SEND"
NB: Quando viene inviato il comando, il programma non svuota la casella e va fatto manualmente.
Ora testiamo se il modem risponde:
Digitiamo il comando "AT" e inviamolo, se riceviamo "OK" allora il modem è pronto a ricevere istruzioni.
La prima cosa da fare è settare un baudrate piu basso di quello usato in questo momento e renderlo fisso.
Digitiamo AT+IPR=9600 (Dove 9600 corrisponde al baudrate desiderato) e il modem invierà "OK" se lo ha cambiato. Se tutto è andato a buon fine, il modem non risponderà piu al baudrate "115200" quindi nel menù a tendina selezioniamo "9600" e inviamo il comando "AT", il modem dovrebbe rispondere con "OK". Fatto questo è necessario salvare la configuarazione nella memoria, per fare ciò basta inviare il comando "AT&W" e come al solito dovremmo ricevere "OK".
Adesso è necessario riavviare il modem, intervenendo sull'alimentazione.
All'avvio avremo questi messaggi che ci indicano che tutto è OK:
Le chiamate:
Provando a chiamare il numero della sim il modulo si comporterà così: scrive "RING" finchè c'è ancora la chiamata e quando finirà scrive "NO CARRIER".
Mentre per effettuare una chiamata basta digitare "ATD<Numero>" ad esempio: "ATD+391234567890" il numero è +39 1234567890 dove +39 è il prefisso ed il resto è il numero da chiamare. funziona anche senza prefisso, ma è preferibile metterlo, il modulo risponde solo con un "OK" e non emette nessun altra scritta per dire che la chiamata è ancora attiva. Per terminare in entrambi i casi la chiamata basta inviare il comando "ATH" e il modulo riaggancerà la chiamata rispondendo con un solito "OK".
Adesso è il momento degli SMS!
Per inviare gli SMS sono necessarii quattro passaggi:
1. Impostare il modem in modalità "Invio SMS"
2. Assegnare il destinatario
3. Scrivere il messaggio
4. Dare l'OK all'invio
Ora è il momento del destinatario: per farlo è necessario inviare il comando "AT+CMGS="+391234567890"; " tenendo in considerazione che il numero VA necessariamente messo tra i doppi apici. Nel numero il "+39" non è obbligatorio ma tuttavia se si usa è meglio in modo da specificare il paese in cui è stata attivata la scheda. Il modem a questa istruzione risponderà con un " > ".
Ora è possibile scrivere il testo del messaggio.
Per terminare il corpo del messaggio ed inviarlo è necessario inviare il carattere in modalità HEX (Esadecimale) "0x1A".
Il modem darà due risposte:
1. +CMGS:xx (Dove xx corrisponde ad un numero)
2. OK (il solito)
Per ricevere i messaggi via seriale bisogna semplicemente fare un comando per settare il modem:
"AT+CNMI=2,2,0,0,0". La risposta sarà "OK" ed da ora in poi i messaggi che arriveranno verranno spediti via seriale.
Questa guida è stata interamente pensata per chi come me ha comprato questo modulo e non riesce a farlo funzionare in italia.
Questa guida è solo a titolo illustrativo, e per tanto non mi ritengo responsabile del danneggiamento del dispositivo.
Quello che è presente in questa guida è stato testato da me personalmente perchè mi trovo in possesso di questo dispositivo che a primo impatto è risultato inutilizzabile.