Hackathon IoT avec une Galileo Gen 2

Nous avons eu l’occasion de participer au Intel IoT Roadshow à Paris il y a deux semaines, un hackathon sur 2 jours au sein de La Paillasse – un hacker-space orienté biologie !

Chaque participant s’est vu remettre une Galileo Gen 2 et, ayant déjà quelques affinités avec Arduino nous étions très intéressés de voir ce que cette nouvelle board avait dans le ventre. Spoiler alert : nos prochains montages seront certainement basés dessus !

La board

Galileo Gen 2

Il s’agit d’un véritable petit ordinateur basé sur l’architecture Intel, on y trouve :

  • un SoC Intel Quark X1000 (petit frère du Intel Atom, très peu gourmand en énergie) ;
  • un port mini-PCI Express (sur lequel nous avons branché un module Wi-Fi) ;
  • un port Ethernet 100 Mb ;
  • un port microSD ;
  • deux ports USB (host et client) ;
  • 256 Mo de RAM DDR3, 512 ko de SRAM, 8 Mo de NOR Flash ;
  • certifié Arduino (donc compatible côté hardware et software).
  • Support de la distribution linux Yocto 1.4 Poky – que nous avons utilisée.

Cette carte se positionne sur le même créneau que le Raspberry Pi. Elle propose des performances similaires même si la fréquence de fonctionnement est différente (400 Mhz pour la Galileo contre 700 Mhz pour le RPi). Cela est justifié par une différence d’architecture, x86 contre ARMv6. Une différence majeure est l’absence de sortie vidéo ou audio sur la Galileo, impossible l’utiliser pour usages media center avec XBMC comme il est d’usage sur le RPi. On note en revanche la présence de beaucoup de composants périphériques intégrés sur la carte, un I/O expander et un convertisseur ADC en plus du port Ethernet. Ce qui en fait un véritable Arduino sous stéroïdes.

Globalement, la carte d’Intel laisse une excellente impression, même si sa consommation électrique est un peu plus élevée que ses copines (RPi, Beaglebone black ou Arduino Yún). Elle a le gros avantage d’inviter avec elle tout l’écosystème x86.

L’écosystème Intel

Intel fournit un IDE basé sur Eclipse pour le développement en C ou C++. Le workflow pour développer avec Javascript est différent : Intel propose son XDK, un nouvel IDE dédié au développement d’applications HTML5 Web et hybrides pour mobiles. Il intègre depuis récemment les fonctionnalités de leur univers « Internet of Things » – IoT pour les intimes – dont le support de la Galileo. La partie IoT du XDK est encore en beta et il est nécessaire pour le moment de lancer l’IDE avec le flag suivant :

--client:projects-create-list:enableIoT

Nous avons cependant subi de nombreux crashes lors de son utilisation sous Linux, et certaines fonctionnalités sont difficilement accessibles. Il est par exemple nécessaire de se rendre dans les options de l’environnement Cordova afin d’activer certains modules node.js pour la Galileo.

Intel fournit également MRAA, une librairie pour manipuler les I/O de la Galileo et éviter d’écrire du code bas niveau fastidieux. Sa petite soeur, UPM, permet d’utiliser facilement certains capteurs et exploiter leurs données. Ces deux librairies proposent également des bindings vers Python et Javascript – dont la non-documentation nous a coûté de nombreux cheveux.

Point positif, la certification Arduino permet d’utiliser directement l’IDE Arduino pour programmer la carte, bien que nous n’ayons pas encore testé cette possibilité.

Lors du prototypage de notre casque, nous avons souhaité exploiter un accéléromètre. Malheureusement, UPM ne supportait pas le chip de notre capteur, plutôt décevant sachant que c’est Intel qui nous l’a fourni.

Outre les problèmes de l’écosystème Intel, nous avons aussi été limités par Linux et BlueZ (l’implémentation du Bluetooth la plus courante). Nous voulions utiliser du Bluetooth Smart, aussi appelé Bluetooth 4.0 Low-Energy (BLE). La documentation est très mince voir inexistante, vu de l’extérieur cela semble être un secret très bien gardé – à 20min de la démo nous avons juste utilisé du Wi-Fi !

Pour conclure

Très bon compromis entre un Raspberry Pi et une Arduino, nous avons été agréablement surpris par cette board. Nous avons principalement utilisé le serveur node.js pour concevoir un casque de vélo intelligent :

  • connexion à un téléphone (Android), réception d’instructions d’itinéraires directement dans le casque via un son à droite ou à gauche ;
  • capteurs tactiles sur les côtés pour actionner des clignotants (évitant à l’utilisateur de lever les mains du guidon trop longtemps) ;
  • éclairage frontal automatique en cas de faible luminosité.

Casque arduino

Tout le code (pas super propre, hackathon oblige) est sous licence MIT et disponible sur Github. Un de nos chip Wi-Fi/Bluetooth n’a pas survécu au weekend et l’espace occupé par la board ne rendait pas le casque « portable » :

Casque Arduino

Vous pouvez ici voir l’utilisation abusive du shield Arduino Grove qui permet d’avoir très rapidement de nombreuses entrées / sorties sans ce soucier du câblage, des tensions, du binding…

Au final, nous sommes arrivés 3e, malgré le manque de temps, nous avons su mettre de côté les fonctionnalités facultatives pour avoir un produit minimum viable pour la démo.

Merci à toute notre équipe, Romain, Nicolas, Olivier et Thomas ainsi qu’à BeMyApp pour l’organisation et à Slim et Brendan de chez Intel pour leur aide !

blog comments powered by Disqus