Area SX srl - Informatica e Microelettronica
0
Torna a: Home Page Soluzioni Microcontrollori Linux Embedded Programmare in Python il Gatetel EzMOTO

Programmare in Python il Gatetel EzMOTO

Data di pubblicazione: 20-02-2015 | Versione Italiana  | (No English Version)The English version of this article does not exists

In questo articolo vediamo passo passo come installare tutto il necessario per programmare il Gatetel EzMOTO in Python

Il Gatetel EzMOTO è una compatto box che racchiude in soli 10cm x 12cm: un potente processore ARM da 700Mhz con 512Mb di RAM (attualmente basato su Raspberry Pi); un modem Telit HE910-EUG con tecnologia GSM/GPRS/UMTS/HSPA e A-GPS; un microprocessore di servizio per la gestione delle periferiche di I/O.
Maggiori dettagli sul EzMOTO sono disponibili leggendo articolo: SXPi non solo una Linux Box
Scopo di questa pagina è mostrare come programmare la Linux box di Gatetel usando il linguaggio Python.
Python è un linguaggio di programmazione ad alto livello, orientato agli oggetti, largamente diffuso su molteplici piattaforme e di facile apprendimento.

Requisiti hardware

Per cominciare a sviluppare sul EzMOTO il corredo hardware minimo necessario è il seguente:

Collegamenti elettrici

Il Gatetel EzMOTO va alimentato con una tensione compresa tra 6V e 55V, da applicare sui contatti 1 e 3 del MOLEX MICRO a 4 poli rispettando la polarità visibile nell'immagine che segue:

L'alimentatore deve essere in grado di erogare una corrente di picco pari a 2A.
Per poter utilizzare il modem GSM/UMTS e GPS Telit integrato, è necessario collegare le due rispettive antenne con contatto FAKRA:

Accesso in console Seriale e SSH

L' accesso alla console del sistema operativo Linux Debian pre installato sul EzMOTO, è possibile tramite collegamento alla seriale su DB9 sita sul lato uscita GPIO, impostando una velocità di comunicazione di 115200bps; oppure tramite accesso SSH da un PC collegato alla stessa rete LAN. Per default la distribuzione Linux viene fornita con la configurazione della LAN in DHCP mode. Le credenziali di accesso sono:
login: pi
password: pi


La modifica dell'indirizzo IP e l'impostazione dell'indirizzo del gatway per l'accesso ad internet si effettua editando il file interfaces presente in etc, con il comando:
:~# vi /etc/network/interfaces

Nel file interface è necessario cambiare i valori di:
address, netmask e gateway
con i parametri compatibili con la propria rete LAN. Oltre ai parametri di rete è indispensabile impostare sul EzMOTO l'indirizzo dei server DNS. Quest'ultima operazione si effettua editando il file resolv.conf:

:~# vi /etc/resolv.conf

ed inserire:

nameserver 8.8.8.8

Dopo un reboot del EzMOTO è possibile testare la corretta configurazione dell'accesso ad internet con un ping:

:~# ping www.areasx.com

Python e le librerie aggiuntive

Nell'immagine standard Linux Rasbian precaricata sulla micro SD da 8Gb, fornita assieme al EzMOTO è già installato l'interprete Python nella versione 2.7. Utili se non indispensabili sono le librerie secondarie come:

pySerial è una libreria fondamentale per consentire all'interprete Python di utilizzare le porte seriali per comunicare con il modem Telit integrato. Per l'installazione sul EzMOTO è sufficiente digitare su console SSH il comando:

apt-get install python-serial

RPi è una libreria sviluppata per consentire a Python di interfacciarsi alle linee GPIO della famosa scheda Raspberry Pi.

sudo apt-get install python-rpi.gpio

python-smbus è un modulo Python che consente l'accesso SMBus attraverso l'interfaccia I2C / dev su host Linux. Questo modulo è indispensabile per consentire alla Raspberry di comunicare con il coprocessore che gestisce le periferiche esterne del EzMOTO.
Se non già installata procedere con il comando:

sudo apt-get install python-smbus

pySqlLite è un modulo permette di creare e gestire dei database locali in SQLite. Per l'installazione, sempre da console, digitare:

apt-get install python-sqlite

MySQLdb è una libreria che permette a Python di interagire con i server Mysql. Da console:

apt-get install python-mysqldb

Si ricorda che per effettuare l'installazione dei pacchetti con il comando apt-get è indispensabile configurare un accesso internet al EzMOTO.

Per caricare un programma Python sul EzMOTO è necessario disporre di un client FTP o SFTP (es WinSCP); collegarsi all'IP della Linux Box autenticarsi e trasferire lo script nella path es /home.



Prima di lanciare lo script, da console SSH è necessario renderlo eseguibile con il comando:

:/home/# chmod +x SCRIPT.py

Per eseguire il progrmmma:

:/home/#./SCRIPT.py

Schema e collegamenti interni del EzMOTO

Di seguito sono rappresentate le connessioni elettriche all'interno del EzMOTO

Controllare le periferiche connesse direttamente al processore ARM

Vengono direttamente controllati dai GPIO del processore Linux ARM 11 alcune periferiche come: modem,relè e LED.
La tabella che segue riporta il PIN fisico e il GPIO della Raspberry interna associato al dispositivo connesso.
DispositivoGPIO Raspberry PiPIN Raspberry PiDirezione
Relè 30V 1A2522Out
Power Monitor Telit HE9101812In
ON/OFF Telit HE9102215Out
Reset Telit HE9101123Out
Enable USB Power2316Out
Linea watchdog cooprocessore47Out
Led Verde (lato ethernet)2713Out


Il codice che segue mostra come, in Python, inizializzare le linee del processore ARM

import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BOARD)
GPIO.setup(22, GPIO.OUT, initial=GPIO.LOW) #Linea (OUTPUT) RELE'
GPIO.setup(23, GPIO.OUT, initial=GPIO.LOW) #Linea (OUTPUT) Reset Modem
GPIO.setup(15, GPIO.OUT, initial=GPIO.LOW) #Linea (OUTPUT) Power Modem
GPIO.setup(18, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) #Linea (INPUT) Status Modem
GPIO.setup(16, GPIO.OUT, initial=GPIO.LOW) #Linea (OUTPUT) USB Power
GPIO.setup(13, GPIO.OUT, initial=GPIO.LOW) #Linea (OUTPUT) Led Green
GPIO.setup(7, GPIO.OUT, initial=GPIO.LOW) #Linea (OUTPUT) watchdog



Il codice completo è disponibile nell'area download Test_GPIO_ARM11.zip

Comunicare con il modem Telit HE910

Il modem Telit HE910 integrato nel EzMOTO è connesso al processore ARM 11 via USB ed è controllato (start e reset) tramite i GPIO 23 e 15.
Al boot del EzMOTO il modem è spento e va acceso portando alta la linea GPIO 15 per circa 3 sec.
Ricordiamo che prima di accendere il modem è necessario collegare l'antenna GSM ed inserire nell'apposito alloggio una SIM GSM/UMTS.



Il corretto avvio del modem è segnalato dal lampeggio del led rosso vicino al connettore ethernet.
Una volta acceso,il modem è accessibile dal sistema LINUX sul device /dev/ttyACM0

ser = serial.Serial("/dev/ttyACM0")
ser.baudrate = 11500
ser.open()
ser.write("AT\r")
time.sleep(0.5)
rxchr=ser.inWaiting()
if(rxchr>0):
  rxbuff=ser.read(rxchr)
  print "RX:"
  print rxbuff

Il Telit HE910 oltre ad essere un sofisticato modem GSM/GPRS/UMTS/HSDPA è anche un performante ricevitore A-GPS.
L'interrogazione del GPS da parte del ARM11 avviene attraverso lo stesso device del modem (/dev/ttyACM0) inviando comandi AT.

ser.write("AT$GPSP=1\r") #Comando AT$GPSP accende GPS
time.sleep(0.5)
rxchr=ser.inWaiting()
if(rxchr>0):
  rxbuff=ser.read(rxchr)
  print "RX:"
  print rxbuff
time.sleep(5.0)
ser.write("AT$GPSACP?\r") #Comando AT$GPSACP recupera attuale posizione
time.sleep(0.5)
rxchr=ser.inWaiting()
if(rxchr>0):
  rxbuff=ser.read(rxchr)
  print "RX:"
  print rxbuff




Ricordiamo che per utilizzare il ricevitore GPS, è necessario collegare l'apposita attena al EzMOTO, e posizionarla all'aperto per avere un FIX valido.

Il codice completo è disponibile nell'area download Test_MODEM.zip

Controllare le preiferiche gestite dal coprocessore

All'interno del EzMOTO, collegato in I2C bus al processore ARM11 principale, trova posto un coprocessore basato su PIC18F65K22 pre programmato.
Grazie a questo coprocessore è possibile gestire ulteriori GPIO come: LED, linee di input (0-50V) e output (Open Collector max 250mA), ADC a 12Bit in tensione 0-15V e in corrente 0-20mA e porte seriali RS232/RS485.

Tutti questi GPIO supplementari sono disponibili sul connettore MOLEX da 24 poli:

import smbus
bus = smbus.SMBus(1)
bus.write_byte_data(0x04,0x03,0x00) #Disabilita il Watchdog
din = bus.read_byte_data(0x04,0x01) #Stato degli ingressi



Il codice completo: Test_I2C_IO.zip
Il circuito per testare gli ingressi ADC è il seguente:

adc_lsb = bus.read_byte_data(0x04,0x08)
adc_msb = bus.read_byte_data(0x04,0x09)
adc = adc_lsb + (adc_msb<<8)
print "ADC 1 = %.03f V [0x%X 0x%X] " % (float(adc) / 1000, adc_msb, adc_lsb)




Il codice completo: Test_I2C_ADC.zip



Il codice completo: Test_I2C_RS485.zip

Connessione ad un server MySQL

Scrivere un programma in Python che consenta al EzMOTO di collegarsi ad un server MySQL grazie alla libreria MySQLdb diventa estremamente facile.


import MySQLdb

MYSQL_HOST = "127.0.0.1"
MYSQL_PORT = 3306
MYSQL_USER = "root"
MYSQL_PASSWD = "xxxxx"
MYSQL_DB = "test"
Conn = MySQLdb.Connect(host = MYSQL_HOST, port = MYSQL_PORT, user = MYSQL_USER, passwd = MYSQL_PASSWD, db= MYSQL_DB )
print "Connessione con il server MySql %s riuscita" % MYSQL_HOST
Cursor = Conn.cursor(MySQLdb.cursors.DictCursor)
Cursor.execute("SELECT * FROM prova")
rows = Cursor.fetchall ()
for row in rows:
  print "%s, %s, %s" % (row["id"], row["nome"], row["cognome"])

Il server MySQL può essere remoto ma anche locale. E' possibile installare MySQL Server con il comando:

sudo apt-get install mysql-server --fix-missing

Gestione di un database locale SQLite

Se per il proprio progetto si ha la necessità di un piccolo e leggero database da gestire su un semplice file SQLite è la soluzione. Per lavorare con SQLite in Python:

import sqlite

dbFileName = "anagrafe.db"
conn = sqlite.connect(database=dbFileName,autocommit=0)
cur = conn.cursor()
query ="CREATE TABLE anagrafe (id INTEGER PRIMARY KEY, nome VARCHAR(25), cognome VARCHAR(25))"
cur.execute(query)
conn.commit()

Link utili

Articolo: SXPi non solo una Linux Box
Sito: www.python.org

Documentazione EzMOTO

Download EZmoto_Product_Description_R6_10_01_2014.pdf
Download Telit_HE910_UE910_AT_Commands_Reference_Guide_r5.pdf
Download Telit_HE910_A-GPS_Application_Note_r3.pdf

Download

Download Progrmma di test GPIO ARM11 Test_GPIO_ARM11.zip
Download Progrmma di test Modem Telit Test_MODEM.zip
Download Progrmma di test I/O su I2C Test_I2C_IO.zip
Download Progrmma di test ADC su I2C Test_I2C_ADC.zip
Download Progrmma di test RS485 su I2C Test_I2C_RS485.zip


Segnala questo articolo: 





Data di pubblicazione: 20-02-2015Hits: 30343
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
EZ-MOTO;EZ10-PWS;FAKRA-GPS;FAKRA-GSM
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 GSM Tipo FAKRA D
Antenna GSM/UMTS/HSPA con connettore FAKRA D.
Principali caratteristiche tecniche
  • Frequenze di funzionamento: 900 MHz, 1800 MHz
  • Guadagno 3,5 dBi
  • Impedenza 50ohm
  • Connettore FAKRA D
  • Lunghezza del cavo: 2,5 m
  • Dimensioni: 116 x 22 x 4 mm


Prodotto compliant RoHs
FAKRA-GSM€ 8.00
Per maggiori informazioniPer maggiori informazioni
Per maggiori informazioniAntenna GPS Tipo FAKRA C
Antenna GPS/GLONASS Tipo FAKRA C.
Principali caratteristiche tecniche
  • Frequenze di funzionamento: 1575/1602 MHz
  • Guadagno 30 dBi
  • Filtro SAW: 1595MGts
  • Connettore FAKRA C
  • Lunghezza del cavo: 3 m
  • Dimensioni: 48 x 39 x 14 mm


Prodotto compliant RoHs
FAKRA-GPS€ 10.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