Si vous vous intéressez aux systèmes embarqués, au prototypage et aux microcontrôleurs, ce projet de développement en Lua d'une bibliothèque inspirée du projet arduino pour les cartes STM32F4-DISCOVERY vous intéressera certainement.
Il a été conduit en 2011-2012, sous la direction de Olivier Richard, par deux élèves ingénieur de 5e année du département RICM (Réseau Informatique et Communication Multimédia) de Polytech'Grenoble, Salem Harrache et Elizabeth Paz, dans le cadre de leur formation.
Interview de Salem Harrache et Elizabeth Paz (25/09/2012)
"De l'embarqué avec un script Lua, c'est quand même la classe !"
Pouvez-vous présenter le cadre de votre projet : votre formation, Polytech'Grenoble, les objectifs.
Salem : Je m'appelle Salem Harrache, élève ingénieur en 5e année à Polytech'Grenoble en RICM (Réseau Informatique et Communication Multimédia) avec une spécialisation Réseaux et systèmes. Titulaire d'un DUT Informatique en 2010 à l'IUT A de Lyon, j'ai continué en école d'ingénieur à Polytech'Lyon avant de me réorienter (en 4e année) à Polytech'Grenoble. En effet, Polytech'Grenoble propose une formation technique solide sur les réseaux et systèmes : Langage et Génération de code, Algorithmique répartie, Conception d'un système d'exploitation (NACHOS), Architecture matérielle, Réseaux et protocoles... Mais elle axe beaucoup sa formation sur les projets innovants (fablab AIR). Me concernant, je suis développeur Python depuis presque 3 ans, et une fois diplômé j'aimerais travailler dans le domaine des systèmes-réseau-sécurité.
Elizabeth : Je m'appelle Elizabeth Paz, élève ingénieur en 5e année à Polytech Grenoble en RICM avec la spécialisation Réseaux et systèmes. Après avoir réalisé ma première année de Master en Informatique, j'ai décidé d'intégrer Polytech pour pouvoir poursuivre cette spécialité qui nous forme sur les principales techniques des réseaux actuels et les fonctions liées à l'administration et à la sécurité. Cette formation me permet d'avoir des bases solides pour pouvoir travailler dans le domaine de la sécurité informatique.
Comment est née l'idée de votre projet ?
Salem : L'idée est simple. Elizabeth et moi ne savions pas programmer sur des cartes microcontrôleurs.
On avait assisté à deux présentations sur la programmation des cartes microcontrôleurs : une de STMicroelectronics, et une autre sur les cartes Arduino. Il nous était évident que l'approche Arduino était celle qui nous correspondait. Pas besoin de milliers de lignes pour faire un simple blink, une documentation claire, une API limpide, très peu d'efforts pour débuter.
Notre projet permet d'avoir cette approche avec une carte plus puissante : la STM32F4-DISCOVERY.
Easy-Elua propose non seulement une partie des fonctions Arduino réécrites en Lua, mais également un ensemble de scripts pour démarrer rapidement (installer l'environnement, envoyer les scripts et les exécuter sur la carte, accès à un shell Lua directement sur la carte)
Pourquoi avoir choisi Lua ?
Salem : Le choix de Lua s'est fait essentiellement pour sa légèreté. On aurait très bien pu choisir Python, mais avec aussi peu de RAM et 1Mo de mémoire flash seulement, c'était très difficile. Une deuxième raison c'est sa force pour les scripts. On peut tester ses algos sur un shell Lua directement, ça fait gagner énormément de temps par rapport à du C à compiler à chaque fois... Enfin Lua est simple : de l'embarqué avec un script Lua, c'est quand même la classe !
Que vous apportait de plus eLua ?
Elizabeth : eLua est au centre de notre projet. C'est lui qui apporte Lua sur la carte. Notre projet était de le faire fonctionner sur la STM32F4-DISCOVERY dans un premier temps. Le début du projet a été difficile pour nous, car il n'existait pas de portage d'eLua fonctionel pour notre carte. Fort heureusement, la communauté qui gravite autour d'eLua est toujours prête à aider. Dans notre cas, James Snyder, un contributeur actif sur eLua nous a aidé à porter eLua sur notre carte STM32F4-DISCOVERY.
Il est également développeur confirmé de Lua et travaille sur le portage d'eLua sur différents microcontrôleurs. Son aide a été d'une grande importance pour la réussite de notre projet.
Lua a-t-il répondu à vos attentes ?
Salem : Je ne connaissais pas beaucoup Lua. J'en avais entendu parler pour le portage de certains jeux rétro 2D, ou encore des homebrews sur la console PSP mais sans plus.
Lorsque j'ai commencé à apprendre Lua pour ce projet, j'ai été étonné de voir à quel point ce langage est facile. Je ne sais pas si c'est parce que je viens du monde Python, mais en tout cas c'est vraiment agréable à pratiquer et à apprendre (avec le shell à côté).
Quand j'ai vraiment commencé le projet, j'étais un peu frustré au début par le manque de fonctions standards (eLua n'implémente pas forcément tout Lua), mais c'était sans compter sur un des concepts génial de Lua : la méta-programmation. Par exemple implémenter le type "class" pour avoir de la POO, en 30 lignes c'était fini. Cette flexibilité en a fait un très bon choix au final, pour réussir à avoir un fonctionnement similaire à Arduino en très très peu de lignes (environ 300).
Avez-vous utilisé Lua pour d'autres projets ? Avez-vous l'intention de le réutiliser ?
Salem : Il y a quelques semaines j'ai installé un serveur de messagerie Jabber très léger écrit en Lua : Prosody. J'étais bien content lorsque j'ai dû ajouter un plugin d'authentification pour une base de données Postgresql.
Autrement pour des gros projets, je n'ai pas encore eu l'occasion, mais ça viendra très certainement.
Concernant Easy-Elua, j'espère que le projet sera repris cette année par des étudiants de 4e année à l'école pour le compléter davatange (ajout de fonctions, support de l'audio, etc.). Pour l'instant c'était un projet d'école, mais je n'exclue pas de l'améliorer en vue d'autres projets qui l'utiliseraient :) .
Elizabeth : Récemment, je n'ai pas eu l'opportunité d'utiliser Lua sur d'autres projets mais je ne manquerai pas de l'utiliser si l'opportunité se présente. D'un autre côté, Salem et moi on s'est donné la tâche de laisser une documentation complète et open-source pour tout utilisateur débutant qui veut continuer avec le projet, soit des futurs élèves de Polytech ou le public.
Quels sont vos projets futurs ?
Salem : En ce moment, je m'intéresse à la conception d'applications Mobiles (Android, iOS..) avec des langages de scripts tels que Lua et Python. Ça bouge pas mal dans ce secteur, dominé par Java et Objective-C...
Elizabeth : De mon côté j'aimerais approfondir mes connaissances dans le domaine de la sécurité, surtout sur celle concernant la monétique qui est un enjeu important de nos jours.
Souhaitez-vous ajouter autre chose ?
Salem : Merci de vous être intéressée à notre projet et à notre école. J'espère que ça éveillera la curiosité de vos lecteurs et permettra d'agrandir la communauté Lua Française.
Elizabeth : On vous remercie de l'intérêt que vous portez à notre projet, cela nous fait grand plaisir.
Merci à vous deux !