Mettre à jour le firmware USB de l'Arduino Uno et Mega

Les Arduino récents, Uno et Mega, comportent une puce Atmel Mega8U2 qui fait office de convertisseur USB / Serie.

Récemment, je suis tombé sur un bug lié à cette puce Mega8U2, qui visiblement ne se produit que sur les systèmes GNU/Linux. Les symptômes sont les suivants :

  • Le périphérique /dev/ttyACM0 ne répond plus,
  • L'IDE Arduino freeze pendant plusieurs secondes,
  • Il faut parfois plus de 4-5 fois pour réussir à programmer l'Arduino

En parcourant les forums, je suis tombé sur ce topic, en anglais, où la solution à ce problème est donné par stimmer. Je vais donc traduire en français la marche à suivre pour la résolution, en espérant que cela puisse servir à d'autres !

ATTENTION ! Je vous encourage à bien vous renseigner sur la procédure, car elle peut être risquée pour un néophyte.

  1. Préparation de la carte : sur l'Arduino Uno, il faut souder une résitance de 100 kΩ aux bornes des pastilles entourées en rouge sur la photo suivante (au dos de la carte) :

    Arrière de l'arduino
  2. Installer le paquet dfu-programmer qui va permettre de reprogrammer la puce :

    # aptitude install dfu-programmer
    
  3. Télécharger le binaire correspondant à votre carte (Uno ou Mega) sur le site suivant : https://github.com/arduino/Arduino/tree/new-extension/hardware/arduino/firmwares/arduino-usbserial (clic sur le fichier, puis clic droit sur le bouton "Raw" et Enregistrer Sous) : * Arduino-usbserial-uno.hex pour l'Arduino Uno * Arduino-usbserial-mega.hexpour l'Arduino Mega

  4. Brancher l'Arduino au PC avec le câble USB.

  5. Faire contact entre les deux pins entourées en rouge sur la photo suivante :

    Arduino de face

    Cette opération permet de faire un reset de la puce Mega8U2. L'Arduino ne doit alors plus apparaître dans /dev/ :

    # ls /dev/ttyACM*
    

    Ne doit rien afficher.

  6. Ensuite, il n'y a plus qu'à flasher la puce avec les commandes suivantes (à faire en root) :

    # dfu-programmer at90usb82 erase
    # dfu-programmer at90usb82 flash --debug 1 Arduino-usbserial-uno.hex
    Validating...
    4058 bytes used (99.07%)
    # dfu-programmer at90usb82 reset
    
  7. Il n'y a alors plus qu'à débrancher puis rebrancher l'Arduino, et tous les bugs cités en introduction seront normalement résolus !

[Sources]

Installer l'IDE Arduino sur Debian

Je suis passé sur un système GNU/Linux pour mon ordinateur personnel depuis plusieurs mois, au début sur la distribution ArchLinux, et depuis peu je suis passé sur une Debian. Ce qui était bien sur Arch, c'est d'avoir toujours la dernière version des paquets. L'inconvénient, c'est la stabilité du système. C'est pour cette raison que j'ai préféré passer sur une Debian. J'utilise Debian Wheezy comme système hôte (Debian "Testing").

Actuellement, les paquets arduino et arduino-core, qui sont les paquets officiels, sont en version 18 sur Wheezy, ce qui est une version assez ancienne qui ne supporte pas la dernière version de l'Arduino Uno.

Ne voulant pas passer ma machine en testing, ni jouer avec les dépendances pour installer à la main la version 22 (qui est la dernière version à ce jour) des paquets précédents, je me suis donc fait un chroot contenant la version unstable nommée "Sid". Pour ça, un petit coup de debootstrap :

# debootstrap --arch amd64 --variant=minbase sid /chemin/vers/chroot http://ftp.fr.debian.org/debian/

Ensuite, j'ai un petit script (launchChroot.sh) pour monter correctement les volumes nécessaires au chroot, lancer le chroot et tout démonter correctement à la fin :

#!/bin/bash
chemin=/chemin/vers/dossier/installation/du/chroot
mount --bind /dev $chemin/dev
mount --bind /proc $chemin/proc
mount --bind /sys $chemin/sys
cp {,$chemin}/etc/resolv.conf
chroot $chemin;
#fin on demonte
umount "$chemin"/{dev,proc,sys}

Ensuite, un petit coup de

# chmod 755 launchChroot.sh

puis, pour lancer le tout :

# ./launchChroot.sh

On est maintenant dans le système chrooté fraîchement installé. Nous allons donc pouvoir installer les dernières version des paquets arduino (qui a pour dépendance arduino-core) :

# apt-get install arduino

Pour éviter de faire trop de bêtises, on se créer un compte utilisateur :

# adduser nomUtilisateur

On ajoute l'utilisateur au groupe dialout pour qu'il puisse accéder au port série (sinon le sous menu Tools > Serial Port sera désactivé quand on lancera l'IDE arduino)

# usermod -a -G dialout nomUtilisateur
# su  nomUtilisateur
# arduino &

Tadam !

arduino version 22

Ensuite petite vérification, sélectionner le Serial Port dans le menu Tools. Si vous avez un Arduino Uno par exemple, le périphérique /dev/ttyACM0 doit apparaître. Si ce n'est pas le cas, plusieurs raisons :

  • L'utilisateur n'est pas dans le groupe dialout

  • Vous n'avez pas bindé /dev dans le chroot (voir script du lancement de chroot ci-dessus)

  • Vérifiez la version des paquets arduino et librxtx-java :

    # dpkg -s arduino |grep Version
    

    (doit être >= 22)

    # dpkg -s librxtx-java |grep Version
    

    (doit être >= 2.2pre2-3)

  • Ou encore, comme j'ai eu, vous êtes victime d'un bug concernant les drivers USB3. Je n'ai pas trop eu le temps de creuser, ce bug a l'air d'être connu mais je ne saurait dire si ça vient du hard, du noyau ou de la distro. Dans ce cas, il suffit dans brancher la carte sur un port USB2, et ça fonctionnera.

Bon amusement ! ;-)

La mécanique de la RepRap

J'ai décidé de rentrer un peu plus dans les détails techniques de la RepRap Prusa, et j'ai prévu de faire plusieurs articles pour présenter l'électronique, la mécanique, l'extruder, le montage, la configuration et l'utilisation de cette imprimante 3D. La plupart des articles ne seront pas spécifiques au modèle Prusa, mais mon but n'est pas de faire des comparatifs entre tous les modèles existants...

Pour ce premier article de la série, je vais parler de l'architecture mécanique de la RepRap.

L'imprimante est articulée autour de trois axes X, Y et Z qui permet de positionner la tête d'impression (en anglais "Extruder") en trois dimensions relativement à l'objet à imprimer. Le mouvement du plateau support est unidirectionnel selon l'axe Y, et la tête est mue selon les axes X et Z. Lors de la dépose d'une couche de plastique, seuls les axes X et Y bougent de manière synchronisée. Une fois la couche terminée, la tête de lecture est déplacée légèrement selon l'axe Z, puis une nouvelle couche peut être déposée.

Axes

Les mouvements selon les axes X et Y sont réalisés avec un moteur par axe, tandis qu'il faut 2 moteurs de part et d'autre de l'imprimante pour actionner l'axe Z.

Les moteurs sont des moteurs pas à pas, ce qui permet de les piloter facilement en position (nous y reviendrons plus tard). Les moteurs X et Y sont reliés à des courroies pour faire bouger la navette et le plateau. Les moteurs pour l'axe Z sont reliés directement aux vis permettant de monter et descendre la navette. Il existe aussi des versions avec un seul moteur pour l'axe Z, avec une courroie pour relier les deux vis permettant de faire monter la navette avec l'Extruder, mais le problème est que ces deux vis doivent être parfaitement synchronisées pour que l'axe X soit bien horizontal.

Le châssis de l'imprimante est composé de deux parties. Des tiges filetées et des barreaux (en gris sur l'image ci-dessus), et des pièces d'assemblage en plastique (en vert). Ce sont ces pièces qui peuvent être imprimées par l'imprimante pour en recréer d'autres, ce qui vaut à la RepRap sa qualification d'auto-réplicatrice!

Dans un prochain article, je vais me focaliser sur la tête d'impression.

Ouvrir une liste d'URL

Voici une petite astuce, pour ouvrir une liste d'URL (par exemple une liste de photos Flickr, une liste de numéros de suivi de colis, une liste d'objets eBay à surveiller, etc...).

  • Le site URLOpener.com permet de saisir et d'ouvrir une liste d'URL
  • Le site OpenUpper.com permet de saisir et de sauvegarder des listes d'URL pour les ouvrir plus tard (par exemple pour partager des listes, ça peut être utile).

C'est tout ! ;-)

J'ai craqué pour une RepRap...

Oui je suis faible, j'ai craqué pour une RepRap... ( enfin !! ;-) )

Je ne vais pas expliquer ce qu'est une RepRap ici, mes lecteurs sont suffisamment geeks pour savoir ce que c'est :-).

RepRap

Ça va faire plus de deux ans que j'ai pris connaissance du projet RepRap, mais à l'époque je n'avais pas de sous j'étais étudiant, et le modèle Mendel "de base" comportait beaucoup de pièces, qui étaient rares donc chères. Depuis, les choses on beaucoup évolué. Tout un tas de nouveaux modèles sont sortis, qui à chaque fois permettait d'améliorer les performances de la machine, tout en diminuant le nombre de pièces nécessaires et donc le coût total. Le modèle Mendel Prusa a le vent en poupe ces derniers temps, et est maintenant considéré comme la nouvelle référence RepRap. A titre de comparaison, la RepRap Mendel originale nécessite 50 roulements à bille, contre 3 seulement pour la RepRap Prusa.

Vouloir avoir une RepRap, beaucoup de gens en rêvent. Concrétiser son rêve, c'est beaucoup plus compliqué, parce que :

  • C'est quand même une petite somme d'argent à investir (cf plus bas),
  • Il faut beaucoup de temps pour se renseigner sur les différents modèles et choisir le sien,
  • Il faut faire la liste des pièces nécessaires, fouiller sur internet, les forums, les blogs,...
  • Il faut trouver où acheter les pièces. Et c'est là que ça se corse : les vendeurs sur internet se font rares, et les pièces à vendre sur eBay partent rapidement. Il faut donc être trèèèèès patient pour trouver les bonnes pièces au meilleur prix sans se faire arnaquer,
  • Il faut avoir du temps pour fabriquer la RepRap. Et oui c'est quand même plus marrant de tout faire soit même que d'acheter un kit déjà monté (et surtout beaucoup moins cher !!),
  • Il faut avoir du temps pour modéliser les pièces et les imprimer. Il faut compter 10 à 20 cm3 par heure de débit de plastique (enfin quand on en est rendu à cette étape, on est content)

Personnellement, ça fait quelques semaines que je me renseigne activement sur la RepRap, et j'ai jeté mon dévolu sur le modèle Prusa, qui est suffisamment connu et diffusé pour qu'on trouve de la documentation à son sujet. Cette étape est vraiment primordiale pour bien savoir dans quoi on se lance, connaître les pièces à obtenir, les différents organes de la machine, etc.

Vient ensuite la chasse aux meilleurs prix et aux disponibilités sur internet. Le site officiel RepRap.org contient beaucoup de liens vers des sites marchand qui fournissent des kits plus ou moins complest, mais souvent à des prix prohibitifs. La solution pour moi a donc été de chercher dans les recoins d'eBay des pièces détachées, pour petit à petit cocher toutes les lignes de la liste des composants requis. En faisant cela, je suis arrivé à un coût nettement inférieur aux revendeurs de kits complets (de l'ordre de -40%, avec les frais de ports).

Voici le détail du coût de ma RepRap:

  • Kit de pièces imprimés "Prusa" métrique : 78€
  • Éléments mécaniques (tiges, vis, écrous,...) : 60€
  • Base chauffante : 33€
  • 5 Moteurs pas à pas : 100€
  • Electronique complète : 200€
  • Tête chauffante : 50€
  • TOTAL : 521€

En cherchant encore plus, j'aurais pu rogner encore quelques dizaines d'euros, mais je n'avais pas envie de faire 50 commandes non plus...

Bref, je suis maintenant dans la phase d'attente de réception de tout ce matériel, ce qui me laisse le temps de faire grandir ma liste d'objets à imprimer... :D