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

Programmare in Python la SXPi

Data di pubblicazione: 17-11-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 la SXPi in Python

La SXPi è una completa Linux Box da barra DIN. In un compatto box plastico di 97mm x 105mm (6 moduli) la SXPi racchiude: un potente processore ARM da 700Mhz con 512Mb di RAM (basato su Raspberry Pi 2); un modem Telit HE910 GSM/UMTS con tecnologia GSM/GPRS/UMTS/HSPA(versione 3G).
Maggiori dettagli sul SXPi sono disponibili leggendo articolo: SXPi non solo una Linux Box
Scopo di questa pagina è mostrare come programmare la Linux box SXPi usando il linguaggio di programmazione Python.
Python è un linguaggio ad alto livello, orientato agli oggetti, largamente diffuso su molteplici piattaforme e di facile apprendimento.

Requisiti hardware

Per cominciare a sviluppare sulla SXPi il corredo hardware minimo necessario è il seguente:

Collegamenti elettrici

La SXPi va alimentata con una tensione compresa tra 9V e 24V CC (18V AC), da applicare sul morsetto a vite da 2 poli.



La tensione di alimentazione può essere alternata (max 18v) o continua; in quest'ultimo caso non è necessario rispettare alcuna polarità. La SXPi-3G ha un consumo offline (GPRS e LAN non connessi) di circa 140mA, le due porte USB possono alimentare dispositivi fino ad un massimo di 500mA per porta; pertanto l'alimentatore dovrà poter orogare una corrente massima superiore ai 1000mA.
Per poter utilizzare il modem GSM/UMTS e GPS Telit integrato (SXPi 3G), è necessario collegare le due rispettive antenne con contatto SMA:



La SXPi è dotata di due uscite open collector (corrente max 500mA) su connettore MicroFit. Per controllare i relè è necessario rispettare lo schema elettrico che segue:



Accesso in console Seriale e SSH

L' accesso alla console del sistema operativo Linux Debian pre installato sulla SXPi, è possibile tramite collegamento alla seriale su RJ11 sita sul lato antenna GSM, impostando una velocità di comunicazione di 115200bps; oppure tramite accesso SSH da un PC collegato alla stessa rete LAN.
Di seguito lo schema elettrico del cavo console:


Per default la distribuzione Linux viene fornita con la configurazione della LAN in DHCP mode. Le credenziali di accesso sono:
login: sxpi
password: sxpi


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 della SXPi è 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 alla SXPi è 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 sulla SXPi è sufficiente digitare su console seriale o 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

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 per la SXPi.

Per caricare un programma Python sulla SXPi è 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 della SXPi

Di seguito sono rappresentate le connessioni elettriche all'interno della SXPi

Controllare le periferiche di I/O

La tabella che segue riporta il PIN fisico e il GPIO della Raspberry interna associato al dispositivo connesso.

DispositivoGPIO Raspberry PiPIN Raspberry PiDirezione
Ingresso Optoisolato 11019In
Ingresso Optoisolato 2921In
Pulsante47In
Open Collector 1824Out
Open Collector 2726Out
Led Rosso (bicolore)2713Out
Led Verde (bicolore)1711Out
Power Monitor Telit HE9101812In
ON/OFF Telit HE9102215Out
Reset Telit HE9101123Out

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(19, GPIO.IN, pull_up_down=GPIO.PUD_UP) #IN Optoisolato
GPIO.setup(21, GPIO.IN, pull_up_down=GPIO.PUD_UP) #IN Optoisolato
GPIO.setup(7, GPIO.IN, pull_up_down=GPIO.PUD_UP) #Tasto Reset
GPIO.setup(13, GPIO.OUT, initial=GPIO.LOW) #OUT LED RED
GPIO.setup(11, GPIO.OUT, initial=GPIO.LOW) #OUT LED GREEN
GPIO.setup(24, GPIO.OUT, initial=GPIO.LOW) #OUT Out OC 1
GPIO.setup(26, GPIO.OUT, initial=GPIO.LOW) #OUT Out OC 2
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(12, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) #Linea (INPUT) Status Modem


E come pilotarli:

while(1):
  print "LED OFF"
  GPIO.output(13, False) #Led Rosso off
  GPIO.output(11, True) #Led Verde on
  time.sleep(1.5)
  print "LED ON"
  GPIO.output(13, True)
  GPIO.output(11, False)

  #Test ingressi OPTO
  print "Test Ingressi Optoisolati"
  if(GPIO.input(19)==0):
    print "IN1 OPTO OK"
  if(GPIO.input(21)==0):
    print "IN2 OPTO OK"
  if(GPIO.input(7)==0):
    print "Pulsante chiuso"
  print "Test Uscite Open Collector"
  print "OC ON"
  GPIO.output(24, True)
  GPIO.output(26, True)
  time.sleep(1.5)
  print "OC OFF"
  GPIO.output(24, False)
  GPIO.output(26, False)

Comunicare con il modem Telit HE910

Il modem Telit HE910 integrato nella SXPi è connesso al processore ARM 11 via USB ed è controllato (start e reset) tramite i GPIO 23 e 15.
Al boot della SXPi 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 giallo presente sulla parte superiore della SXPi.

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 codice completo è disponibile nell'area download Test_MODEM.zip

Controllare la porta RS485 ed RS232

La SXPi integra un doppio convertitore USB<->RS232 direttamente connesso ad una porta USB della Raspberry. Il convertitore FTDI FT2232 fornise alla SXPi due ulteriori porte seriali fisiche accessibile dal sistema LINUX sui device /dev/ttyUSB0 e /dev/ttyUSB1.
Di seguito il pinout della porta seriale RS232 (/dev/ttyUSB0)



Di seguito il pinout della porta seriale RS485 (/dev/ttyUSB1)



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


Il codice completo: Test_RS485.zip e Test_RS285.zip

Connessione ad un server MySQL

Scrivere un programma in Python che consenta alla SXPi 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 sulla SXPi 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
Sito: www.raspberrypi.org
Sito: www.telit.com

Documentazione

Download Telit_HE910_UE910_AT_Commands_Reference_Guide_r5.pdf
Download Manuale_SXPi.pdf

Download

Download Progrmma di test GPIO Test_SxPi.zip
Download Progrmma di test Modem Telit Test_MODEM.zip
Download Progrmma di test RS485 Test_RS485.zip
Download Progrmma di test RS232 Test_RS232.zip
Download Progrmma di test EXP485 Test_EXP485.zip


Segnala questo articolo: 





Data di pubblicazione: 17-11-2015Hits: 14392
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
SXPI2_3G;SXPI_3G;EXP485;AMM.90;AMM.575;SXPI_BASE;SXPI_3G_KIT;SXPI3_3G
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 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
Per maggiori informazioniAntenna a 90° per moduli GSM/GPRS con SMA/M
Antenna a 90° per moduli GSM/GPRS Quadri Band 850/900/1800/1900 MHz, con connessione SMA Maschio.

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


Prodotto compliant RoHs
AMM.90€ 5.00
Per maggiori informazioniPer maggiori informazioni
Per maggiori informazioniSXPi Linux Box
Linux box basata su Raspberry PI.
Caratteristiche principali:
  • Processore ARM11 da 700Mhz con 512Mb SDRAM (Raspberry Pi Model B+) e sistema operativo su SD card
  • Interfaccia Ethernet RJ45 10/100Mbps
  • 2 interfacce USB 2.0 TYPE A
  • 2 interfacce RS232
  • interfaccia RS485
  • 2 ingressi digitali optoisolati (vin max 24V CC)
  • 2 uscite open collector (corrente max 500mA)
  • Alimentazione range esteso da 9V a 18V AC/CC
  • Consumo medio: 130mA
  • Dimensioni: 97x105x38mm
  • Peso: 150g
  • Grado di protezione: IP40
  • Temperatura operativa: da 0°C a +70°C
  • Umidità operativa: 5% - 85%

Comprende SD card da 16 Gbyte preinstallata con sistema operativo Raspbian.


Prodotto compliant RoHs
SXPI_BASE
Chiamare lo 06.99.33.02.57 per informazioni e prezzo del prodotto

Questo prodotto richiede un contatto diretto

Chiamare lo (+39)06.99.33.02.57 oppure inviare una email ad [email protected] per ulteriori informazioni
Per maggiori informazioniPer maggiori informazioni
 
Per maggiori informazioniEXP485 Scheda di espansione I/O Modbus su RS485
EXP485 scheda con 8 uscite a relè e 8 ingressi a contatto pulito o ingressi analogici. Con interfaccia RS485 e compatibile con lo standard ModBus RTU.
Principali caratteristiche tecniche
  • Uscite 8 a relè 48V 3A
  • Ingressi 8 a contatto pulito o 4 ADC 0-10V 10bit
  • Interfaccia EIA RS-485
  • Protocollo di comunicazione:ModBus RTU
  • Alimentazione: da 9V a 24V AC/DC
  • Consumo: 190mA con 8 relè attivi
  • Morsetti ad estrazione
  • Dimensioni: 6 moduli DIN 102mm x 85mm x 30mm


Prodotto compliant RoHs
EXP485€ 70
Per maggiori informazioniPer maggiori informazioni
Per maggiori informazioniSXPi Linux Box con modem 3G
Linux box basata su Raspberry PI con modem 3G GSM/UMTS.
Caratteristiche principali:
  • Processore ARM11 da 700Mhz con 512Mb SDRAM (Raspberry Pi Model B+) e sistema operativo su SD card
  • Modem Telit HE910-EUD GSM: 850/900/1800/1900MHz, UMTS/HSPA+: 850/900/2100MHz
  • Interfaccia Ethernet RJ45 10/100Mbps
  • 2 interfacce USB 2.0 TYPE A
  • 2 interfacce RS232
  • interfaccia RS485
  • 2 ingressi digitali optoisolati (vin max 24V CC)
  • 2 uscite open collector (corrente max 500mA)
  • Alimentazione range esteso da 9V a 18V AC/CC
  • Antenna GSM/UMTS
  • Consumo medio: 180mA
  • Dimensioni: 97x105x38mm
  • Peso: 170g
  • Grado di protezione: IP40
  • Temperatura operativa: da 0°C a +70°C
  • Umidità operativa: 5% - 85%

Comprende SD card da 16 Gbyte preinstallata con sistema operativo Raspbian ed antenna GSM


Prodotto compliant RoHs
SXPI_3G
Chiamare lo 06.99.33.02.57 per informazioni e prezzo del prodotto

Questo prodotto richiede un contatto diretto

Chiamare lo (+39)06.99.33.02.57 oppure inviare una email ad [email protected] per ulteriori informazioni
Per maggiori informazioniPer maggiori informazioni
 
Per maggiori informazioniKit di sviluppo SXPi2 Linux Box con modem 3G
Kit di sviluppo SXPi2.Linux box basata su Raspberry PI con modem 3G GSM/UMTS.
Caratteristiche principali SXPi:
  • Processore Cortex-A7 da 900MHz quad-core 1GB RAM (Raspberry Pi 2 Model B) e sistema operativo su SD card
  • Modem Telit HE910-EUD GSM: 850/900/1800/1900MHz, UMTS/HSPA+: 850/900/2100MHz
  • Interfaccia Ethernet RJ45 10/100Mbps
  • 2 interfacce USB 2.0 TYPE A
  • 2 interfacce RS232
  • interfaccia RS485
  • 2 ingressi digitali optoisolati (vin max 24V CC)
  • 2 uscite open collector (corrente max 500mA)
  • Alimentazione range esteso da 9V a 18V AC/CC
  • Antenna GSM/UMTS
  • Consumo medio: 180mA
  • Dimensioni: 97x105x38mm
  • Peso: 170g
  • Grado di protezione: IP40
  • Temperatura operativa: da 0°C a +70°C
  • Umidità operativa: 5% - 85%

Il kit comprende:
  • Alimentatore da parete 220V 12V CC
  • Cavo console RS232
  • Dongle USB Wi-Fi
  • 2 x Cavi con connettore Micro Fit 6 poli
  • micro SD da 16GB preinstallata con sistema operativo Raspbian
  • Antenna GSM/UMTS


Prodotto compliant RoHs
SXPI2_3G_KIT
Chiamare lo 06.99.33.02.57 per informazioni e prezzo del prodotto

Questo prodotto richiede un contatto diretto

Chiamare lo (+39)06.99.33.02.57 oppure inviare una email ad [email protected] per ulteriori informazioni
Per maggiori informazioniPer maggiori informazioni
 
Per maggiori informazioniSXPi2 Linux Box con modem 3G
Linux box basata su Raspberry PI 2 con modem 3G GSM/UMTS.
Caratteristiche principali:
  • Processore Quad-core ARM Cortex-A53 con 1GB RAM (Raspberry Pi 2 B v1.2) e sistema operativo su SD card
  • Modem Telit HE910-EUD GSM: 850/900/1800/1900MHz, UMTS/HSPA+: 850/900/2100MHz
  • Interfaccia Ethernet RJ45 10/100Mbps
  • 2 interfacce USB 2.0 TYPE A
  • 2 interfacce RS232
  • interfaccia RS485
  • 2 ingressi digitali optoisolati (vin max 24V CC)
  • 2 uscite open collector (corrente max 500mA)
  • Alimentazione range esteso da 9V a 18V AC/CC
  • Antenna GSM/UMTS
  • Consumo medio: 190mA
  • Dimensioni: 97x105x38mm
  • Peso: 170g
  • Grado di protezione: IP40
  • Temperatura operativa: da 0°C a +70°C
  • Umidità operativa: 5% - 85%

Comprende SD card da 16 Gbyte preinstallata con sistema operativo Raspbian ed antenna GSM


Prodotto compliant RoHs
SXPI2_3G
Chiamare lo 06.99.33.02.57 per informazioni e prezzo del prodotto

Questo prodotto richiede un contatto diretto

Chiamare lo (+39)06.99.33.02.57 oppure inviare una email ad [email protected] per ulteriori informazioni
Per maggiori informazioniPer maggiori informazioni
 
Per maggiori informazioniSXPi3 Linux Box con modem 3G
Linux box basata su Raspberry PI 3 con modem 3G GSM/UMTS.
Caratteristiche principali:
  • Processore Broadcom BCM2837B0, Cortex-A53 64 bit a 1,4 GHz
  • Memoria RAM 1 GB LPDDR2 SDRAM - SD 16Gb
  • Modem Telit HE910-EUD GSM: 850/900/1800/1900MHz, UMTS/HSPA+: 850/900/2100MHz
  • Interfaccia Ethernet RJ45 10/100/1000Mbps
  • Wireless LAN IEEE 802.11.b/g/n/ac 2,4 e 5 Ghz con antenna interna
  • Bluetooth 4.2 BLE con antenna interna
  • 2 interfacce USB 2.0 TYPE A
  • 2 interfacce RS232
  • interfaccia RS485
  • 2 ingressi digitali optoisolati (vin max 24V CC)
  • 2 uscite open collector (corrente max 500mA)
  • Alimentazione range esteso da 9V a 18V AC/CC
  • Antenna GSM/UMTS
  • Consumo medio: 250mA
  • Dimensioni: 97x105x38mm
  • Peso: 170g
  • Grado di protezione: IP40
  • Temperatura operativa: da 0°C a +70°C
  • Umidita' operativa: 5% - 85%

Comprende SD card da 16 Gbyte preinstallata con sistema operativo Raspbian Stretch Lite ed antenna GSM


Prodotto compliant RoHs
SXPI3_3G
Chiamare lo 06.99.33.02.57 per informazioni e prezzo del prodotto

Questo prodotto richiede un contatto diretto

Chiamare lo (+39)06.99.33.02.57 oppure inviare una email ad [email protected] per ulteriori informazioni
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