giovedì 13 febbraio 2014

"Unable send data to printer" dopo aggiornamento

Dopo un aggiornamento di Cups ho perso il controllo della stampante Samsung ML-2160


L'unica soluzione che ho trovato e' stata quella di entrare nell'amministrazione di CUPS http://localhost:631/admin) e ricreare una nuova stampante. A questo punto e' stato possibile stampare ed eliminare la precedente stampante che risulta bloccata

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