Page 1

Tomette 2013

jeux de lumière pour tous Peter Niebert http://tomette2013.niebert.com


Plan • C’est quoi, les Tomettes2013 ??? • A quoi bon, pour qui? • Comment ça marche (c’est la fête de la science) • Perspectives • Programmation en TOM • Pour aller plus loin


Projet Tomette2013 • Projet d’étudiants en Master Informatique •

(première année) en 2009/2010, encadré par P.N. La majorité des étudiants ont suivi un parcours depuis la licence à L’Université de Provence (Aix-Marseille I) Licence Math-Info, Parcours Informatique Master Informatique

• •


C’est quoi, les Tomettes2013 ???


C’est quoi, les Tomettes2013 ???

Jeux de lumière


C’est quoi, les Tomettes2013 ???

programmables (très!)


C’est quoi, les Tomettes2013 ???

un matĂŠriel actif (potentiellement)


C’est quoi, les Tomettes2013 ???

invitation aux artistes, architectes, ...


C’est quoi, les Tomettes2013 ???

un projet d’étudiants


C’est quoi, les Tomettes2013 ???

une étude de cas de systèmes embarqués


Tomette2013 est un système !


Tomette2013 est un système ! • Modules lumineux, les Tomettes ... • Environnement de développement avec simulateur

• Liens : machine virtuelle • Le principe est généralisable


La Tomette2010


Sur la Tomette micro Contrôleur « le cerveau »


Sur la Tomette 6 LED RVB


Sur la Tomette 6 Connecteurs Alimentation + Communication


Sur la Tomette Un peu d'ĂŠlectronique auxiliaire (presque rien)


Entre Tomettes Trois fiches : Alimentation (2) communication (1) Le cuivre du circuit imprimé est le câble d’alimentation des voisines


L’Environnement de dÊveloppement


Environnement de Développement Intégré • Un EDI est un logiciel qui intègre • L’editeur des programmes • Le compilateur • Un débugueur, ici : simulateur


l’EDI Tomette2013beta • Multi-Plateforme (Windows, Mac, Linux) • Permet de développer et de tester des animations sans avoir le matériel

• Cycle modification - test très rapide • Exportation de code pour le matériel • installation facile


Langage de programmation TOM • Syntaxe comme le langage C • Paradigme de programmation synchrone • exécution cyclique tous les 10ms • le programme doit s’arrêter tous les 10ms • présenté en sorte qu’on l’apprend en 30 minutes ( satisfait ou remboursé )

• Ca ne veut pas dire que la programmation est facile • il faut penser le parallélisme ...


Langage de programmation TOM • Compilateur intégré dans

l’Environnement de Développement

• Développement rapide ! • modifier • cliquer et voir


A quoi bon, pour qui?


Bientôt chez vous? • Le coût au m2 est dans l’ordre de 1000€ • Baisse du coût prévisible dans les 10 ans • En attendant • Projets d’Art Contemporain • Certains espaces publics • Discothèques


A quoi bon quelques pistes

• Outil pédagogique (c’est certain). • Architecture du futur (voir présent)? • Et si ça ne sert à rien, mais que ça intrigue,


Imaginez ... • Une grande installation de Tomettes dans un Musée d’Art Contemporain.

• La plateforme de programmation en téléchargement libre.

• Vous allez au Musée avec votre carte mémoire.

• Vous visitez votre propre oeuvre!


Comment รงa marche ...


Sur la Tomette micro Contrôleur « le cerveau »


Le micro Contrôleur (µC) • PIC18F4525 I/P de Microchip.com • Architecture 8bit (pas 64,32 ... !) • 40MHz, 10 M instructions par seconde • 48kO mémoire Flash • 3986 Octets RAM (pas GO, MO, kO ...) • coût unitaire ~ 4€


Tâches du µC • Varier la luminosité de 18 (6*3) LEDs • ce n’est pas la même chose que clignoter • Communiquer avec les voisins • Exécuter des programmes d’utilisateurs (grâce à une machine virtuelle dédiée)

• Ces tâches se font en quasi parallèle


Dans le rĂŠseau :

une Tomette est diffĂŠrente


Dans le rĂŠseau :

une Tomette est diffĂŠrente Tomette Maitresse


La Maitresse • Elle donne le rythme (100Hz), «signal sync» • Elle envoie le reset (par un ralentissement) • Elle diffuse des programmes à partir d’une carte mémoire (pas encore)


Broadcast du sync


Broadcast du sync


Broadcast du sync


Broadcast du sync


Broadcast du sync


Broadcast du sync


Conséquences du sync • Un réseau synchrone pour l’oeil • 0.5µs de décalage par Tomette • 5µs par mètre • 5ms par km! • Des voisines presque synchrones (0.5µs de décalage)


Entre Tomettes Communication privÊe entre voisines en parallèle


Communication synchrone, deux phases


Communication synchrone, deux phases


Aucune réponse est une réponse ! • Sur un câble ouvert on ne reçoit que des «1», jamais des « 0 »

• Les programmes peuvent utiliser ce fait pour repérer le bord


Eviter la confusion • La Tomette n’est pas un écran, elle est un médium, une brique

• Le programme se comporte différemment selon la structure (topologie).


Perspectives


Un projet, un système informatique complet •

Enseignements concernés :

• • • • • • •

Automates Programmation OO (Java ...) Compilation Systèmes d’Exploitation Réseaux et communication Algorithmes distribués Systèmes Embarqués


Un projet en cours • Vous voyez un prototype vieux d’une journée!

• Début du projet novembre 2009, deux groupes d’étudiants

• Poursuite en 2010/2011 avec un nouveau groupe d’étudiants


Un projet en cours • Amélioration de l’IDE • éditeur de topologie • intégration d’éléments d’architecture dans la visualisation

• simulation de Tomettes avec capteurs


Un projet en cours • Améliorations du langage TOM • retour de l’expérience • rendre la programmation plus facile


Coté électronique • Partenariat avec le BTS Electronique à

l’Ecole Modèle de L’Electronique, St Marcel

• optimisation de l’énergie • prototypage TOUT SMT • ajout de capteurs bon marché • variantes de circuits (linéaire, carré) pour différentes applications


Coté applications • Partenariat avec l’Ecole Supérieure de l’Architecture à Luminy

• Participer aux projets d’illumination en ville • Recherche de sponsors! • Et puis, il y a 2013 ...


Remerciements •

Aux Etudiants et leur investissement!

• • • •

Au Laboratoire d’Informatique Fondamentale A l’Ecole Centrale de Marseille A l’Ecole Modèle de l’Electronique A beaucoup de personnes qui ont aidé, discuté, inspiré !


Mini cours de programmation des Tomettes


Programmation des Tomettes • Le même programme sur chaque Tomette • Fonctionnement synchrone (le même rythme)

• Variables pour • contrôler les LEDs • communiquer


Un exemple en TOM byte i,j; // déclaration de variables, byte est le seule type actuellement // ce type est « unsigned » loop(100) // sorte de main, fréquence 100Hz { while(1){ i=0; while(i<3){ // les comparaisons sont non-signées j=0; while(j<6){ led[j][i]=255; sleep(10); // attendre ici, pendant 10 cycles, 100ms led[j][i]=0; j=j+1; } i=i+1; } } }


Orientations 5 4

0

1

3 2


Contrôler les LED • variable led est un double tableau • premier indexe, l’orientation • deuxième, couleur de base • 0 = rouge, 1 = vert, 2=bleu • valeurs entre 0 (noir) et 255 (clair) par couleur


Communiquer • variables « in » et

« out », indexé par

orientation

• out[i] pour écrire/envoyer à la voisine i • in[i] pour lire/recevoir de la voisine i • décalage d’un cycle • l’écriture sur out[i] arrive dans in[(i+3)

mod 6] chez le voisin un cycle plus tard

• actuellement, un octet (ça sera étendu)


Communiquer temps : n

out[3]=7 in[0]=?


Communiquer temps : n+1

out[3]=5 in[0]=7


Communiquer temps : n+2

out[3]=5 in[0]=5


Communiquer • Canal non connecté, in[i]=255 • Avant l’exécution, out[i]=0, au premier cycle, on a donc un moyen sur de reconnaître le bord.


Exemple « bords.tom » byte i; const byte nbLeds = 6; // déclaration d’une constante loop(100) { sleep(1); // au premier cycle pas encore de communication? // peut être un bug du simulateur i = 0; while(i < nbLeds) { if(!in[i]) led[i][0] = 0xFF; // 0xFF = 255 en héxadécimal else led[i][2] = 0xFF; i = i + 1; } sleep(1); }


Erreurs de débutants • Boucle sans sleep • Il faut absolument que le programme termine à chaque cycle sur un sleep

• Programmes trop rapides • Un sleep est 10ms, vous contrôler la

vitesse de votre animation avec les sleep!

• Ne confondez pas vitesse (efficacité) de programme avec vitesse de l’animation


Plusieurs « boucles » loop(100) // A { // quelque chose } loop (100) // B { // autre chose }

Quasi-parallélisme au niveau local ( la même Tomette ) :

• •

chaque boucle exécutée tous les 10ms

Communication avec variables

chaque cycle, les boucles sont exécutées dans l’ordre dans le fichier

Une valeur écrite par A sera lue par B dans le même cycle, une variable écrite par B sera lue par A le cycle suivant.


Plusieurs « boucles » loop(100) { // quelque chose } loop (100) { // autre chose }

• Quasi-parallélisme au niveau local : • chaque cycle, les boucles sont exécutées dans l’ordre

• Attention : le dernier qui écrit une variable de sortie (out, led) a raison!


Plusieurs « boucles » • Applications • superposer des animations • faire attention à la combinaison au niveau LED

• enchainer et modulariser • Exemple, générateur pseudo-aléatoire dans flocon.tom


Pour aller plus loin • Le langage TOM est une mise en oeuvre du paradigme de la programmation synchrone

• Ce paradigme est important dans

l’automatique, notamment en France.

• Langages Esterel et Scade/Lustre utilisés

pour des applications critiques, voir par exemple http://esterel-technologies.com, beaucoup de références sur ce principe.


Programmes synchrones Pas un cours ici, seulement le principe. Un programme synchrone a la forme suivante : initialisation (); while(1){ lire_entrees(); calculer(); ecrire_sorties(); attendre_periode(); }


Hypothèse synchrone Le calcul ne prend pas (trop) de temps échantillonnage/communication lecture des entrées calcul écriture des sorties

π


Programmes synchrones • Ce principe est universel et omniprésent dans l’automatique et l’informatique des couches basses.

• La difficulté est de structurer/modulariser des programmes synchrones

• Deux choix : • langages dédiés (Esterel ...) • ici : coroutines synchrones


Coroutines • Une coroutine est une procédure ou une

fonction qui interrompt sa propre exécution activement par une commande (ici : sleep) pour reprendre après cette commande lors du prochain appel.

• Introduit déjà en 1963 par M.E. Conway. • C’est un principe simple, après, c’est une question d’applications.


Coroutines • Coroutines = « threads pour les pauvres » • Presque aucun effort pour la mise en oeuvre, disponible partout (par exemple avec trois macros C) :

• http://en.wikipedia.org/wiki/Coroutine


Le langage TOM • Le principe derrière le langage TOM est combinaison inspirée par • des coroutines • le langage Lustre et sa traduction en C • L’objectif : apprentissage immédiate, sans suivre un cours sur la programmation synchrone. Learning by doing. Avec le simulateur des Tomettes :-)


Les Tomettes comme outil pĂŠdagogique pour lâ&#x20AC;&#x2122;apprentissage de la programmation synchrone


TOM vs Esterel/Scade •

Esterel est un langage de description d’automates. Il est très expressif par rapport à l’interaction des liens entre modules.

Scade/Lustre est un langage basé sur le principe des circuits et des flots de données.

TOM est une certaine façon d’écrire des programmes synchrones en C sans encombrement syntaxique.


Avantages/ Inconvénients de TOM • Avantages : • familiarité syntaxique avec C • sémantique déterministe par • •

construction, comme les « vrais » langages synchrones. concentration sur la difficulté fondamentale de la programmation synchrone (penser parallèle, synchrone) suffisance pour le domaine d’application


Avantages/ Inconvénients de TOM • Inconvénients : • peu de moyens de structuration de •

grands projets (pas nécessaire pour le domaine d’application) sémantique opérationnelle ne permet pas aisément de générer d’autres implémentations (circuits, etc.)


Avantages/ Inconvénients de TOM synthèse (par l’expérience pédagogique) les étudiants arrivent plus vite à maitriser le principe des coroutines synchrones et à réaliser des programmes sophistiqués qu’avec les langages dédiées les coroutines synchrones sont donc préférables pour l’apprentissage de la programmation synchrone l’apprentissage de langages dédiés sera facilité par une expérience préalable avec les coroutines synchrones

• • •


Expérience pédagogique prévue pour 2011 • Introduction de la programmation synchrone sur deux voies :

• Programmation des Tomettes • coroutines en C avec macros

• TPs avec un résultat visuel individuel pour chaque étudiant.

• Appropriation d’un outil disponible partout

tomettes 2013  

Projet de jeux de lumières imaginé par Peter Niebert du LIF (Laboratoire d'informatique fondamentale de Marseille)

Read more
Read more
Similar to
Popular now
Just for you