Carambola, python e la seriale


Dopo 19 giorni di attesa finalmente è arrivata Carambola!

Carambola

Carambola

E’ un hardware molto interessante che ha subito attirato la mia attenzione perché basato un System on Chip Wi-Fi che usa GNU Linux (OpenWRT) come sistema operativo.

Ma veniamo al dunque… Ultimamente sto “giocando” con Arduino, un ottimo micro-processore Open Source e… MADE IN ITALY! Però non adatto ad eseguire operazioni un po troppo complesse, vuoi per la poca RAM a disposizione, vuoi per  la relativa lentezza del processore… ed ho quindi deciso di affiancarci un sistema un po più performante, non un PC a tutti gli effetti ma un sistema che poteva garantirmi l’esecuzioni di operazioni un po più complesse, ed ho quindi scelto Carambola.

Al momento, sto implementando la comunicazione tra i due sistemi tramite l’interfaccia USB ma probabilmente in futuro utilizzerò una comunicazione seriale in modo da lasciare libera l’unica porta USB disponibile su Carambola

Per poter utilizzare la porta USB come se fosse una porta seriale, necessitiamo della presenza del modulo cdc_acm del kernel, purtroppo non presente nella cartella dei moduli disponibili

ls /lib/modules/$(uname -r)

è quindi necessario eseguire la compilazione del kernel in modo da includere

Kernel modules -> USB Support -> kmod-usb-acm
Kernel modules -> USB Support -> kmod-usb-serial
Kernel modules -> USB Support -> kmod-usb-serial-ftdi

ed infine procedere, una volta compilato, all’upgrade del firmware

ATTENZIONE: La compilazione del Kernel è sempre un operazione MOLTO rischiosa, quindi non eseguitela se non siete degli utenti esperti, il rischio è di rendere inservibile il dispositivo. In caso di problemi vi consiglio di fare un giro sul forum di OpenWRT

Fatto questo possiamo finalmente inserire il nostro Arduino e verificare col dmesg che ci sia il caricamento del modulo

[ 619.500000] usb 1-1: USB disconnect, device number 2
[ 623.090000] usb 1-1: new full-speed USB device number 3 using dwc_otg
[ 623.300000] cdc_acm 1-1:1.0: ttyACM0: USB ACM device

Ora andiamo a modificare col vi il file /etc/opkg.conf come segue

# src/gz snapshots http://pkg.8devices.com/v2.2/carambola/packages
src/gz attitude_adjustment http://downloads.openwrt.org/snapshots/trunk/ramips/packages
dest root /
dest ram /tmp
lists_dir ext /var/opkg-lists
option overlay_root /overlay

andiamo cioè ad includere i reposity di OpenWRT e quindi

opkg update
opkg install python-mini
opkg install pyserial

E andiamo quindi a provare se il tutto funziona

root@OpenWrt:~# python
Python 2.7.3 (default, Aug 28 2012, 06:01:37)
[GCC 4.6.3 20120201 (prerelease)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import serial
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/site-packages/serial/__init__.py", line 20, in <module>
from serialposix import *
File "/usr/lib/python2.7/site-packages/serial/serialposix.py", line 13, in <module>
import sys, os, fcntl, termios, struct, select, errno
ImportError: No module named termios

Con la versione di python installata, la libreria termios.so non viene purtroppo inclusa, dobbiamo trasferirla noi. Apriamo quindi un terminale di un PC con GNU/Linux (se usate un sistema operativo diverso dovrete adeguare questi comandi alla vostra situazione) e digitiamo

wget http://downloads.openwrt.org/snapshots/trunk/ramips/packages/python_2.7.3-1_ramips.ipk
mv python_2.7.3-1_ramips.ipk python_2.7.3-1_ramips.ipk.tar.gz
tar zxvf python_2.7.3-1_ramips.ipk.tar.gz
tar zxvf data.tar.gz

a questo punto dobbiamo solo trasferire il file usr/lib/python2.7/lib-dynload/termios.so su Carambola, ad esempio tramite scp (l’IP lo dovete modificare in base alla vostra configurazione)

scp usr/lib/python2.7/lib-dynload/termios.so root@192.168.1.3:.

Da Carambola, non ci resta che fare

mv termios.so /usr/lib/python2.7/lib-dynload/

e rilanciare nuovamente python


root@OpenWrt:~# python
Python 2.7.3 (default, Aug 28 2012, 06:01:37)
[GCC 4.6.3 20120201 (prerelease)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import serial
>>>

Ora siamo pronti

Arduino & Carambola

Arduino & Carambola

Buon divertimento!😉

3 thoughts on “Carambola, python e la seriale

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...