Dazzle DVC 100 sous Ubuntu 8.04

Si comme moi vous souhaitez utiliser une périphérique de capture video Dazzle DVC 100, il faut un tout petit peu d’huile de coude, le module em28xx présent avec ubuntu hardy ne reconnaissant pas ce matériel.

Après insertion de la prise usb, la commande lsusb nous donne le type de périphérique:

Bus 005 Device 003: ID 2304:021a Pinnacle Systems, Inc. [hex]

Par défaut, seule l’acquisition audio est prise en compte, la vidéo elle, n’est pas gérée.

Après quelques recherches sur notre ami Google, il s’avère que ce matériel est géré par le projet v4l-dvb dans ses dernières versions.

Dans une console, installons les outils nécessaires à la compilation du module.

sudo apt-get install mercurial build-essential

ensuite, nous sommes prêts pour récupérer les sources du module à l’aide de mercurial.

mkdir ~/src

cd ~/src

hg clone http://linuxtv.org/hg/v4l-dvb

cd v4l-dvb

Nous voilà prêts pour la compilation.Le -j2 passé en paramètre au make permet d’utiliser les multicoeurs (2) des processeurs récents. Si vous avez un mono processeur classique, un simple make suffit.

make -j2

….

CC      /home/pierre/src/v4l-dvb/v4l/zr36060.mod.o
LD [M]  /home/pierre/src/v4l-dvb/v4l/zr36060.ko
CC      /home/pierre/src/v4l-dvb/v4l/zr36067.mod.o
LD [M]  /home/pierre/src/v4l-dvb/v4l/zr36067.ko
CC      /home/pierre/src/v4l-dvb/v4l/zr364xx.mod.o
LD [M]  /home/pierre/src/v4l-dvb/v4l/zr364xx.ko
make[2]: Leaving directory `/usr/src/linux-headers-2.6.24-19-generic’
./scripts/rmmod.pl check
found 261 modules
make[1]: quittant le répertoire « /home/pierre/src/v4l-dvb/v4l »

Tout a l’air OK, lançons maintenant l’installation des modules pour le noyau courant.

pierre@vbox:~/src/v4l-dvb$ sudo make install
make -C /home/pierre/src/v4l-dvb/v4l install
make[1]: entrant dans le répertoire « /home/pierre/src/v4l-dvb/v4l »
Stripping debug info from files
-e
Removing obsolete files from /lib/modules/2.6.24-19-generic/kernel/drivers/media/video:

-e
Removing obsolete files from /lib/modules/2.6.24-19-generic/kernel/drivers/media/dvb/frontends:

Installing kernel modules under /lib/modules/2.6.24-19-generic/kernel/drivers/media/:
dvb/dvb-usb/: dvb-usb-dtv5100.ko dvb-usb-opera.ko dvb-usb-cxusb.ko
dvb-usb-vp7045.ko dvb-usb-af9005-remote.ko dvb-usb-ttusb2.ko
….

….
video/em28xx/: em28xx-dvb.ko em28xx.ko
video/pvrusb2/: pvrusb2.ko
radio/: dsbr100.ko radio-maestro.ko radio-zoltrix.ko
radio-terratec.ko radio-aimslab.ko radio-maxiradio.ko
radio-gemtek.ko radio-trust.ko radio-sf16fmr2.ko
radio-typhoon.ko radio-cadet.ko radio-aztech.ko
radio-si470x.ko radio-sf16fmi.ko radio-rtrack2.ko
radio-gemtek-pci.ko
video/uvc/: uvcvideo.ko
dvb/ttusb-budget/: dvb-ttusb-budget.ko
video/pwc/: pwc.ko
video/zc0301/: zc0301.ko
video/ovcamchip/: ovcamchip.ko
video/au0828/: au0828.ko
/sbin/depmod -a 2.6.24-19-generic
make[1]: quittant le répertoire « /home/pierre/src/v4l-dvb/v4l »
pierre@vbox:~/src/v4l-dvb$

Maintenant, à l’insertion du boitier Dazzle, dmesg est beaucoup plus compatissant :-)

[ 5747.848507] em28xx new video device (2304:021a): interface 0, class 255
[ 5747.848515] em28xx Has usb audio class
[ 5747.848517] em28xx #0: Alternate settings: 8
[ 5747.848519] em28xx #0: Alternate setting 0, max size= 0
[ 5747.848521] em28xx #0: Alternate setting 1, max size= 1024
[ 5747.848524] em28xx #0: Alternate setting 2, max size= 1448
[ 5747.848526] em28xx #0: Alternate setting 3, max size= 2048
[ 5747.848528] em28xx #0: Alternate setting 4, max size= 2304
[ 5747.848531] em28xx #0: Alternate setting 5, max size= 2580
[ 5747.848533] em28xx #0: Alternate setting 6, max size= 2892
[ 5747.848535] em28xx #0: Alternate setting 7, max size= 3072
[ 5747.848727] em28xx #0: em28xx chip ID = 18
[ 5748.434840] saa7115′ 0-0025: saa7113 found (1f7113d0e100000) @ 0×4a (em28xx #0)
[ 5749.203790] em28xx #0: i2c eeprom 00: 1a eb 67 95 04 23 1a 02 12 00 11 03 98 10 6a 2e
[ 5749.203803] em28xx #0: i2c eeprom 10: 00 00 06 57 4e 00 00 00 60 00 00 00 02 00 00 00
[ 5749.203821] em28xx #0: i2c eeprom 20: 02 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00
[ 5749.203847] em28xx #0: i2c eeprom 30: 00 00 20 40 20 80 02 20 10 01 00 00 00 00 00 00
[ 5749.203857] em28xx #0: i2c eeprom 40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[ 5749.203873] em28xx #0: i2c eeprom 50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[ 5749.203899] em28xx #0: i2c eeprom 60: 00 00 00 00 00 00 00 00 00 00 2e 03 50 00 69 00
[ 5749.203924] em28xx #0: i2c eeprom 70: 6e 00 6e 00 61 00 63 00 6c 00 65 00 20 00 53 00
[ 5749.203948] em28xx #0: i2c eeprom 80: 79 00 73 00 74 00 65 00 6d 00 73 00 20 00 47 00
[ 5749.203974] em28xx #0: i2c eeprom 90: 6d 00 62 00 48 00 00 00 10 03 44 00 56 00 43 00
[ 5749.204000] em28xx #0: i2c eeprom a0: 31 00 30 00 30 00 00 00 32 00 30 00 33 00 35 00
[ 5749.204025] em28xx #0: i2c eeprom b0: 36 00 30 00 37 00 35 00 31 00 33 00 34 00 31 00
[ 5749.204051] em28xx #0: i2c eeprom c0: 30 00 32 00 30 00 30 00 30 00 31 00 00 00 32 00
[ 5749.204075] em28xx #0: i2c eeprom d0: 33 00 31 00 32 00 33 00 00 00 00 00 00 00 00 00
[ 5749.204100] em28xx #0: i2c eeprom e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[ 5749.204123] em28xx #0: i2c eeprom f0: 00 00 00 00 00 00 00 00 0a 07 d4 04 31 62 5d 0e
[ 5749.204150] EEPROM ID= 0×9567eb1a, hash = 0×72aaae84
[ 5749.204153] Vendor/Product ID= 2304:021a
[ 5749.204156] AC97 audio (5 sample rates)
[ 5749.204160] 300mA max power
[ 5749.204163] Table at 0×06, strings=0×1098, 0×2e6a, 0×0000
[ 5749.788387] em28xx #0: V4L2 device registered as /dev/video0 and /dev/vbi0
[ 5749.788396] em28xx #0: Found Pinnacle Dazzle DVC 90/DVC 100
[ 5749.788468] em28xx audio device (2304:021a): interface 1, class 1

Voilà, c’est terminé, vous pouvez maintenant choisir n’importe quelle application supportant les périphérique v4l. Pensez par contre a refaire un make && make install à chaque mise à jour de votre noyau.

P.S, pour faire ce tuto, j’en ai profité pour faire les tests sur une ubuntu installée sur virtualbox 2, bien pratique pour être sur d’avoir une Ubuntu toute propre.

Voir plus

, , , , , ,

Les trésors du Cap (Photos)

Une série en N&B un peu abstraite. (Cap-Ferret, plage océan)

Les trésors du Cap (série)

Les trésors du Cap (série)

Les trésors du Cap (série)

Voir plus

,

Oysters Way (Photos)

Oysters way (série)

Oysters way (série)

Oysters way (série)

Veilleur solitaire

Voir plus

, ,

“The Unnecessary Bubble”

Me revoilà aujourd’hui avec une création totalement inutile, d’où ce titre “The Unnecessary Bubble”.

The Unnecessary Bubble

Le matériel nécessaire: Une carte arduino, 3 résistances 150 ohms, 1 led RGB, 1 capteur de proximité SHARP G2D120 ou équivalent, une balle de ping-pong.

La led RGB est branchée sur la masse (GND), et sur les ports 9, 10, 11 de l’arduino au travers des résistances de 150 ohms. La balle de ping-pong percée d’un trou de 5mm sert de diffuseur à la led.

Le capteur SHARP est branché sur l’entrée analogique 0, VCC (5v) et la masse (GND).

Sur le principe l’arduino change de couleur toutes les 100 ms ( ce qui permet de faire varier les tons de couleurs assez rapidement). Si vous approchez un objet ou votre main de la boite, le capteur évalue la distance, plus celle-ci et faible et plus le cycle des couleurs est rapide. Si vous vous éloignez, le cycle de couleur reprend sa vitesse normale.

The Unnecessary Bubble The Unnecessary Bubble The Unnecessary Bubble The Unnecessary Bubble The Unnecessary Bubble

Voilà le code source:

#define PIN_RED           10
#define PIN_GREEN        9
#define PIN_BLUE          11
#define PIN_SHARP       0
#define WAIT              100

int waiting = WAIT;

void color(int r, int g, int b)
{
analogWrite(PIN_RED,   r);
analogWrite(PIN_GREEN, g);
analogWrite(PIN_BLUE,  b);
}

void setup()
{

pinMode(PIN_RED,   OUTPUT);
pinMode(PIN_GREEN, OUTPUT);
pinMode(PIN_BLUE,  OUTPUT);
pinMode(PIN_SHARP,INPUT);
}

void loop()
{

for (int i = 0; i < 256; i++){
color(255, i, 0);
set_delay();
delay(waiting);
}

for (int i = 0; i < 256; i++){
color(255 - i, 255, 0);
set_delay();
delay(waiting);
}

for (int i = 0; i < 256; i++){
color(0, 255, i);
set_delay();
delay(waiting);
}

for (int i = 0; i < 256; i++){
color(0, 255 - i, 255);
set_delay();
delay(waiting);
}

for (int i = 0; i < 256; i++){
color(i, 0, 255);
set_delay();
delay(waiting);
}

for (int i = 0; i < 256; i++){
color(255, 0, 255 - i);
set_delay();
delay(waiting);
}
}

void set_delay()
{
int analogValue1 = analogRead(PIN_SHARP);
if (  analogValue1 < 100 )
{
waiting = WAIT;
}
else
{
waiting = WAIT / (analogValue1 / 10);
}

}

Voir plus

, , , , ,

Processing & Mobile, 2 platerformes de développement autour de JAVA

Il y a quelques temps j’avais présenté les micro controleurs Arduino, objet assez génial, pas cher ( <30€ ) avec une plateforme de développement openSource, disponible pour Linux, MacOS et Windows.

Arduino

Ils ont permis d’ouvrir aux artistes, bricoleurs, enseignants, le monde des µC avec une certaine simplicité d’accès. Et bien voilà, côté développement PC, il y a aussi processing, un language tournant autour de java avec de nombreuses librairies pour faciliter les interactions avec l’utilisateur.

Processing

Les programmes compilés sont des .JAR multi plateformes qui simplifient grandement la diffusion. Il ne s’agit pas d’un language permettant de créer de grosse applications, mais plutôt de petits programmes pour un usage ciblé: reconnaissance de couleur avec une webcam, pilotage du PC avec une manette de WII…

Processing

Processing est inter connectable avec un arduino, on peut ainsi agir sur le micro contrôleur depuis le PC ou bien l’inverse. De quoi ouvrir la voie à de nombreuses expérimentations: robotique, capteurs…

Plus récemment, un nouvel IDE est sorti, tout droit dérivé de processing. Il s’agit de Mobile, la version pour téléphones de processing.

Mobile

J’ai testé, c’est impressionnant, en un rien de temps, vous pouvez sortir une application pour votre téléphone, utilisant le réseau, le bluetooth, l’affichage… La version mobile n’est livrée pour le moment que pour Windows et OsX mais une personne sur le forum propose déjà un paquet tgz pour linux :-)

Mobile

Pour finir, ceux qui veulent se lancer dans le monde de l’Arduino et du “controle des objets”, peuvent regarder un ouvrage très bien chez O’reilly: “Making things talk”.

Making the things talk

Vous pouvez acheter le bouquin ou le PDF (sans drm ) ici.

Bon développement :-)

Voir plus

, , , , , , , ,

Arduino Tux prend soin de vos plantes ;-)

Voilà un gadget plutôt marrant. J’ai récupéré un jouet cassé qui partait à la poubelle. Un jouet en forme de tux, ça ne se jette pas ! Pourquoi ne pas le transformer en une sentinelle qui veille sur vos plantes pour voir si elles sont bien arrosées…

Dans mes cartons, j’ai quelques arduinos qui trainent, une matrice de led, et quelques autres composants. Aller, en avant, au fer à souder ;-)

Hop, on vide le jouet à coups de Dremel pour faire de la place. Le clavier est découpé pour laisser place à la matrice de led.

06082008157 06082008156 06082008155 05082008154 05082008153 05082008152 05082008151 05082008150 04082008148 04082008147

Le système se compose d’un contrôleur arduino qui pilote une matrice de 64 leds au travers d’un MAX7219. Le capteur, lui est basé sur deux tiges métalliques, la résistivité de la terre variant avec l’eau, elle est amplifiée par un transistor 2N2222 avant de se connecter à une entrée analogique de l’arduino.

La plante est heureuse lorsqu’on l’arrose. Pour vous remercier de cette eau providentielle, la sentinelle tux affiche des petits coeurs pendant quelques secondes avant de sourire. Dès que l’humidité baisse (simulé en enlevant la sonde) tux fait la tête, il est temps d’arroser ;-)

Le tout est relié au PC pour l’alimentation en 5V et la programmation de l’arduino (et le débug dans minicom). On pourrait très bien imaginer mettre un relais avec une pompe sur le µC pour arroser automatiquement vos plantes. Ce n’est pas le but ici mais c’est simple à faire, une résistance, un relais, un transistor et une diode suffisent à rajouter cette fonctionnalité. On peut aussi mettre plusieurs capteurs dans les pots de fleurs.

Je n’ai pas mis de schéma, mon circuit est largement inspiré de ce qui se fait chez botanicalls. Si quelqu’un veut le détail exact, je peux vous le faire avec un coup de Kicad :-)

Pour ceux qui se posent la question, oui c’est totalement inutile… donc parfaitement indispensable :-)

Voir plus

, , , , , , ,

Petit tour à la voile

Cet après-midi, sous un bon vent nord-ouest (25 noeuds annoncés), nous avons fait un petit tour vers les passes du Bassin avant de rentrer par le chenal du Courbey.

Speed Profile
Ballade

Pour que l’eau salée n’ait jamais le goût des larmes

"Pour que l’eau salée n’ait jamais le goût des larmes"

Malheureusement, cette fois encore la mer a été meurtrière : www.lefigaro.fr/flash-actu/2008/07/20/01011-20080720FILWW…

Rencontre

Rencontre

Voir plus

, , , , ,

Ballade du jour

Aujourd’hui, petite ballade au banc d’Arguin. Peu de photos, mais une très belle journée avec un bon vent au retour.

Speed Profile
Ballade au banc d’Arguin

Désensablement des parcs à huitres

Courbure nautique




En déchargeant mon GPS, j’ai retrouvé une track de la semaine dernière.

Speed Profile
Bonus: Le tour de l’ile aux oiseaux la semaine dernière
Le vent ayant tourné pendant la ballade, nous avons pu faire le tour sans tirer de bord… c’est la première fois que ça m’arrive.

Voir plus

, , , , , ,

Bords de mer (Photos)

Serrés les uns contre les autres, nous luttions contre la rouille

Serrés les uns contre les autres, nous luttions contre la rouille

Fruit de mer

Fruit de mer

Trop cher !

Trop cher !

Bi

Bi

Voir plus

, ,

Accastillage (Photos)

Pétales mécaniques

Pétales mécaniques

Amenez moi une dame !

Amenez moi une Dame !

Face à face

Face à face

Tiens bon

Tiens bon !

Voir plus

, ,

prev posts