Rivista #229: “GSM Shield universale”

Tra i contenuti del fascicolo 229 (Ottobre 2018), attualmente in edicola, c’è anche la prima puntata del progetto di uno shield GSM/GPRS universale e low-cost in grado di dotare di connettività cellulare i nostri progetti con Arduino.

Data la richiesta crescente di apparecchiature elettroniche con connessione alla rete GSM/GPRS, abbiamo deciso di sviluppare un nuovo shield GSM per piattaforma Arduino e Raspberry Pi 3, capace di supportare svariati moduli su breakout-board GSM sviluppate da Futura Elettronica, le quali utilizzano i motori GSM di SimCom, Quectel e Fibocom sulla medesima pin out. Quindi sarà possibile provare e trovare il modulo GSM più adatto alla propria  applicazione, sviluppare il firmware sullo shield e poi integrare nel circuito definitivo il modulo scelto. Lo shield consente di sfruttare sia le funzioni di chiamata vocale e scambio di SMS, sia per la gestione delle connessioni dati GPRS. In quest’ultimo caso la SIM dovrà essere abilitata al traffico dati.

Le applicazioni che fanno uso dei semplici SMS possono essere sistemi che dato il verificarsi di un evento devono inviare un testo, con semplici dati correlati, verso un telefono cellulare.

La connessione dati è utile nelle applicazioni in cui bisogna inviare o ricevere dati da o verso un server. Mentre una tipica applicazione che potrebbe trarre vantaggio da una connessione GPRS potrebbe essere un sistema di monitoraggio dell’energia elettrica la quale invia periodicamente a un server le misure elettriche effettuate.

SCHEMA A BLOCCHI

Prima di analizzare lo schema elettrico soffermiamoci sulla sua composizione, descritta dallo schema a blocchi proposto in questa pagina. Iniziamo con l’alimentazione principale, che viene prelevata tramite un connettore μUSB al quale è possibile collegare un alimentatore come quello dei cellulari, oppure è possibile collegare il cavo USB direttamente a una presa USB tipo A del PC, prendendo l’alimentazione dallo stesso. I 5 volt presenti sul connettore μUSB vengono portati sia al DC/DC converter, per generare la tensione di alimentazione dei moduli GSM (+VBAT) sia agli header per le schede Arduino e Raspberry Pi. Nello schema a blocchi le schede Arduino e Raspberry Pi sono rappresentate da due blocchi funzionali di colore verde, dai quali partono alcune linee di comunicazione, di diagnostica e debug.

Ma procediamo con ordine: per prima cosa osserviamo che dal blocco funzionale corrispondente ad Arduino partono diverse linee di comunicazione UART, sia hardware sia assegnate da software; queste ultime sono I/O che tramite librerie possono fungere da seriali e sono utili, ad esempio su Arduino Uno R3, dove c’è un solo UART hardware. Se questo dev’essere usato per debuggare il  firmware attraverso il monitor seriale, volendo comunicare con il modulo GSM occorre inizializzare una seriale virtuale. Qualcuno si starà chiedendo perché abbiamo predisposto due UART? La scelta nasce dal fatto che ci possono essere moduli GSM dotati di due UART: ad esempio il SimCom SIM928A, che integra un ricevitore GPS e dispone di una seriale per ricevere i comandi AT per la gestione della sezione GSM/GPRS e l’altra per la lettura dei dati GPS NMEA sul posizionamento. Per quanto riguarda Raspberry Pi, questa mette a disposizione un solo UART hardware; in questo caso non è possibile avere due comunicazioni simultanee.

Le linee UART, nel caso delle schede Arduino, prima di giungere ai moduli GSM passano attraverso dei traslatori di livello che  permettono di accoppiare linee dati con tensioni di lavoro a +5V con linee dati con tensioni di lavoro a +3,3V. Questo non è necessario per quanto riguarda le schede Raspberry Pi, in quanto queste lavorano già a tensione +3,3V. Oltre ai traslatori di livello, le linee UART prima di giungere ai moduli GSM incontrano una serie di jumper a 3 posizioni utili per selezionare se utilizzare una comunicazioni di tipo hardware piuttosto che software e se si vuole attivare/disattivare la spia di comunicazione per vedere quali comandi si stanno scambiando le schede Arduino/Raspberry Pi con i motori GSM. È anche possibile instradare i segnali in modo da  inviare i comandi AT direttamente da PC, questo è molto utile durante la fase  di studio dei comandi per verificarne il corretto funzionamento prima di implementarli in codice nelle schede Arduino e Raspberry Pi. Queste sezioni di level shifting e instradamento dei segnali sono rappresentate da dei blocchi di colore grigio (sono in tutto tre blocchi distinti, due nominati “Level shifter and jumper selector” mentre il terzo è solo un “Jumper selector”).

La sezione dei motori GSM è rappresentata dal blocco di colore giallo “GSM BreakOut Board” al quale giungono le linee di comunicazione discusse in precedenza. A questo blocco, oltre alle linee dati, giunge anche l’alimentazione +VBAT generata dal DC/DC converter e l’alimentazione Vrtc resa disponibile dal condensatore a foglie d’oro da 0,22F usato per tenere alimentato il Real Time Clock Calendar presente sui moduli GSM in caso di mancata alimentazione primaria. La carica del condensatore viene garantita dalla stessa elettronica del moduli GSM, nel momento in cui questa viene a mancare il condensatore provvede a tenere attivo il RTCC fino a sua completa scarica.

Ai moduli GSM vengono collega pulsanti i quali servono per accendere/spegnere il motore GSM, pulsante P1, oppure per resettare il motore GSM, pulsante P2. Questi pulsanti vengono utili quando si deve agire manualmente sui motori, ad esempio accenderli per poi inviare dei comandi AT da PC. La durata dell’impulso di accensione/spegnimento, piuttosto che la durata dell’impulso di reset dipendono dal motore stesso. Quindi è necessario consultare i datasheet per i dettagli, ovviamente si parla sempre di impulsi di durata minima.

Concludiamo la carrellata con le linee MIC e SPK, linee differenziali, le quali servono per collegare rispettivamente un microfono e uno speaker utili durante le chiamate foniche.

Esaminiamo ora il blocco arancione “GSM/GPRS SPY” il quale come accennato prima serve per spiare la comunicazione seriale tra i motori GSM e le schede Arduino/Raspberry Pi, piuttosto che inviare direttamente i comandi AT da PC. Il blocco funzionale è molto semplice e comprende delle porte logiche e qualche jumper per l’instradamento dei segnali nonché un connettore 4 poli, blocco azzurro adiacente, al quale collegare il convertitore USB/UART FT782M della Futura Elettronica.

Concludiamo l’analisi dello schema a blocchi dicendo che alle schede Arduino/Raspberry Pi sono collegati due pulsanti P3 e P4 per sviluppi futuri e una serie di linee digitali per il debug del firmware che si andrà a scrivere. In particolare, abbiamo tre linee di trigger, con relativi LED, più sei LED di diagnostica: due rossi, due verdi e altrettanti gialli; sono utili durante le fasi di inizializzazione dei motori GSM, invio e ricezione SMS, chiamate vocali ecc.

L’articolo prosegue coni seguenti argomenti:

SCHEMA ELETTRICO

LAYOUT DEL PCB

COMANDI AT DA PC TRAMITE SPIA SERIALE

AGGIORNAMENTO MODULI GSM

LIBRERIA GSM PER LE SCHEDE ARDUINO

L’articolo completo è pubblicato sul numero 229, Ottobre 2018, acquistabile in tutte le edicole.

 

 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Main Menu