Area SX srl - Informatica e Microelettronica
0
Torna a: Home Page Soluzioni Telecontrollo SMS/GSM Eseguire uno script Python su un modem Telit

Eseguire uno script Python su un modem Telit

Data di pubblicazione: 30-04-2006 | Versione Italiana  | (No English Version)The English version of this article does not exists
Parole chiave: - Python -

In questo articolo andiamo a scoprie tutte le potenzialit� dei nuovi modem Telit (http://www.telit.co.it/) caratterizzati dalla sigla PY. Questi modelli sono equipaggiati con un interprete Python 1.5.2+ che permette loro l'esecuzione di script caricati tramite collegamento seriale.

Python � un linguaggio di programmazione interpretato open source molto potente e flessibile caratterizzato da una curva di apprendimento estremamenteripida, grazie anche ad una sintassi semplice e pulita. La sua implementazione, sempre pi� diffusa, rende oggi possibile l'esecuzione di un programma scritto in Python sui pi� vari sistemi operativi: Unix, Linux, Windows, DOS, OS/2, Mac, Amiga, Palm, Nokia Symbian serie 60.
Il sito di riferimento, in cui poter trovare i vari interpreti e tutta la documentazione necessaria per cominciare ad usare questo fantastico linguaggio di programmazione, � www.python.org.

I Modem TELIT

I moduli Telit Python sono esteriormente e meccanicamente uguali ai modelli standard; la sostanziale differenza � racchiusa al loro interno. Infatti, oltre all'interprete Python 1.5, sono equipaggiati con ben 3MB di memoria per il salvataggio permanente degli script e 1.5MB di ram per la loro esecuzione.

Nello schema a blocchi che segue � possibile vedere tutte le parti che compongono il modem e come interagiscano fra loro.

Grazie a specifici moduli l'interprete Python pu�: inviare comandi AT direttamente al core modem GSM/GPRS, controllare i port di I/O e comunicare con la seriale supplementare che equipaggia solo alcuni modelli.

I moduli specifici del model Telit sono:

  • GPIOper comunicare con le linee di I/O (GPIO)
  • MDM per inviare comandi AT all'engine del modem
  • SER per comunicare con la seriale supplementare
  • MOD libreria d'interfaccia tra Python e le varie funzionalit� del modulo
  • IIC libreria per la comunicazione I2C bus che pu� essere configurata per utilizzare qualsiasi GPIO disponibile
  • SPI libreria per la comunicazione SPI che, come la precedente, pu� essre configurata per utilizzare qualsiasi GPIO disponibile

La documentazione e la sintassi completa per usare le varie funzioni delle librerie appena elencate � disponibile nel PDF distribuito dal produttore e scaricabile dal seguente link: Telit_Easy_Script_Python_r15.pdf oppure in fondo a questo articolo

L'applicazione di esempio che verr� descritta di seguito, oltre ad essere una rapida guida su come caricare ed usare gli script scritti in Python nei modem Telit, vuole anche essere una dimostrazione potenzialit� fornite da questa nuova accoppiata.
In particolare andremo a realizzare un semplice dispositivo in grado di inviare un SMS alla pressione di un pulsante, il tutto usando esclusivamente un modem Telit PY e una manciata di componenti elettronici esterni.

Per comodit� il modello usato in questo articolo � il Telit EZ10-PCS PYG, versione boxata del GM862-QUAD-PY, gi� equipaggiata di circuito di alimentazione e adattatore di livelli RS232.

Oltre al modem per la stesura di questo articolo � stato usato:

Sul fianco destro del Telit EZ10-PCS PYG, quello dove si trova la porta seriale, � presente una presa RJ11 a sei poli che, solo nella versione equipaggiata con l'interprete Python, � collegata direttamente a quattro port di Input / Output. Questi port consentono di interfacciare il modem con eventuale elettronica esterna: LED, pulsanti, circuiti integrati, sensori, ecc.

Di seguito � riportato il pinout della presa RJ11.

PIN Segnale I/O Funzione Tipo
1 GND - Power GND
2 GPIO4 I/O Generico I/O configurabile CMOS 2.8V
3 GPIO6 I/O Generico I/O configurabile / ALLARME CMOS 2.8V
4 GPIO7 I/O Generico I/O configurabile / BUZZER CMOS 2.8V
5 GPIO5 I/O Generico I/O configurabile CMOS 2.8V
6 VMOD O Massa VCC

Per realizzare la nostra applicazione di esempio dobbiamo realizzare su demo board un elementare circuito elettronico, composto da tre LED collegati a relativi resistori di limitazione da 150ohm e un pulsante con resistore di pull up da 10Kohm, secondo lo schema riportato di seguito:

I collegamenti tra modem e demo board possono essere realizzati usando una comune spina RJ11 a sei poli e circa dieci centimetri di piattina sempre a sei poli.

Terminati i collegamenti con la demo board dobbiamo collegare il modem ad un PC usando una prolunga seriale a 9 poli completa di tutti i controlli di flusso. Nel caso il cui il PC che stiamo usando non fosse dotato di porta seriale, sempre pi� rara nei nuovi modelli, possiamo ovviare all'inconveniente con un convertitore USB - Seriale (http://www.areasx.com/index.php?page=scheda.php&id=263).
A questo punto possiamo inserire una SIM GSM (verificare che la SIM disponga di credito e non abbia impostato il codice PIN di protezione) nell'apposito alloggiamento push-push presente sul fianco sinistro del modem Telit, collegare l'antenna GSM al connettore coassiale SMA e alimentare il modem tramite l'apposito alimentatore a parete.

Conclusi i vari collegamenti elettrici, passiamo ad analizzare il programma in Python da caricare nel modem.
Per chi volesse cominciare a programmare in Python di seguito vengono indicati solo alcuni dei siti che si trovano online contenenti corsi e documentazione completamente gratuita.

http://www.python.org/doc/current/tut/tut.html
http://www.hetland.org/python/instant-python.php
http://www.python.it

Il sorgente che segue va copiato e salvato in un file con estensione .py ad esempio IO_SMS.py

#Importo i moduli
import MDM
import GPIO
import MOD

#VARIABILI
GSMNUMBER="xxxxxxxxxx"  #Numero del destinatario dell'SMS
SMSMESSAGE="Il modem Telit con python ti scrive ;)" #Messaggio dell'SMS inviato

#SETTO LA DIREZIONE DEI PORT
r=GPIO.setIOdir(5,0,1) #Setto GPIO5 come output e come valore di default 0
r=GPIO.setIOdir(6,0,1) #Setto GPIO6 come output e come valore di default 0
r=GPIO.setIOdir(7,0,1) #Setto GPIO7 come output e come valore di default 0
r=GPIO.setIOdir(4,0,0) #Setto GPIO4 come input

#lampeggio d'avvio
s=GPIO.setIOvalue(5,1) #Accendo il led su GPIO5
s=GPIO.setIOvalue(6,1) #Accendo il led su GPIO6
s=GPIO.setIOvalue(7,1) #Accendo il led su GPIO7
MOD.sleep(10) #Pausa per un secondo
s=GPIO.setIOvalue(5,0) #Spengo il led su GPIO5
s=GPIO.setIOvalue(6,0) #Spengo il led su GPIO6
s=GPIO.setIOvalue(7,0) #Spengo il led su GPIO7
#Abilito la modalit� testo del modem
res = MDM.send('AT+CMGF=1\r', 0) #Invio comando AT
res = MDM.receive(3) #Attendo 3 sec
if(res.find('OK') != -1): #Ricevuto "OK"
  while (1): #Ciclo infinito
    s=GPIO.setIOvalue(6,1) #Accendo il led su GPIO6
    if(GPIO.getIOvalue(4)==0): #Verifico lo stato del port GPIO4
      s=GPIO.setIOvalue(5,1) #Accendo il led su GPIO5
      TXbuff="AT+CMGS=\"%s\"\r" % (GSMNUMBER)
      res = MDM.send(TXbuff, 0)
      res = MDM.receive(2) #Attendo 2 sec
      if(res.find('>') != -1): # se ricevo il prompt
        TXbuff = SMSMESSAGE + chr(26) + "\r" #appendo CTRL + Z
        res = MDM.send(TXbuff, 0) #invio la stringa al modem
        res = MDM.receive(3) #Attendo 3 sec
      s=GPIO.setIOvalue(5,0) #Spengo il led su GPIO5
    MOD.sleep(10) #Pausa per un secondo
    s=GPIO.setIOvalue(6,0) #Spengo il led su GPIO6
    MOD.sleep(10) #Pausa per un secondo
else: #Non ho ricevuto "OK"
  s=GPIO.setIOvalue(7,1) #Accendo il led su GPIO7
  MOD.sleep(10) #Pausa per un secondo
  s=GPIO.setIOvalue(7,0) #Spengo il led su GPIO7
  MOD.sleep(10) #Pausa per un secondo
  s=GPIO.setIOvalue(7,1) #Accendo il led su GPIO7
  MOD.sleep(10) #Pausa per un secondo
  s=GPIO.setIOvalue(7,0) #Spengo il led su GPIO7
  MOD.sleep(10) #Pausa per un secondo
  s=GPIO.setIOvalue(7,1) #Accendo il led su GPIO7
  MOD.sleep(10) #Pausa per un secondo

Per caricare il listato appena riportato nella memoria del modem l'unico software di cui abbiamo bisogno � Hyperterminal presente in qualsiasi versione di Windows (Start -> Programmi -> Accessori -> Comunicazioni ->Hyperterminal ).

Una volta lanciato Hyperterminal dobbiamo, nella finestra che ci appare, selezionare la porta COM del PC a su cui abbiamo collegato l'EZ-10-PY.

Successivamente impostiamo i parametri della comunicazione seriale con i seguenti valori: BPS 115200, Bit 8, Parit� Nessuna, Bit di stop 1, Controllo di flusso Hardware; confermiamo cliccando su OK.

In automatico Hyperterminal& avvier� la connessione ma � necessario effettuare altre impostazioni; ci occorre quindi effettuare la disconnessione dal modem cliccando su: Chiama -> Disconnetti. A questo punto dal menu File selezioniamo Propriet� e nella finestra che appare Impostazioni.

Qui clicchiamo sul tasto Impostazioni ASCII.

Nella finestra che segue spuntiamo la voce "Aggiungi avanzamento riga ad ogni ritorno a capo inviato" sia in Trasmissione ASCII che in Ricezione ASCII . Conferminamo scegliendo due volte OK e ci connettiamo nuovamente con il modem cliccando su Chiama -> Chiama. Per vedere se il modem � correttamente connesso � sufficiente digitare sulla console il comando AT e aspettare la risposta OK.

Tra gli innumerevoli comandi AT supportati dal Telit EZ10-PY ve ne sono alcuni proprietari, aggiunti proprio per gestire gli script in Python. Uno dei pi� importanti � AT#WSCRIPT la cui sintassi completa �:

AT#WSCRIPT = "<nome del file>", <size>

Il parametro <nome del file> indica il nome con cui verr� salvato lo script nella memoria del modem, mentre il parametro <size> indica lo spazio in byte occupato dallo script. Quest'ultimo valore si ricava cliccando con il tasto destro del mouse sul file .py (IO_SMS.py) precedentemente creato in cui abbiamo copiato il listato del nostro esempio di script e selezionando la voce Propriet� del men� a tendina che appare.

Come parametro <size> dobbiamo mettere il valore per esteso indicato dalla voce "Dimensioni:".

Digitato sulla console il comando AT#WSCRIPT="t.py", 2826 e battendo invio dopo pochi attimi vediamo apparire il prompt ">>>", a questo punto dal menu Trasferimento di Hyperterminal clicchiamo sulla voce Invia file di testo.... e nella finestra che appare, selezioniamo la path di windows dove abbiamo salvato il file contente il sorgente Python di prova e clicchiamo su Apri.

Dopo pochi istanti riceviamo dal modem un OK a conferma del corretto download dello script. Da questo momento il nostro script � salvato permanentemente nei 3MB di memoria che equipaggiano il modem Telit.
Successivamente dobbiamo indicare quali sono gli script che vanno eseguiti al riavvio del modem, per far questo dobbiamo usare il comando AT#ESCRIPT  con la sintassi che segue:

AT#ESCRIPT = "<nome del file>"

per abilitare il nostro file di test dobbiamo digitare sulla console il comando AT#ESCRIPT = "t.py" e attendere l'OK da parte del modem.

Da questo momento ad ogni riavvio del moden impostando il controllo di flusso DTE basso (basta tenere il modem scollegato dal PC) lo script Phyton t.py viene lanciato. La corretta esecuzione di quest'ultimo e rivelabile vedendo lampeggiare il LED sulla demo board connesso al port GPIO6 (pin 3 dell'RJ11 sul modem) . Cortocircuitando a massa con la pressione del pulsante montato sulla demo board il port GPIO4 dopo pochi attimi verr� inviato un SMS con il messaggio riportato nella variabile SMSMESSAGE al cellulare che ha per numero quello riportato nella variabile GSMNUMBER presente all'inizio del listato precedentemente riportato.

Per cancellare definitivamente uno script dalla memoria del modem basta digitare il comando AT#DSCRIPT rispettando la sintassi che segue

AT#DSCRIPT = "<nome del file>"

Conclusione

In questo articolo abbiamo visto solo una parte delle innumerevoli potenzialit� di questa nuova generazione di modem che da soli sono capaci di sostituire complicati circuiti basati su microprocessore e che, grazie alla semplicit� di programmazione del linguaggio Python, permettono la realizzare in modo semplice ed economico di sistemi Mobile To Mobile (M2M).

Link utili

http://www.telit.co.it/modules.asp
http://www.python.org/doc/current/tut/tut.html
http://www.hetland.org/python/instant-python.php
http://www.python.it

Download:

Download Sorgente in Python
Download Telit_Easy_Script_Python_r15.pdf


Segnala questo articolo: 



Parole chiave: - Python -

Data di pubblicazione: 30-04-2006Hits: 56185
I marchi citati sono propriet� dei titolari dei relativi diritti. Le caratteristiche tecniche e i prezzi riportati sono indicativi e soggetti a variazioni senza preavviso. Le foto non hanno valore contrattuale. Nonostante accurate verifiche, il presente documento pu� contenere prezzi o specifiche errati. Area SX si scusa in anticipo e si impegna ad evitare tali imprecisioni.

 Area SX store
In questa sezione puoi ordinare direttamente i prodotti descritti in questo articolo
EZ10-PWS;GM862-PY;GT863-PY;AMM.575;GsmTerminal-232PY;GsmTerminal-232PY-B;SXPY_GPS_KIT;SXPY_KIT;EZ863-GPS-KIT;SXGSM_OEM
Tutti i prezzi indicati sono espressi in Euro con IVA e spese di trasporto escluse. I prezzi si riferiscono al singolo pezzo
DescrizioneCodicePrezzo
Per maggiori informazioniAlimentatore per moduli EZ e Telit serie GT
Alimentatore per modem EZ e Telit serie GT.
Principali caratteristiche tecniche
  • Input: 110-240v AC 50/60 Hz
  • Output: 12V CC 1.25A
  • Spina: Italiana
  • Connettore bassa tensione: Molex a 4 vie
  • Certificazione: CE
Questo alimentatore è compatibile con i seguenti prodotti:
  • GT-HE910-EUG e GT-HE910-GNS
  • GT-GE910-EUG e GT-GE910-GNS
  • EZ863H
  • EZMOTO


Prodotto compliant RoHs
ALI-SW-12-TELIT€ 16.00
Per maggiori informazioniPer maggiori informazioni
Per maggiori informazioniAntenna con base magnetica per moduli GSM/GPRS con SMA/M
Antenna con base magnetica per moduli GSM/GPRS Quadri Band 850/900/1800/1900 MHz, con
cavo coassiale 3mt e connessione SMA Maschio.
  • Impedenza: 50 Ohms
  • Polarizzazione: verticale
  • Guadagno: 2.2 dBi Max
  • VSWR: <1.5:1
  • Cavo: RG174
  • Lunghezza cavo: 2.5mt
  • Temperatura operativa: da -40°C a +85°C

Questa antenna è compatibile con i seguenti prodotti: .
  • EZ863-GPS
  • EZ10-GPS
  • Telit GT863-PY


Prodotto compliant RoHs
AMM.575€ 8.00
Per maggiori informazioniPer maggiori informazioni

Rivenditori Social Contatti Condizioni
Area SX s.r.l
Via Stefano Longanesi 25
00146 Roma

Tel: +39.06.99.33.02.57
Fax: +39.06.62.20.27.85
P.IVA 06491151004
Condizioni di vendita
Procedura di rientro in garanzia
Condizioni per i rivenditori