Programmation synchrone temps-réel et protocoles de communication, sur Arduino

De Ensiwiki
Aller à : navigation, rechercher


Programmation synchrone temps-réel et protocoles de communication, sur Arduino

Labo Verimag
Equipe Synchrone
Encadrants Florence.Maraninchi@imag.fr

Thème général

Les plates-formes Arduino sont de petits systèmes embarqués faciles à programmer dans un langage à la C. De nombreux éléments peuvent être ajoutés à la plate-forme de calcul (capteurs, radio, actionneurs, ...), ce qui en fait une cible de choix pour le développement rapide de petites applications embarquées communicantes.

Les langages synchrones sont une famille de langages de programmation parallèle et temps-réel pour les systèmes embarqués critiques. Le langage Lustre fait partie de cette famille, il a été défini dans les années 80 au laboratoire Verimag. C'est maintenant le coeur de l'outil indutriel SCADE vendu par Esterel Technologies et utilisé par exemple par Airbus, Rolls-Royce Civil Nuclear, etc.

Le but du travail proposé ici est de programmer les objets Arduino en Lustre. Un aspect intéressant de la question est l'utilisation de la radio pour communiquer entre plusieurs Arduino. Nous nous intéresserons aussi à la génération automatique de code (la compilation) pour Arduino, à partir de langages de plus haut niveau que C.

Compétences et goûts attendus

Programmation en C, notions de réseaux, compilation, aspects expérimentaux

Contexte du travail

Le travail se déroulera dans l'équipe Synchrone du laboratoire Verimag. L'étudiant(e) intéressé(e) bénéficiera de l'environnement de recherche du laboratoire, du contact avec les doctorants, de la visite de conférenciers et de partenaires des entreprises. Le matériel Arduino pourra être prêté pour du travail personnel hors laboratoire. Programmer en Lustre sur Arduino est un moyen rapide et simple d'entrer dans le monde de la programmation embarquée contrainte (en temps, en mémoire) et éventuellement critique. C'est aussi un moyen de comprendre comment on peut concevoir un système distribué : en effet, si l'on considère plusieurs objects Arduino qui communiquent grâce à leur radio, c'est l'effet global de l'ensemble qui nous intéresse, pas seulement le comportement d'un seul objet.

Sujet

Le but du travail proposé ici est de programmer les objets Arduino en Lustre. Un aspect intéressant de la question est l'utilisation de la radio pour communiquer entre plusieurs Arduino. Nous nous intéresserons aussi à la génération automatique de code (la compilation) pour Arduino, à partir de langages de plus haut niveau que C.

Plus précisément : il s'agit de programmer le comportement de chaque objet Arduino (y compris les aspects de communication avec les autres) en Lustre, qui est ensuite compilé en C grâce aux outils académiques autour de Lustre que maintient l'équipe Synchrone de Verimag. Modulo quelques retouches de détails, ce code généré peut être implanté sur les Arduino. Il faut ensuite réaliser des expériences réelles pour réfléchir au comportement du système global formé de tous les objets Arduino. La communication radio introduit des incertitudes sur ce que perçoivent les objets, et cela doit etre pris en compte dans le code, qui doit être rendu robuste (c'est-à-dire résistant à ces aléas).

Après une première phase de prise en main relativement guidée, l'étudiant(e) intéressé(e) pourra laisser libre cours à son imagination pour concevoir une petite application embarquée communicante de son goût.


Résultats attendus

La première phase de prise en main devrait déboucher sur un jeu d'exemples simples en Lustre, qui tournent sur Arduino, avec une méthode générale de portage du code C généré par le compilateur Lustre sur Arduino. La deuxième phase consistera à inventer une petite application communicante, à la concevoir d'un point de vue algorithmique, à la programmer en Lustre, et à réaliser des expériences sur un ensemble de plusieurs objets Arduino.

Certaines contributions pourront être mises à disposition de la communauté Arduino.