WeIO, la plate-forme de l’Internet des objets
septembre 16th, 2014 Posted in Design, Interactivité(une fois n’est pas coutume, le post qui suit est très « techno », puisqu’il traite d’un composant électronique)
Quatre jours après son lancement sur la plate-forme Indiegogo, la levée de fonds pour la WeIO a largement dépassé son objectif. Un succès qui montre bien que cette carte de prototypage dédiée à l’Internet des objets (web of things) répond à des besoins que ne couvrent pas ses concurrents, à savoir Arduino, Wiring, Raspberry Pi ou encore Microchip PIC. Deux des membres de l’équipe qui produit WeIO, Uroš Petrevski et Jean-Louis Fréchin, m’avaient touché un mot de ce projet, à l’époque secret, il y a presque trois ans1 et je me souviens de la définition qu’ils m’avaient donné en substance : une carte qui embarquerait en série tous les éléments utiles pour pouvoir travailler vite et bien, dotée d’une vraie puissance de calcul, mais conservant ou dépassant la grande simplicité de fonctionnement d’Arduino. Le pari est réussi, mais pour le démontrer, il faut que j’explique rapidement quelques points.
Qu’est-ce que le prototypage électronique ?
La carte Arduino, dont le succès a fait naître toute une industrie et est un des modèles de WeIO, sert essentiellement à mettre traiter des informations venant de capteurs et à en envoyer d’autres à des actionneurs. Entre les capteurs et les actionneurs se trouve un cerveau rudimentaire programmable.
Par exemple, je peux créer un programme qui dit : si la broche 0, sur laquelle j’ai branché un capteur de température, m’indique qu’il fait moins de dix degrés, alors j’allume une lampe bleue connectée à la broche 13, si il fait entre dix et vingt-cinq degrés, j’allume une lampe rouge connectée à la broche 12, et s’il fait encore plus chaud, j’actionne le ventilateur qui est connecté à la broche 11.
Plutôt simple, non ?2 La programmation permet de compliquer les choses, de multiplier les conditions, de temporiser, de répéter des actions. Le programme est conservé dans la mémoire de la machine et s’exécute sans s’arrêter dès que celle-ci est mise sous tension. Entre autres défauts, la carte Arduino de bas (Arduino Uno) n’est pas vraiment surdouée pour la communication. Si l’on veut qu’elle envoie ou reçoive des informations en réseau, il faudra lui ajouter un module (shield) dédié à cet usage, et souffrir un peu pour le programmer.
Si on parle de « prototypage » à propos d’Arduino, c’est parce que cette carte n’est pas destinée à des productions en série : cela reviendrait bien trop cher. Ainsi on crée des prototypes ou des objets uniques avec Arduino, mais si l’on veut passer à une échelle industrielle, on fait réaliser des circuits électroniques spécialisés.
Grand concurrent d’Arduino, la Raspberry Pi dispose de quelques connecteurs pour recevoir et envoyer des informations, mais aussi d’un « cerveau » bien moins rudimentaire. C’est, en fait, un ordinateur complet, sur lequel il faut installer un système d’exploitation comme Windows ou Linux. Je connais plus d’un acquéreur de carte Raspberry Pi qui a déchanté en découvrant qu’il fallait y adjoindre une carte-mémoire, un clavier, une souris et un écran pour pouvoir y installer le système et espérer ensuite rédiger des programmes pour l’utiliser. Le fait que cette carte soit un véritable ordinateur lui donne des capacités intéressantes, mais implique aussi une certaine lourdeur : démarrage, mots de passe, mises à jour, plantages…
Les particularités de WeIO
Pour comprendre les qualités de la WeIO, il faut la comparer avec ses concurrents. Le premier point marquant de la carte WeIO, c’est le fait qu’elle soit équipée d’une connexion Wi-fi. Un tel module fait automatiquement monter le prix de la carte (c’est pourquoi Arduino et Raspberry n’en sont pas équipés), mais le calcul est clair : l’Internet des objets ne peut se passer d’une connexion Wi-fi, alors autant que celle-ci fasse partie de la carte (ou même du processeur, dans ce cas), et soit gérée facilement et automatiquement par cette dernière.
Le second point marquant, qui est lié au premier, c’est que toute carte WeIO est un petit serveur, exactement comme n’importe quel serveur sur Internet, capable de diffuser des pages web lisibles depuis un navigateur quelconque et grâce auxquelles on peut le piloter. Puisque la carte WeIO est équipée d’un processeur d’une certaine puissance (Atheros AR9331, cadencé à 400 Mhz), elle a besoin d’un système d’exploitation, mais il ne s’agit pas ici d’un système complet trop gourmand en ressources (quoique reposant sur OpenWRT Linux, ce qui a l’avantage d’ouvrir la plate-forme à d’innombrables pilotes de périphériques), et il n’y a pas besoin de l’installer, de le configurer ou d’avoir la moindre idée de son fonctionnement : il est sur la carte et ses éventuelles mises-à-jour se font sans notre intervention.
Ce genre de configuration robuste, avec processeur équipé pour le Wifi, système minimal et configuration accessible par navigateur web est le modèle employé par des appareils tels que les routeurs Internet, dont on attend qu’ils soient à la fois puissants, économes en ressources, et surtout, infailliblement robustes.
La puissance de WeIO lui permet, contrairement à Arduino, de faire tourner des programmes multi-tâches, et même plusieurs programmes simultanément. On dépasse là une limitation handicapante d’Arduino. Et le processeur et son co-processeur œuvrent en « temps réel », c’est à dire avec une très grande précision temporelle.
À part ça, la carte embarque huit ports analogiques, qui permettent de recevoir des informations adressées par des capteurs, et six ports « PWM » (digitaux mais capables d’émuler un fonctionnement analogique) destinés à commander des actionneurs (moteurs, leds, etc.). Si cela ne suffit pas, on pourra toujours associer à la WeIO une carte Arduino, qui sera accessible grâce au port USB standard, lequel peut aussi servir à commander un périphérique tel qu’une webcam. Un second port USB (micro) permet d’alimenter la WeIO et de communiquer avec elle via le port série. On peut étendre la mémoire de masse de la WeIO en y ajoutant une carte mcro-SD. Une interface Ethernet est aussi prévue, il suffit d’y souder un connecteur, mais cette possibilité n’est pas spécialement favorisée, car d’une part, la présence du Wi-fi la rend inutile, et d’autre part, la présence d’un tel connecteur augmente sensiblement l’épaisseur de la carte. Enfin, la WeIO dispose en série d’un capteur de température, soudé à la carte.
Le pilotage de la WeIO
Une grande particularité de cette carte, c’est qu’elle se programme dans deux langages familiers : le puissant langage Python, orienté objet, souple, lisible, utilisé autant en pédagogie que pour des applications industrielles de pointe ; le langage HTML5 (c’est à dire essentiellement Javascript), qui est devenu le standard commun aux sites web et aux applications pour tablettes et smartphones (Apple autant qu’Android). Une fonctionnalité singulière est le fait que l’on puisse accéder directement à tous les ports de la carte WeIO depuis une interface web : l’ordinateur avec lequel vous contactez votre carte WeIO vous la montre et vous permet d’y « lire » ou « écrire » des valeurs. On est loin de la procédure laborieuse (rédaction, compilation, téléchargement) qui s’effectue plus ou moins en aveugle sur Arduino.
Comme avec les autres systèmes de ce genre, les possibilités sont, selon la formule habituelle, sans limites. Elles le sont d’autant plus que ce matériel n’est pas soumis à un brevet paralysant : on peut réemployer les composants qui équipent la WeIO pour créer des circuits produits à échelle industrielle.
On peut en pré-commander les premiers modèles pour quatre-vingt six dollars (soixante-six euros, au cours d’aujourd’hui), auxquels il faut ajouter neuf dollars de port.
- Pour l’anecdote, ma fille cadette faisait son stage de troisième chez NoDesign (une des deux sociétés qui soutiennent WeIO, l’autre étant 8devices), ce qui me permet de dater la chose assez précisément. Outre Uroš (design et création) et Jean-Louis (design et stratégie), l’équipe est composée de Draško Drašković (création et ingénierie) et Saša Klopanović (relations de presse et marketing). J’imagine que l’on peut dire que WeIO est un projet international, ou en tout cas européen, puisque vilnuso-belgrado-parisien. À noter : Arduino est un projet né en Italie, et Raspberry Pi, au Royaume-uni, ce qui ne les a pas empêchés de connaître un succès planétaire. [↩]
- Je rappelle à toutes fins utiles que Jean-Michel Géridan, Bruno Affagard et moi-même avons publié récemment un livre entier d’initiation à Arduino : Projets créatifs avec Arduino. De nombreux passages de ce livre s’appliquent à d’autres plate-formes qu’Arduino. [↩]
19 Responses to “WeIO, la plate-forme de l’Internet des objets”
By jyrille on Sep 16, 2014
Voilà un domaine que je ne maîtrise pas du tout. Faut-il plusieurs carte pour plusieurs utilisations géographiquement éloignées ? Qu’est-ce qu’est l’internet des objets, concrètement ?
By Jean-no on Sep 16, 2014
@jyrille : concrètement, l’internet des objets, ce sont des objets qui peuvent communiquer par le biais d’Internet. On peut imaginer tellement d’applications que je n’ai même pas d’exemple à te donner :-)
By jyrille on Sep 17, 2014
Ah d’accord, je comprends mieux… Merci pour ta réponse !
By Jean-no on Sep 17, 2014
@jyrille : je viens d’expérimenter un truc : au lieu de connecter la carte à mon ordinateur directement, je lui dis de se mettre sur mon routeur. Résultat, en configurant un tout petit peu le routeur je pourrais faire une application très simple qui me permette d’allumer ou d’éteindre des trucs chez moi, depuis n’importe où sur terre.
On peut aussi imaginer une lampe (je dis ça, c’est un classique) qui s’allume quand la carte constate qu’un e-mail est arrivé dans notre mailbox,… Je peux aussi fabriquer une petite station météo qui envoie sur un serveur le temps qu’il fait chez moi.
Il y a mille et une applications, donc..
By jyrille on Sep 17, 2014
Tu parles surtout de domotique à ce que je comprends. Et une seule carte suffit. C’est intéressant, reste à savoir si cela va se démocratiser, surtout qu’il faut connaître Python (ce qui n’est pas mon cas, mais j’imagine qu’un peu d’expérimentation est facilement faisable).
By Jean-no on Sep 17, 2014
@jyrille : la domotique est un exemple évident, mais pas du tout le seul hein !
Et côté langages, tu en as deux : Python et HTML5/Javascript.
By Ju on Sep 17, 2014
L’Arduino Yun (http://arduino.cc/en/Main/ArduinoBoardYun) sorti en 2013 proposait déjà une connectivité WiFi intégrée et un double processeur Arduino/Unix (OpenWRT aussi), avec en plus une connection RJ45. Il propose une interface de gestion intégrée consultable depuis un navigateur et il est possible de l’utiliser comme mini-serveur, d’y installer un NodeJS par exemple, pour programmer directement en JS et échanger avec la partie plus « Arduino » de la carte (qu’il faut aussi programmer), les I/O, etc…
Le processeur est identique entre les 2 cartes mais la carte WeIO devrait permettre de faire abstraction de la séparation Arduino/Unix (par l’intermédiaire du Bridge) qu’on a sur la Yun : cela devrait donc être plus pratique et plus simple d’utilisation.
By Jean-no on Sep 17, 2014
@Ju : effectivement, les deux ne sont pas sans rapport !
C’est vrai que j’aurais dû spécifier que par « Arduino », j’entends les modèles de base. Et je parle de la Raspberry mais il y aussi des produits proches chez Arduino, Intel, Texas Instruments aussi je crois…
By Frederic on Sep 17, 2014
Hello,
merci pour ce super retour, du coup, j’ai investis dans le WEIO via Indiegogo :)
Par contre, question : je m’intéresse bcp aux réalisations avec Arduino. Du coup, cette plateforme permet de faire la même chose où elles sont complémentaires?
Merci par avance!
By Jean-no on Sep 17, 2014
@Frederic : les plate-formes sont redondantes car on peut faire avec la WeIO tout ce qu’on peut faire avec Arduino. La différence réside dans la puissance de calcul, la connectivité wifi et la facilité d’utilisation, toutes trois en faveur de la WeIO. Mais elles sont aussi complémentaires car si on a envie d’ajouter des ports d’entrées/sorties, une Arduino fera un bon complément.
By Frederic on Sep 17, 2014
Merci pour la réponse, nickel!
Par contre, pourquoi passer par un arduino? Pour avoir d’avantage de puissante pour gérer ces nouveaux ports? On peut faire du multiprocesseur?
J’ai du mal à comprendre dans quel cas je couplerais un WEIO avec un arduino si juste pour avoir des entrées sorties supplémentaires, si WEIO sait déjà toutes les gérer?
Ou certaines sont elles propres à l’arduino?
Merci
(Désolé pour cette rafale de questions, c’est sorti tout seul :/ )
By Jean-no on Sep 17, 2014
@Frederic : Arduino permet de démultiplier le nombre de ports pour pas très cher, et aussi d’ajouter des modules (il existe plein de modules additionnels à Arduino – les « shields »). Pour une imprimante 3D genre RepRap, par exemple, il faut plus de ports d’entrées/sorties que n’en a une WeIO (ou une Arduino Uno, d’ailleurs), car il y a plein de moteurs et autres à gérer… C’est pourquoi en général on utilise des Arduino « Mega », qui ont bien plus de connecteurs. Mais tout est une question de projet : personnellement je ne manque jamais de ports d’entrées/sorties, mais si je fabriquas un robot compliqué, ça serait autre chose.
Sur la spécificité, certains ports des cartes Arduino sont particuliers, il y a des cartes (pas les cartes de base) qui disposent d’authentiques sorties analogique, ou d’autres qui ont des ports spécialement dédiés à la communication (TX/RX), mais dans la pratique, aucun intérêt.
By Frederic on Sep 17, 2014
Merci pour tes réponses très complètes! Je ne sors donc pas démuni et comprends bien tout cela désormais :)
By Jerome on Sep 18, 2014
Si on a bien compris la différence avec Arduino (qui à mon avis ne joue pas au même niveau), je n’ai pas bien compris quel est l’intérêt par rapport à un Raspberry. Un module wifi pour Pi coûte 10 eur… Une interface graphique pour interroger/fixer les ports pourquoi pas, mais ça doit être faisable (ou déjà fait?) sur Raspbian.
Par ailleurs, j’ai l’impression que le nerf de la guerre dans les « objets connectés » c’est l’alimentation. En général, on a deux ou trois capteurs et ce qu’on ne veut surtout pas, c’est avoir un bloc d’alim et monopoliser une prise 220V pour connecter juste ces quelques composants. Et là, à mon avis Arduino reste toujours la priorité, notamment avec ses nano/micro/lilypad.
Il me semble aussi que le wifi n’est pas trop dans l’air du temps pour communiquer des petites infos des capteurs. Des protocoles RF, Zygbee, X10, xbee ont l’air plus adaptés à ce genre d’utilisation.
Concernant le coût, je n’ai pas encore testé mais j’ai vu ce clone arduino à 3,35 port compris depuis Hong-Kong avec des commentaires plutôt encourageants !
By Jean-no on Sep 19, 2014
@jerome : l’interface de la WeIO est faite dans une philosophie bien différente. Sur l’alimentation, c’est la même que pour Arduino : 5v. Et contrairement à Raspberry, la WeIO a une certaine tolérance (elle fonctionne aussi à 3,3v).
Pour la communication, le Wifi est employé car la finalité est Internet, pas un autre appareil situé à dix mètres !
Sinon, oui, il existe des clones d’Arduino en Chine.
By cekage on Sep 19, 2014
S’il est vrai que la « lib » Arduino n’aime pas qu’on touche a ses timers & interruptions, les cartes Arduino et l’environnement de développement Arduino supportent plutôt bien le temps réel.
Un exemple de système intéressant à mettre en temps réel est de faire clignoter régulièrement une LED le temps qu’un capteur lent (genre les sondes de températures OneWire) mesure.
Pour ma part, j’utilise et recommande chaudement nilRTOS pour sa concision dans l’écriture du code et dans sa taille dans le binaire final.
By Addax on Oct 30, 2014
La WeIO est un bon produit.
Le genre de carte qui inondera le marché sous peu.
L’intégration du wi-fi est en effet une nécessité pour des usages nomades et pour augmenter les possibilités.
A suivre !
By Christian on Mar 27, 2015
I have an Arduino board from my circuits class last year; is this similar except with additional WiFi and temperature capabilities? My French isn’t so great, I would totally appreciate some help xD
By Jean-no on Mar 27, 2015
@Christian : the interesting hardware features are Wifi and sensors, but the software part is very interesting too : WeIO is a small unix server able to run Python as well as HTML5 apps.