Archives par mot-clé : linux

Framboise en boîte 4/N

Le futur

Dans cet article, nous aborderons les technologies futuristiques (à ne pas confondre avec futuristes) des drivers FTDI qui permettent à notre sympathique framboise de communiquer avec ses relais (là, le s s’avère nécessaire réforme ou pas1 ).

Retour sur l’Arros-o-tron

La dernière fois, nous avons testé l’ensemble de contrôle des relais avec de la vraie eau, tout à fait vraiment vraie (et humide). Malencontreusement, quelques digressions annexes nous ont fait perdre le focus (qui a la fâcheuse propriété d’être évanescent) et la conclusion s’en est allée. Cette conclusion, je vous la donne donc directement en introduction du l’article N+1 (N est ici tout à fait déterminé, il s’agit du nombre 3.  À ne pas confondre avec N, le nombre total d’articles sur le sujet qui nous occupe, qui lui n’est pas encore déterminé. Ou peut-être que si, dans l’hypothèse où vous liriez cet article dans le futur par rapport à maintenant. Peut-être  n’avons-nous pas le même maintenant. Nous verrons d’ailleurs plus loin comment FTDI  a répondu à cet opaque problème. Mais enfin, je m’égare).

Donc oui, ça marche. On contrôle très bien l’électrovanne à partir de l’alimentation 12V et du relai. L’eau jaillit et se tarit à souhait à partir de simples commandes (connexion ssh sur le Rapsbperry Pi et quelques commandes UNIX).

Ce ne sera pas la configuration finale, mais pour ce premier test arrosatoire, j’ai utilisé une électrovanne 24 VAC. Je l’ai commandée à partir de mon alimentation 12 VDC (voir article premier). Pas très orthodoxe, mais je suis parti de l’hypothèse que les tensions nominales sur n’avait pas à être franchement respectées. Selon notre ami Maxwell (rien à voir avec le café), s’il y a du courant dans la bobine, on pourra faire bouger un truc en utilisant la force du champ magnétique induit par le passage des électrons enivrés par les enroulements de notre conducteur. Jamais dans ses équations est dit qu’on doive respecter les tensions nominales de notre fournisseur de solénoïdes. Je fais sans doute quelques raccourcis, mais toujours est-il que ça marche (d’ailleurs pour ce test, j’ai bien appliqué 12 volts en courant continu alors que nominalement on requérait du courant alternatif, na!)

Contrôleur du travail

Les électrovannes en tant que telles pourront d’ailleurs être l’objet d’un article ultérieur tant il y a à dire sur cet objet contrôlant le travail. En effet, en autorisant ou interdisant le déplacement de masses d’eau, la vanne contrôle le travail (on se souviendra qu’il y a vaguement un lien entre la force (qui peut elle-même être liée à la masse) et le déplacement). Les joyeux jaillissements de l’eau à travers mon tuyau sont donc du travail. Et comme toute peine mérite salaire, Veolia ne manque pas de se faire rétribuer à chacune de mes saillies.

 Le contrôle de la carte à relais

Nous avons déjà dit que la carte USB-X440 était munie d’un connecteur USB (et de cinq trous de quatre millimètres, mais ce dernier constat n’intervient que très peu, ou pas du tout, sur le sujet précis qui nous occupe dans cette section). En fait, la carte USB-X440 communique en série. Oui, oui, ce bon vieux port série, le RS-232, les stop bit et start bit, la parité, le baud, et tout et tout. A priori, rien de très sexy. C’est là que la technologie du future entre en jeu.

FTDI produit des chips qui permettent d’émuler une communication de type RS-232 à travers un support USB.

Petit mot sur le futur

On se souviendra que dans les années 1990, et même avant, plusieurs entreprises ajoutaient le suffixe 2000 à leur raison sociale ou à leurs produits. Du système d’exploitation au plombier du coin, tous étaient résolument tournés vers l’avenir et la modernité. Tout le monde voulait son 2000. C’était dans l’air du temps, et si l’on a moins de 20 ans, on ne s’en souvient guère. Cette bohème ne pouvait pas durer éternellement parce qu’elle avait un défaut intrinsèque: le temps passe, les années changent, et le futur d’hier devient le passé d’aujourd’hui. Si Windows 2000 n’est plus qu’un (plus ou moins bon) souvenir, tous les chauffagistes 2000, les menuisiers 2000 et autres assureurs 2000 qui ont survécus sont passés de visionnaires à passéistes, tournés à jamais vers une époque de plus en plus lointaine.

FTDI a trouvé la solution. Bien qu’issue des années 1990, cette entreprise est à jamais tournée vers l’avenir, puisque son point de fuite n’est pas une année déterminée, mais bien le futur en personne. Ce futur qui dès maintenant et pour toujours sera invariablement devant. FTDI est en effet l’acronyme de Future Technology Devices International ce qui se traduit (assez librement) par: « Bidules internationaux basés sur la technologie du futur ». Le problème de la relativité temporelle est donc résolu. Peu importe le point de vu, FTDI sera toujours devant.

Le port série automagique

Quoi qu’on en dise, les circuits FTDI on plusieurs atouts :

  1. Ils permettent une communication simple à travers une connectique standard (USB était encore répandu au moment d’écrire ces lignes, bien que cela paraisse incongru au lecteur d’un certain futur)
  2. Les spécifications sont ouvertes et il est donc aisé d’écrire les pilotes idoines
  3. Ils sont supportés nativement par tous les bons noyaux près de chez vous

Ce troisième point est particulièrement intéressant. C’est la pierre d’achoppement du l’automagicité. En effet, il suffit de relier la carte munie du chip FTDI  à son ordinateur (en l’occurrence, un Raspberry Pi faisant tourner une distribution Raspbian) pour n’avoir rien à faire… En fait le pilote papote avec le chip. Chacun fait sa tambouille de son côté. On finit par s’entendre sur un truc du genre 9600 8N1. Et hop, on se retrouve avec un device dans /dev/ttyUSB0

pi@nsa ~ $ ls /dev/ttyUSB0
/dev/ttyUSB0
pi@nsa ~ $

On a donc une émulation de port série, installée en quelques millisecondes, sans aucune configuration. C’est à ce demander à quoi sert de faire un blog pour en parler tellement l’opération est sans douleur.

Du coup, de façon tout à fait classique, pour envoyer une commande à la carte, on écrit dans /dev/ttyUSB0 et, symétriquement, on lit dans /dev/ttyUSB0 pour recevoir des messages (le zéro (0) pouvant bien entendu être incrémenté si plus d’un port USB émulé est présent).

D’après la documentation, la relais se commandent ainsi:

Sxb

S veut dire relai (switch?)

x, le numéro du relai

b, une valeur booléenne (0 ou 1) pour changer l’état du relai.

Il suffit donc d’écrire dans sa commande dans le tty pour pour commander une action, en utilisant echo par exemple.

Cela donne donc, comme on l’a vu précédemment:

Relai #1 au repos:

pi@nsa ~ $ echo S10 > /dev/ttyUSB0

Relai #1 actif:

pi@nsa ~ $ echo S11 > /dev/ttyUSB0

Pour écouter ce que nous dit la carte, on utilisera cat :

pi@nsa ~ $ cat /dev/ttyUSB0

La suite

On se rendra donc bien entendu à N 5 puisque nous n’avons pas encore abordé l’installation du circuit hydraulique, le creusage dans le jardin ni la plantation de tomates.

<– Précédent   Suivant –>

Reception des colis

Ça y est, le facteur est arrivé ! Les deux paquets la même journée.  C’est la fête du grand déballage.

Première étape: installer un système d’exploitation. Comme premier OS, j’ai sans hésité commencé par Raspbian. Comme son nom le laisse deviner, cette distribution est basée sur Debian. Comme  je suis plutôt familier avec cette famille de distributions et que la gestion des paquets est juste parfaite avec les commandes apt, ça me semble être un bon point de départ.

Le site officiel de Raspberry Pi propose même des torrent, ce qui peut accélérer le téléchargement.

Pour copier l’image de l’OS sur une carte SD, j’ai utilisé Win32DiskImage tel que recommandé sur cette page. Il suffit alors de sélectionner le fichier image (une fois décompressé, on a un fichier de la forme date-bla-bla-raspbian.img, en l’occurrence 2014-01-07-wheezy-raspbian.img, qui doit faire autour de 2 GO).

On sélectionne la lettre du disque où se cache la carte SD. Attention, on dit qu’il ne faut pas se tromper de lettre… Win32DiskImage ne se pose pas trop de questions existentielles, c’est un peu un dd sous Windows. Si vous lui demandez d’écrire sur un disque, il va tenter de le faire, comme ça, directement, sans trop y réfléchir. Si vous vous trompez de disque, il peut vous arriver des choses que je n’ai pas moi-même expérimentées…

Capture écran de l'installation de Raspbian sur la carte SD.
Installation de Raspbian sur la carte SD via Win32DiskImager.

Une fois terminé, on branche la carte SD dans l’engin, on branche sur un moniteur via le HDMI, on accroche un clavier via un des ports USB/host et puis on alimente via la prise micro USB/device. Et puis magie! Ça marche. La séquence de boot de linux s’affiche à l’écran.

Le menu de base

Le boot terminé, vient ensuite un outil de configuration, raspi-config avec des menus genre ncurses. Cela permet de dégrossir un peu la configuration (nom d’hôte, accès ssh, etc). Un tutoriel plus détaillé est disponible ici.

Photo d menu raspi-config
Le premier menu de raspi-config

Le menu de configuration permet d’agrandir la taille de la partition sur la carte SD. Lors de la copie de l’image, elle a été créé à la taille de cette dernière (~2 GO). C’est d’ailleurs la première option et c’est conseillé de le faire tout de suite.

Après avoir changé son password, on peut passer directement  menu avancé (Advanced Options) ou raffiner encore certains paramètres.

Pour l’internalisation (changement de configuration du clavier par exemple), il y a une entrée dans le menu de base.On peut aussi choisir le mode par défaut : desktop avec serveur X, mode console ou mode Scratch, un logiciel d’apprentissage de la programmation destiné aux enfants. Pour mes besoins, je reste en mode console, mais pour une box multimédia, on peut imaginer un mode desktop, avec xforwarding ou directement branché sur une télé/un moniteur via HDMI.

Les options avancées

Le menu avancé permet notamment de changer le  hostname, d’activer le daemon sshd et de charger les modules SPI.

Photo des options avancées du menu raspi-config
Le menu avancé permet notamment de changer le hostname, d’activer le daemon sshd et de charger les modules SPI.

Par défaut, le hostname est raspberrypi. Comme la bête est destinée à capter les signaux émis par mes capteurs météo, je lui ai donné un nom d’hôte approprié

Photo du menu pour changer le hostnam
Par défaut, le hostname est raspberrypi. J’en ai choisi un dans l’esprit de la tâche à effecteur : écouter des ondes radios…

Une fois la configuration terminée, on peut sortir de  raspi-config et profiter de sa toute nouvelle Debian.

20140130_231753

Mais puisque le sshd est lancé, on peut rapidement libérer l’écran 23″ et récupérer son clavier pour passer en mode distant…

sshpinsa
La connexion distance est tout de même plus pratique…

La connexion réseau se fait par le connecteur RJ-45, le temps de configurer le WI-FI. Le dongle Edimax est immédiatement reconnu et fonctionnel.

Résultat de ifconfig
Résultat de ifconfig « out of the box » avec le dongle Edimax EW-7811Un.

Pour configurer le WI-FI, ce lien peut être utile.

En résumé, il faut:

sudo iwlist wlan0 scan | grep ESSID

pour récupérer les noms de réseaux (SSID) disponibles et ajouter les lignes suivantes au fichier /etc/wpa_supplicant/wpa_supplicant.conf.

network={
        ssid="YourSSID"
        psk="password"
        key_mgmt=WPA-PSK
}

Puis relancez votre interface

pi@nsa ~ $ sudo ifdown wlan0
pi@nsa ~ $ sudo ifup wlan0
pi@nsa ~ $ ifconfig

Vous devriez maintenant avoir une adresse ip sur wlan0

Output de ifconfig après la configuration du WI-FI
Nous avons maintenant une adresse IP sur wlan0 (donc du WI-FI)

Ne pas oublier de faire un petit détour par son serveur DHCP pour attribuer un adresse statique (ça simplifie les connexions distantes via ssh) et de créer sa clef privée puis d’échanger sa clef publique avec ses autres points d’accès ssh.

On peut maintenant débrancher le câble sur le connecteur RJ-45 et puis passer à la suite. Mais ce sera pour une autre fois.

Raspberry Pi dans son boîtier, avec plusieurs connecteurs utilisés.
Le Raspberry Pi en action. On y voit: le câble HDMI, un câble RJ-45, un câble USB pour le clavier, le dongle WI-FI juste au dessus. L’OS est sur la carte SD à droite, à côté de l’alimentation via microUSB.