Archives de catégorie : Logiciel

Installer l’IDE Arduino 1.5 sous Ubuntu 13.10

Je reprends mon article précédent sur l’installation de l’IDE Arduino sous Ubuntu, mais cette fois on va installer la version qui est encore en béta : Arduino 1.5 et sous Ubuntu 13.10. Nous allons toujours connecter une carte Arduino UNO via le cable USB.

L’IDE 1.5 ajoute le support de nouvelles architectures. Dans mon cas, cela devrait m’aider à essayer de programmer directement la partie arduino de ma nouvelle carte Udoo. Cette carte est une sacrée bestiole : un raspberry PI et une arduino due en une seule carte. Mais j’en parlerai une autre fois.

On va donc tout refaire comme la fois précédente… ou presque.

Étape 1, vérifier la présence de Java

Ouvrir un terminal et taper un classique :

~$ java -version
java version "1.7.0_51"
OpenJDK Runtime Environment (IcedTea 2.4.4) (7u51-2.4.4-0ubuntu0.13.10.1)
OpenJDK 64-Bit Server VM (build 24.45-b08, mixed mode)

Tout est donc parfait, sinon il faut installer un OpenJDK 6 ou 7 (avec un “aptitude install openjdk-7-jdk” par exemple).

Étape 2,  installer les dépendances pour l’IDE

Dans le tutoriel précédent, j’indiquais qu’il fallait installer les dépendances suivantes : gcc-avr et avr-libc. Cependant, il semble que cela ne soit plus nécessaire depuis la version 1.0.1 de l’IDE arduino car il y a une version packagée avec l’IDE. Je n’ai donc pas réalisé cette étape et je confirme : cela fonctionne très bien sans.

Étape 3, ajouter l’utilisateur au group dialout

Pour pouvoir connecter la carte arduino au port USB de l’ordinateur et pour pouvoir communiquer avec, il faut que l’utilisateur qui va lancer l’IDE appartienne au groupe dialout. En considérant que l’utilisateur s’appelle marc :

~$ sudo usermod -aG dialout marc

Note : le nouveau groupe n’est pas affecté à la session courante. Vous pouvez tester une commande id ou groups dans un terminal. Pour que cela prenne effet, il faut soit redémarrer la session utilisateur, soit faire un su - marc (remplacez marc par votre utilisateur bien entendu) dans un terminal et lancer l’IDE depuis ce terminal.

Si vous n’ajoutez pas l’utilisateur au groupe dialout — ou si l’affectation n’est pas prise en compte car vous n’avez pas redémarré votre session — vous aurez ce genre de message d’erreur lorsque vous voudrez charger un sketch sur l’arduino :

avrdude: ser_open(): can't open device "/dev/ttyACM0": Permission denied
ioctl("TIOCMGET"): Inappropriate ioctl for device

Mais cela ne devrait pas vous arriver, car je vous ai bien prévenu quand même, non ?

Étape 4, installer l’IDE Arduino

Aller sur la page de téléchargement d’Arduino et récupérer la dernière version 1.5 qui correspond à votre architecture, 32 bits ou 64 bits. Ici, ce sera la 64 bits. Vous devez savoir où vous voulez l’installer. Chez moi ce sera dans $HOME/arduino.

~$ mkdir ~/arduino
~$ cd ~/Downloads
~/Downloads$ tar -C ~/arduino -xvzf arduino-1.5.6-r2-linux64.tgz
~/Downloads$ cd ~/arduino/arduino-1.5.6-r2/
~/arduino/arduino-1.5.6-r2$

Étape 5, connecter la carte et lancer l’IDE

Connecter la carte. Elle doit s’alimenter et les leds clignoter. Pour vérifier que le port correspondant est bien créé, on peut faire un ls sur le tty correspondant :

~/arduino/arduino-1.5.6-r2$ ls -l /dev/ttyACM*
crw-rw---- 1 root dialout 166, 0 févr. 24 22:42 /dev/ttyACM0

On trouve bien le /dev/ttyACM0 et on voit bien qu'il appartient au groupe dialout.

Maintenant ouvrons l’IDE, depuis le dossier contenant l’extraction de l’archive, lancer la commande arduino :

~/arduino/arduino-1.5.6-r2$ ./arduino

Cela ouvre une fenêtre comme celle de la capture suivante, où l’on voit que l’IDE n’est pas configuré sur le bon port de communication, il prend par défaut COM1 alors qu’on veut /dev/ttyACM0  :

L'ide Arduino 1.5.6 au premier lancementPour modifier le port, dans le menu “Tools > Serial Port” choisir celui qui vous intéresse. Dans mon cas, ce sera /dev/ttyACM0.

Changement de port de communication pour l'arduinoCe paramétrage sera conservé au prochain démarrage de l’IDE.

Et voilà, vous pouvez maintenant charger des sketchs sur votre carte arduino… Vous pouvez commencer par l’exemple blink fourni avec l’IDE, il fait clignoter la LED intégrée à la carte UNO :

Charger l'exemple "blink" intégré à l'IDE arduino

Puis le déployer directement :

Déployer le sketch "blink" sur l'arduino connectée

Bonne suite.

Edition collaborative de documents

Ensemble d’outils pour faire de l’édition collaborative de documents. Ce genre d’outils est parfait pour réaliser des documentations techniques où il faut parfois intervenir à plusieurs :

  • Etherpad, en licence Apache V2. Outil vraiment orienté vers l’édition à plusieurs : il est possible d’écrire à plusieurs sur le même document et il y a une zone de discussion
  • Substance, en GPLv3. Outil pour faire plus un travail de révision sur des documents : il est possible de commenter chaque paragraphe. Il permet d’avoir plusieurs sorties pour chaque document (ebook, page web, etc…). Se concentre plus sur la sémantique que sur l’apparence.
  • booktype, en AGPLv3. Présenté sur LinuxFR. Orienté sur l’édition de livres. Permet de générer des formats e-book ou pour édition papier

Proxy socks via SSH pour Firefox

En milieu hostile — victime de censure ou plus bêtement connecté depuis un wifi public, un hôtel, etc. — ou par volonté de ne pas trop laisser les sites consultés vous suivre géographiquement, il est préférable de pouvoir utiliser un proxy. Dans le cas qui nous intéresse, nous allons utiliser un tunnel SSH en tant que proxy SOCKS local pour le navigateur Mozilla Firefox. C’est super simple, il suffit d’avoir un compte SSH qui traîne. Pour la suite de l’exercice, ce compte SSH sera nommé “tunnel“.

Ouvrir le tunnel

Pour cela, rien de plus simple, tu prends ta ligne de commande et tu tapes :

~$ ssh -2NfCT -D 8080 tunnel@example.org

Avec cette commande tu tu connectes en tant qu’utilisateur ‘tunnel‘ sur la machine ‘example.org‘ et le tunnel est accessible en local sur le port 8080. Pour vérifier que le tunnel soit bien là :

~$ netstat -apnt

(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
[…]
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      -               
tcp        0      0 127.0.0.1:8080          0.0.0.0:*               LISTEN      4464/ssh
[…]

Nous sommes content, il y a bien SSH sur le port 8080.

Vérifier notre IP

Avant d’utiliser le proxy, nous allons vérifier notre adresse IP publique. Car une fois que le navigateur sera configuré pour utiliser le proxy, elle devra être différente et correspondre à l’adresse IP du serveur SSH utilisé.

Il existe une foule de service pour découvrir son adresse IP, mais je vais utiliser le mien : ipso.me. J’obtiens donc :

IPso.me découvre mon adresse IP - Avant proxy

Configurer Firefox pour utiliser le proxy SOCKS

Dans Firefox, ouvrir le menu “Edit > Preferences” et dans la fenêtre de dialogue choisir l’onglet “Advanced” puis “Network” et finalement le bouton “Settings” :

Firefox Preferences

Choisir l’option “Manual proxy configuration”, cela active toute une série de champs de saisies. Dans le champ “SOCKS Host” y mettre “127.0.0.1”, notre adresse de loopback (à adapter selon configuration) et dans le champ “Port” y mettre “8080” qui est le port d’écoute du tunnel. Ensuite bien s’assurer que “SOCKS v5” est sélectionné, ainsi :

Connection Settings

Tu penses en avoir fini, mais non, il manque le dernier détail qui tue : proxifier les requêtes DNS. En effet, sur Firefox elles ne passent pas par défaut via le proxy SOCKS. Il parait que d’autres navigateurs le font. Mais pour Firefox, il faut lui forcer la main. Pour cela, ouvrir (1) “about:config” (saisir “about:config” dans la barre d’adresse) puis rechercher (2) l’entrée “network.proxy.socks_remote_dns” qui est à “false” par défaut. Double cliquer (3) sur la ligne correspondante pour passer la valeur à “true” :

about:config - Mozilla Firefox

 

Vérifier

Tu retournes sur ton site préféré pour découvrir ton adresse IP et voilà :

IPso.me découvre mon adresse IP - Après proxy

Tout est pour le mieux dans le meilleur des mondes.

Note : Il n’y a pas que Firefox dans la vie. Pour lancer Chromium en mode incognito et pour qu’il utilise le proxy SOCKS sans fuite DNS, d’après cette page du site chromium.org il faut faire ainsi :

~$ chromium-browser --incognito --proxy-server="socks5://127.0.0.1:8080" --host-resolver-rules="MAP * 0.0.0.0"

 

Installer l’IDE Arduino sous Ubuntu 12.10

Note du 24/02/2014 : j’ai publié une mise-à-jour de cet article pour installer la version 1.5 béta de l’IDE sous ubuntu 13.10.

Voici comment j’ai installé l’IDE Arduino sous mon Ubuntu 12.10 sans passer par le package fourni avec la distribution : cela permet d’avoir la dernière version car celle des dépôts Ubuntu est plus ancienne que celle qu’on peut trouver sur le site Arduino.

Étape 1, vérifier la présence de Java

Ouvrir un terminal et taper un classique :

~$ java -version
java version "1.7.0_09"
OpenJDK Runtime Environment (IcedTea7 2.3.4) (7u9-2.3.4-0ubuntu1.12.10.1)
OpenJDK 64-Bit Server VM (build 23.2-b09, mixed mode)

Tout est donc parfait, sinon il faut installer un OpenJDK 6 ou 7.

Étape 2,  installer les dépendances pour l’IDE

Les dépendances nécessaires en plus de Java sont les suivantes : gcc-avr et avr-libc. Leur installation va automatiquement ajouter une série de dépendances si elles ne sont pas déjà présentes, comme par exemple binutils-avr.

~$ sudo apt-get install gcc-avr avr-libc
[…]
Setting up binutils-avr (2.20.1-3) ...
Setting up gcc-avr (1:4.7.0-2) ...
Setting up avr-libc (1:1.8.0-2) ...

Tout s’est bien passé jusqu’à présent.

Étape 3, ajouter l’utilisateur au group dialout

Pour pouvoir connecter la carte arduino au port USB de l’ordi et pour pouvoir communiquer avec, il faut que l’utilisateur qui va lancer l’ide appartienne au groupe dialout. En considérant que l’utilisateur s’appelle marc :

~$ sudo usermod -aG dialout marc

Étape 4, installer l’IDE Arduino

Aller sur la page de téléchargement d’Arduino et récupérer la version qui correspond à votre architecture, 32 bits ou 64 bits. Ici, ce sera la 64 bits. Vous devez savoir où vous voulez l’installer. Chez moi ce sera dans $HOME/arduino.

~$ mkdir ~/arduino
~$ cd ~/Downloads
~/Downloads$ tar -C ~/arduino -xvzf arduino-1.0.3-linux64.tgz
~/Downloads$ cd ~/arduino/arduino-1.0.3/
~/arduino/arduino-1.0.3$

Étape 5, connecter la carte et lancer l’ide

Connecter la carte. Elle doit s’alimenter et les leds clignoter. Pour vérifier que le port correspondant est bien créé, on peut faire un ls sur le tty correspondant :

~/arduino/arduino-1.0.3$ ls -l /dev/ttyACM*
crw-rw---- 1 root dialout 166, 0 févr. 12 22:45 /dev/ttyACM0

On trouve bien le /dev/ttyACM0.

Maintenant ouvrons l’IDE, depuis le dossier contenant l’extraction de l’archive, lancer la commande arduino :

~/arduino/arduino-1.0.3$ ./arduino

Cela ouvre une fenêtre comme celle de la capture suivante, où l’on voit que l’IDE n’est pas configuré sur le bon port de communication, il prend par défaut COM1 alors qu’on veut /dev/ttyACM0  :

L'ide Arduino 1.0.3 au premier lancement

Pour modifier le port, dans le menu “Tools > Serial Port” choisir celui qui vous intéresse. Dans mon cas, ce sera /dev/ttyACM0.

Changement de port de communication pour l'arduino

Et voilà, vous pouvez maintenant uploader des sketchs sur votre carte arduino…

Un montage fait en se basant du guide présent dans le Starter Kit d'Arduino
Un montage fait en se basant du guide présent dans le Starter Kit d’Arduino

Bonne suite.

Projet découverte IP, v1.a

Petites nouvelles sur l’avancement.

J’ai rapidement mis en ligne ce que j’appelle la version 1.a. Il est donc maintenant possible de trouver et d’afficher son adresse IP via ipso.me.

J’ai mis à disposition le code source du projet sur Kenai.com (en). Leur service est vraiment clair et pratique. J’ai ouvert un dépôt Mercurial : http://kenai.com/projects/ipsome/sources/hg/show (en). Je découvre l’utilisation d’un gestionnaire de code décentralisé, je ne suis pas encore 100% à l’aise avec car cela change de SVN, mais c’est assez pratique. Il faudra qu’un jour je prenne le temps de lire Subversion Re-education (en).

Pour l’instant le code est vraiment minimaliste, il y a juste un contrôleur qui récupère l’IP du client et la passe à une vue. Mes premières impressions sur l’utilisation de Play! Framework (en) sont très bonnes. C’est vraiment très simple à mettre en place, très simple pour commencer, le tutoriel de départ est bon. J’ai d’ailleurs fait cette version 1.a directement en suivant le tutoriel “Première application (en)” .

Pour le style, j’ai récupéré un template que j’ai déjà utilisé par ailleurs, il a l’avantage d’utiliser le framework CSS 1140 CSS Grid (en) qui permet de s’adapter à la largeur de l’écran. Le rendu s’adapte jusqu’aux résolutions des smartphones.

Ce qu’il me reste à faire pour avoir une vrai version 1 :

  • Intégrer la licence Apache au projet,
  • Faire une petite doc pour l’installation :
    • en texte dans un fichier install.txt,
    • en html intégré dans une page du projet
  • Nettoyer le code et le template utilisé