Le test de la carte Intel Galileo que l'on a brièvement abordé il y a quelques semaines nous a donné envie de tester le dernier né d'Intel, à savoir l'Edison. Ce truc est littéralement un PC Linux x86 au format timbre poste. On avait très envie de savoir s'il était possible de l'utiliser pour piloter des modules Yoctopuce. En effet, sa taille le rend extrêmement intéressant pour tout ce qui est système embarqué. On a en donc acheté un et on a un peu joué avec....
Le module Intel Edison
Le module Intel Edison se présente sous forme d'un minuscule board d'environ 25*35mm. Il dispose, entre autres, d'une interface Wifi, d'une console série et d'un port USB OTG. Il dispose même de sa propre mémoire flash pour stocker son système d'exploitation. En théorie, on branche et ça marche
L'Intel Edison, quand on vous dit qu'il est tout petit...
Hardware
A moins de disposer de l'outillage nécessaire pour fabriquer des circuits imprimés, l'Edison n'est pas très utile tel quel: la seule connectique disponible est un minuscule connecteur Hirose DF40. C'est pourquoi Intel commercialise aussi un breakout-board sur lequel l'Edison vient se fixer, mettant ainsi à disposition deux connecteurs USB: un pour la console série via un adaptateur FTDI intégré et le second pour la connexion USB.
Un breakout board est indispensable au commun des mortels
Alimentation
Sauf qu'il y a un hic, le breakout board d'Intel est loin d'être parfait si vous souhaitez piloter des modules USB. Il y a trois possibilités pour alimenter le système, et aucun n'est idéal:
- Envoyer du 5V via le port OTG, mais dans ce cas plus possible de brancher un module, le port étant occupé par le câble d'alimentation.
- Envoyer 7 à 12V sur le connecteur J21, mais ce genre de tension n'est pas forcement facile à trouver dans un système embarqué. Pas la peine d'essayer avec du 5V, ça marche pas.
- Alimenter la carte via une cellule Lipo, mais dans ce cas, le port USB n'est pas alimenté.
Autant dire que c'est un peu décevant quand on a prévu d'utiliser des modules Yoctopuce. L'idéal aurait été de permettre l'alimenter le système via le connecteur USB dédié au port série... Et c'est exactement ce que propose SparkFun avec son base block board, ce qui permet d'utiliser une bête batterie USB.
Le Base block de Sparkfun peut être alimenté par le port console
La console
Le breakout board d'Intel, comme celui de Sparkfun propose une console série directement disponible en USB grâce a un chip FTDI intégré. Pour en profiter il vous faudra:
- Installer le driver FTDI
- Déterminer quel port COM virtuel le driver FTDI a mis en place, sous Windows vous le trouverez dans le Gestionnaire de périphériques
- Installer Putty et configurer une connexion série. Les paramètres sont speed=115200, databits =8 , stop bits = 1, parity = None, flow control = XON/XOFF.
Putty: la méthode la plus simple pour accéder à la console de l'Edison
Comment débriquer un Intel Edison?
Notre premier contact avec l'Edison n'a pas été très encourageant: impossible de le faire démarrer, pas le moindre signe de vie sur la console. Après moultes recherches sur divers forums, il a bien fallu se rendre à l'évidence, on s'était fait refilé un exemplaire briqué. En fait, on pense que fabricant a tout simplement oublié de le flasher, et apparemment ce n'était pas un cas isolé. Il nous a fallu reflasher complètement le système. Comme on n'a pas trouvé de doc expliquant simplement comment le faire, on a noté dans un coin comment s'y prendre.
Installer la librairie Yoctopuce pour Python
Le langage idéal à utiliser sur ce genre de machine est probablement Python: C'est un langage très portable ce qui permet de faire le développement sur machine normale, la mise en production se limitant une simple copie de fichiers sur l'Edison. Le moyen le plus simple pour installer la librairie Yoctopuce consiste à utiliser PIP, qui n'est pas disponible par défaut sur l'image Yocto-Linux. Mais on peut facilement récupérer un script d'installation avec wget:
wget --no-check-certificate https://bootstrap.pypa.io/get-pip.py
Il suffit ensuite de lancer ce script:
python get-pip.py
Et on peut alors installer la librairie
pip install yoctopuce
Notez que cette méthode d'installation est valable pour tous les systèmes Linux. Attention, si la librairie Yoctopuce a été installée avec PIP vous devrez légèrement modifier les exemples de programmation fournis par Yoctopuce et remplacer les "from yocto_api import *" par "from yoctopuce.yocto_api import *". Par exemple
from yocto_relay import *
devient:
from yoctopuce.yocto_relay import *
Installer la librairie Yoctopuce en ligne de commande
Pour installer la librairie en ligne de commande, téléchargez la librairie sur une machine de votre choix, dé-zippez-la et copiez le contenu du répertoire Binaries\Linux\32bits sur votre Edison. Oubliez le reste, il ne fera que prendre inutilement de la place sur votre Edison.
Câble OTG ou rien
Le port USB de l'Edison est un port OTG, cela signifie que l'Edison peut se comporter aussi bien comme un Host que comme un Device. Il se trouve que ce comportement est déterminé par le câble que vous branchez. Si vous branchez un câble normal A-MicroB par exemple, l'Edison va se comporter comme un device. Si vous branchez un câble OTG-MicroB-MicroB il va se comporter en Host. Pour piloter des modules Yoctopuce, l'Edison doit se comporter en Host, faute de quoi la lib USB refusera de s'initialiser. Si vous tentez de lancer une commande Yoctopuce sans avoir branché le câble idoine, vous obtiendrez le comportement suivant:
root@y-edison:~/yoctopuce# ./YModule inventory ERR: Cannot register usb: Unable to start lib USB:Other error
Et si vous essayez de connaitre l'état de la lib USB, vous obtiendrez ce message:
root@y-edison:~/yoctopuce# lsusb unable to initialize libusb: -99
Et ça marche?
Une fois que vous avez un système en état de marche, connecté correctement, ça fonctionne furieusement bien. La consommation électrique est remarquable: alimenté en 5V par l’intermédiaire du base block de Sparkfun, l'Edison consomme moins de 50mA en idle. On soupçonne que les parties inutilisées sont laissées hors tension, si on branche un module Yoctopuce, la consommation passe à 80mA + la consommation du module.
Pour faire le test des modules Yoctopuce avec l'Edison, on a décidé de recycler la démo du Yocto-Buzzer. Évidement pour connecter plusieurs modules Yoctopuce à l'Edison, il a fallu utiliser un hub USB.
Une alarme température.
On a laissé tourner le dispositif pendant plusieurs jour sur une alim secteur. Rien à signaler, pas de crash, pas de perte de connexion USB, tout est resté parfaitement stable.
Conclusion
On avait fondé de gros espoirs sur l'Edison en tant que brique prête l'emploi pour piloter des modules Yoctopuce. Globalement, ça fonctionne plutôt bien, mais on a peu l'impression qu'Intel a joué la carte du community support en fournissant le matériel et en laissant les utilisateurs se débrouiller entre eux pour résoudre les problèmes, ce qui transforme la moindre difficulté en chasse au trésor sur les forums dédiés. D'autre part, si L'Edison en lui-même est une machine remarquable, l'alimentation du breakout board d'Intel a tout simplement été mal pensée, c'est vraiment dommage. Si vous avez l'intention de contrôler des modules USB avec votre Edison, choisissez plutôt le base block de Sparkfun...