lunedì 10 febbraio 2014

Kinect su Debian


Grazie ad un amico che e' passato su XBoxOne ho potuto provare la vecchia versione di Kinect da XBox360.

Per interagire con il dispositivo si deve usare (su computer non Windows) la libreria OpenKinect che ho compilato dai sorgenti mediante i comandi

apt-get install cmake libglut3-dev pkg-config build-essential libxmu-dev libxi-dev libusb-1.0-0-dev

git clone https://github.com/OpenKinect/libfreenect.git 
cd libfreenect
mkdir build
cd build
cmake .. 
make
sudo make install
sudo ldconfig /usr/local/lib64/

per verificare che il tutto funzioni si puo' lanciare il comando glview



Il sistema funziona ma l'aspetto piu' interessante e' quello delle interpretazioni delle gesture in modo da rendere veramente interattivo il kinect.
La soluzione piu' semplice e' quella di usare Processing con la libreria Simple OpenNI (che si installa dall'interno di Processing con il menu Sketch->Import Library->Add Library. Esistono molti esempi in questo campo ed anche un libro (sull'interazione tra Kinect ed Arduino) ma con la versione 2 della libreria gli sketch non sembrano funzionare ed e' bene usare gli esempi legati alla libreria scaricata)





Funziona tutto tranne il fatto che viene mostrato questo errore

Listening for transport dt_socket at address: 8276
libEGL warning: failed to create a pipe screen for i965
Smooth is not supported by this hardware (or driver)

per questo motivo non e' possibile vedere il tracking delle mani nel video sottostante (esempio Hands3D)


venerdì 7 febbraio 2014

Trasduttore lineare potenziometrico con Arduino Uno e ADS1115


La prova effettuata in questo post e' stata ripetuta con uno strumento della ditta Controls model 82 P0330, questo perche' il calibro centesimale e' specifico per questo strumento



Il trasduttore presenta un connettore a 6 poli come quello dello schema sottostante. Di fatto i poli utili sono solo 3 


e questa e' la pedinatura dei colori
5V = colore rosso
Segnale = marrone
GND = blu

lo strumento e' stato collegato ad una Arduino Uno mediante un ADC a 16 bit ADS1115
A differenza del precedente strumento il segnale oscilla tra 5 V (pistone completamente esteso) a 0 V (pistone completamente compresso)




lo sketch impiegato e' stato il seguente (gain a 2/3) vista l'uscita dello strumento
-----------------------------------------------
#include <Wire.h>
#include <Adafruit_ADS1015.h>

Adafruit_ADS1115 ads;  /* Use this for the 16-bit version */

void setup(void) 
{
  Serial.begin(9600);
  //                                                                ADS1015  ADS1115
  //                                                               -------  -------
  ads.setGain(GAIN_TWOTHIRDS);  // 2/3x gain +/- 6.144V  1 bit = 3mV      0.1875mV (default)
  // ads.setGain(GAIN_ONE);        // 1x gain   +/- 4.096V  1 bit = 2mV      0.125mV
  // ads.setGain(GAIN_TWO);        // 2x gain   +/- 2.048V  1 bit = 1mV      0.0625mV
  // ads.setGain(GAIN_FOUR);       // 4x gain   +/- 1.024V  1 bit = 0.5mV    0.03125mV
  // ads.setGain(GAIN_EIGHT);      // 8x gain   +/- 0.512V  1 bit = 0.25mV   0.015625mV
  // ads.setGain(GAIN_SIXTEEN);    // 16x gain  +/- 0.256V  1 bit = 0.125mV  0.0078125mV
  
  ads.begin();
}

void loop(void) 
{
  int16_t adc0, adc1, adc2, adc3;

  adc0 = ads.readADC_SingleEnded(0);
  Serial.print("AIN0: "); Serial.println(adc0);
  delay(100);
}

-----------------------------------------------

questa e' la tabella delle misure


Le misure erano stabili fino alle decine mentre le unita' non possono considerate rappresentative

Ed ecco i grafici (una serie in compressione, l'altra in distensione)



In conclusione si e' vista una ottima linearita' dei dati. Considerando che per un millimetro cambiano circa 2645 DN e dato che le unita' sono poco significative si puo' dire che la minima variazione letta con sicurezza e' 1mm/264 = 0.004 mm. Dato che il calibro e' di tipo centesimale si ha che il traduttore legge tranquillamente dati precisi al centesimo di millimetro

venerdì 31 gennaio 2014

Phonegap-Cordoba 3.0 con Android/Ios/FirefoxOS

Visto che oramai ho terminali Android, Ios e FirefoxOs ho voluto riprovare ad usare Phonega e nel frattempo le procedure di installazione sono decisamente cambiate


Phonegap/Cordoba si installa mediante Node.js per cui si deve prima installare il pacchetto Node.Js
Su Windows e MacOs c'e' un semplice installare mentre su Linux Node.js si installa scaricando direttamente i sorgenti e con la classica procedura
./configure
make
make install
(la procedura non e' rapidissima)

successivamente si inizia ad installare Phonegap con il comando
npm install -g phonegap
(forse e' inutile ma ho installato anche Cordova)
npm install -g cordova


si crea quindi il progetto
phonegap create hello com.example.hello HelloWorld
cd hello

e qui iniziano le differenze che ho trovato con le istruzioni ufficiali del sito

per creare il progetto Phonegap Android si deve dare direttamente il comando
phonegap build android
(devono essere setttata la Path per trovare la directory tools e platform-tools dell'SDK di Android altrimenti il comando fallisce con il comando
)
oppure
phonegap build ios

per lanciare l'esecuzione sul telefono
phonegap run android

oppure
phonegap run ios
(se non viene trovato il telefono fisico viene lanciato in automatico l'emulatore.

Nel caso di IOS deve essere prima installato il pacchetto ios-sim con i comandi
sudo su
xcodebuild -license
npm install -g ios-sim
)
Lanciato il comando l'emulatore parte ma si arriva a questo errore

Di fatto la directory www del progetto creato su Ios risulta vuota (c'e' solo un file .xml). Per risolvere il problema l'unica soluzione che ho trovato e' stata quella di copiare la directory www da un progetto Phonegap creato su Linux. Fatto cio' tutto inizia a funzionare perfettamente

A questo per aggiungere funzionalita' legate all'hardware dei telefoni si devono installare i plugin per le varie funzionalita'. Per test e' stato scaricato ed attivato il 

cordova plugin add org.apache.cordova.device

Ed ecco lo stesso programma di esempio che funziona, senza modifiche, sulle due piattaforme Android ed Ios

Phonegap su Ios

Phonegap su emulatore Android in Ios

si puo' aggiungere al progetto anche FirefoxOs mediante
cordova platform add firefox

il problema e' che l'emulatore di Firefox Os non funziona sotto Mac Os X (almeno al momento in cui scrivo questa riga). Parte e si chiude dopo qualche secondo. Per ovviare al problema ho spostato tutta la cartella della piattaforma Firefox sull'emulatore di Windows e selezionato il file manifest.
Si osserva che il supporto di Phonegap a Firefox e' ancora poco maturo in quanto le API ancora non funzionano (almeno quelle dell'esempio)









Installazione Arch Linux

E' da un po' di tempo che sento un gran parlare di Arch Linux e volevo provare ma la procedura di installazione e' cosi' antiquata (mi sembra di essere tornato nel 1998) che mi ero sempre scoraggiato....ma sembra che i vantaggi siano ricompensati dalla fatica di installazione



Per la prova ho installato Arch Linux su Virtualbox partendo con boot da Cd (nessun network install per adesso)

Si arriva ad una shell bash con privilegi di root
Per prima cosa si imposta la tastiera italiana
loadkeys it

si edita quindi il file locale.gen
nano /etc/locale.gen

togliendo il cancelletto alla riga di interesse
it_IT.UTF-8 UTF-8

si lancia poi il comando
locale-gen 

e si esporta la variabile LANG
export LANG=it_IT.UTF-8

la rete e' stata configurata mediante DHCP senza troppi problemi.
A questo punto si inizia il partizionamento del disco fisso (semplice, una partizione piu' una swap)

fdisk /dev/sda
n - p - 1 
l'inizio della partizione e' confermata come default
la dimensione della partizione e' fissata in 7 Giga con il comando
+7G

per la swao
n - p - 2
conferma tutto
con t si cambia il tipo della seconda partizione da Linux (83) a Linux Swap (82)

p per verificare
w per scrivere ed uscire

si formatta la prima partizione come ext4
mkfs.ext4 /dev/sda1
si attiva la seconda partizione come swap
mkswap /dev/sda2

lsblk /dev/sda
mount /dev/sda1 /mnt

Adesso c'e' bisogno della rete. Se c'e' un proxy si devono effettuare i settaggi
export http_proxy=http://mioproxy:8080
export https_proxy=http://mioproxy:8080

si aggiornano i pacchetti e si installa il sistema base
pacstrap -i /mnt base
si conferma vengono scaricati circa 140 Mb

si effettua il chroot
arch-chroot /mnt /bin/bash

si ripetono i settaggi locali
nano /etc/locale.gen
it_IT.UTF-8 UTF-8
locale-gen
echo LANG=it_IT.UTF-8 > /etc/locale.conf # export LANG=it_IT.UTF-8
loadkeys it 
setfont Lat2-Terminus16

per renderlo definitivo
nano /etc/vconsole.conf
KEYMAP=it FONT=Lat2-Terminus16


per settare la timezone
ln -s /usr/share/zoneinfo/Europe/Rome /etc/localtime

per settare l'orologio
hwclock --systohc --utc

abilitazione del DHCP per la rete
systemctl enable dhcpcd.service

a questo punto si mette la password per root
passwd

e si installa Grub
pacman -S grub
grub-mkconfig -o /boot/grub/grub.cfg
grub-install --target=i386-pc --recheck /dev/sda

si termina quindi la prima fase dell'installazione
exit
umount -R /mnt
reboot

a questo punto e' meglio creare un utente non amministratore per l'uso normale
useradd -m luca
passwd luca

abilitazione del comparto sonoro
pacman -S alsa-utils

Installazione di XOrg ed LXDE
pacman -S xorg-server xorg-server-utils xorg-xinit mesa lxde dbus xf86-video-fbdev

prima di lanciare il comando startx si deve creare il file .xinitrc nella propria home
nano .xinitrce si  aggiunge la seguente riga
exec startlxde


adesso si puo' lanciare
startx

Installazione di Slim
pacman -S slims
ystemctl enable slim

Purtroppo per Arch non c'e' supporto semplice per Virtualbox per cui c'e' da fare un po' di lavoro a mano
pacman -S virtualbox-guest-utils

si crea e si edita il file virtualbox.conf
nano/etc/modules-load.d/virtualbox.confaggiungendo su ogni riga
vboxguest
vboxsf
vboxvideo

e da linea di comando si lancia
VBoxClient-all
systemctl enable vboxservice


alla fine il sistema e' decisamente performante (anche perche' ridotto all'osso) ma penso che si possa arrivare a conclusioni simili (e con minor fatica) facendo una installazione manuale di Debian da Netinstall

Midnight Commander su Os X

Dove c'e' una shell ci dovrebbe essere Midnight Commander ..ed Os X non fa eccezione
Il programma si puo' installare da questo link
Essendo un programma da shell alla fine dell'installazione non si trova niente nella cartella Applicazioni, ma basta aprire un terminale e digitare mc che si apre Midnight Commander
Ci sono un po' di problemi di ambientazioni da Linux/PC a OsX in quanto nelle tastiere Apple non e' presente il tasto Ins, per selezionare si preme la combinazione CTRL+T

Di default inoltre i tasti funzione delle tastiere Apple hanno altre funzioni. Per abilitare il comportamento classico da Impostazioni Tastiera si deve spuntare "Utilizza tutti i tasti F1,F12 come tasti funzione" e nel tab successivo (Abbreviazioni da tastiera) si deve togliere la scorciatoia di F9 ed F10 (in particolare F10 che serve ad uscire da mc)






Piena del Mugnone


Attraversamento depuratore Pian del Mugnone

Attraversamento a monte di Pian del Mugnone


mercoledì 29 gennaio 2014

Seti@home

Dopo oltre 10 anni sono ritornato a far lavorare il calcolatore per Seti@home (oltre ad un progetto per la struttura 3D delle proteine)



In attesa di dire WOW.....

Debugger integrato ESP32S3

Aggiornamento In realta' il Jtag USB funziona anche sui moduli cinesi Il problema risiede  nell'ID USB della porta Jtag. Nel modulo...