Main menu:

Site search

Categories

juin 2010
L M M J V S D
 123456
78910111213
14151617181920
21222324252627
282930  

Archive

Utiliser un Arduino sous Linux

Il y avait longtemps que j’avais envie de me remettre à la programmation de microcontrôleurs. Après avoir regardé du côté des PIC, je me suis tourné vers l’Arduino.
Il se présente sous la forme d’un circuit électronique contenant le microcontrôleur Atmega328P de Atmel et d’une interface USB permettant de le programmer. Il est possible de télécharger sur le site un IDE permettant la programmation de l’Arduino en utilisant un langage développé pour lui et qui ressemble basiquement au C.
L’avantage de l’Arduino est qu’il dispose de tout ce qu’il faut dès le départ. Pas besoin de programmateur ni d’alimentation; celle-ci est assurée soit par un bloc secteur (non fourni) soit par l’interface USB. Le contrôleur Atmega328P qui l’équipe est doté d’entrées/sorties, d’un port série, de sorties PWM, d’entrées analogiques pour capteurs; bref de tout ce qu’il faut pour rendre un électronicien heureux.

Arduino et carte ethernet

Sur l’image ci-dessus, vous pouvez voir l’Arduino duemilanove (il existe d’autres modèles mais celui-ci peut être considéré comme le modèle de base) surmonté de sa carte ethernet. Celle-ci me permettra d’interroger l’Arduino à distance.

Sous Ubuntu Lucid, aucun problème pour faire fonctionner et programmer l’Arduino. A noter que contrairement à Windows, aucun driver ne doit être installé puisque le driver FTDI nécessaire à l’USB est compris dans le noyau. Il suffit donc d’installer les paquets permettant d’utiliser gcc pour compiler du code AVR:

$ sudo aptitude install avr-libc gcc-avr gdb-avr binutils-avr

Ensuite, téléchargez sur le site l’IDE qui vous permettra d’écrire, de mettre au point et d’uploader le code. Cette application est écrite en java et le site recommande d’installer le paquet sun-java6-jre mais le programme fonctionne très bien avec la version openjdk de base d’Ubuntu. Décompressez l’archive, créez une entrée dans le menu programmation et le tour est joué:

$ sudo tar -C /opt -zxvf arduino-0018.tgz

Il se peut que vous deviez vous ajouter au groupe dialout:

sudo useradd -G dialout votre_login

Ensuite, lancez l’IDE et connectez l’Arduino à un port USB. Dans l’IDE, il faut via le menu Tools définir le modèle d’Arduino utilisé et le port série. Dans Ubuntu, le port est /dev/USB0.

Mon exemplaire de l’Arduino a été commandé chez Antratek. Excellent service (ce qui vaut la peine d’être signalé) et livré 3 jours après la commande. Attention, le site est en Néérlandais uniquement !

Comments

Comment from Loukoum
Time: 28 juin 2010, 19 h 50 min

Sans vouloir paraitre ignorant : ça sert à quoi ce truc ??? (la réponse m’intéresse au plus au point, car ma curiosité à été titillée !)

Comment from admin
Time: 28 juin 2010, 21 h 15 min

C’est un microcontrôleur qui peut être programmé grâce à l’interface USB. Il dispose de ports d’entrées/sorties digitaux et de ports analogiques. Une fois programmé, il peut fonctionner en autonomie complète. Tu peux donc t’en servir pour commander ce que tu veux. Tu peux lui adjoindre les capteurs que tu veux, un clavier, un affichage LCD… Des exemples: commander un robot, ton chauffage central, ta centrale d’alarme, une serrure digitale, une station météo, …, tout ce qui nécessite un microcontrôleur.

Comment from gdz
Time: 12 juillet 2010, 10 h 31 min

Merci beaucoup pour cette article, moi aussi je voulais m’y mettre, avec tout ce qu’on voit de projets sympas sur internet autour de cette bête.
Je connais quelqu’un qui l’utilise sur windows, et j’ai toujours eu la flemme de chercher comment faire sous linux (par manque de temps), et dire que je tombe dessus par hasard !

Comment from wadzi
Time: 19 juillet 2010, 0 h 59 min

Bonjour
Quand je lance arduino en mode graphique sous ubuntu ce dernier ne se lance pas quand je le fais en mode console j’ai cette erreur, quelqu’un a déjà connu ce genre de souci ?

bacar@bacar-laptop:~$ arduino
Experimental: JNI_OnLoad called.
Stable Library
=========================================
Native lib Version = RXTX-2.1-7
Java lib Version = RXTX-2.1-7
*** buffer overflow detected ***: java terminated
======= Backtrace: =========
/lib/tls/i686/cmov/libc.so.6(__fortify_fail+0x50)[0x4d6390]
/lib/tls/i686/cmov/libc.so.6(+0xe12ca)[0x4d52ca]
/lib/tls/i686/cmov/libc.so.6(+0xe0a08)[0x4d4a08]
/lib/tls/i686/cmov/libc.so.6(_IO_default_xsputn+0x9e)[0x45dafe]
/lib/tls/i686/cmov/libc.so.6(_IO_vfprintf+0x368a)[0x43429a]
/lib/tls/i686/cmov/libc.so.6(__vsprintf_chk+0xad)[0x4d4abd]
/lib/tls/i686/cmov/libc.so.6(__sprintf_chk+0x2d)[0x4d49fd]
/usr/lib/librxtxSerial-2.1-7.so(fhs_lock+0x1ac)[0x4c868cc]
/usr/lib/librxtxSerial-2.1-7.so(Java_gnu_io_RXTXCommDriver_testRead+0x6d)[0x4c876bd]
[0x11e7f1d]
[0x11e0fcd]
[0x11e0da1]
[0x11e0da1]
[0x11e127d]
[0x11de2cc]
/usr/lib/jvm/java-6-openjdk/jre/lib/i386/client/libjvm.so(+0x1e01d5)[0xb831d5]
/usr/lib/jvm/java-6-openjdk/jre/lib/i386/client/libjvm.so(+0x2c2f69)[0xc65f69]
/usr/lib/jvm/java-6-openjdk/jre/lib/i386/client/libjvm.so(+0x1df0cf)[0xb820cf]
/usr/lib/jvm/java-6-openjdk/jre/lib/i386/client/libjvm.so(+0x1bb5db)[0xb5e5db]
/usr/lib/jvm/java-6-openjdk/jre/lib/i386/client/libjvm.so(+0x1bb641)[0xb5e641]
/usr/lib/jvm/java-6-openjdk/jre/lib/i386/client/libjvm.so(+0x1be46c)[0xb6146c]
/usr/lib/jvm/java-6-openjdk/jre/lib/i386/client/libjvm.so(+0x1be9e6)[0xb619e6]
/usr/lib/jvm/java-6-openjdk/jre/lib/i386/client/libjvm.so(+0x28b302)[0xc2e302]
/usr/lib/jvm/java-6-openjdk/jre/lib/i386/client/libjvm.so(+0x28c0c3)[0xc2f0c3]
/usr/lib/jvm/java-6-openjdk/jre/lib/i386/client/libjvm.so(+0x28c159)[0xc2f159]
/usr/lib/jvm/java-6-openjdk/jre/lib/i386/client/libjvm.so(+0x1dbdd2)[0xb7edd2]
[0x11ee0af]
[0x11e0da1]
[0x11e0f07]
[0x11e0da1]
[0x11e0da1]
[0x11e0f07]
[0x11e0fcd]
[0x11e0da1]
[0x11de2cc]
/usr/lib/jvm/java-6-openjdk/jre/lib/i386/client/libjvm.so(+0x1e01d5)[0xb831d5]
/usr/lib/jvm/java-6-openjdk/jre/lib/i386/client/libjvm.so(+0x2c2f69)[0xc65f69]
/usr/lib/jvm/java-6-openjdk/jre/lib/i386/client/libjvm.so(+0x1df0cf)[0xb820cf]
/usr/lib/jvm/java-6-openjdk/jre/lib/i386/client/libjvm.so(+0x1e8b1c)[0xb8bb1c]
/usr/lib/jvm/java-6-openjdk/jre/lib/i386/client/libjvm.so(+0x1ed49d)[0xb9049d]
java(JavaMain+0xd4d)[0x804b21d]
/lib/tls/i686/cmov/libpthread.so.0(+0x596e)[0x1b196e]
/lib/tls/i686/cmov/libc.so.6(clone+0x5e)[0x4c1a4e]
======= Memory map: ========
00110000-00117000 r-xp 00000000 08:01 529080 /lib/tls/i686/cmov/librt-2.11.1.so
00117000-00118000 r–p 00006000 08:01 529080 /lib/tls/i686/cmov/librt-2.11.1.so
00118000-00119000 rw-p 00007000 08:01 529080 /lib/tls/i686/cmov/librt-2.11.1.so
00119000-00125000 r-xp 00000000 08:01 2101496 /usr/lib/jvm/java-6-openjdk/jre/lib/i386/libverify.so
00125000-00126000 r–p 0000b000 08:01 2101496 /usr/lib/jvm/java-6-openjdk/jre/lib/i386/libverify.so
00126000-00127000 rw-p 0000c000 08:01 2101496 /usr/lib/jvm/java-6-openjdk/jre/lib/i386/libverify.so
00127000-0014b000 r-xp 00000000 08:01 2101480 /usr/lib/jvm/java-6-openjdk/jre/lib/i386/libjava.so
0014b000-0014c000 r–p 00023000 08:01 2101480 /usr/lib/jvm/java-6-openjdk/jre/lib/i386/libjava.so
0014c000-0014e000 rw-p 00024000 08:01 2101480 /usr/lib/jvm/java-6-openjdk/jre/lib/i386/libjava.so
0014e000-00161000 r-xp 00000000 08:01 529070 /lib/tls/i686/cmov/libnsl-2.11.1.so
00161000-00162000 r–p 00012000 08:01 529070 /lib/tls/i686/cmov/libnsl-2.11.1.so
00162000-00163000 rw-p 00013000 08:01 529070 /lib/tls/i686/cmov/libnsl-2.11.1.so
00163000-00165000 rw-p 00000000 00:00 0
00165000-0016c000 r-xp 00000000 08:01 2101499 /usr/lib/jvm/java-6-openjdk/jre/lib/i386/native_threads/libhpi.so
0016c000-0016d000 r–p 00006000 08:01 2101499 /usr/lib/jvm/java-6-openjdk/jre/lib/i386/native_threads/libhpi.so
0016d000-0016e000 rw-p 00007000 08:01 2101499 /usr/lib/jvm/java-6-openjdk/jre/lib/i386/native_threads/libhpi.so
0016e000-00178000 r-xp 00000000 08:01 529073 /lib/tls/i686/cmov/libnss_files-2.11.1.so
00178000-00179000 r–p 00009000 08:01 529073 /lib/tls/i686/cmov/libnss_files-2.11.1.so
00179000-0017a000 rw-p 0000a000 08:01 529073 /lib/tls/i686/cmov/libnss_files-2.11.1.so
0017a000-00181000 r-xp 00000000 08:01 2101497 /usr/lib/jvm/java-6-openjdk/jre/lib/i386/libzip.so
00181000-00182000 r–p 00006000 08:01 2101497 /usr/lib/jvm/java-6-openjdk/jre/lib/i386/libzip.so
00182000-00183000 rw-p 00007000 08:01 2101497 /usr/lib/jvm/java-6-openjdk/jre/lib/i386/libzip.so
00183000-0018a000 rwxp 00000000 00:00 0
0018a000-001a4000 rwxp 00000000 00:00 0
001a4000-001ab000 rwxp 00000000 00:00 0
001ab000-001ac000 r–p 00000000 00:00 0
001ac000-001c1000 r-xp 00000000 08:01 529078 /lib/tls/i686/cmov/libpthread-2.11.1.so
001c1000-001c2000 r–p 00014000 08:01 529078 /lib/tls/i686/cmov/libpthread-2.11.1.so
001c2000-001c3000 rw-p 00015000 08:01 529078 /lib/tls/i686/cmov/libpthread-2.11.1.so
001c3000-001c5000 rw-p 00000000 00:00 0
001c5000-001c9000 rwxp 00000000 00:00 0
001c9000-00245000 rwxp 00000000 00:00 0
00245000-0028a000 r-xp 00000000 08:01 2101621 /usr/lib/jvm/java-6-openjdk/jre/lib/i386/xawt/libmawt.so
0028a000-0028b000 r–p 00045000 08:01 2101621 /usr/lib/jvm/java-6-openjdk/jre/lib/i386/xawt/libmawt.so
0028b000-0028d000 rw-p 00046000 08:01 2101621 /usr/lib/jvm/java-6-openjdk/jre/lib/i386/xawt/libmawt.so
0028d000-0028e000 rw-p 00000000 00:00 0
0028e000-0029c000 r-xp 00000000 08:01 1575728 /usr/lib/libXext.so.6.4.0
0029c000-0029d000 r–p 0000d000 08:01 1575728 /usr/lib/libXext.so.6.4.0
0029d000-0029e000 rw-p 0000e000 08:01 1575728 /usr/lib/libXext.so.6.4.0
0029e000-002a1000 r-xp 00000000 08:01 2101468 /usr/lib/jvm/java-6-openjdk/jre/lib/i386/jli/libjli.so
002a1000-002a2000 r–p 00003000 08:01 2101468 /usr/lib/jvm/java-6-openjdk/jre/lib/i386/jli/libjli.so
002a2000-002a3000 rw-p 00004000 08:01 2101468 /usr/lib/jvm/java-6-openjdk/jre/lib/i386/jli/libjli.so
002a3000-002ab000 r-xp 00000000 08:01 1575750 /usr/lib/libXrender.so.1.3.0
002ab000-002ac000 r–p 00007000 08:01 1575750 /usr/lib/libXrender.so.1.3.0
002ac000-002ad000 rw-p 00008000 08:01 1575750 /usr/lib/libXrender.so.1.3.0
002ad000-002b9000 r-xp 00000000 08:01 1575736 /usr/lib/libXi.so.6.1.0
002b9000-002ba000 r–p 0000c000 08:01 1575736 /usr/lib/libXi.so.6.1.0
002ba000-002bb000 rw-p 0000d000 08:01 1575736 /usr/lib/libXi.so.6.1.0
002bb000-002d3000 r-xp 00000000 08:01 1576722 /usr/lib/libxcb.so.1.1.0
002d3000-002d4000 r–p 00017000 08:01 1576722 /usr/lib/libxcb.so.1.1.0
002d4000-002d5000 rw-p 00018000 08:01 1576722 /usr/lib/libxcb.so.1.1.0
002d5000-002d9000 r-xp 00000000 08:01 1575726 /usr/lib/libXdmcp.so.6.0.0
002d9000-002da000 r–p 00003000 08:01 1575726 /usr/lib/libXdmcp.so.6.0.0
002da000-002db000 rw-p 00004000 08:01 1575726 /usr/lib/libXdmcp.so.6.0.0
002db000-002f8000 r-xp 00000000 08:01 524371 /lib/libgcc_s.so.1Aborted