https://edutechwiki.unige.ch/fmediawiki/api.php?action=feedcontributions&user=Djamileh+Aminian&feedformat=atomEduTech Wiki - Contributions [fr]2024-03-28T16:22:37ZContributionsMediaWiki 1.39.6https://edutechwiki.unige.ch/fmediawiki/index.php?title=Utilisateur:Djamileh_Aminian&diff=177318Utilisateur:Djamileh Aminian2024-03-01T18:24:59Z<p>Djamileh Aminian : Page blanchie</p>
<hr />
<div></div>Djamileh Aminianhttps://edutechwiki.unige.ch/fmediawiki/index.php?title=Discussion:L%E2%80%99observation_de_soi_sur_l%E2%80%99apprentissage_collaboratif&diff=166865Discussion:L’observation de soi sur l’apprentissage collaboratif2022-11-01T09:11:13Z<p>Djamileh Aminian : /* Retour sur production -- ~~~~ */ nouvelle section</p>
<hr />
<div>== Retour sur production -- [[Utilisateur:Djamileh Aminian|Djamileh Aminian]] ([[Discussion utilisateur:Djamileh Aminian|discussion]]) 1 novembre 2022 à 10:11 (CET) ==<br />
<br />
Production intéressante, avec une problématique bien présentée et une argumentation développée à l’aide de concepts pertinents. Bravo !<br />
<br />
Vous proposez des pistes de recherche à explorer pour favoriser l’observation de soi, comment traduire cette dimension dans un environnement d’apprentissage en ligne ? quels outils pourrions-nous utiliser pour la soutenir ?</div>Djamileh Aminianhttps://edutechwiki.unige.ch/fmediawiki/index.php?title=Discussion:Apprendre_c%27est_surmonter_des_obstacles&diff=166864Discussion:Apprendre c'est surmonter des obstacles2022-11-01T09:10:47Z<p>Djamileh Aminian : /* Retour sur production -- ~~~~ */ nouvelle section</p>
<hr />
<div>== Retour sur production -- [[Utilisateur:Djamileh Aminian|Djamileh Aminian]] ([[Discussion utilisateur:Djamileh Aminian|discussion]]) 1 novembre 2022 à 10:10 (CET) ==<br />
<br />
Excellente production sur les obstacles rencontrés durant l’apprentissage, argumentée de manière pertinente et concise sur la base des articles étudiés. La structure est fluide, les concepts utilisés sont sourcés et bien mis en lien. Bravo !<br />
<br />
Pour aller plus loin : comment aider les apprenant·es et/ou les concepteur·ices de formation à identifier et faire expliciter les obstacles pour y offrir une remédiation, et notamment dans des environnements d’apprentissage à distance.</div>Djamileh Aminianhttps://edutechwiki.unige.ch/fmediawiki/index.php?title=Discussion:Faut-il_privil%C3%A9gier_l%27apprentissage_en_groupe_%3F&diff=166863Discussion:Faut-il privilégier l'apprentissage en groupe ?2022-11-01T09:10:25Z<p>Djamileh Aminian : /* Retour sur production -- ~~~~ */ nouvelle section</p>
<hr />
<div>== Retour sur production -- [[Utilisateur:Djamileh Aminian|Djamileh Aminian]] ([[Discussion utilisateur:Djamileh Aminian|discussion]]) 1 novembre 2022 à 10:10 (CET) ==<br />
<br />
Sujet délicat et ambitieux, bien traité et argumenté à l’aide de sources pertinentes. La production est claire et bien structurée. Vous nuancez les avantages et les inconvénients de l’apprentissage collaboratif sans prendre position, en justifiant la complexité du sujet. Bravo !<br />
<br />
Je vous retourne vos questions de la fin : si c’est à l’enseignant·e de déterminer la composition d’un groupe, quels outils pourraient être mis à disposition pour l’aider à optimiser les travaux de groupe ?</div>Djamileh Aminianhttps://edutechwiki.unige.ch/fmediawiki/index.php?title=Discussion:G%C3%A9rer_la_demande_d%27aide_des_novices&diff=166862Discussion:Gérer la demande d'aide des novices2022-11-01T09:09:40Z<p>Djamileh Aminian : /* Retour sur production -- ~~~~ */ nouvelle section</p>
<hr />
<div>== Retour sur production -- [[Utilisateur:Djamileh Aminian|Djamileh Aminian]] ([[Discussion utilisateur:Djamileh Aminian|discussion]]) 1 novembre 2022 à 10:09 (CET) ==<br />
<br />
Sujet intéressant et bien développé. Le fil rouge du texte permet de répondre à la problématique par l’argumentation avec les lectures proposées et complémentaires. Les sources sont pertinentes et bien utilisées. Bravo!<br />
<br />
Il pourrait être intéressant de poursuivre votre réflexion et de réfléchir à la mise en place de dispositifs de demande d’aide dans des environnements d’apprentissage à distance et leurs conditions de réussite.</div>Djamileh Aminianhttps://edutechwiki.unige.ch/fmediawiki/index.php?title=Discussion:R%C3%A9flection_sur_comment_optimiser_l%27apprentissage_autodirig%C3%A9&diff=166861Discussion:Réflection sur comment optimiser l'apprentissage autodirigé2022-11-01T09:09:19Z<p>Djamileh Aminian : /* Retour sur production -- ~~~~ */ nouvelle section</p>
<hr />
<div>== Retour sur production -- [[Utilisateur:Djamileh Aminian|Djamileh Aminian]] ([[Discussion utilisateur:Djamileh Aminian|discussion]]) 1 novembre 2022 à 10:09 (CET) ==<br />
<br />
Thématique très bien traitée et sourcée, le développement est limpide et vous argumentez sur la base des lectures étudiées. Très bonne production, bravo !<br />
<br />
Un point d’intérêt : vous mentionnez que les apprenant·es doivent pouvoir choisir les ressources adaptées afin de minimiser les charges cognitives non essentielles. Mais comment le faire alors que l’on est novice dans un domaine ?<br />
Il pourrait être très intéressant de réfléchir à comment mettre à disposition des environnements d’apprentissage qui facilitent la sélection de ressources adaptées à son niveau actuel, sans les connaissances qui permettent de le déterminer (par exemple, avec l’aide de pairs ou de moteurs de recommandations ?)</div>Djamileh Aminianhttps://edutechwiki.unige.ch/fmediawiki/index.php?title=Discussion:L%E2%80%99%C3%A9chec_d%E2%80%99un_groupe_:_%C3%A0_qui_la_faute_%3F&diff=166860Discussion:L’échec d’un groupe : à qui la faute ?2022-11-01T09:08:46Z<p>Djamileh Aminian : /* Retour sur production -- ~~~~ */ nouvelle section</p>
<hr />
<div>== Retour sur production -- [[Utilisateur:Djamileh Aminian|Djamileh Aminian]] ([[Discussion utilisateur:Djamileh Aminian|discussion]]) 1 novembre 2022 à 10:08 (CET) ==<br />
<br />
Thématique ambitieuse et bien développée. Les références aux textes étudiés sont pertinentes, claires et bien structurées. La mise en lien avec l’expérience des lecteur·ices rend la lecture agréable. Bravo !<br />
<br />
Votre texte se concentre sur un bilan post-mortem du projet de groupe, il serait intéressant pour la suite de poursuivre la réflexion en analysant comment intégrer des espaces de régulation dans le groupe durant le projet.</div>Djamileh Aminianhttps://edutechwiki.unige.ch/fmediawiki/index.php?title=Discussion:R%C3%A9duction_des_tailles_des_classes_au_primaire:_quels_effets%3F&diff=166859Discussion:Réduction des tailles des classes au primaire: quels effets?2022-11-01T09:08:03Z<p>Djamileh Aminian : /* -- ~~~~ */ nouvelle section</p>
<hr />
<div>== -- [[Utilisateur:Djamileh Aminian|Djamileh Aminian]] ([[Discussion utilisateur:Djamileh Aminian|discussion]]) 1 novembre 2022 à 10:08 (CET) ==<br />
<br />
Thématique originale et bien traitée. <br />
<br />
Points d’attention : <br />
<br />
* Les références aux textes restent trop généraux, il manque des liens avec les concepts étudier. Le texte se concentre sur le nombre d’élèves en ne s’appuyant que de manière vague à Tricot et Dillenbourg.<br />
<br />
* Par ailleurs, quand vous posez des affirmations ou écrivez “beaucoup d’études …”, citez les sources. De même, ne citer pas de références bibliographiques que vous n’avez pas utilisées dans le texte. Les articles doivent se retrouver dans le texte.</div>Djamileh Aminianhttps://edutechwiki.unige.ch/fmediawiki/index.php?title=Discussion:Apprentissage_collaboratif_:_l%27importance_de_la_constitution_du_groupe&diff=166858Discussion:Apprentissage collaboratif : l'importance de la constitution du groupe2022-11-01T09:07:09Z<p>Djamileh Aminian : /* Retour sur production -- ~~~~ */ nouvelle section</p>
<hr />
<div>== Retour sur production -- [[Utilisateur:Djamileh Aminian|Djamileh Aminian]] ([[Discussion utilisateur:Djamileh Aminian|discussion]]) 1 novembre 2022 à 10:07 (CET) ==<br />
<br />
Excellente synthèse sur la thématique, développement sourcé et argumenté, concis. Bravo !<br />
<br />
Vous mettez en lien les concepts, en les appuyant ou en les nuançant avec d’autres sources. Votre conclusion met en perspective des applications concrètes dans les dispositifs.<br />
<br />
Il serait très intéressant d’analyser comment les appliquer concrètement dans vos projets, en particulier dans des dispositifs hybrides.</div>Djamileh Aminianhttps://edutechwiki.unige.ch/fmediawiki/index.php?title=Discussion:De_l%27individuel_au_collaboratif&diff=166857Discussion:De l'individuel au collaboratif2022-11-01T09:06:44Z<p>Djamileh Aminian : /* Retour sur production -- ~~~~ */ nouvelle section</p>
<hr />
<div>== Retour sur production -- [[Utilisateur:Djamileh Aminian|Djamileh Aminian]] ([[Discussion utilisateur:Djamileh Aminian|discussion]]) 1 novembre 2022 à 10:06 (CET) ==<br />
<br />
Production synthétique et claire, qui reprend les points clés des textes lus et les met en lien de manière pertinente pour appuyer le thème.<br />
Le choix de poser des questions dans l’introduction rend le texte pertinent pour les lecteur·ices.<br />
<br />
Points d’attention : la partie introduction contient des fautes d’orthographe et/ou de syntaxe, et citations aux normes APA à revoir.</div>Djamileh Aminianhttps://edutechwiki.unige.ch/fmediawiki/index.php?title=Discussion:Les_apports_de_l%E2%80%99h%C3%A9t%C3%A9rog%C3%A9n%C3%A9it%C3%A9_des_supports_de_travail&diff=166856Discussion:Les apports de l’hétérogénéité des supports de travail2022-11-01T09:05:38Z<p>Djamileh Aminian : /* Retour sur production -- ~~~~ */ nouvelle section</p>
<hr />
<div>== Retour sur production -- [[Utilisateur:Djamileh Aminian|Djamileh Aminian]] ([[Discussion utilisateur:Djamileh Aminian|discussion]]) 1 novembre 2022 à 10:05 (CET) ==<br />
<br />
Thématique intéressante et bien traitée à l’aide des trois textes. Le développement est clair et nuancé. Bravo !<br />
<br />
A vous lire, on pourrait penser que la charge cognitive distribuée dans le groupe présuppose que chaque élément du système a les mêmes capacités pour faire face aux contenus qu’il ou elle a reçu.<br />
Il pourrait être intéressant d’étudier les effets avec des niveaux de connaissances préalables différents et de la possibilité de différencier les contenus proposés dans le groupe.</div>Djamileh Aminianhttps://edutechwiki.unige.ch/fmediawiki/index.php?title=Discussion:Autonomie_dans_l%27apprentissage_:_le_probl%C3%A8me_de_la_volition_chez_l%27apprenant&diff=166855Discussion:Autonomie dans l'apprentissage : le problème de la volition chez l'apprenant2022-11-01T09:05:05Z<p>Djamileh Aminian : /* Retour sur production -- ~~~~ */ nouvelle section</p>
<hr />
<div>== Retour sur production -- [[Utilisateur:Djamileh Aminian|Djamileh Aminian]] ([[Discussion utilisateur:Djamileh Aminian|discussion]]) 1 novembre 2022 à 10:05 (CET) ==<br />
<br />
Production originale, mettant en lien des concepts clés des textes étudiés. La structuration des idées est claire, bon travail.<br />
<br />
A vous lire, un nombre important de facteurs liés à la réussite de l'apprentissage dépendent de l’individu.<br />
Dès lors, il serait intéressant, pour continuer votre réflexion, de comprendre comment concevoir des espaces d’apprentissage qui privilégient cette autonomie chez les apprenant·es.</div>Djamileh Aminianhttps://edutechwiki.unige.ch/fmediawiki/index.php?title=Discussion:L%27apprentissage_entre_pairs&diff=166854Discussion:L'apprentissage entre pairs2022-11-01T09:04:34Z<p>Djamileh Aminian : /* -- ~~~~ */ nouvelle section</p>
<hr />
<div>== -- [[Utilisateur:Djamileh Aminian|Djamileh Aminian]] ([[Discussion utilisateur:Djamileh Aminian|discussion]]) 1 novembre 2022 à 10:04 (CET) ==<br />
<br />
Production claire et concise sur les facteurs influençant l’apprentissage entre pairs.<br />
<br />
Votre production se concentre sur une synthèse des éléments de chaque article, vous pourriez bénéficier de les mettre en lien plus étroitement, afin d’argumenter sur les avantages et inconvénients lorsque vous concevez des dispositifs d’apprentissage qui doivent prendre en compte chacun de ces concepts.</div>Djamileh Aminianhttps://edutechwiki.unige.ch/fmediawiki/index.php?title=Discussion:La_m%C3%A9diation_par_autrui&diff=166853Discussion:La médiation par autrui2022-11-01T09:03:59Z<p>Djamileh Aminian : /* Retour sur production -- ~~~~ */ nouvelle section</p>
<hr />
<div>== Retour sur production -- [[Utilisateur:Djamileh Aminian|Djamileh Aminian]] ([[Discussion utilisateur:Djamileh Aminian|discussion]]) 1 novembre 2022 à 10:03 (CET) ==<br />
<br />
Production claire et bien argumentée; vous avez bien mis en lien des concepts issus de plusieurs des textes étudiés. Cette synthèse met en avant les apports et les contextes d’implémentation de la médiation.<br />
<br />
Petite remarque sur votre conclusion : “la médiation est essentielle dans l’apprentissage” peut sembler péremptoire, alors que les usages et cas d’application de la médiation, comme vous l’avez lu, dépend de nombreux facteurs facilitant comme entravant. Il serait intéressant de la nuancer en précisant dans quels contextes, caractéristiques des apprenant·es, nature de la tâche, etc.</div>Djamileh Aminianhttps://edutechwiki.unige.ch/fmediawiki/index.php?title=Discussion:L%27impact_de_l%27estime_de_soi_sur_une_formation_auto-r%C3%A9gul%C3%A9e&diff=166852Discussion:L'impact de l'estime de soi sur une formation auto-régulée2022-11-01T09:03:28Z<p>Djamileh Aminian : /* Retour sur production -- ~~~~ */ nouvelle section</p>
<hr />
<div>== Retour sur production -- [[Utilisateur:Djamileh Aminian|Djamileh Aminian]] ([[Discussion utilisateur:Djamileh Aminian|discussion]]) 1 novembre 2022 à 10:03 (CET) ==<br />
<br />
Très bonne synthèse de la thématique, avec un développement clair et structuré, et des références ciblées et pertinentes aux textes. Bravo!<br />
<br />
Vous finissez également avec des réflexions sur les conditions à mettre en place dans les environnements d’apprentissage, question que j’avais à vous poser et que j’espère vous intégrerez dans vos futurs travaux.<br />
<br />
Attention à vos références bibliographiques dans le texte, il faut mettre un “&” pour les textes où vous citez deux auteur·ices.</div>Djamileh Aminianhttps://edutechwiki.unige.ch/fmediawiki/index.php?title=Discussion:L%C3%A2cher-prise_pour_accompagner_l%27apprenant_en_difficult%C3%A9&diff=166851Discussion:Lâcher-prise pour accompagner l'apprenant en difficulté2022-11-01T09:02:43Z<p>Djamileh Aminian : /* Retour sur production -- ~~~~ */ nouvelle section</p>
<hr />
<div>== Retour sur production -- [[Utilisateur:Djamileh Aminian|Djamileh Aminian]] ([[Discussion utilisateur:Djamileh Aminian|discussion]]) 1 novembre 2022 à 10:02 (CET) ==<br />
<br />
Thématique originale et bien traitée. Les textes sont bien utilisés pour apporter des pistes pour répondre à la question, et la production est bien structurée.<br />
<br />
Un point d’attention : à quelques reprises, vous posez des affirmations non sourcées, par exemple le risque d'acharnement de la part de l’enseignant. D’où proviennent les affirmations concernant l’influence du lâcher-prise de l’enseignant ? Si elles sont issues du dernier article de la bibliographie, il faut le citer et si elles sont issues d’expériences de terrain, le préciser et nuancer la dimension affirmative.<br />
<br />
En outre, il ne faut pas citer dans la bibliographie des articles auxquels on ne fait pas référence dans le texte. Attention aussi aux normes APA.</div>Djamileh Aminianhttps://edutechwiki.unige.ch/fmediawiki/index.php?title=STIC:STIC_III_(2020)/Forces_rouge,_rose,_vert,_jaune_ou_bleu_!&diff=154755STIC:STIC III (2020)/Forces rouge, rose, vert, jaune ou bleu !2021-09-04T19:06:30Z<p>Djamileh Aminian : /* Retours des tests */</p>
<hr />
<div>{{bloc important|Projet réalisé par [[Utilisateur:Djamileh_Aminian|Djamileh]] & [[Utilisateur:Simon_Jöhr|Simon]]}}<br />
<br />
== Introduction ==<br />
Durant la dernière année, le passage forcé à la téléformation, soit la formation synchrone à distance, a eu comme effet positif de pousser certains spécialistes de l’éducation à revisiter leurs scénarios pédagogiques pour revenir aux fondamentaux : comment aider les élèves à apprendre ce qu’ils sont sensés apprendre et comment les accompagner au mieux dans leur apprentissage ? Souvent, les difficultés relevées lors des bilans des derniers mois de distantiel ont fait émerger des problèmes qui existaient déjà en présence, mais qui restaient latents ou ignorés.<br />
<br />
En ce sens, l’apprentissage est fortement influencé par les émotions par lesquelles passent les élèves au cours de la formation, et en particulier pendant les moments synchrones. Pourtant, il est très complexe de détecter, mesurer, ou même faire exprimer les étudiant-es sur leur ressenti.<br />
<br />
En donnant leurs cours en visioconférence, nombreux formateurs et formatrices ont exprimé leur frustration de ne pas réussir à évaluer l’état émotionnel et autres indices non verbaux de leurs participant.e.s, retours essentiels pour adapter une explication ou ajuster le rythme. Et cet effet est loin d’être limité à la distance : il est également bien présent dans une salle de classe où il reste complexe de capter en temps réel les émotions d’un étudiant, processus complexe et dynamique.<br />
<br />
Notre projet prend sa racine dans ce constat. Deux questions ont alors émergé : <br />
* comment mesurer l'état émotionnel d'un-e apprenant-e, <br />
* et surtout, pour quel usage ?<br />
<br />
Dans ce contexte, nous avons pensé un dispositif de partage des ressentis de la classe à destination de l'équipe enseignante, et une utilisation de cette donnée comme retour au groupe.<br />
<br />
== Problème ==<br />
<br />
Le but de ce projet est de proposer une solution ludique à la constitution de groupes en classe, que cela soit en présence, à distance ou de manière comodale. En utilisant un Arduino Uno ou des CPX, la phase de constitution de groupes sera ainsi rapide, aléatoire et "fun" !<br />
<br />
Le ''Problem Statement'' peut s’exprimer ainsi : « Comment peut-on aider les formateurs et formatrices à identifier rapidement les difficultés dans l’apprentissage et, le cas échéant, à réagir ? »<br />
<br />
== Cahier des charges == <br />
=== Contexte et public ===<br />
Le public cible est composé de formateurs et formatrices d’adultes, en entreprise ou en institut. Il pourrait également être élargi aux enseignante.s du scolaire, mais la conscientisation et l’expression d’une émotion sont suffisamment complexes pour limiter notre premier dispositif à des adultes, disposant, à priori, d’une compréhension plus fine de leur état émotionnel. De plus, l’asymétrie dans la relation est supposée moins forte dans un groupe d’adultes en formation que dans une classe avec un enseignant et des enfants ou adolescents.<br />
<br />
===Objectifs===<br />
Le but du dispositif est de :<br />
* permettre la communication d'un niveau émotionnel perçu par l'étudiant.e à l'enseignant.e<br />
* faire émerger un état général de la classe et les différences dans l'acquisition du contenu<br />
* de manière plus pragmatique, de créer des groupes sur la base des éléments communiqués<br />
<br />
===Besoins et contraintes===<br />
L'idée du projet a beaucoup évolué entre la phase d'identification des besoins et les constatations sur les possibilités offertes par la technologie et l'expertise à disposition. Nous détaillons ci-dessous les besoins et contraintes qui nous ont menés à la solution présentée plus bas.<br />
<br />
Partant au début d’une idée de jauge émotionnelle dynamique, donnant en tout temps l’état émotionnel d’un groupe de participants, nous avons rapidement détecté, en phase d'idéation avec plusieurs spécialistes en éducation, un aspect extrêmement anxiogène pour le formateur dont le groupe enverrait des signaux d’ennui ou de frustration, durant une explication. <br />
<br />
Afin de juguler cet effet, tout en conservant la possibilité de communiquer un message sur l’état, nous avons adapté le dispositif pour permettre aux étudiants de transmettre leur état à des moments spécifiques de la formation, intégrés dans le scénario pédagogique. L'émotion étant un élément sensible à conscientiser, exprimer et partager au sein d'un groupe, nous avons estimé plus judicieux de faire exprimer son niveau d'aisance face à un contenu qui vient d'être transmis. Ainsi, un-e enseignant-e scénarisera des moments d'autodiagnostic des étudiant-es sur leur perception de compétence sur la thématique. Cette information peut être utilisée pour réaliser des groupes de travail : (1) les personnes qui ont compris peuvent être orientées sur un contenu plus avancé, en échange pendant que l'enseignant organiser une séance de question-réponse avec les personnes en difficulté ou (2) des groupes peuvent être créés pour intégrer des étudiant-es qui ont compris avec des étudiant-es qui ont besoin d'aide.<br />
<br />
Le dispositif est donc pensé comme un outil de sondage à certains moments du cours, pour évaluer les besoins du groupe, dans son ensemble. Il est souvent difficile de récolter des informations sincères lors d’évaluations à chaud, les étudiants réticents à communiquer publiquement leurs difficultés ou désintérêts pour le contenu. Par la technique de transmission, les étudiants pourraient communiquer leur émotion de manière anonyme, favorisant l'authenticité.<br />
<br />
De manière intéressante au fur et à mesure de l'avance du projet, il est ressorti des discussions avec un échantillon du public cible que l'aspect de notre projet qui les intéressait était moins la communication des émotions, mais la création facilitée des groupes. En effet, les formateurs et formatrices ayant travaillé à distance durant la dernière année se sont habitués à disposer d'une fonction de création de groupe aléatoire, selon un nombre total de participants et un nombre de groupe visé. Cette fonction serait très utile également en présence, en utilisant une carte Arduino ou un CPX pour calculer une répartition des élèves par groupe, avec en entrée le nombre d'élèves et les sous-groupes. Une fois les groupes constitués, l'étape suivante est de communiquer ces groupes à l'ensemble de la classe au travers de Lilypad ou autres technologies portables qui s'allument selon la couleur de leur groupe.<br />
<br />
===Apports===<br />
* Cohésion et sentiment d'appartenance au groupe comme soutien à l'apprentissage<br />
* Expression d'un état émotionnel épistémique comme bénéfique à l'apprentissage<br />
<br />
===Présentation du projet===<br />
Suite aux premières itérations dans l'empathie et la définition du projet, nous avons identifié plusieurs points clés qui ont réorienté notre projet :<br />
* la création d'un réseau de cartes Bluetooth contrôlées par Arduino s'est révélée trop ambitieuse, suite au manque de projets existants ou d'expertise sur lesquels s'appuyer, <br />
* l'envie marquée de notre échantillon cible qui s'est dirigée sur l'aspect création de groupe plus que sur la connaissance des états affectifs.<br />
<br />
Nous avons donc revu le projet en le divisant en 3 niveaux de difficulté, afin de réaliser un prototype utilisable, puis de l'améliorer en fonction des retours et du temps à disposition.<br />
* '''Niveau 1 : Création de groupe aléatoire''' : intérêts : facilitation de la création des groupes (demande reçue d'un formateur : "parce que Zoom nous a bien aidé pour cela à distance, je veux la même chose en présence!")<br />
* '''Niveau 2 : Communication du groupe à l’apprenant''' : intérêts : gamification, sentiment d’appartenance, coopération, cohésion<br />
* '''Niveau 3 : Communication de son sentiment de compétence''' : intérêts : plus facile que d'exprimer ses émotions, et plus facile à gérer par l'enseignant.e, par exemple les gens qui ont compris avec celles-ceux qui n'ont pas compris<br />
<br />
Nous avons réalisé complètement le niveau 1, ainsi que prototypé et testé le niveau 2 avec des cables avant de pouvoir gérer par Bluetooth un Bluefruit spécifique dans un réseau comprenant plusieurs Bluefruits. Les solutions avec code et prototypes sont décrites dans la section suivante.<br />
<br />
== Solutions explorées ==<br />
<br />
===1er prototype===<br />
La première solution envisagée comporte deux objets : <br />
* Un '''émetteur''' : facile d’utilisation et agréable à porter, nous penchons pour la solution d’un bracelet contenant un micro circuit type Lilypad, Arduino Gemma ou Tinyduino. L’apprenant disposerait de 4 boutons-pressoirs pour 4 émotions majeures à transmettre (intérêt, confusion, frustration, incompréhension), symbolisés par des logos ou émoticônes. Les messages sont transmis par Bluetooth.<br />
* Un '''récepteur''' : Une jauge, comprenant une bande Neopixels, connectée à un Arduino Uno. Les LED symboliseraient deux dimensions fournies : la couleur pour le type d'émotion et le nombre pour la quantité d'étudiant.e.s ayant transmis l'information. L'Arduino pourrait gérer l'information, en émettant un son lors du dépassement d'un seuil prédéfini sur une émotion par exemple.<br />
<br />
====Maquettes====<br />
<u>1ère itération</u><br />
<br />
[[Fichier:Maquette_projet_STIC_III_Djamileh_et_Simon.jpg|néant|vignette|1103x1103px|Maquette n°1 du projet]]<br />
<br />
<u>2e itération</u><br />
<br />
L'Arduino Uno lance une séquence de randomisation de couleur, en affiche une, puis les participant.e.s font de même sur leur CPX. Si les couleurs affichées "matchent", le groupe est constitué et on peut ainsi passer à la constitution aléatoire du groupe suivant. <br />
[[Fichier:2e Maquette projet STIC III Djamileh et Simon .jpg|néant|vignette|1103x1103px|Maquette n°2 du projet]]<br />
<br />
====Code====<br />
<u>Version 1.0 du code CPX :</u> <syntaxhighlight lang="javascript"><br />
input.buttonA.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 200<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(40)<br />
color2 += Math.randomRange(1, 3)<br />
light.setPhotonPenHue(color2)<br />
}<br />
light.photonFlip()<br />
})<br />
input.buttonsAB.onEvent(ButtonEvent.Click, function () {<br />
control.reset()<br />
})<br />
input.buttonB.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 300<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
color2 += 3<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(50)<br />
}<br />
})<br />
let tonalité = 0<br />
let durée = 0<br />
let color2 = 0<br />
light.setBrightness(158)<br />
music.setVolume(167)<br />
forever(function () {<br />
<br />
})<br />
</syntaxhighlight><br />
<br />
===2e prototype===<br />
<br />
====Maquette====<br />
<u>'''Boîte émettrice'''</u><br />
[[Fichier:Boite CPX STIC III.png|néant|vignette|Plan découpe boîte émettrice CPX]]<br />
[[Fichier:Etiquettes Boite CPX STIC III.png|néant|vignette|Etiquettes boîte CPX]]<br />
[[Fichier:Maquette boîte CPX.png|néant|vignette|Rendu de la boîte]]<br />
[[Fichier:Dispositif "Master" d'envoi.jpg|néant|vignette|Dispositif "Master" d'envoi]]<br />
[[Fichier:Boite STIC III.jpg|néant|vignette|Boîte finale]]<br />
<u>'''Cadrans récepteurs'''</u><br />
[[Fichier:Bracelets CPX STIC III.png|néant|vignette|Cadrans récepteurs]]<br />
[[Fichier:2021-09-04 11.43.22.jpg|néant|vignette|Dispositif d'envoi et montre récéptrice]]<br />
<br />
====Code====<br />
[[Fichier:CPX firstproto.jpg|vignette|droite|Une étape dans le test du code - 5 binomes de noël! ]]<br />
La solution présentée ici s'occupe du niveau 1, soit la création de groupe aléatoire à l'aide d'un CPX Bluefruit.<br />
Elle a été codée en CircuitPython. Nous avons rédigé le code nous-mêmes, avec deux supports : la création du dictionnaire pour la randomisation été possible grâce à l'aimable contribution de notre collègue Jérôme. Concernant l'envoi et la réception de données par Bluetooth, nous nous sommes basés sur les [https://learn.adafruit.com/circuitpython-nrf52840/bluetooth-basics tutoriels Adafruit], ainsi que deux projets utilisant des fonctionnalités se rapprochant de notre projet :<br />
* [https://learn.adafruit.com/circuit-playground-bluefruit-neopixel-animation-and-color-remote-control projet 1]<br />
* [https://learn.adafruit.com/color-remote-with-circuit-playground-bluefruit projet 2]<br />
<br />
'''Code pour le CPB Emetteur'''<br />
<syntaxhighlight lang="python"><br />
# Groupify !<br />
# Un projet de S!m & Dja<br />
# Code CircuitPython pour la répartition dans les groupes (MASTER)<br />
<br />
"""<br />
SETUP GENERAL<br />
"""<br />
<br />
# LIBRAIRIES<br />
import random<br />
import time<br />
<br />
# Librairie pour gérer la bande neopixel du bluefruit<br />
from adafruit_circuitplayground.bluefruit import cpb<br />
<br />
# Librairies pour gérer la transmission bluetooth<br />
from adafruit_ble import BLERadio<br />
from adafruit_ble.advertising.standard import ProvideServicesAdvertisement<br />
from adafruit_ble.services.nordic import UARTService<br />
<br />
# Librairie pour envoyer la couleur<br />
from adafruit_bluefruit_connect.color_packet import ColorPacket<br />
<br />
# Helper function pour gérer la connexion entre plusieurs Bluefruits<br />
# reprise sur https://learn.adafruit.com/circuit-playground-bluefruit-neopixel-<br />
# animation-and-color-remote-control/remote-control-code<br />
def send_packet(uart_connection_name, packet):<br />
"""Returns False if no longer connected."""<br />
try:<br />
uart_connection_name[UARTService].write(packet.to_bytes())<br />
except: # pylint: disable=bare-except<br />
try:<br />
uart_connection_name.disconnect()<br />
except: # pylint: disable=bare-except<br />
pass<br />
return False<br />
return True<br />
<br />
<br />
# Input utilisateur<br />
participants = int(input("Nombre de participants : "))<br />
groupe = int(input("Nombre de groupes : "))<br />
<br />
"""<br />
CREATION DES GROUPES<br />
"""<br />
<br />
# création listes à long. variable (+ 1 pour compenser la numération depuis 0)<br />
liste_part = list(range(1, participants + 1)) # print(liste_part)<br />
nb_part = len(liste_part) + 1<br />
liste_groupe = list(range(1, groupe + 1)) # print(liste_groupe)<br />
<br />
# Déf. grille (dict. de listes) combinations possibles<br />
clé_tableau = str(participants) + "_" + str(groupe)<br />
# !!! ajouter combinaisons pas possible : eg. tour de roue lumineuse/son pourri !!!<br />
grille_repartition = {<br />
"10_5": [2, 2, 2, 2, 2],<br />
"10_4": [2, 2, 3, 3],<br />
"10_3": [3, 3, 4],<br />
"10_2": [5, 5],<br />
"9_4": [2, 2, 2, 3],<br />
"9_3": [3, 3, 3],<br />
"9_2": [4, 5],<br />
"8_4": [2, 2, 2, 2],<br />
"8_3": [2, 3, 3],<br />
"8_2": [4, 4],<br />
"7_3": [2, 2, 3],<br />
"7_2": [4, 3],<br />
"6_3": [2, 2, 2],<br />
"6_2": [3, 3],<br />
"5_2": [2, 3],<br />
"4_2": [2, 2],<br />
}<br />
# détermination du nb et taille des groupes à créer<br />
taille_groupe = grille_repartition[clé_tableau]<br />
print(taille_groupe)<br />
<br />
# création (dict) répartition aléatoire<br />
dict_repartition = {} # initialisation<br />
for i in range(0, len(taille_groupe)):<br />
dict_repartition[liste_groupe[i]] = [] # création des items du dictionnaire<br />
for j in range(0, taille_groupe[i]):<br />
etu = liste_part[random.randint(0, len(liste_part) - 1)]<br />
dict_repartition[liste_groupe[i]].append(etu)<br />
liste_part.remove(etu)<br />
# print (liste_part)<br />
# print (dict_repartition)<br />
print(dict_repartition)<br />
<br />
# Définition des groupes avec couleurs<br />
groupeList = list(dict_repartition.values())<br />
print(groupeList)<br />
<br />
# GESTION NEOPIXEL<br />
cpb.pixels.brightness = 0.05<br />
<br />
# Grille de définition des couleurs de groupe<br />
dict_couleur = {<br />
"gr1": (0, 255, 0),<br />
"gr2": (255, 0, 255),<br />
"gr3": (255, 255, 0),<br />
"gr4": (0, 255, 255),<br />
"gr5": (255, 0, 0),<br />
}<br />
# print(dict_couleur)<br />
<br />
# transf. dict -> list<br />
liste_couleur = list(dict_couleur.values())<br />
print("liste de couleur totale: ", liste_couleur)<br />
<br />
# définition des couleurs selon nb de groupe<br />
dict_neopix = {}<br />
for i in range(0, len(taille_groupe)):<br />
codecouleur = liste_couleur[i]<br />
dict_neopix[i] = codecouleur<br />
# print(dict_neopix)<br />
<br />
# transf. dict -> list<br />
liste_neopix = list(dict_neopix.values())<br />
print("liste de couleur spécifique: ", liste_neopix)<br />
<br />
# Attribution des couleurs par pixel<br />
liste_pixels = []<br />
for i in range(0, nb_part):<br />
for j in range(0, len(taille_groupe)):<br />
if i in groupeList[j]:<br />
pix = liste_neopix[j]<br />
liste_pixels.append(pix)<br />
print("couleurs des pixels : ", liste_pixels)<br />
<br />
"""<br />
TRANSMISSION AUX BLUEFRUITS PARTICIPANTS (SLAVES)<br />
"""<br />
# Setup de la transmission<br />
ble = BLERadio()<br />
uart_service = UARTService()<br />
advertisement = ProvideServicesAdvertisement(uart_service)<br />
<br />
uart_connection = None<br />
# Controle sur des connexions disponibles<br />
if ble.connected:<br />
for connection in ble.connections:<br />
if UARTService in connection:<br />
uart_connection = connection<br />
break<br />
<br />
while True:<br />
# Allumage de la bnde neopixel / visualisation des groupes formés<br />
for i in range(0, nb_part - 1):<br />
cpb.pixels[i] = liste_pixels[i]<br />
<br />
# Gestion de la transmission<br />
if not uart_connection or not uart_connection.connected:<br />
# Condition : pas de connexion > scan<br />
print("Scanning...")<br />
for adv in ble.start_scan(ProvideServicesAdvertisement, timeout=5): # Scan...<br />
if UARTService in adv.services: # si periphérique existe<br />
print("Found a UARTService advertisement.")<br />
uart_connection = ble.connect(adv) # crée une connexion<br />
break<br />
# Arrêt du scannage de l'environnement<br />
ble.stop_scan()<br />
<br />
# si connexion existante :<br />
while uart_connection and uart_connection.connected:<br />
if cpb.button_a: # Transmission des données neopixels avec A<br />
print("Bouton A - envoi données")<br />
color = cpb.pixels[0]<br />
if not send_packet(uart_connection, ColorPacket(color)):<br />
uart_connection = None<br />
continue<br />
time.sleep(0.1) # Delay to prevent sending packets too quickly.<br />
</syntaxhighlight><br />
<br />
'''Code pour le CPB Récepteur (participants)'''<br />
<syntaxhighlight lang="python"><br />
"""<br />
Code pour les bluefruits participants<br />
"""<br />
import time<br />
<br />
from adafruit_circuitplayground.bluefruit import cpb<br />
<br />
from adafruit_ble import BLERadio<br />
from adafruit_ble.advertising.standard import ProvideServicesAdvertisement<br />
from adafruit_ble.services.nordic import UARTService<br />
<br />
from adafruit_bluefruit_connect.packet import Packet<br />
from adafruit_bluefruit_connect.color_packet import ColorPacket<br />
<br />
num_pixels = 10<br />
<br />
# animation initiale - "chase" est une animation de base dans les librairies<br />
# d'animation pour neopixel (cf neopixel überguide)<br />
def color_chase(color, wait):<br />
for i in range(num_pixels):<br />
cpb.pixels[i] = color<br />
time.sleep(wait)<br />
cpb.pixels.show()<br />
time.sleep(0.5)<br />
<br />
<br />
# Grille des couleurs de groupe pour animation<br />
dict_couleur = {<br />
"gr1": (0, 255, 0),<br />
"gr2": (255, 0, 255),<br />
"gr3": (255, 255, 0),<br />
"gr4": (0, 255, 255),<br />
"gr5": (255, 0, 0),<br />
}<br />
<br />
liste_couleur = list(dict_couleur.values())<br />
print(liste_couleur)<br />
<br />
# Setup standard pour la réception<br />
ble = BLERadio()<br />
uart = UARTService()<br />
advertisement = ProvideServicesAdvertisement(uart)<br />
<br />
cpb.pixels.brightness = 0.05<br />
receptionGroupe = False<br />
<br />
while True:<br />
ble.start_advertising(advertisement)<br />
<br />
while not cpb.switch:<br />
for i in range(0, len(liste_couleur)):<br />
couleurCode = liste_couleur[i]<br />
color_chase(couleurCode, 0.05)<br />
<br />
if cpb.switch:<br />
while not ble.connected:<br />
pass<br />
ble.stop_advertising()<br />
<br />
while ble.connected:<br />
if uart.in_waiting:<br />
packet = Packet.from_stream(uart)<br />
if isinstance(packet, ColorPacket):<br />
cpb.pixels.fill(packet.color)<br />
</syntaxhighlight><br />
<br />
== Test(s) de la solution ==<br />
<br />
===Cognitive walkthrough===<br />
<br />
Pour produire ce cognitive walkthrough, nous nous sommes basés sur les principes du [https://edutechwiki.unige.ch/en/Cognitive_walkthrough#Fluid_project_overview Fluid Project].<br />
<br />
==== Persona ====<br />
[[Fichier:PERSONA INGO NITO.jpg|néant|cadre]]<br />
<br />
==== Objectifs ====<br />
<br />
* Créer des groupes grâce au dispositif émetteur<br />
* Communiquer ces groupes aux dispositifs récepteurs<br />
* Renforcer l'engagement grâce à un dispositif ludique et actif<br />
<br />
==== Scénario d'utilisation ====<br />
<br />
# (en amont) Réfléchir à un combien de groupes seront créés en fonction du nombre de participant.e.s disponible.s<br />
# Allumage du dispositif<br />
# Lancement du dispositif<br />
# Réalisation d'une séquence de composition de groupe<br />
# Lancement et réalisation de la séquence suivante de communication avec envoi des groupes constitués aux dispositifs distants<br />
# Mise hors tension du dispositif<br />
<br />
=== Tests utilisateur·trice·s===<br />
<br />
==== '''Scénario final''' ====<br />
Le test utilisateur est une méthode utilisée pour évaluer l’expérience utilisateur d’un système, mais également les forces et les faiblesses de celui-ci. Cette méthode, consiste à mettre l’utilisateur·trice en situation « réelle » afin d’observer ses comportements et ses actions lorsqu’il exécute des tâches prédéfinies qui lui sont administrées sous la forme d’un scénario. Il leur est alors demandé de nous renseigner sur leurs expériences.<br />
<br />
Lors de cette phase, un prototype du projet est présenté à des utilisateur·trices recrutés au sein du public cible. A ce stade, le prototype devrait être suffisamment abouti pour offrir les principales fonctionnalités constitutives de la version finale. Néanmoins, il diffère de celle-ci puisque certaines fonctionnalités accessoires ne pourraient ne pas être encore implémentées. En présentant assez tôt un produit relativement proche de la version finale, nous entendons nous assurer que les directions prises dans les précédentes phases de conception soient les plus à même de répondre aux besoins des utilisateur·trice·s. Le prototype sera modifié en fonction des retours formulés par les observations réalisées ainsi que par les analyses des résultats des tests. <br />
<br />
Le test utilisateur se déroulera en 3 étapes :<br />
#Accueil des participants<br />
#Réalisation des tâches<br />
#Entretien succinct<br />
<br />
Dans la première étape, le participant sera accueilli, le contexte et le test utilisateur lui seront alors présentés de manière générale. Lors du test, l’utilisateur·trice « découvrira » le dispositif en réalisant des tâches préparées au préalable (scénario des tâches). Ici, nous éprouverons l’expérience de l’utilisateur·trice.<br />
<br />
Après avoir exposé le contexte dans lequel le scénario prend place, nous demanderons à la personne d’accomplir les tâches décrites dans le tableau "scénario des tâches". De plus, nous encouragerons le/la participant·e à formuler à voix haute ses pensées et ressentis lors de l’utilisation de l’outil. <br />
<br />
Les participant·e·s seront accueillis avec la consigne suivante : <br />
{{Citation encadrée | ''Merci d’avoir accepté de faire ce test avec moi aujourd'hui. Je travaille sur le développement d’un outil pour la constitution aléatoire de groupes de travail dans une classe. Cette technique permet de constituer des groupes rapidement et de communiquer ceux-ci aux participant.e.s quasi instantanément.''}}<br />
<br />
Le scénario des tâches se composera de deux éléments : le contexte et les tâches à effectuer par le/la participant.e. Le contexte aura pour but de mettre l’utilisateur·trice dans une situation réaliste qui se rapprochera de son quotidien et/ou du contexte pendant lequel il pourrait être mené à utiliser le dispositif. Le contexte sera formulé de la manière suivante :<br />
<br />
{{Citation encadrée | ''Vous êtes au début d’une activité de débat, dans votre classe, avec vos étudiant.e.s. Pour réaliser cette activité, vous devez d’abord constituer des groupes de manière aléatoire, avec les étudiant.e.s qui composent votre cours. Pour se faire, vous allez donc devoir utiliser le dispositif-prototype en annexe.''<br />
<br />
''Le dispositif à tester se compose de plusieurs éléments. Le premier élément est le dispositif émetteur. Il va être utilisé pour composer les groupes d’étudiant.e.s de manière aléatoire et par couleur. <br />
Ensuite, avec les boutons présents sur celui-ci, il sera capable de transmettre les données choisies aux dispositifs récepteurs annexes.''<br />
<br />
''Durant le test, vous allez être amené.e à utiliser les différents dispositifs cités afin de réaliser plusieurs tâches. Celles-ci ne devraient pas être trop compliquées et ne nécessiteront, non plus , pas trop de temps de réalisation.''}}<br />
<br />
Après avoir exposé le contexte dans lequel le scénario prend place, nous demanderons au participant d’accomplir les tâches décrites dans le tableau "scénario des tâches".<br />
<br />
Pour l’étape des tâches, nous donnerons les consignes suivantes :<br />
<br />
{{Citation encadrée |''Avant de commencer le test et les tâches, n’hésitez pas à poser des questions si un/des élément(s) ne vous paraissent pas clair(s). Nous restons bien entendu à disposition, si besoin , durant la réalisation des tâches. <br />
''}}<br />
<br />
Chaque tâche sera expliquée au fur et à mesure au participant.<br />
{| style="border: 1px solid black; border-spacing: 0; margin: 0.5em auto;"<br />
|+ '''Scénario des tâches'''<br />
|-<br />
! style="border: 1px solid black; padding: 5px; background: #D4D4D8; width: 200pt;" | Tâche 1<br />
| style="border: 1px solid black; padding: 5px; vertical-align: top; width: 400pt;" |''Pour commencer, veuillez trouver comment allumer le dispositif. Une fois que c’est fait, vous pouvez passer à la tâche suivante.''<br />
|-<br />
! style="border: 1px solid black; padding: 5px; background: #D4D4D8; width: 200pt;" |Tâche 2<br />
| style="border: 1px solid black; padding: 5px; vertical-align: top; width: 400pt;" |''Comme seconde tâche, veuillez décider de combien de groupes vous aurez besoin selon le nombre d’élèves à votre disposition. ''<br />
|-<br />
! style="border: 1px solid black; padding: 5px; background: #D4D4D8; width: 200pt;" | Tâche 3<br />
| style="border: 1px solid black; padding: 5px; vertical-align: top; width: 400pt;" |''Comme tâche suivante, renseignez les informations souhaitées sur le dispositif émetteur (nombre de groupes et nombre d’élèves). ''<br />
|-<br />
! style="border: 1px solid black; padding: 5px; background: #D4D4D8; width: 200pt;" | Tâche 4<br />
| style="border: 1px solid black; padding: 5px; vertical-align: top; width: 400pt;" |''Comme dernière tâche, envoyez les données depuis le dispositif émetteur aux dispositifs récepteurs. ''<br />
|-<br />
|<br />
|<br />
|}<br />
<br />
==== Vidéo du test utilisateur.trice.s ====<br />
[[Fichier:Users Tests.ogg|néant|vignette|600x600px]]<br />
<br />
==== Retours des tests ====<br />
<br />
Nos trois testeurs ont une testé autant le côté participant que formateur.<br />
<br />
Deux sont des formateurs.trices d'adulte qui animent des groupes de 1 à 25 personnes, en présence, en créant régulièrement des activités de sous-groupes et ont exprimé un réel intérêt à posséder un outil leur permettant de varier la façon de créer des groupes et surtout de ne pas avoir à choisir eux-mêmes, bénéficiant de l'aléatoire comme expérimenté à distance avec des outils de visioconférence.<br />
<br />
Le dernier testeur est facilitateur dans des workshops de co-création et Design Thinking. Il est donc régulièrement amené à créer des sous-groupes, pour des groupes de tailles pouvant aller jusqu'à 50. Pour lui aussi, l'outil présente une plue-value, si son design pouvait être adapté à des groupes plus grands.<br />
<br />
Les retours sont classés par rôle (formateur/participant). Comme la plupart des retours ont été très similaires, nous les avons regroupé en spécifiant s'il s'agissait d'une ou plusieurs personnes.<br />
<br />
'''Côté formateur.trice''' (CPB émetteur)<br />
<br />
* Le son n’est pas indispensable selon le formateur. Mais, une étape de validation ou un autre retour serait à envisager. <br />
<br />
* Pas de manque particulier. Cependant, il faudrait poser des conditions automatiques ou en tout cas que les processus soient automatiques sans une maîtrise de la part du formateur. En gros, n’importe qui de la classe pourrait le faire. Une solution serait de demander à quelqu’un.e dans la classe s’il/elle veut procéder au lancement du processus des groupes.<br />
<br />
* Concernant les couleurs, comme elles ne sont pas arrangées dans un ordre précis et que les positions des LED sont décalées, cela perturbe un petit peu. Mais, on comprend que c’est une logique de programmation. Cela serait simplement plus agréable visuellement pour un utilisateur sur 3.<br />
<br />
* Une remarque a été produite concernant la possibilité de garder en main les objets plutôt que de les avoir comme montre au poignet (participant) ou dans une boîte (formateur). En rendant disponible le dispositif à la main directement cela peut démontrer que tout le monde est logé à la même enseigne et qu’il n’y a pas de différences entre l’enseignant et les élèves. Tout le monde a le même objet.<br />
<br />
* Il serait amusant d’ajouter une compétition afin de déterminer si un.e élève choisit et effectue la composition des groupes plutôt que le formateur. Celui qui a la montre qui s’allume par exemple dans la classe en premier pourra alors lancer la séquence de randomisation au lieu du prof. Cela donnerait un côté ludique et encore plus engageant, voire plus hasardeux et permettrait d’aller plus loin que le seul processus de composition aléatoire des groupes par couleurs. <br />
<br />
* Le retour (ou annulation de fonction) n’est pas possible. Cela n’est pas contraignant en soi mais un peu dérangeant selon le testeur-formateur. <br />
<br />
* Le premier testeur a eu envie de secouer le CPB au moment de créer les groupes. Il aurait aimé ne pas avoir à appuyer sur des boutons, mais d’utiliser l’aspect aléatoire de secouer l’objet, comme une boule 8 magique. Cela lui donnerait une meilleure impression que cela est réellement une génération aléatoire de groupes.<br />
<br />
* Il y a globalement eu un besoin de mieux valider les différentes étapes chez les 3 testeurs. Le premier aurait apprécié intégrer les données avec les boutons A et B, valider avec la slider et avoir un retour visuel (changement de couleur des LED) pour valider l’action. Contrairement aux deux autres testeurs, il a aimé devoir appuyer sur un bouton pour envoyer les données aux récepteurs participants. Cela démontre des différences dans les envies et besoins de contrôle des utilisateurs.<br />
<br />
<br />
'''Côté participant.e''' (CPB récepteur)<br />
<br />
* Le “slider” ne devrait pas être obligatoire à utiliser car il devrait y avoir une étape automatique et directe de réception de la couleur de groupe. Remarque identique pour la seconde participante.<br />
<br />
* La découverte du dispositif est agréable, “cool”. On a envie de savoir comment cela fonctionne. Le rendu et la structure, cela rend bien. La rotation des couleurs du dispositif de réception fait penser à un casino ; l’attente devient cool et excitante : la participante était impatiente de connaître son groupe.<br />
<br />
* Il devrait y avoir du son ou une vibration pour valider les étapes ou en tout cas un retour visuel qui viendrait sanctionner les manipulations sur le dispositif. Cela pourrait être une petite musique qui annonce le groupe attribué. La 2e testeuse rapporte que cela donne le sentiment “d’avoir gagné”.<br />
<br />
* Une remarque a été formulée concernant l’utilisation de ce type de dispositif sur toute une journée de cours. En effet, cela peut être répétitif si à chaque fois que l’on doit former des groupes, les participant.e.s doivent utiliser le dispositif. Il devrait apporter une certaine plus-value selon un des testeurs. L’idée d’ajouter un écran au dispositif a été proposée, où des consignes pourraient s’afficher ; cela donnerait un aspect utile en plus. Le dispositif pourrait ainsi faciliter les activités de groupes en plusieurs phases : les participants se regroupent selon la couleur reçue et ils reçoivent une première consigne. Puis le formateur envoie le temps restant et la suite des activités, jusqu’au retour en plénière.<br />
<br />
* Concernant le dispositif de réception, la “montre”, son utilité et son design ont été remis en question. Il pourrait être sous forme de patch ou pin’s plutôt qu’un objet au poignet selon les utilisateur.trice.s. En effet, des participant.e.s ont peut-être déjà des montres ou des bracelets au poignet ce qui pourrait être contraignant. De plus, à cette phase du prototypage, comme il ne s’agit que d’allumer une LED, il serait envisageable d’utiliser de la broderie numérique et d’y intégrer une micro-circuit avec une LED (i.e. Gemma, Flora)<br />
<br />
== Discussion ==<br />
=== Design === <br />
Le design actuel est parti d'une idée d'utiliser la découpe laser pour la boîte émettrice et une forme de montre pour les récepteurs participants, avec un côté vintage et nostalgique des séries des années 80.<br />
Cela dit, nous avions tout de même recherché des produits plus petits et plus discrets, faciles à transporter et à manipuler.Cela s'est confirmé lors des tests, où en fin de compte, les participants ont apprécié avoir des objets légers et faciles à manipuler en main. Pour un prochain prototype, nous nous orienterions vers un Gemma ou Flora, sur un patch en broderie numérique pour les récepteurs participants.<br />
<br />
Du côté émetteur, il est resté jusqu'à la fin la difficulté de l'input du nombre de participants et du nombre de groupes attendus. Les potentiomètres se sont avérés trop complexes, autant pour comprendre ce qu'il fallait commander que pour programmer des niveaux de voltage correspondant à des seuils de chiffre. Pour pallier cette difficulté, nous avons tenté d'utiliser les éléments du CPB, soit les boutons et la slider. Cependant, cela nécessite des manipulations longues (par exemple : bouton A pour ajouter un participant, bouton B pour en enlever, slider pour valider) et rend l'opération fastidieuse. <br />
<br />
Enfin, l'utilisation de la bande neopixel du CPB limite le nombre total de participants à 10. Pour une prochaine itération, nous utiliserions une bande externe permettant la gestion de groupes plus larges.<br />
<br />
=== Résultats des tests utilisateurs === <br />
Une partie des retours utilisateurs ont été intégrés dans la section Design, car ils faisaient écho à nos propres envies, qui n'avaient pas été réalisables techniquement. Nous retenons les points clés suivants pour les prochaines itérations du projet, en avantages et faiblesses : <br />
<br />
Les avantages sont :<br />
* un aspect ludique qui rend excitant le moment de passage à l'activité de sous-groupe et qui renforce l'engagement<br />
* un effet d'appartenance et de cohésion <br />
* une dimension pédagogique de rééquilibrage des postures : la personne qui forme peut choisir de contrôler la création des groupes ou de la rendre démocratique par sa délégation à un membre de la classe. Cela permet de garder une réelle impression de hasard<br />
<br />
Du côté des faiblesses à améliorer :<br />
* Encore trop complexe et long par rapport à sa réelle plus-value. Il faudrait soit simplifier son utilisation (moins d'étapes intermédiaires (clic, slide) ou lui ajouter des fonctionnalités de communications avec les groupes (consignes, temps restants, etc.)<br />
* Le design actuel semble trop envahissant (boite, montre). Il faudrait le rendre plus facile à manipuler, porter et à oublier lorsqu'il n'est pas utilisé<br />
<br />
== Licence, fichiers et documentation ==<br />
[[Fichier:By-nc.png|150px]] Cette œuvre est mise à disposition selon les termes de la [http://creativecommons.org/licenses/by-nc/4.0/ Licence Creative Commons Attribution - Pas d’Utilisation Commerciale 4.0 International].<br />
<br />
* Fichiers :<br />
Fichiers avec code émetteur et récepteur : [[Fichier:Code source.zip|vignette]]<br />
<br />
* Documentation : <br />
Guide utilisateur : [[Fichier:Userguide.pdf]]<br />
<br />
== Bibliographie ==<br />
<br />
* Blair, C., Calkins, S., & Kopp, L. (2010). Self-regulation as the interface of emotional and cognitive development: Implications for education and academic achievement.<br />
* Pekrun, R., Goetz, T., Titz, W., & Perry, R. P. (2002). Academic emotions in students' self-regulated learning and achievement: A program of qualitative and quantitative research. Educational psychologist, 37(2), 91-105.</div>Djamileh Aminianhttps://edutechwiki.unige.ch/fmediawiki/index.php?title=STIC:STIC_III_(2020)/Forces_rouge,_rose,_vert,_jaune_ou_bleu_!&diff=154754STIC:STIC III (2020)/Forces rouge, rose, vert, jaune ou bleu !2021-09-04T19:04:34Z<p>Djamileh Aminian : /* Retours des tests */</p>
<hr />
<div>{{bloc important|Projet réalisé par [[Utilisateur:Djamileh_Aminian|Djamileh]] & [[Utilisateur:Simon_Jöhr|Simon]]}}<br />
<br />
== Introduction ==<br />
Durant la dernière année, le passage forcé à la téléformation, soit la formation synchrone à distance, a eu comme effet positif de pousser certains spécialistes de l’éducation à revisiter leurs scénarios pédagogiques pour revenir aux fondamentaux : comment aider les élèves à apprendre ce qu’ils sont sensés apprendre et comment les accompagner au mieux dans leur apprentissage ? Souvent, les difficultés relevées lors des bilans des derniers mois de distantiel ont fait émerger des problèmes qui existaient déjà en présence, mais qui restaient latents ou ignorés.<br />
<br />
En ce sens, l’apprentissage est fortement influencé par les émotions par lesquelles passent les élèves au cours de la formation, et en particulier pendant les moments synchrones. Pourtant, il est très complexe de détecter, mesurer, ou même faire exprimer les étudiant-es sur leur ressenti.<br />
<br />
En donnant leurs cours en visioconférence, nombreux formateurs et formatrices ont exprimé leur frustration de ne pas réussir à évaluer l’état émotionnel et autres indices non verbaux de leurs participant.e.s, retours essentiels pour adapter une explication ou ajuster le rythme. Et cet effet est loin d’être limité à la distance : il est également bien présent dans une salle de classe où il reste complexe de capter en temps réel les émotions d’un étudiant, processus complexe et dynamique.<br />
<br />
Notre projet prend sa racine dans ce constat. Deux questions ont alors émergé : <br />
* comment mesurer l'état émotionnel d'un-e apprenant-e, <br />
* et surtout, pour quel usage ?<br />
<br />
Dans ce contexte, nous avons pensé un dispositif de partage des ressentis de la classe à destination de l'équipe enseignante, et une utilisation de cette donnée comme retour au groupe.<br />
<br />
== Problème ==<br />
<br />
Le but de ce projet est de proposer une solution ludique à la constitution de groupes en classe, que cela soit en présence, à distance ou de manière comodale. En utilisant un Arduino Uno ou des CPX, la phase de constitution de groupes sera ainsi rapide, aléatoire et "fun" !<br />
<br />
Le ''Problem Statement'' peut s’exprimer ainsi : « Comment peut-on aider les formateurs et formatrices à identifier rapidement les difficultés dans l’apprentissage et, le cas échéant, à réagir ? »<br />
<br />
== Cahier des charges == <br />
=== Contexte et public ===<br />
Le public cible est composé de formateurs et formatrices d’adultes, en entreprise ou en institut. Il pourrait également être élargi aux enseignante.s du scolaire, mais la conscientisation et l’expression d’une émotion sont suffisamment complexes pour limiter notre premier dispositif à des adultes, disposant, à priori, d’une compréhension plus fine de leur état émotionnel. De plus, l’asymétrie dans la relation est supposée moins forte dans un groupe d’adultes en formation que dans une classe avec un enseignant et des enfants ou adolescents.<br />
<br />
===Objectifs===<br />
Le but du dispositif est de :<br />
* permettre la communication d'un niveau émotionnel perçu par l'étudiant.e à l'enseignant.e<br />
* faire émerger un état général de la classe et les différences dans l'acquisition du contenu<br />
* de manière plus pragmatique, de créer des groupes sur la base des éléments communiqués<br />
<br />
===Besoins et contraintes===<br />
L'idée du projet a beaucoup évolué entre la phase d'identification des besoins et les constatations sur les possibilités offertes par la technologie et l'expertise à disposition. Nous détaillons ci-dessous les besoins et contraintes qui nous ont menés à la solution présentée plus bas.<br />
<br />
Partant au début d’une idée de jauge émotionnelle dynamique, donnant en tout temps l’état émotionnel d’un groupe de participants, nous avons rapidement détecté, en phase d'idéation avec plusieurs spécialistes en éducation, un aspect extrêmement anxiogène pour le formateur dont le groupe enverrait des signaux d’ennui ou de frustration, durant une explication. <br />
<br />
Afin de juguler cet effet, tout en conservant la possibilité de communiquer un message sur l’état, nous avons adapté le dispositif pour permettre aux étudiants de transmettre leur état à des moments spécifiques de la formation, intégrés dans le scénario pédagogique. L'émotion étant un élément sensible à conscientiser, exprimer et partager au sein d'un groupe, nous avons estimé plus judicieux de faire exprimer son niveau d'aisance face à un contenu qui vient d'être transmis. Ainsi, un-e enseignant-e scénarisera des moments d'autodiagnostic des étudiant-es sur leur perception de compétence sur la thématique. Cette information peut être utilisée pour réaliser des groupes de travail : (1) les personnes qui ont compris peuvent être orientées sur un contenu plus avancé, en échange pendant que l'enseignant organiser une séance de question-réponse avec les personnes en difficulté ou (2) des groupes peuvent être créés pour intégrer des étudiant-es qui ont compris avec des étudiant-es qui ont besoin d'aide.<br />
<br />
Le dispositif est donc pensé comme un outil de sondage à certains moments du cours, pour évaluer les besoins du groupe, dans son ensemble. Il est souvent difficile de récolter des informations sincères lors d’évaluations à chaud, les étudiants réticents à communiquer publiquement leurs difficultés ou désintérêts pour le contenu. Par la technique de transmission, les étudiants pourraient communiquer leur émotion de manière anonyme, favorisant l'authenticité.<br />
<br />
De manière intéressante au fur et à mesure de l'avance du projet, il est ressorti des discussions avec un échantillon du public cible que l'aspect de notre projet qui les intéressait était moins la communication des émotions, mais la création facilitée des groupes. En effet, les formateurs et formatrices ayant travaillé à distance durant la dernière année se sont habitués à disposer d'une fonction de création de groupe aléatoire, selon un nombre total de participants et un nombre de groupe visé. Cette fonction serait très utile également en présence, en utilisant une carte Arduino ou un CPX pour calculer une répartition des élèves par groupe, avec en entrée le nombre d'élèves et les sous-groupes. Une fois les groupes constitués, l'étape suivante est de communiquer ces groupes à l'ensemble de la classe au travers de Lilypad ou autres technologies portables qui s'allument selon la couleur de leur groupe.<br />
<br />
===Apports===<br />
* Cohésion et sentiment d'appartenance au groupe comme soutien à l'apprentissage<br />
* Expression d'un état émotionnel épistémique comme bénéfique à l'apprentissage<br />
<br />
===Présentation du projet===<br />
Suite aux premières itérations dans l'empathie et la définition du projet, nous avons identifié plusieurs points clés qui ont réorienté notre projet :<br />
* la création d'un réseau de cartes Bluetooth contrôlées par Arduino s'est révélée trop ambitieuse, suite au manque de projets existants ou d'expertise sur lesquels s'appuyer, <br />
* l'envie marquée de notre échantillon cible qui s'est dirigée sur l'aspect création de groupe plus que sur la connaissance des états affectifs.<br />
<br />
Nous avons donc revu le projet en le divisant en 3 niveaux de difficulté, afin de réaliser un prototype utilisable, puis de l'améliorer en fonction des retours et du temps à disposition.<br />
* '''Niveau 1 : Création de groupe aléatoire''' : intérêts : facilitation de la création des groupes (demande reçue d'un formateur : "parce que Zoom nous a bien aidé pour cela à distance, je veux la même chose en présence!")<br />
* '''Niveau 2 : Communication du groupe à l’apprenant''' : intérêts : gamification, sentiment d’appartenance, coopération, cohésion<br />
* '''Niveau 3 : Communication de son sentiment de compétence''' : intérêts : plus facile que d'exprimer ses émotions, et plus facile à gérer par l'enseignant.e, par exemple les gens qui ont compris avec celles-ceux qui n'ont pas compris<br />
<br />
Nous avons réalisé complètement le niveau 1, ainsi que prototypé et testé le niveau 2 avec des cables avant de pouvoir gérer par Bluetooth un Bluefruit spécifique dans un réseau comprenant plusieurs Bluefruits. Les solutions avec code et prototypes sont décrites dans la section suivante.<br />
<br />
== Solutions explorées ==<br />
<br />
===1er prototype===<br />
La première solution envisagée comporte deux objets : <br />
* Un '''émetteur''' : facile d’utilisation et agréable à porter, nous penchons pour la solution d’un bracelet contenant un micro circuit type Lilypad, Arduino Gemma ou Tinyduino. L’apprenant disposerait de 4 boutons-pressoirs pour 4 émotions majeures à transmettre (intérêt, confusion, frustration, incompréhension), symbolisés par des logos ou émoticônes. Les messages sont transmis par Bluetooth.<br />
* Un '''récepteur''' : Une jauge, comprenant une bande Neopixels, connectée à un Arduino Uno. Les LED symboliseraient deux dimensions fournies : la couleur pour le type d'émotion et le nombre pour la quantité d'étudiant.e.s ayant transmis l'information. L'Arduino pourrait gérer l'information, en émettant un son lors du dépassement d'un seuil prédéfini sur une émotion par exemple.<br />
<br />
====Maquettes====<br />
<u>1ère itération</u><br />
<br />
[[Fichier:Maquette_projet_STIC_III_Djamileh_et_Simon.jpg|néant|vignette|1103x1103px|Maquette n°1 du projet]]<br />
<br />
<u>2e itération</u><br />
<br />
L'Arduino Uno lance une séquence de randomisation de couleur, en affiche une, puis les participant.e.s font de même sur leur CPX. Si les couleurs affichées "matchent", le groupe est constitué et on peut ainsi passer à la constitution aléatoire du groupe suivant. <br />
[[Fichier:2e Maquette projet STIC III Djamileh et Simon .jpg|néant|vignette|1103x1103px|Maquette n°2 du projet]]<br />
<br />
====Code====<br />
<u>Version 1.0 du code CPX :</u> <syntaxhighlight lang="javascript"><br />
input.buttonA.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 200<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(40)<br />
color2 += Math.randomRange(1, 3)<br />
light.setPhotonPenHue(color2)<br />
}<br />
light.photonFlip()<br />
})<br />
input.buttonsAB.onEvent(ButtonEvent.Click, function () {<br />
control.reset()<br />
})<br />
input.buttonB.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 300<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
color2 += 3<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(50)<br />
}<br />
})<br />
let tonalité = 0<br />
let durée = 0<br />
let color2 = 0<br />
light.setBrightness(158)<br />
music.setVolume(167)<br />
forever(function () {<br />
<br />
})<br />
</syntaxhighlight><br />
<br />
===2e prototype===<br />
<br />
====Maquette====<br />
<u>'''Boîte émettrice'''</u><br />
[[Fichier:Boite CPX STIC III.png|néant|vignette|Plan découpe boîte émettrice CPX]]<br />
[[Fichier:Etiquettes Boite CPX STIC III.png|néant|vignette|Etiquettes boîte CPX]]<br />
[[Fichier:Maquette boîte CPX.png|néant|vignette|Rendu de la boîte]]<br />
[[Fichier:Dispositif "Master" d'envoi.jpg|néant|vignette|Dispositif "Master" d'envoi]]<br />
[[Fichier:Boite STIC III.jpg|néant|vignette|Boîte finale]]<br />
<u>'''Cadrans récepteurs'''</u><br />
[[Fichier:Bracelets CPX STIC III.png|néant|vignette|Cadrans récepteurs]]<br />
[[Fichier:2021-09-04 11.43.22.jpg|néant|vignette|Dispositif d'envoi et montre récéptrice]]<br />
<br />
====Code====<br />
[[Fichier:CPX firstproto.jpg|vignette|droite|Une étape dans le test du code - 5 binomes de noël! ]]<br />
La solution présentée ici s'occupe du niveau 1, soit la création de groupe aléatoire à l'aide d'un CPX Bluefruit.<br />
Elle a été codée en CircuitPython. Nous avons rédigé le code nous-mêmes, avec deux supports : la création du dictionnaire pour la randomisation été possible grâce à l'aimable contribution de notre collègue Jérôme. Concernant l'envoi et la réception de données par Bluetooth, nous nous sommes basés sur les [https://learn.adafruit.com/circuitpython-nrf52840/bluetooth-basics tutoriels Adafruit], ainsi que deux projets utilisant des fonctionnalités se rapprochant de notre projet :<br />
* [https://learn.adafruit.com/circuit-playground-bluefruit-neopixel-animation-and-color-remote-control projet 1]<br />
* [https://learn.adafruit.com/color-remote-with-circuit-playground-bluefruit projet 2]<br />
<br />
'''Code pour le CPB Emetteur'''<br />
<syntaxhighlight lang="python"><br />
# Groupify !<br />
# Un projet de S!m & Dja<br />
# Code CircuitPython pour la répartition dans les groupes (MASTER)<br />
<br />
"""<br />
SETUP GENERAL<br />
"""<br />
<br />
# LIBRAIRIES<br />
import random<br />
import time<br />
<br />
# Librairie pour gérer la bande neopixel du bluefruit<br />
from adafruit_circuitplayground.bluefruit import cpb<br />
<br />
# Librairies pour gérer la transmission bluetooth<br />
from adafruit_ble import BLERadio<br />
from adafruit_ble.advertising.standard import ProvideServicesAdvertisement<br />
from adafruit_ble.services.nordic import UARTService<br />
<br />
# Librairie pour envoyer la couleur<br />
from adafruit_bluefruit_connect.color_packet import ColorPacket<br />
<br />
# Helper function pour gérer la connexion entre plusieurs Bluefruits<br />
# reprise sur https://learn.adafruit.com/circuit-playground-bluefruit-neopixel-<br />
# animation-and-color-remote-control/remote-control-code<br />
def send_packet(uart_connection_name, packet):<br />
"""Returns False if no longer connected."""<br />
try:<br />
uart_connection_name[UARTService].write(packet.to_bytes())<br />
except: # pylint: disable=bare-except<br />
try:<br />
uart_connection_name.disconnect()<br />
except: # pylint: disable=bare-except<br />
pass<br />
return False<br />
return True<br />
<br />
<br />
# Input utilisateur<br />
participants = int(input("Nombre de participants : "))<br />
groupe = int(input("Nombre de groupes : "))<br />
<br />
"""<br />
CREATION DES GROUPES<br />
"""<br />
<br />
# création listes à long. variable (+ 1 pour compenser la numération depuis 0)<br />
liste_part = list(range(1, participants + 1)) # print(liste_part)<br />
nb_part = len(liste_part) + 1<br />
liste_groupe = list(range(1, groupe + 1)) # print(liste_groupe)<br />
<br />
# Déf. grille (dict. de listes) combinations possibles<br />
clé_tableau = str(participants) + "_" + str(groupe)<br />
# !!! ajouter combinaisons pas possible : eg. tour de roue lumineuse/son pourri !!!<br />
grille_repartition = {<br />
"10_5": [2, 2, 2, 2, 2],<br />
"10_4": [2, 2, 3, 3],<br />
"10_3": [3, 3, 4],<br />
"10_2": [5, 5],<br />
"9_4": [2, 2, 2, 3],<br />
"9_3": [3, 3, 3],<br />
"9_2": [4, 5],<br />
"8_4": [2, 2, 2, 2],<br />
"8_3": [2, 3, 3],<br />
"8_2": [4, 4],<br />
"7_3": [2, 2, 3],<br />
"7_2": [4, 3],<br />
"6_3": [2, 2, 2],<br />
"6_2": [3, 3],<br />
"5_2": [2, 3],<br />
"4_2": [2, 2],<br />
}<br />
# détermination du nb et taille des groupes à créer<br />
taille_groupe = grille_repartition[clé_tableau]<br />
print(taille_groupe)<br />
<br />
# création (dict) répartition aléatoire<br />
dict_repartition = {} # initialisation<br />
for i in range(0, len(taille_groupe)):<br />
dict_repartition[liste_groupe[i]] = [] # création des items du dictionnaire<br />
for j in range(0, taille_groupe[i]):<br />
etu = liste_part[random.randint(0, len(liste_part) - 1)]<br />
dict_repartition[liste_groupe[i]].append(etu)<br />
liste_part.remove(etu)<br />
# print (liste_part)<br />
# print (dict_repartition)<br />
print(dict_repartition)<br />
<br />
# Définition des groupes avec couleurs<br />
groupeList = list(dict_repartition.values())<br />
print(groupeList)<br />
<br />
# GESTION NEOPIXEL<br />
cpb.pixels.brightness = 0.05<br />
<br />
# Grille de définition des couleurs de groupe<br />
dict_couleur = {<br />
"gr1": (0, 255, 0),<br />
"gr2": (255, 0, 255),<br />
"gr3": (255, 255, 0),<br />
"gr4": (0, 255, 255),<br />
"gr5": (255, 0, 0),<br />
}<br />
# print(dict_couleur)<br />
<br />
# transf. dict -> list<br />
liste_couleur = list(dict_couleur.values())<br />
print("liste de couleur totale: ", liste_couleur)<br />
<br />
# définition des couleurs selon nb de groupe<br />
dict_neopix = {}<br />
for i in range(0, len(taille_groupe)):<br />
codecouleur = liste_couleur[i]<br />
dict_neopix[i] = codecouleur<br />
# print(dict_neopix)<br />
<br />
# transf. dict -> list<br />
liste_neopix = list(dict_neopix.values())<br />
print("liste de couleur spécifique: ", liste_neopix)<br />
<br />
# Attribution des couleurs par pixel<br />
liste_pixels = []<br />
for i in range(0, nb_part):<br />
for j in range(0, len(taille_groupe)):<br />
if i in groupeList[j]:<br />
pix = liste_neopix[j]<br />
liste_pixels.append(pix)<br />
print("couleurs des pixels : ", liste_pixels)<br />
<br />
"""<br />
TRANSMISSION AUX BLUEFRUITS PARTICIPANTS (SLAVES)<br />
"""<br />
# Setup de la transmission<br />
ble = BLERadio()<br />
uart_service = UARTService()<br />
advertisement = ProvideServicesAdvertisement(uart_service)<br />
<br />
uart_connection = None<br />
# Controle sur des connexions disponibles<br />
if ble.connected:<br />
for connection in ble.connections:<br />
if UARTService in connection:<br />
uart_connection = connection<br />
break<br />
<br />
while True:<br />
# Allumage de la bnde neopixel / visualisation des groupes formés<br />
for i in range(0, nb_part - 1):<br />
cpb.pixels[i] = liste_pixels[i]<br />
<br />
# Gestion de la transmission<br />
if not uart_connection or not uart_connection.connected:<br />
# Condition : pas de connexion > scan<br />
print("Scanning...")<br />
for adv in ble.start_scan(ProvideServicesAdvertisement, timeout=5): # Scan...<br />
if UARTService in adv.services: # si periphérique existe<br />
print("Found a UARTService advertisement.")<br />
uart_connection = ble.connect(adv) # crée une connexion<br />
break<br />
# Arrêt du scannage de l'environnement<br />
ble.stop_scan()<br />
<br />
# si connexion existante :<br />
while uart_connection and uart_connection.connected:<br />
if cpb.button_a: # Transmission des données neopixels avec A<br />
print("Bouton A - envoi données")<br />
color = cpb.pixels[0]<br />
if not send_packet(uart_connection, ColorPacket(color)):<br />
uart_connection = None<br />
continue<br />
time.sleep(0.1) # Delay to prevent sending packets too quickly.<br />
</syntaxhighlight><br />
<br />
'''Code pour le CPB Récepteur (participants)'''<br />
<syntaxhighlight lang="python"><br />
"""<br />
Code pour les bluefruits participants<br />
"""<br />
import time<br />
<br />
from adafruit_circuitplayground.bluefruit import cpb<br />
<br />
from adafruit_ble import BLERadio<br />
from adafruit_ble.advertising.standard import ProvideServicesAdvertisement<br />
from adafruit_ble.services.nordic import UARTService<br />
<br />
from adafruit_bluefruit_connect.packet import Packet<br />
from adafruit_bluefruit_connect.color_packet import ColorPacket<br />
<br />
num_pixels = 10<br />
<br />
# animation initiale - "chase" est une animation de base dans les librairies<br />
# d'animation pour neopixel (cf neopixel überguide)<br />
def color_chase(color, wait):<br />
for i in range(num_pixels):<br />
cpb.pixels[i] = color<br />
time.sleep(wait)<br />
cpb.pixels.show()<br />
time.sleep(0.5)<br />
<br />
<br />
# Grille des couleurs de groupe pour animation<br />
dict_couleur = {<br />
"gr1": (0, 255, 0),<br />
"gr2": (255, 0, 255),<br />
"gr3": (255, 255, 0),<br />
"gr4": (0, 255, 255),<br />
"gr5": (255, 0, 0),<br />
}<br />
<br />
liste_couleur = list(dict_couleur.values())<br />
print(liste_couleur)<br />
<br />
# Setup standard pour la réception<br />
ble = BLERadio()<br />
uart = UARTService()<br />
advertisement = ProvideServicesAdvertisement(uart)<br />
<br />
cpb.pixels.brightness = 0.05<br />
receptionGroupe = False<br />
<br />
while True:<br />
ble.start_advertising(advertisement)<br />
<br />
while not cpb.switch:<br />
for i in range(0, len(liste_couleur)):<br />
couleurCode = liste_couleur[i]<br />
color_chase(couleurCode, 0.05)<br />
<br />
if cpb.switch:<br />
while not ble.connected:<br />
pass<br />
ble.stop_advertising()<br />
<br />
while ble.connected:<br />
if uart.in_waiting:<br />
packet = Packet.from_stream(uart)<br />
if isinstance(packet, ColorPacket):<br />
cpb.pixels.fill(packet.color)<br />
</syntaxhighlight><br />
<br />
== Test(s) de la solution ==<br />
<br />
===Cognitive walkthrough===<br />
<br />
Pour produire ce cognitive walkthrough, nous nous sommes basés sur les principes du [https://edutechwiki.unige.ch/en/Cognitive_walkthrough#Fluid_project_overview Fluid Project].<br />
<br />
==== Persona ====<br />
[[Fichier:PERSONA INGO NITO.jpg|néant|cadre]]<br />
<br />
==== Objectifs ====<br />
<br />
* Créer des groupes grâce au dispositif émetteur<br />
* Communiquer ces groupes aux dispositifs récepteurs<br />
* Renforcer l'engagement grâce à un dispositif ludique et actif<br />
<br />
==== Scénario d'utilisation ====<br />
<br />
# (en amont) Réfléchir à un combien de groupes seront créés en fonction du nombre de participant.e.s disponible.s<br />
# Allumage du dispositif<br />
# Lancement du dispositif<br />
# Réalisation d'une séquence de composition de groupe<br />
# Lancement et réalisation de la séquence suivante de communication avec envoi des groupes constitués aux dispositifs distants<br />
# Mise hors tension du dispositif<br />
<br />
=== Tests utilisateur·trice·s===<br />
<br />
==== '''Scénario final''' ====<br />
Le test utilisateur est une méthode utilisée pour évaluer l’expérience utilisateur d’un système, mais également les forces et les faiblesses de celui-ci. Cette méthode, consiste à mettre l’utilisateur·trice en situation « réelle » afin d’observer ses comportements et ses actions lorsqu’il exécute des tâches prédéfinies qui lui sont administrées sous la forme d’un scénario. Il leur est alors demandé de nous renseigner sur leurs expériences.<br />
<br />
Lors de cette phase, un prototype du projet est présenté à des utilisateur·trices recrutés au sein du public cible. A ce stade, le prototype devrait être suffisamment abouti pour offrir les principales fonctionnalités constitutives de la version finale. Néanmoins, il diffère de celle-ci puisque certaines fonctionnalités accessoires ne pourraient ne pas être encore implémentées. En présentant assez tôt un produit relativement proche de la version finale, nous entendons nous assurer que les directions prises dans les précédentes phases de conception soient les plus à même de répondre aux besoins des utilisateur·trice·s. Le prototype sera modifié en fonction des retours formulés par les observations réalisées ainsi que par les analyses des résultats des tests. <br />
<br />
Le test utilisateur se déroulera en 3 étapes :<br />
#Accueil des participants<br />
#Réalisation des tâches<br />
#Entretien succinct<br />
<br />
Dans la première étape, le participant sera accueilli, le contexte et le test utilisateur lui seront alors présentés de manière générale. Lors du test, l’utilisateur·trice « découvrira » le dispositif en réalisant des tâches préparées au préalable (scénario des tâches). Ici, nous éprouverons l’expérience de l’utilisateur·trice.<br />
<br />
Après avoir exposé le contexte dans lequel le scénario prend place, nous demanderons à la personne d’accomplir les tâches décrites dans le tableau "scénario des tâches". De plus, nous encouragerons le/la participant·e à formuler à voix haute ses pensées et ressentis lors de l’utilisation de l’outil. <br />
<br />
Les participant·e·s seront accueillis avec la consigne suivante : <br />
{{Citation encadrée | ''Merci d’avoir accepté de faire ce test avec moi aujourd'hui. Je travaille sur le développement d’un outil pour la constitution aléatoire de groupes de travail dans une classe. Cette technique permet de constituer des groupes rapidement et de communiquer ceux-ci aux participant.e.s quasi instantanément.''}}<br />
<br />
Le scénario des tâches se composera de deux éléments : le contexte et les tâches à effectuer par le/la participant.e. Le contexte aura pour but de mettre l’utilisateur·trice dans une situation réaliste qui se rapprochera de son quotidien et/ou du contexte pendant lequel il pourrait être mené à utiliser le dispositif. Le contexte sera formulé de la manière suivante :<br />
<br />
{{Citation encadrée | ''Vous êtes au début d’une activité de débat, dans votre classe, avec vos étudiant.e.s. Pour réaliser cette activité, vous devez d’abord constituer des groupes de manière aléatoire, avec les étudiant.e.s qui composent votre cours. Pour se faire, vous allez donc devoir utiliser le dispositif-prototype en annexe.''<br />
<br />
''Le dispositif à tester se compose de plusieurs éléments. Le premier élément est le dispositif émetteur. Il va être utilisé pour composer les groupes d’étudiant.e.s de manière aléatoire et par couleur. <br />
Ensuite, avec les boutons présents sur celui-ci, il sera capable de transmettre les données choisies aux dispositifs récepteurs annexes.''<br />
<br />
''Durant le test, vous allez être amené.e à utiliser les différents dispositifs cités afin de réaliser plusieurs tâches. Celles-ci ne devraient pas être trop compliquées et ne nécessiteront, non plus , pas trop de temps de réalisation.''}}<br />
<br />
Après avoir exposé le contexte dans lequel le scénario prend place, nous demanderons au participant d’accomplir les tâches décrites dans le tableau "scénario des tâches".<br />
<br />
Pour l’étape des tâches, nous donnerons les consignes suivantes :<br />
<br />
{{Citation encadrée |''Avant de commencer le test et les tâches, n’hésitez pas à poser des questions si un/des élément(s) ne vous paraissent pas clair(s). Nous restons bien entendu à disposition, si besoin , durant la réalisation des tâches. <br />
''}}<br />
<br />
Chaque tâche sera expliquée au fur et à mesure au participant.<br />
{| style="border: 1px solid black; border-spacing: 0; margin: 0.5em auto;"<br />
|+ '''Scénario des tâches'''<br />
|-<br />
! style="border: 1px solid black; padding: 5px; background: #D4D4D8; width: 200pt;" | Tâche 1<br />
| style="border: 1px solid black; padding: 5px; vertical-align: top; width: 400pt;" |''Pour commencer, veuillez trouver comment allumer le dispositif. Une fois que c’est fait, vous pouvez passer à la tâche suivante.''<br />
|-<br />
! style="border: 1px solid black; padding: 5px; background: #D4D4D8; width: 200pt;" |Tâche 2<br />
| style="border: 1px solid black; padding: 5px; vertical-align: top; width: 400pt;" |''Comme seconde tâche, veuillez décider de combien de groupes vous aurez besoin selon le nombre d’élèves à votre disposition. ''<br />
|-<br />
! style="border: 1px solid black; padding: 5px; background: #D4D4D8; width: 200pt;" | Tâche 3<br />
| style="border: 1px solid black; padding: 5px; vertical-align: top; width: 400pt;" |''Comme tâche suivante, renseignez les informations souhaitées sur le dispositif émetteur (nombre de groupes et nombre d’élèves). ''<br />
|-<br />
! style="border: 1px solid black; padding: 5px; background: #D4D4D8; width: 200pt;" | Tâche 4<br />
| style="border: 1px solid black; padding: 5px; vertical-align: top; width: 400pt;" |''Comme dernière tâche, envoyez les données depuis le dispositif émetteur aux dispositifs récepteurs. ''<br />
|-<br />
|<br />
|<br />
|}<br />
<br />
==== Vidéo du test utilisateur.trice.s ====<br />
[[Fichier:Users Tests.ogg|néant|vignette|600x600px]]<br />
<br />
==== Retours des tests ====<br />
<br />
Nos trois testeurs ont une testé autant le côté participant que formateur.<br />
<br />
Deux sont des formateurs.trices d'adulte qui animent des groupes de 1 à 25 personnes, en présence, en créant régulièrement des activités de sous-groupes et ont exprimé un réel intérêt à posséder un outil leur permettant de varier la façon de créer des groupes et surtout de ne pas avoir à choisir eux-mêmes, bénéficiant de l'aléatoire comme expérimenté à distance avec des outils de visioconférence.<br />
<br />
Le dernier testeur est facilitateur dans des workshops de co-création et Design Thinking. Il est donc régulièrement amené à créer des sous-groupes, pour des groupes de tailles pouvant aller jusqu'à 50. Pour lui aussi, l'outil présente une plue-value, si son design pouvait être adapté à des groupes plus grands.<br />
<br />
Les retours sont classés par rôle (formateur/participant). Comme la plupart des retours ont été très similaires, nous les avons regroupé en spécifiant s'il s'agissait d'une ou plusieurs personnes.<br />
<br />
'''Côté formateur''' (CPB émetteur)<br />
<br />
* Le son n’est pas indispensable selon le formateur. Mais, une étape de validation ou un autre retour serait à envisager. <br />
<br />
* Pas de manque particulier. Cependant, il faudrait poser des conditions automatiques ou en tout cas que les processus soient automatiques sans une maîtrise de la part du formateur. En gros, n’importe qui de la classe pourrait le faire. Une solution serait de demander à quelqu’un.e dans la classe s’il/elle veut procéder au lancement du processus des groupes.<br />
<br />
* Concernant les couleurs, comme elles ne sont pas arrangées dans un ordre précis et que les positions des LED sont décalées, cela perturbe un petit peu. Mais, on comprend que c’est une logique de programmation. Cela serait simplement plus agréable visuellement pour un utilisateur sur 3.<br />
<br />
* Une remarque a été produite concernant la possibilité de garder en main les objets plutôt que de les avoir comme montre au poignet (participant) ou dans une boîte (formateur). En rendant disponible le dispositif à la main directement cela peut démontrer que tout le monde est logé à la même enseigne et qu’il n’y a pas de différences entre l’enseignant et les élèves. Tout le monde a le même objet.<br />
<br />
* Il serait amusant d’ajouter une compétition afin de déterminer si un.e élève choisit et effectue la composition des groupes plutôt que le formateur. Celui qui a la montre qui s’allume par exemple dans la classe en premier pourra alors lancer la séquence de randomisation au lieu du prof. Cela donnerait un côté ludique et encore plus engageant, voire plus hasardeux et permettrait d’aller plus loin que le seul processus de composition aléatoire des groupes par couleurs. <br />
<br />
* Le retour (ou annulation de fonction) n’est pas possible. Cela n’est pas contraignant en soi mais un peu dérangeant selon le testeur-formateur. <br />
<br />
* Le premier testeur a eu envie de secouer le CPB au moment de créer les groupes. Il aurait aimé ne pas avoir à appuyer sur des boutons, mais d’utiliser l’aspect aléatoire de secouer l’objet, comme une boule 8 magique. Cela lui donnerait une meilleure impression que cela est réellement une génération aléatoire de groupes.<br />
<br />
* Il y a globalement eu un besoin de mieux valider les différentes étapes chez les 3 testeurs. Le premier aurait apprécié intégrer les données avec les boutons A et B, valider avec la slider et avoir un retour visuel (changement de couleur des LED) pour valider l’action. Contrairement aux deux autres testeurs, il a aimé devoir appuyer sur un bouton pour envoyer les données aux récepteurs participants. Cela démontre des différences dans les envies et besoins de contrôle des utilisateurs.<br />
<br />
<br />
'''Côté participant.e.s''' (CPB récepteur)<br />
<br />
* Le “slider” ne devrait pas être obligatoire à utiliser car il devrait y avoir une étape automatique et directe de réception de la couleur de groupe. Remarque identique pour la seconde participante.<br />
<br />
* La découverte du dispositif est agréable, “cool”. On a envie de savoir comment cela fonctionne. Le rendu et la structure, cela rend bien. La rotation des couleurs du dispositif de réception fait penser à un casino ; l’attente devient cool et excitante : la participante était impatiente de connaître son groupe.<br />
<br />
* Il devrait y avoir du son ou une vibration pour valider les étapes ou en tout cas un retour visuel qui viendrait sanctionner les manipulations sur le dispositif. Cela pourrait être une petite musique qui annonce le groupe attribué. La 2e testeuse rapporte que cela donne le sentiment “d’avoir gagné”.<br />
<br />
* Une remarque a été formulée concernant l’utilisation de ce type de dispositif sur toute une journée de cours. En effet, cela peut être répétitif si à chaque fois que l’on doit former des groupes, les participant.e.s doivent utiliser le dispositif. Il devrait apporter une certaine plus-value selon un des testeurs. L’idée d’ajouter un écran au dispositif a été proposée, où des consignes pourraient s’afficher ; cela donnerait un aspect utile en plus. Le dispositif pourrait ainsi faciliter les activités de groupes en plusieurs phases : les participants se regroupent selon la couleur reçue et ils reçoivent une première consigne. Puis le formateur envoie le temps restant et la suite des activités, jusqu’au retour en plénière.<br />
<br />
* Concernant le dispositif de réception, la “montre”, son utilité et son design ont été remis en question. Il pourrait être sous forme de patch ou pin’s plutôt qu’un objet au poignet selon les utilisateur.trice.s. En effet, des participant.e.s ont peut-être déjà des montres ou des bracelets au poignet ce qui pourrait être contraignant. De plus, à cette phase du prototypage, comme il ne s’agit que d’allumer une LED, il serait envisageable d’utiliser de la broderie numérique et d’y intégrer une micro-circuit avec une LED (i.e. Gemma, Flora)<br />
<br />
== Discussion ==<br />
=== Design === <br />
Le design actuel est parti d'une idée d'utiliser la découpe laser pour la boîte émettrice et une forme de montre pour les récepteurs participants, avec un côté vintage et nostalgique des séries des années 80.<br />
Cela dit, nous avions tout de même recherché des produits plus petits et plus discrets, faciles à transporter et à manipuler.Cela s'est confirmé lors des tests, où en fin de compte, les participants ont apprécié avoir des objets légers et faciles à manipuler en main. Pour un prochain prototype, nous nous orienterions vers un Gemma ou Flora, sur un patch en broderie numérique pour les récepteurs participants.<br />
<br />
Du côté émetteur, il est resté jusqu'à la fin la difficulté de l'input du nombre de participants et du nombre de groupes attendus. Les potentiomètres se sont avérés trop complexes, autant pour comprendre ce qu'il fallait commander que pour programmer des niveaux de voltage correspondant à des seuils de chiffre. Pour pallier cette difficulté, nous avons tenté d'utiliser les éléments du CPB, soit les boutons et la slider. Cependant, cela nécessite des manipulations longues (par exemple : bouton A pour ajouter un participant, bouton B pour en enlever, slider pour valider) et rend l'opération fastidieuse. <br />
<br />
Enfin, l'utilisation de la bande neopixel du CPB limite le nombre total de participants à 10. Pour une prochaine itération, nous utiliserions une bande externe permettant la gestion de groupes plus larges.<br />
<br />
=== Résultats des tests utilisateurs === <br />
Une partie des retours utilisateurs ont été intégrés dans la section Design, car ils faisaient écho à nos propres envies, qui n'avaient pas été réalisables techniquement. Nous retenons les points clés suivants pour les prochaines itérations du projet, en avantages et faiblesses : <br />
<br />
Les avantages sont :<br />
* un aspect ludique qui rend excitant le moment de passage à l'activité de sous-groupe et qui renforce l'engagement<br />
* un effet d'appartenance et de cohésion <br />
* une dimension pédagogique de rééquilibrage des postures : la personne qui forme peut choisir de contrôler la création des groupes ou de la rendre démocratique par sa délégation à un membre de la classe. Cela permet de garder une réelle impression de hasard<br />
<br />
Du côté des faiblesses à améliorer :<br />
* Encore trop complexe et long par rapport à sa réelle plus-value. Il faudrait soit simplifier son utilisation (moins d'étapes intermédiaires (clic, slide) ou lui ajouter des fonctionnalités de communications avec les groupes (consignes, temps restants, etc.)<br />
* Le design actuel semble trop envahissant (boite, montre). Il faudrait le rendre plus facile à manipuler, porter et à oublier lorsqu'il n'est pas utilisé<br />
<br />
== Licence, fichiers et documentation ==<br />
[[Fichier:By-nc.png|150px]] Cette œuvre est mise à disposition selon les termes de la [http://creativecommons.org/licenses/by-nc/4.0/ Licence Creative Commons Attribution - Pas d’Utilisation Commerciale 4.0 International].<br />
<br />
* Fichiers :<br />
Fichiers avec code émetteur et récepteur : [[Fichier:Code source.zip|vignette]]<br />
<br />
* Documentation : <br />
Guide utilisateur : [[Fichier:Userguide.pdf]]<br />
<br />
== Bibliographie ==<br />
<br />
* Blair, C., Calkins, S., & Kopp, L. (2010). Self-regulation as the interface of emotional and cognitive development: Implications for education and academic achievement.<br />
* Pekrun, R., Goetz, T., Titz, W., & Perry, R. P. (2002). Academic emotions in students' self-regulated learning and achievement: A program of qualitative and quantitative research. Educational psychologist, 37(2), 91-105.</div>Djamileh Aminianhttps://edutechwiki.unige.ch/fmediawiki/index.php?title=STIC:STIC_III_(2020)/Forces_rouge,_rose,_vert,_jaune_ou_bleu_!&diff=154740STIC:STIC III (2020)/Forces rouge, rose, vert, jaune ou bleu !2021-09-04T11:36:45Z<p>Djamileh Aminian : /* Licence, fichiers et documentation */</p>
<hr />
<div>{{bloc important|Projet réalisé par [[Utilisateur:Djamileh_Aminian|Djamileh]] & [[Utilisateur:Simon_Jöhr|Simon]]}}<br />
<br />
== Introduction ==<br />
Durant la dernière année, le passage forcé à la téléformation, soit la formation synchrone à distance, a eu comme effet positif de pousser certains spécialistes de l’éducation à revisiter leurs scénarios pédagogiques pour revenir aux fondamentaux : comment aider les élèves à apprendre ce qu’ils sont sensés apprendre et comment les accompagner au mieux dans leur apprentissage ? Souvent, les difficultés relevées lors des bilans des derniers mois de distantiel ont fait émerger des problèmes qui existaient déjà en présence, mais qui restaient latents ou ignorés.<br />
<br />
En ce sens, l’apprentissage est fortement influencé par les émotions par lesquelles passent les élèves au cours de la formation, et en particulier pendant les moments synchrones. Pourtant, il est très complexe de détecter, mesurer, ou même faire exprimer les étudiant-es sur leur ressenti.<br />
<br />
En donnant leurs cours en visioconférence, nombreux formateurs et formatrices ont exprimé leur frustration de ne pas réussir à évaluer l’état émotionnel et autres indices non verbaux de leurs participant.e.s, retours essentiels pour adapter une explication ou ajuster le rythme. Et cet effet est loin d’être limité à la distance : il est également bien présent dans une salle de classe où il reste complexe de capter en temps réel les émotions d’un étudiant, processus complexe et dynamique.<br />
<br />
Notre projet prend sa racine dans ce constat. Deux questions ont alors émergé : <br />
* comment mesurer l'état émotionnel d'un-e apprenant-e, <br />
* et surtout, pour quel usage ?<br />
<br />
Dans ce contexte, nous avons pensé un dispositif de partage des ressentis de la classe à destination de l'équipe enseignante, et une utilisation de cette donnée comme retour au groupe.<br />
<br />
== Problème ==<br />
<br />
Le but de ce projet est de proposer une solution ludique à la constitution de groupes en classe, que cela soit en présence, à distance ou de manière comodale. En utilisant un Arduino Uno ou des CPX, la phase de constitution de groupes sera ainsi rapide, aléatoire et "fun" !<br />
<br />
Le ''Problem Statement'' peut s’exprimer ainsi : « Comment peut-on aider les formateurs et formatrices à identifier rapidement les difficultés dans l’apprentissage et, le cas échéant, à réagir ? »<br />
<br />
== Cahier des charges == <br />
=== Contexte et public ===<br />
Le public cible est composé de formateurs et formatrices d’adultes, en entreprise ou en institut. Il pourrait également être élargi aux enseignante.s du scolaire, mais la conscientisation et l’expression d’une émotion sont suffisamment complexes pour limiter notre premier dispositif à des adultes, disposant, à priori, d’une compréhension plus fine de leur état émotionnel. De plus, l’asymétrie dans la relation est supposée moins forte dans un groupe d’adultes en formation que dans une classe avec un enseignant et des enfants ou adolescents.<br />
<br />
===Objectifs===<br />
Le but du dispositif est de :<br />
* permettre la communication d'un niveau émotionnel perçu par l'étudiant.e à l'enseignant.e<br />
* faire émerger un état général de la classe et les différences dans l'acquisition du contenu<br />
* de manière plus pragmatique, de créer des groupes sur la base des éléments communiqués<br />
<br />
===Besoins et contraintes===<br />
L'idée du projet a beaucoup évolué entre la phase d'identification des besoins et les constatations sur les possibilités offertes par la technologie et l'expertise à disposition. Nous détaillons ci-dessous les besoins et contraintes qui nous ont menés à la solution présentée plus bas.<br />
<br />
Partant au début d’une idée de jauge émotionnelle dynamique, donnant en tout temps l’état émotionnel d’un groupe de participants, nous avons rapidement détecté, en phase d'idéation avec plusieurs spécialistes en éducation, un aspect extrêmement anxiogène pour le formateur dont le groupe enverrait des signaux d’ennui ou de frustration, durant une explication. <br />
<br />
Afin de juguler cet effet, tout en conservant la possibilité de communiquer un message sur l’état, nous avons adapté le dispositif pour permettre aux étudiants de transmettre leur état à des moments spécifiques de la formation, intégrés dans le scénario pédagogique. L'émotion étant un élément sensible à conscientiser, exprimer et partager au sein d'un groupe, nous avons estimé plus judicieux de faire exprimer son niveau d'aisance face à un contenu qui vient d'être transmis. Ainsi, un-e enseignant-e scénarisera des moments d'autodiagnostic des étudiant-es sur leur perception de compétence sur la thématique. Cette information peut être utilisée pour réaliser des groupes de travail : (1) les personnes qui ont compris peuvent être orientées sur un contenu plus avancé, en échange pendant que l'enseignant organiser une séance de question-réponse avec les personnes en difficulté ou (2) des groupes peuvent être créés pour intégrer des étudiant-es qui ont compris avec des étudiant-es qui ont besoin d'aide.<br />
<br />
Le dispositif est donc pensé comme un outil de sondage à certains moments du cours, pour évaluer les besoins du groupe, dans son ensemble. Il est souvent difficile de récolter des informations sincères lors d’évaluations à chaud, les étudiants réticents à communiquer publiquement leurs difficultés ou désintérêts pour le contenu. Par la technique de transmission, les étudiants pourraient communiquer leur émotion de manière anonyme, favorisant l'authenticité.<br />
<br />
De manière intéressante au fur et à mesure de l'avance du projet, il est ressorti des discussions avec un échantillon du public cible que l'aspect de notre projet qui les intéressait était moins la communication des émotions, mais la création facilitée des groupes. En effet, les formateurs et formatrices ayant travaillé à distance durant la dernière année se sont habitués à disposer d'une fonction de création de groupe aléatoire, selon un nombre total de participants et un nombre de groupe visé. Cette fonction serait très utile également en présence, en utilisant une carte Arduino ou un CPX pour calculer une répartition des élèves par groupe, avec en entrée le nombre d'élèves et les sous-groupes. Une fois les groupes constitués, l'étape suivante est de communiquer ces groupes à l'ensemble de la classe au travers de Lilypad ou autres technologies portables qui s'allument selon la couleur de leur groupe.<br />
<br />
===Apports===<br />
* Cohésion et sentiment d'appartenance au groupe comme soutien à l'apprentissage<br />
* Expression d'un état émotionnel épistémique comme bénéfique à l'apprentissage<br />
<br />
===Présentation du projet===<br />
Suite aux premières itérations dans l'empathie et la définition du projet, nous avons identifié plusieurs points clés qui ont réorienté notre projet :<br />
* la création d'un réseau de cartes Bluetooth contrôlées par Arduino s'est révélée trop ambitieuse, suite au manque de projets existants ou d'expertise sur lesquels s'appuyer, <br />
* l'envie marquée de notre échantillon cible qui s'est dirigée sur l'aspect création de groupe plus que sur la connaissance des états affectifs.<br />
<br />
Nous avons donc revu le projet en le divisant en 3 niveaux de difficulté, afin de réaliser un prototype utilisable, puis de l'améliorer en fonction des retours et du temps à disposition.<br />
* '''Niveau 1 : Création de groupe aléatoire''' : intérêts : facilitation de la création des groupes (demande reçue d'un formateur : "parce que Zoom nous a bien aidé pour cela à distance, je veux la même chose en présence!")<br />
* '''Niveau 2 : Communication du groupe à l’apprenant''' : intérêts : gamification, sentiment d’appartenance, coopération, cohésion<br />
* '''Niveau 3 : Communication de son sentiment de compétence''' : intérêts : plus facile que d'exprimer ses émotions, et plus facile à gérer par l'enseignant.e, par exemple les gens qui ont compris avec celles-ceux qui n'ont pas compris<br />
<br />
Nous avons réalisé complètement le niveau 1, ainsi que prototypé et testé le niveau 2 avec des cables avant de pouvoir gérer par Bluetooth un Bluefruit spécifique dans un réseau comprenant plusieurs Bluefruits. Les solutions avec code et prototypes sont décrites dans la section suivante.<br />
<br />
== Solutions explorées ==<br />
<br />
===1er prototype===<br />
La première solution envisagée comporte deux objets : <br />
* Un '''émetteur''' : facile d’utilisation et agréable à porter, nous penchons pour la solution d’un bracelet contenant un micro circuit type Lilypad, Arduino Gemma ou Tinyduino. L’apprenant disposerait de 4 boutons-pressoirs pour 4 émotions majeures à transmettre (intérêt, confusion, frustration, incompréhension), symbolisés par des logos ou émoticônes. Les messages sont transmis par Bluetooth.<br />
* Un '''récepteur''' : Une jauge, comprenant une bande Neopixels, connectée à un Arduino Uno. Les LED symboliseraient deux dimensions fournies : la couleur pour le type d'émotion et le nombre pour la quantité d'étudiant.e.s ayant transmis l'information. L'Arduino pourrait gérer l'information, en émettant un son lors du dépassement d'un seuil prédéfini sur une émotion par exemple.<br />
<br />
====Maquettes====<br />
<u>1ère itération</u><br />
<br />
[[Fichier:Maquette_projet_STIC_III_Djamileh_et_Simon.jpg|néant|vignette|1103x1103px|Maquette n°1 du projet]]<br />
<br />
<u>2e itération</u><br />
<br />
L'Arduino Uno lance une séquence de randomisation de couleur, en affiche une, puis les participant.e.s font de même sur leur CPX. Si les couleurs affichées "matchent", le groupe est constitué et on peut ainsi passer à la constitution aléatoire du groupe suivant. <br />
[[Fichier:2e Maquette projet STIC III Djamileh et Simon .jpg|néant|vignette|1103x1103px|Maquette n°2 du projet]]<br />
<br />
====Code====<br />
<u>Version 1.0 du code CPX :</u> <syntaxhighlight lang="javascript"><br />
input.buttonA.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 200<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(40)<br />
color2 += Math.randomRange(1, 3)<br />
light.setPhotonPenHue(color2)<br />
}<br />
light.photonFlip()<br />
})<br />
input.buttonsAB.onEvent(ButtonEvent.Click, function () {<br />
control.reset()<br />
})<br />
input.buttonB.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 300<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
color2 += 3<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(50)<br />
}<br />
})<br />
let tonalité = 0<br />
let durée = 0<br />
let color2 = 0<br />
light.setBrightness(158)<br />
music.setVolume(167)<br />
forever(function () {<br />
<br />
})<br />
</syntaxhighlight><br />
<br />
===2e prototype===<br />
<br />
====Maquette====<br />
<u>'''Boîte émettrice'''</u><br />
[[Fichier:Boite CPX STIC III.png|néant|vignette|Plan découpe boîte émettrice CPX]]<br />
[[Fichier:Etiquettes Boite CPX STIC III.png|néant|vignette|Etiquettes boîte CPX]]<br />
[[Fichier:Maquette boîte CPX.png|néant|vignette|Rendu de la boîte]]<br />
[[Fichier:Dispositif "Master" d'envoi.jpg|néant|vignette|Dispositif "Master" d'envoi]]<br />
[[Fichier:Boite STIC III.jpg|néant|vignette|Boîte finale]]<br />
<u>'''Cadrans récepteurs'''</u><br />
[[Fichier:Bracelets CPX STIC III.png|néant|vignette|Cadrans récepteurs]]<br />
[[Fichier:2021-09-04 11.43.22.jpg|néant|vignette|Dispositif d'envoi et montre récéptrice]]<br />
<br />
====Code====<br />
[[Fichier:CPX firstproto.jpg|vignette|droite|Une étape dans le test du code - 5 binomes de noël! ]]<br />
La solution présentée ici s'occupe du niveau 1, soit la création de groupe aléatoire à l'aide d'un CPX Bluefruit.<br />
Elle a été codée en CircuitPython. Nous avons rédigé le code nous-mêmes, avec deux supports : la création du dictionnaire pour la randomisation été possible grâce à l'aimable contribution de notre collègue Jérôme. Concernant l'envoi et la réception de données par Bluetooth, nous nous sommes basés sur les [https://learn.adafruit.com/circuitpython-nrf52840/bluetooth-basics tutoriels Adafruit], ainsi que deux projets utilisant des fonctionnalités se rapprochant de notre projet :<br />
* [https://learn.adafruit.com/circuit-playground-bluefruit-neopixel-animation-and-color-remote-control projet 1]<br />
* [https://learn.adafruit.com/color-remote-with-circuit-playground-bluefruit projet 2]<br />
<br />
'''Code pour le CPB Emetteur'''<br />
<syntaxhighlight lang="python"><br />
# Groupify !<br />
# Un projet de S!m & Dja<br />
# Code CircuitPython pour la répartition dans les groupes (MASTER)<br />
<br />
"""<br />
SETUP GENERAL<br />
"""<br />
<br />
# LIBRAIRIES<br />
import random<br />
import time<br />
<br />
# Librairie pour gérer la bande neopixel du bluefruit<br />
from adafruit_circuitplayground.bluefruit import cpb<br />
<br />
# Librairies pour gérer la transmission bluetooth<br />
from adafruit_ble import BLERadio<br />
from adafruit_ble.advertising.standard import ProvideServicesAdvertisement<br />
from adafruit_ble.services.nordic import UARTService<br />
<br />
# Librairie pour envoyer la couleur<br />
from adafruit_bluefruit_connect.color_packet import ColorPacket<br />
<br />
# Helper function pour gérer la connexion entre plusieurs Bluefruits<br />
# reprise sur https://learn.adafruit.com/circuit-playground-bluefruit-neopixel-<br />
# animation-and-color-remote-control/remote-control-code<br />
def send_packet(uart_connection_name, packet):<br />
"""Returns False if no longer connected."""<br />
try:<br />
uart_connection_name[UARTService].write(packet.to_bytes())<br />
except: # pylint: disable=bare-except<br />
try:<br />
uart_connection_name.disconnect()<br />
except: # pylint: disable=bare-except<br />
pass<br />
return False<br />
return True<br />
<br />
<br />
# Input utilisateur<br />
participants = int(input("Nombre de participants : "))<br />
groupe = int(input("Nombre de groupes : "))<br />
<br />
"""<br />
CREATION DES GROUPES<br />
"""<br />
<br />
# création listes à long. variable (+ 1 pour compenser la numération depuis 0)<br />
liste_part = list(range(1, participants + 1)) # print(liste_part)<br />
nb_part = len(liste_part) + 1<br />
liste_groupe = list(range(1, groupe + 1)) # print(liste_groupe)<br />
<br />
# Déf. grille (dict. de listes) combinations possibles<br />
clé_tableau = str(participants) + "_" + str(groupe)<br />
# !!! ajouter combinaisons pas possible : eg. tour de roue lumineuse/son pourri !!!<br />
grille_repartition = {<br />
"10_5": [2, 2, 2, 2, 2],<br />
"10_4": [2, 2, 3, 3],<br />
"10_3": [3, 3, 4],<br />
"10_2": [5, 5],<br />
"9_4": [2, 2, 2, 3],<br />
"9_3": [3, 3, 3],<br />
"9_2": [4, 5],<br />
"8_4": [2, 2, 2, 2],<br />
"8_3": [2, 3, 3],<br />
"8_2": [4, 4],<br />
"7_3": [2, 2, 3],<br />
"7_2": [4, 3],<br />
"6_3": [2, 2, 2],<br />
"6_2": [3, 3],<br />
"5_2": [2, 3],<br />
"4_2": [2, 2],<br />
}<br />
# détermination du nb et taille des groupes à créer<br />
taille_groupe = grille_repartition[clé_tableau]<br />
print(taille_groupe)<br />
<br />
# création (dict) répartition aléatoire<br />
dict_repartition = {} # initialisation<br />
for i in range(0, len(taille_groupe)):<br />
dict_repartition[liste_groupe[i]] = [] # création des items du dictionnaire<br />
for j in range(0, taille_groupe[i]):<br />
etu = liste_part[random.randint(0, len(liste_part) - 1)]<br />
dict_repartition[liste_groupe[i]].append(etu)<br />
liste_part.remove(etu)<br />
# print (liste_part)<br />
# print (dict_repartition)<br />
print(dict_repartition)<br />
<br />
# Définition des groupes avec couleurs<br />
groupeList = list(dict_repartition.values())<br />
print(groupeList)<br />
<br />
# GESTION NEOPIXEL<br />
cpb.pixels.brightness = 0.05<br />
<br />
# Grille de définition des couleurs de groupe<br />
dict_couleur = {<br />
"gr1": (0, 255, 0),<br />
"gr2": (255, 0, 255),<br />
"gr3": (255, 255, 0),<br />
"gr4": (0, 255, 255),<br />
"gr5": (255, 0, 0),<br />
}<br />
# print(dict_couleur)<br />
<br />
# transf. dict -> list<br />
liste_couleur = list(dict_couleur.values())<br />
print("liste de couleur totale: ", liste_couleur)<br />
<br />
# définition des couleurs selon nb de groupe<br />
dict_neopix = {}<br />
for i in range(0, len(taille_groupe)):<br />
codecouleur = liste_couleur[i]<br />
dict_neopix[i] = codecouleur<br />
# print(dict_neopix)<br />
<br />
# transf. dict -> list<br />
liste_neopix = list(dict_neopix.values())<br />
print("liste de couleur spécifique: ", liste_neopix)<br />
<br />
# Attribution des couleurs par pixel<br />
liste_pixels = []<br />
for i in range(0, nb_part):<br />
for j in range(0, len(taille_groupe)):<br />
if i in groupeList[j]:<br />
pix = liste_neopix[j]<br />
liste_pixels.append(pix)<br />
print("couleurs des pixels : ", liste_pixels)<br />
<br />
"""<br />
TRANSMISSION AUX BLUEFRUITS PARTICIPANTS (SLAVES)<br />
"""<br />
# Setup de la transmission<br />
ble = BLERadio()<br />
uart_service = UARTService()<br />
advertisement = ProvideServicesAdvertisement(uart_service)<br />
<br />
uart_connection = None<br />
# Controle sur des connexions disponibles<br />
if ble.connected:<br />
for connection in ble.connections:<br />
if UARTService in connection:<br />
uart_connection = connection<br />
break<br />
<br />
while True:<br />
# Allumage de la bnde neopixel / visualisation des groupes formés<br />
for i in range(0, nb_part - 1):<br />
cpb.pixels[i] = liste_pixels[i]<br />
<br />
# Gestion de la transmission<br />
if not uart_connection or not uart_connection.connected:<br />
# Condition : pas de connexion > scan<br />
print("Scanning...")<br />
for adv in ble.start_scan(ProvideServicesAdvertisement, timeout=5): # Scan...<br />
if UARTService in adv.services: # si periphérique existe<br />
print("Found a UARTService advertisement.")<br />
uart_connection = ble.connect(adv) # crée une connexion<br />
break<br />
# Arrêt du scannage de l'environnement<br />
ble.stop_scan()<br />
<br />
# si connexion existante :<br />
while uart_connection and uart_connection.connected:<br />
if cpb.button_a: # Transmission des données neopixels avec A<br />
print("Bouton A - envoi données")<br />
color = cpb.pixels[0]<br />
if not send_packet(uart_connection, ColorPacket(color)):<br />
uart_connection = None<br />
continue<br />
time.sleep(0.1) # Delay to prevent sending packets too quickly.<br />
</syntaxhighlight><br />
<br />
'''Code pour le CPB Récepteur (participants)'''<br />
<syntaxhighlight lang="python"><br />
"""<br />
Code pour les bluefruits participants<br />
"""<br />
import time<br />
<br />
from adafruit_circuitplayground.bluefruit import cpb<br />
<br />
from adafruit_ble import BLERadio<br />
from adafruit_ble.advertising.standard import ProvideServicesAdvertisement<br />
from adafruit_ble.services.nordic import UARTService<br />
<br />
from adafruit_bluefruit_connect.packet import Packet<br />
from adafruit_bluefruit_connect.color_packet import ColorPacket<br />
<br />
num_pixels = 10<br />
<br />
# animation initiale - "chase" est une animation de base dans les librairies<br />
# d'animation pour neopixel (cf neopixel überguide)<br />
def color_chase(color, wait):<br />
for i in range(num_pixels):<br />
cpb.pixels[i] = color<br />
time.sleep(wait)<br />
cpb.pixels.show()<br />
time.sleep(0.5)<br />
<br />
<br />
# Grille des couleurs de groupe pour animation<br />
dict_couleur = {<br />
"gr1": (0, 255, 0),<br />
"gr2": (255, 0, 255),<br />
"gr3": (255, 255, 0),<br />
"gr4": (0, 255, 255),<br />
"gr5": (255, 0, 0),<br />
}<br />
<br />
liste_couleur = list(dict_couleur.values())<br />
print(liste_couleur)<br />
<br />
# Setup standard pour la réception<br />
ble = BLERadio()<br />
uart = UARTService()<br />
advertisement = ProvideServicesAdvertisement(uart)<br />
<br />
cpb.pixels.brightness = 0.05<br />
receptionGroupe = False<br />
<br />
while True:<br />
ble.start_advertising(advertisement)<br />
<br />
while not cpb.switch:<br />
for i in range(0, len(liste_couleur)):<br />
couleurCode = liste_couleur[i]<br />
color_chase(couleurCode, 0.05)<br />
<br />
if cpb.switch:<br />
while not ble.connected:<br />
pass<br />
ble.stop_advertising()<br />
<br />
while ble.connected:<br />
if uart.in_waiting:<br />
packet = Packet.from_stream(uart)<br />
if isinstance(packet, ColorPacket):<br />
cpb.pixels.fill(packet.color)<br />
</syntaxhighlight><br />
<br />
== Test(s) de la solution ==<br />
<br />
===Cognitive walkthrough===<br />
<br />
Pour produire ce cognitive walkthrough, nous nous sommes basés sur les principes du [https://edutechwiki.unige.ch/en/Cognitive_walkthrough#Fluid_project_overview Fluid Project].<br />
<br />
==== Persona ====<br />
[[Fichier:PERSONA INGO NITO.jpg|néant|cadre]]<br />
<br />
==== Objectifs ====<br />
<br />
* Créer des groupes grâce au dispositif émetteur<br />
* Communiquer ces groupes aux dispositifs récepteurs<br />
* Renforcer l'engagement grâce à un dispositif ludique et actif<br />
<br />
==== Scénario d'utilisation ====<br />
<br />
# (en amont) Réfléchir à un combien de groupes seront créés en fonction du nombre de participant.e.s disponible.s<br />
# Allumage du dispositif<br />
# Lancement du dispositif<br />
# Réalisation d'une séquence de composition de groupe<br />
# Lancement et réalisation de la séquence suivante de communication avec envoi des groupes constitués aux dispositifs distants<br />
# Mise hors tension du dispositif<br />
<br />
=== Tests utilisateur·trice·s===<br />
<br />
==== '''Scénario final''' ====<br />
Le test utilisateur est une méthode utilisée pour évaluer l’expérience utilisateur d’un système, mais également les forces et les faiblesses de celui-ci. Cette méthode, consiste à mettre l’utilisateur·trice en situation « réelle » afin d’observer ses comportements et ses actions lorsqu’il exécute des tâches prédéfinies qui lui sont administrées sous la forme d’un scénario. Il leur est alors demandé de nous renseigner sur leurs expériences.<br />
<br />
Lors de cette phase, un prototype du projet est présenté à des utilisateur·trices recrutés au sein du public cible. A ce stade, le prototype devrait être suffisamment abouti pour offrir les principales fonctionnalités constitutives de la version finale. Néanmoins, il diffère de celle-ci puisque certaines fonctionnalités accessoires ne pourraient ne pas être encore implémentées. En présentant assez tôt un produit relativement proche de la version finale, nous entendons nous assurer que les directions prises dans les précédentes phases de conception soient les plus à même de répondre aux besoins des utilisateur·trice·s. Le prototype sera modifié en fonction des retours formulés par les observations réalisées ainsi que par les analyses des résultats des tests. <br />
<br />
Le test utilisateur se déroulera en 3 étapes :<br />
#Accueil des participants<br />
#Réalisation des tâches<br />
#Entretien succinct<br />
<br />
Dans la première étape, le participant sera accueilli, le contexte et le test utilisateur lui seront alors présentés de manière générale. Lors du test, l’utilisateur·trice « découvrira » le dispositif en réalisant des tâches préparées au préalable (scénario des tâches). Ici, nous éprouverons l’expérience de l’utilisateur·trice.<br />
<br />
Après avoir exposé le contexte dans lequel le scénario prend place, nous demanderons à la personne d’accomplir les tâches décrites dans le tableau "scénario des tâches". De plus, nous encouragerons le/la participant·e à formuler à voix haute ses pensées et ressentis lors de l’utilisation de l’outil. <br />
<br />
Les participant·e·s seront accueillis avec la consigne suivante : <br />
{{Citation encadrée | ''Merci d’avoir accepté de faire ce test avec moi aujourd'hui. Je travaille sur le développement d’un outil pour la constitution aléatoire de groupes de travail dans une classe. Cette technique permet de constituer des groupes rapidement et de communiquer ceux-ci aux participant.e.s quasi instantanément.''}}<br />
<br />
Le scénario des tâches se composera de deux éléments : le contexte et les tâches à effectuer par le/la participant.e. Le contexte aura pour but de mettre l’utilisateur·trice dans une situation réaliste qui se rapprochera de son quotidien et/ou du contexte pendant lequel il pourrait être mené à utiliser le dispositif. Le contexte sera formulé de la manière suivante :<br />
<br />
{{Citation encadrée | ''Vous êtes au début d’une activité de débat, dans votre classe, avec vos étudiant.e.s. Pour réaliser cette activité, vous devez d’abord constituer des groupes de manière aléatoire, avec les étudiant.e.s qui composent votre cours. Pour se faire, vous allez donc devoir utiliser le dispositif-prototype en annexe.''<br />
<br />
''Le dispositif à tester se compose de plusieurs éléments. Le premier élément est le dispositif émetteur. Il va être utilisé pour composer les groupes d’étudiant.e.s de manière aléatoire et par couleur. <br />
Ensuite, avec les boutons présents sur celui-ci, il sera capable de transmettre les données choisies aux dispositifs récepteurs annexes.''<br />
<br />
''Durant le test, vous allez être amené.e à utiliser les différents dispositifs cités afin de réaliser plusieurs tâches. Celles-ci ne devraient pas être trop compliquées et ne nécessiteront, non plus , pas trop de temps de réalisation.''}}<br />
<br />
Après avoir exposé le contexte dans lequel le scénario prend place, nous demanderons au participant d’accomplir les tâches décrites dans le tableau "scénario des tâches".<br />
<br />
Pour l’étape des tâches, nous donnerons les consignes suivantes :<br />
<br />
{{Citation encadrée |''Avant de commencer le test et les tâches, n’hésitez pas à poser des questions si un/des élément(s) ne vous paraissent pas clair(s). Nous restons bien entendu à disposition, si besoin , durant la réalisation des tâches. <br />
''}}<br />
<br />
Chaque tâche sera expliquée au fur et à mesure au participant.<br />
{| style="border: 1px solid black; border-spacing: 0; margin: 0.5em auto;"<br />
|+ '''Scénario des tâches'''<br />
|-<br />
! style="border: 1px solid black; padding: 5px; background: #D4D4D8; width: 200pt;" | Tâche 1<br />
| style="border: 1px solid black; padding: 5px; vertical-align: top; width: 400pt;" |''Pour commencer, veuillez trouver comment allumer le dispositif. Une fois que c’est fait, vous pouvez passer à la tâche suivante.''<br />
|-<br />
! style="border: 1px solid black; padding: 5px; background: #D4D4D8; width: 200pt;" |Tâche 2<br />
| style="border: 1px solid black; padding: 5px; vertical-align: top; width: 400pt;" |''Comme seconde tâche, veuillez décider de combien de groupes vous aurez besoin selon le nombre d’élèves à votre disposition. ''<br />
|-<br />
! style="border: 1px solid black; padding: 5px; background: #D4D4D8; width: 200pt;" | Tâche 3<br />
| style="border: 1px solid black; padding: 5px; vertical-align: top; width: 400pt;" |''Comme tâche suivante, renseignez les informations souhaitées sur le dispositif émetteur (nombre de groupes et nombre d’élèves). ''<br />
|-<br />
! style="border: 1px solid black; padding: 5px; background: #D4D4D8; width: 200pt;" | Tâche 4<br />
| style="border: 1px solid black; padding: 5px; vertical-align: top; width: 400pt;" |''Comme dernière tâche, envoyez les données depuis le dispositif émetteur aux dispositifs récepteurs. ''<br />
|-<br />
|<br />
|<br />
|}<br />
<br />
==== Vidéo du test utilisateur.trice.s ====<br />
[[Fichier:Users Tests.ogg|néant|vignette|600x600px]]<br />
<br />
==== Retours des tests ====<br />
<br />
Nos trois testeurs ont une testé autant le côté participant que formateur.<br />
<br />
Deux sont des formateurs.trices d'adulte qui animent des groupes de 1 à 25 personnes, en présence, en créant régulièrement des activités de sous-groupes et ont exprimé un réel intérêt à posséder un outil leur permettant de varier la façon de créer des groupes et surtout de ne pas avoir à choisir eux-mêmes, bénéficiant de l'aléatoire comme expérimenté à distance avec des outils de visioconférence.<br />
<br />
Le dernier testeur est facilitateur dans des workshops de co-création et Design Thinking. Il est donc régulièrement amené à créer des sous-groupes, pour des groupes de tailles pouvant aller jusqu'à 50. Pour lui aussi, l'outil présente une plue-value, si son design pouvait être adapté à des groupes plus grands.<br />
<br />
Les retours sont classés par rôle (formateur/participant). Comme la plupart des retours ont été très similaires, nous les avons regroupé en spécifiant s'il s'agissait d'une ou plusieurs personnes.<br />
<br />
'''Côté formateur''' (CPB émetteur)<br />
<br />
* Le son n’est pas indispensable selon le formateur. Mais, une étape de validation ou un autre retour serait à envisager. <br />
<br />
* Pas de manque particulier. Cependant, il faudrait poser des conditions automatiques ou en tout cas que les processus soient automatiques sans une maîtrise de la part du formateur. En gros, n’importe qui de la classe pourrait le faire. Une solution serait de demander à quelqu’un.e dans la classe s’il/elle veut procéder au lancement du processus des groupes.<br />
<br />
* Concernant les couleurs, comme elles ne sont pas arrangées dans un ordre précis et que les positions des LED sont décalées, cela perturbe un petit peu. Mais, on comprend que c’est une logique de programmation. Cela serait simplement plus agréable visuellement pour un utilisateur sur 3.<br />
<br />
* Une remarque a été produite concernant la possibilité de garder en main les objets plutôt que de les avoir comme montre au poignet (participant) ou dans une boîte (formateur). En rendant disponible le dispositif à la main directement cela peut démontrer que tout le monde est logé à la même enseigne et qu’il n’y a pas de différences entre l’enseignant et les élèves. Tout le monde a le même objet.<br />
<br />
* Il serait amusant d’ajouter une compétition afin de déterminer si un.e élève choisit et effectue la composition des groupes plutôt que le formateur. Celui qui a la montre qui s’allume par exemple dans la classe en premier pourra alors lancer la séquence de randomisation au lieu du prof. Cela donnerait un côté ludique et encore plus engageant, voire plus hasardeux et permettrait d’aller plus loin que le seul processus de composition aléatoire des groupes par couleurs. <br />
<br />
* Le retour (ou annulation de fonction) n’est pas possible. Cela n’est pas contraignant en soi mais un peu dérangeant selon le testeur-formateur. <br />
<br />
* Le premier testeur a eu envie de secouer le CPB au moment de créer les groupes. Il aurait aimé ne pas avoir à appuyer sur des boutons, mais d’utiliser l’aspect aléatoire de secouer l’objet, comme une boule 8 magique. Cela lui donnerait une meilleure impression que cela est réellement une génération aléatoire de groupes.<br />
<br />
* Il y a globalement eu un besoin de mieux valider les différentes étapes chez les 3 testeurs. Le premier aurait apprécié intégrer les données avec les boutons A et B, valider avec la slider et avoir un retour visuel (changement de couleur des LED) pour valider l’action. Contrairement aux deux autres testeurs, il a aimé devoir appuyer sur un bouton pour envoyer les données aux récepteurs participants. Cela démontre des différences dans les envies et besoins de contrôle des utilisateurs.<br />
<br />
<br />
'''Côté participant.e.s''' (CPB récepteur)<br />
<br />
* Le “slider” ne devrait pas être obligatoire à utiliser car il devrait y avoir une étape automatique et directe de réception de la couleur de groupe. Remarque identique pour la seconde participante.<br />
<br />
* La découverte du dispositif est agréable, “cool”. On a envie de savoir comment cela fonctionne. Le rendu et la structure, cela rend bien. <br />
La rotation des couleurs du dispositif de réception fait penser à un casino ; l’attente devient cool et excitante : la participante était impatiente de connaître son groupe.<br />
<br />
* Il devrait y avoir du son ou une vibration pour valider les étapes ou en tout cas un retour visuel qui viendrait sanctionner les manipulations sur le dispositif. Cela pourrait être une petite musique qui annonce le groupe attribué. La 2e testeuse rapporte que cela donne le sentiment “d’avoir gagné”.<br />
<br />
* Une remarque a été formulée concernant l’utilisation de ce type de dispositif sur toute une journée de cours. En effet, cela peut être répétitif si à chaque fois que l’on doit former des groupes, les participant.e.s doivent utiliser le dispositif. Il devrait apporter une certaine plus-value selon un des testeurs. L’idée d’ajouter un écran au dispositif a été proposée, où des consignes pourraient s’afficher ; cela donnerait un aspect utile en plus. Le dispositif pourrait ainsi faciliter les activités de groupes en plusieurs phases : les participants se regroupent selon la couleur reçue et ils reçoivent une première consigne. Puis le formateur envoie le temps restant et la suite des activités, jusqu’au retour en plénière.<br />
<br />
* Concernant le dispositif de réception, la “montre”, son utilité et son design ont été remis en question. Il pourrait être sous forme de patch ou pin’s plutôt qu’un objet au poignet selon les utilisateur.trice.s. En effet, des participant.e.s ont peut-être déjà des montres ou des bracelets au poignet ce qui pourrait être contraignant. De plus, à cette phase du prototypage, comme il ne s’agit que d’allumer une LED, il serait envisageable d’utiliser de la broderie numérique et d’y intégrer une micro-circuit avec une LED (i.e. Gemma, Flora)<br />
<br />
== Discussion ==<br />
=== Design === <br />
Le design actuel est parti d'une idée d'utiliser la découpe laser pour la boîte émettrice et une forme de montre pour les récepteurs participants, avec un côté vintage et nostalgique des séries des années 80.<br />
Cela dit, nous avions tout de même recherché des produits plus petits et plus discrets, faciles à transporter et à manipuler.Cela s'est confirmé lors des tests, où en fin de compte, les participants ont apprécié avoir des objets légers et faciles à manipuler en main. Pour un prochain prototype, nous nous orienterions vers un Gemma ou Flora, sur un patch en broderie numérique pour les récepteurs participants.<br />
<br />
Du côté émetteur, il est resté jusqu'à la fin la difficulté de l'input du nombre de participants et du nombre de groupes attendus. Les potentiomètres se sont avérés trop complexes, autant pour comprendre ce qu'il fallait commander que pour programmer des niveaux de voltage correspondant à des seuils de chiffre. Pour pallier cette difficulté, nous avons tenté d'utiliser les éléments du CPB, soit les boutons et la slider. Cependant, cela nécessite des manipulations longues (par exemple : bouton A pour ajouter un participant, bouton B pour en enlever, slider pour valider) et rend l'opération fastidieuse. <br />
<br />
Enfin, l'utilisation de la bande neopixel du CPB limite le nombre total de participants à 10. Pour une prochaine itération, nous utiliserions une bande externe permettant la gestion de groupes plus larges.<br />
<br />
=== Résultats des tests utilisateurs === <br />
Une partie des retours utilisateurs ont été intégrés dans la section Design, car ils faisaient écho à nos propres envies, qui n'avaient pas été réalisables techniquement. Nous retenons les points clés suivants pour les prochaines itérations du projet, en avantages et faiblesses : <br />
<br />
Les avantages sont :<br />
* un aspect ludique qui rend excitant le moment de passage à l'activité de sous-groupe et qui renforce l'engagement<br />
* un effet d'appartenance et de cohésion <br />
* une dimension pédagogique de rééquilibrage des postures : la personne qui forme peut choisir de contrôler la création des groupes ou de la rendre démocratique par sa délégation à un membre de la classe. Cela permet de garder une réelle impression de hasard<br />
<br />
Du côté des faiblesses à améliorer :<br />
* Encore trop complexe et long par rapport à sa réelle plus-value. Il faudrait soit simplifier son utilisation (moins d'étapes intermédiaires (clic, slide) ou lui ajouter des fonctionnalités de communications avec les groupes (consignes, temps restants, etc.)<br />
* Le design actuel semble trop envahissant (boite, montre). Il faudrait le rendre plus facile à manipuler, porter et à oublier lorsqu'il n'est pas utilisé<br />
<br />
== Licence, fichiers et documentation ==<br />
[[Fichier:By-nc.png|150px]] Cette œuvre est mise à disposition selon les termes de la [http://creativecommons.org/licenses/by-nc/4.0/ Licence Creative Commons Attribution - Pas d’Utilisation Commerciale 4.0 International].<br />
<br />
* Fichiers :<br />
Fichiers avec code émetteur et récepteur : [[Fichier:Code source.zip|vignette]]<br />
<br />
* Documentation : <br />
Guide utilisateur : [[Fichier:Userguide.pdf]]<br />
<br />
== Bibliographie ==<br />
<br />
* Blair, C., Calkins, S., & Kopp, L. (2010). Self-regulation as the interface of emotional and cognitive development: Implications for education and academic achievement.<br />
* Pekrun, R., Goetz, T., Titz, W., & Perry, R. P. (2002). Academic emotions in students' self-regulated learning and achievement: A program of qualitative and quantitative research. Educational psychologist, 37(2), 91-105.</div>Djamileh Aminianhttps://edutechwiki.unige.ch/fmediawiki/index.php?title=Fichier:Code_source.zip&diff=154739Fichier:Code source.zip2021-09-04T11:36:12Z<p>Djamileh Aminian : </p>
<hr />
<div>Code pour les émetteurs et récepteurs projets stic 3</div>Djamileh Aminianhttps://edutechwiki.unige.ch/fmediawiki/index.php?title=Fichier:Userguide.pdf&diff=154738Fichier:Userguide.pdf2021-09-04T11:32:23Z<p>Djamileh Aminian : </p>
<hr />
<div>Guide utilisateur dispositif stic 3</div>Djamileh Aminianhttps://edutechwiki.unige.ch/fmediawiki/index.php?title=STIC:STIC_III_(2020)/Forces_rouge,_rose,_vert,_jaune_ou_bleu_!&diff=154735STIC:STIC III (2020)/Forces rouge, rose, vert, jaune ou bleu !2021-09-04T09:53:23Z<p>Djamileh Aminian : /* Retours des tests */</p>
<hr />
<div>{{bloc important|Projet réalisé par [[Utilisateur:Djamileh_Aminian|Djamileh]] & [[Utilisateur:Simon_Jöhr|Simon]]}}<br />
<br />
== Introduction ==<br />
Durant la dernière année, le passage forcé à la téléformation, soit la formation synchrone à distance, a eu comme effet positif de pousser certains spécialistes de l’éducation à revisiter leurs scénarios pédagogiques pour revenir aux fondamentaux : comment aider les élèves à apprendre ce qu’ils sont sensés apprendre et comment les accompagner au mieux dans leur apprentissage ? Souvent, les difficultés relevées lors des bilans des derniers mois de distantiel ont fait émerger des problèmes qui existaient déjà en présence, mais qui restaient latents ou ignorés.<br />
<br />
En ce sens, l’apprentissage est fortement influencé par les émotions par lesquelles passent les élèves au cours de la formation, et en particulier pendant les moments synchrones. Pourtant, il est très complexe de détecter, mesurer, ou même faire exprimer les étudiant-es sur leur ressenti.<br />
<br />
En donnant leurs cours en visioconférence, nombreux formateurs et formatrices ont exprimé leur frustration de ne pas réussir à évaluer l’état émotionnel et autres indices non verbaux de leurs participant.e.s, retours essentiels pour adapter une explication ou ajuster le rythme. Et cet effet est loin d’être limité à la distance : il est également bien présent dans une salle de classe où il reste complexe de capter en temps réel les émotions d’un étudiant, processus complexe et dynamique.<br />
<br />
Notre projet prend sa racine dans ce constat. Deux questions ont alors émergé : <br />
* comment mesurer l'état émotionnel d'un-e apprenant-e, <br />
* et surtout, pour quel usage ?<br />
<br />
Dans ce contexte, nous avons pensé un dispositif de partage des ressentis de la classe à destination de l'équipe enseignante, et une utilisation de cette donnée comme retour au groupe.<br />
<br />
== Problème ==<br />
<br />
Le but de ce projet est de proposer une solution ludique à la constitution de groupes en classe, que cela soit en présence, à distance ou de manière comodale. En utilisant un Arduino Uno ou des CPX, la phase de constitution de groupes sera ainsi rapide, aléatoire et "fun" !<br />
<br />
Le ''Problem Statement'' peut s’exprimer ainsi : « Comment peut-on aider les formateurs et formatrices à identifier rapidement les difficultés dans l’apprentissage et, le cas échéant, à réagir ? »<br />
<br />
== Cahier des charges == <br />
=== Contexte et public ===<br />
Le public cible est composé de formateurs et formatrices d’adultes, en entreprise ou en institut. Il pourrait également être élargi aux enseignante.s du scolaire, mais la conscientisation et l’expression d’une émotion sont suffisamment complexes pour limiter notre premier dispositif à des adultes, disposant, à priori, d’une compréhension plus fine de leur état émotionnel. De plus, l’asymétrie dans la relation est supposée moins forte dans un groupe d’adultes en formation que dans une classe avec un enseignant et des enfants ou adolescents.<br />
<br />
===Objectifs===<br />
Le but du dispositif est de :<br />
* permettre la communication d'un niveau émotionnel perçu par l'étudiant.e à l'enseignant.e<br />
* faire émerger un état général de la classe et les différences dans l'acquisition du contenu<br />
* de manière plus pragmatique, de créer des groupes sur la base des éléments communiqués<br />
<br />
===Besoins et contraintes===<br />
L'idée du projet a beaucoup évolué entre la phase d'identification des besoins et les constatations sur les possibilités offertes par la technologie et l'expertise à disposition. Nous détaillons ci-dessous les besoins et contraintes qui nous ont menés à la solution présentée plus bas.<br />
<br />
Partant au début d’une idée de jauge émotionnelle dynamique, donnant en tout temps l’état émotionnel d’un groupe de participants, nous avons rapidement détecté, en phase d'idéation avec plusieurs spécialistes en éducation, un aspect extrêmement anxiogène pour le formateur dont le groupe enverrait des signaux d’ennui ou de frustration, durant une explication. <br />
<br />
Afin de juguler cet effet, tout en conservant la possibilité de communiquer un message sur l’état, nous avons adapté le dispositif pour permettre aux étudiants de transmettre leur état à des moments spécifiques de la formation, intégrés dans le scénario pédagogique. L'émotion étant un élément sensible à conscientiser, exprimer et partager au sein d'un groupe, nous avons estimé plus judicieux de faire exprimer son niveau d'aisance face à un contenu qui vient d'être transmis. Ainsi, un-e enseignant-e scénarisera des moments d'autodiagnostic des étudiant-es sur leur perception de compétence sur la thématique. Cette information peut être utilisée pour réaliser des groupes de travail : (1) les personnes qui ont compris peuvent être orientées sur un contenu plus avancé, en échange pendant que l'enseignant organiser une séance de question-réponse avec les personnes en difficulté ou (2) des groupes peuvent être créés pour intégrer des étudiant-es qui ont compris avec des étudiant-es qui ont besoin d'aide.<br />
<br />
Le dispositif est donc pensé comme un outil de sondage à certains moments du cours, pour évaluer les besoins du groupe, dans son ensemble. Il est souvent difficile de récolter des informations sincères lors d’évaluations à chaud, les étudiants réticents à communiquer publiquement leurs difficultés ou désintérêts pour le contenu. Par la technique de transmission, les étudiants pourraient communiquer leur émotion de manière anonyme, favorisant l'authenticité.<br />
<br />
De manière intéressante au fur et à mesure de l'avance du projet, il est ressorti des discussions avec un échantillon du public cible que l'aspect de notre projet qui les intéressait était moins la communication des émotions, mais la création facilitée des groupes. En effet, les formateurs et formatrices ayant travaillé à distance durant la dernière année se sont habitués à disposer d'une fonction de création de groupe aléatoire, selon un nombre total de participants et un nombre de groupe visé. Cette fonction serait très utile également en présence, en utilisant une carte Arduino ou un CPX pour calculer une répartition des élèves par groupe, avec en entrée le nombre d'élèves et les sous-groupes. Une fois les groupes constitués, l'étape suivante est de communiquer ces groupes à l'ensemble de la classe au travers de Lilypad ou autres technologies portables qui s'allument selon la couleur de leur groupe.<br />
<br />
===Apports===<br />
* Cohésion et sentiment d'appartenance au groupe comme soutien à l'apprentissage<br />
* Expression d'un état émotionnel épistémique comme bénéfique à l'apprentissage<br />
<br />
===Présentation du projet===<br />
Suite aux premières itérations dans l'empathie et la définition du projet, nous avons identifié plusieurs points clés qui ont réorienté notre projet :<br />
* la création d'un réseau de cartes Bluetooth contrôlées par Arduino s'est révélée trop ambitieuse, suite au manque de projets existants ou d'expertise sur lesquels s'appuyer, <br />
* l'envie marquée de notre échantillon cible qui s'est dirigée sur l'aspect création de groupe plus que sur la connaissance des états affectifs.<br />
<br />
Nous avons donc revu le projet en le divisant en 3 niveaux de difficulté, afin de réaliser un prototype utilisable, puis de l'améliorer en fonction des retours et du temps à disposition.<br />
* '''Niveau 1 : Création de groupe aléatoire''' : intérêts : facilitation de la création des groupes (demande reçue d'un formateur : "parce que Zoom nous a bien aidé pour cela à distance, je veux la même chose en présence!")<br />
* '''Niveau 2 : Communication du groupe à l’apprenant''' : intérêts : gamification, sentiment d’appartenance, coopération, cohésion<br />
* '''Niveau 3 : Communication de son sentiment de compétence''' : intérêts : plus facile que d'exprimer ses émotions, et plus facile à gérer par l'enseignant.e, par exemple les gens qui ont compris avec celles-ceux qui n'ont pas compris<br />
<br />
Nous avons réalisé complètement le niveau 1, ainsi que prototypé et testé le niveau 2 avec des cables avant de pouvoir gérer par Bluetooth un Bluefruit spécifique dans un réseau comprenant plusieurs Bluefruits. Les solutions avec code et prototypes sont décrites dans la section suivante.<br />
<br />
== Solutions explorées ==<br />
<br />
===1er prototype===<br />
La première solution envisagée comporte deux objets : <br />
* Un '''émetteur''' : facile d’utilisation et agréable à porter, nous penchons pour la solution d’un bracelet contenant un micro circuit type Lilypad, Arduino Gemma ou Tinyduino. L’apprenant disposerait de 4 boutons-pressoirs pour 4 émotions majeures à transmettre (intérêt, confusion, frustration, incompréhension), symbolisés par des logos ou émoticônes. Les messages sont transmis par Bluetooth.<br />
* Un '''récepteur''' : Une jauge, comprenant une bande Neopixels, connectée à un Arduino Uno. Les LED symboliseraient deux dimensions fournies : la couleur pour le type d'émotion et le nombre pour la quantité d'étudiant.e.s ayant transmis l'information. L'Arduino pourrait gérer l'information, en émettant un son lors du dépassement d'un seuil prédéfini sur une émotion par exemple.<br />
<br />
====Maquettes====<br />
<u>1ère itération</u><br />
<br />
[[Fichier:Maquette_projet_STIC_III_Djamileh_et_Simon.jpg|néant|vignette|1103x1103px|Maquette n°1 du projet]]<br />
<br />
<u>2e itération</u><br />
<br />
L'Arduino Uno lance une séquence de randomisation de couleur, en affiche une, puis les participant.e.s font de même sur leur CPX. Si les couleurs affichées "matchent", le groupe est constitué et on peut ainsi passer à la constitution aléatoire du groupe suivant. <br />
[[Fichier:2e Maquette projet STIC III Djamileh et Simon .jpg|néant|vignette|1103x1103px|Maquette n°2 du projet]]<br />
<br />
====Code====<br />
<u>Version 1.0 du code CPX :</u> <syntaxhighlight lang="javascript"><br />
input.buttonA.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 200<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(40)<br />
color2 += Math.randomRange(1, 3)<br />
light.setPhotonPenHue(color2)<br />
}<br />
light.photonFlip()<br />
})<br />
input.buttonsAB.onEvent(ButtonEvent.Click, function () {<br />
control.reset()<br />
})<br />
input.buttonB.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 300<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
color2 += 3<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(50)<br />
}<br />
})<br />
let tonalité = 0<br />
let durée = 0<br />
let color2 = 0<br />
light.setBrightness(158)<br />
music.setVolume(167)<br />
forever(function () {<br />
<br />
})<br />
</syntaxhighlight><br />
<br />
===2e prototype===<br />
<br />
====Maquette====<br />
<u>'''Boîte émettrice'''</u><br />
[[Fichier:Boite CPX STIC III.png|néant|vignette|Plan découpe boîte émettrice CPX]]<br />
[[Fichier:Etiquettes Boite CPX STIC III.png|néant|vignette|Etiquettes boîte CPX]]<br />
[[Fichier:Maquette boîte CPX.png|néant|vignette|Rendu de la boîte]]<br />
[[Fichier:Dispositif "Master" d'envoi.jpg|néant|vignette|Dispositif "Master" d'envoi]]<br />
[[Fichier:Boite STIC III.jpg|néant|vignette|Boîte finale]]<br />
<u>'''Cadrans récepteurs'''</u><br />
[[Fichier:Bracelets CPX STIC III.png|néant|vignette|Cadrans récepteurs]]<br />
[[Fichier:2021-09-04 11.43.22.jpg|néant|vignette|Dispositif d'envoi et montre récéptrice]]<br />
<br />
====Code====<br />
[[Fichier:CPX firstproto.jpg|vignette|droite|Une étape dans le test du code - 5 binomes de noël! ]]<br />
La solution présentée ici s'occupe du niveau 1, soit la création de groupe aléatoire à l'aide d'un CPX Bluefruit.<br />
Elle a été codée en CircuitPython. Nous avons rédigé le code nous-mêmes, avec deux supports : la création du dictionnaire pour la randomisation été possible grâce à l'aimable contribution de notre collègue Jérôme. Concernant l'envoi et la réception de données par Bluetooth, nous nous sommes basés sur les [https://learn.adafruit.com/circuitpython-nrf52840/bluetooth-basics tutoriels Adafruit], ainsi que deux projets utilisant des fonctionnalités se rapprochant de notre projet :<br />
* [https://learn.adafruit.com/circuit-playground-bluefruit-neopixel-animation-and-color-remote-control projet 1]<br />
* [https://learn.adafruit.com/color-remote-with-circuit-playground-bluefruit projet 2]<br />
<br />
'''Code pour le CPB Emetteur'''<br />
<syntaxhighlight lang="python"><br />
# Groupify !<br />
# Un projet de S!m & Dja<br />
# Code CircuitPython pour la répartition dans les groupes (MASTER)<br />
<br />
"""<br />
SETUP GENERAL<br />
"""<br />
<br />
# LIBRAIRIES<br />
import random<br />
import time<br />
<br />
# Librairie pour gérer la bande neopixel du bluefruit<br />
from adafruit_circuitplayground.bluefruit import cpb<br />
<br />
# Librairies pour gérer la transmission bluetooth<br />
from adafruit_ble import BLERadio<br />
from adafruit_ble.advertising.standard import ProvideServicesAdvertisement<br />
from adafruit_ble.services.nordic import UARTService<br />
<br />
# Librairie pour envoyer la couleur<br />
from adafruit_bluefruit_connect.color_packet import ColorPacket<br />
<br />
# Helper function pour gérer la connexion entre plusieurs Bluefruits<br />
# reprise sur https://learn.adafruit.com/circuit-playground-bluefruit-neopixel-<br />
# animation-and-color-remote-control/remote-control-code<br />
def send_packet(uart_connection_name, packet):<br />
"""Returns False if no longer connected."""<br />
try:<br />
uart_connection_name[UARTService].write(packet.to_bytes())<br />
except: # pylint: disable=bare-except<br />
try:<br />
uart_connection_name.disconnect()<br />
except: # pylint: disable=bare-except<br />
pass<br />
return False<br />
return True<br />
<br />
<br />
# Input utilisateur<br />
participants = int(input("Nombre de participants : "))<br />
groupe = int(input("Nombre de groupes : "))<br />
<br />
"""<br />
CREATION DES GROUPES<br />
"""<br />
<br />
# création listes à long. variable (+ 1 pour compenser la numération depuis 0)<br />
liste_part = list(range(1, participants + 1)) # print(liste_part)<br />
nb_part = len(liste_part) + 1<br />
liste_groupe = list(range(1, groupe + 1)) # print(liste_groupe)<br />
<br />
# Déf. grille (dict. de listes) combinations possibles<br />
clé_tableau = str(participants) + "_" + str(groupe)<br />
# !!! ajouter combinaisons pas possible : eg. tour de roue lumineuse/son pourri !!!<br />
grille_repartition = {<br />
"10_5": [2, 2, 2, 2, 2],<br />
"10_4": [2, 2, 3, 3],<br />
"10_3": [3, 3, 4],<br />
"10_2": [5, 5],<br />
"9_4": [2, 2, 2, 3],<br />
"9_3": [3, 3, 3],<br />
"9_2": [4, 5],<br />
"8_4": [2, 2, 2, 2],<br />
"8_3": [2, 3, 3],<br />
"8_2": [4, 4],<br />
"7_3": [2, 2, 3],<br />
"7_2": [4, 3],<br />
"6_3": [2, 2, 2],<br />
"6_2": [3, 3],<br />
"5_2": [2, 3],<br />
"4_2": [2, 2],<br />
}<br />
# détermination du nb et taille des groupes à créer<br />
taille_groupe = grille_repartition[clé_tableau]<br />
print(taille_groupe)<br />
<br />
# création (dict) répartition aléatoire<br />
dict_repartition = {} # initialisation<br />
for i in range(0, len(taille_groupe)):<br />
dict_repartition[liste_groupe[i]] = [] # création des items du dictionnaire<br />
for j in range(0, taille_groupe[i]):<br />
etu = liste_part[random.randint(0, len(liste_part) - 1)]<br />
dict_repartition[liste_groupe[i]].append(etu)<br />
liste_part.remove(etu)<br />
# print (liste_part)<br />
# print (dict_repartition)<br />
print(dict_repartition)<br />
<br />
# Définition des groupes avec couleurs<br />
groupeList = list(dict_repartition.values())<br />
print(groupeList)<br />
<br />
# GESTION NEOPIXEL<br />
cpb.pixels.brightness = 0.05<br />
<br />
# Grille de définition des couleurs de groupe<br />
dict_couleur = {<br />
"gr1": (0, 255, 0),<br />
"gr2": (255, 0, 255),<br />
"gr3": (255, 255, 0),<br />
"gr4": (0, 255, 255),<br />
"gr5": (255, 0, 0),<br />
}<br />
# print(dict_couleur)<br />
<br />
# transf. dict -> list<br />
liste_couleur = list(dict_couleur.values())<br />
print("liste de couleur totale: ", liste_couleur)<br />
<br />
# définition des couleurs selon nb de groupe<br />
dict_neopix = {}<br />
for i in range(0, len(taille_groupe)):<br />
codecouleur = liste_couleur[i]<br />
dict_neopix[i] = codecouleur<br />
# print(dict_neopix)<br />
<br />
# transf. dict -> list<br />
liste_neopix = list(dict_neopix.values())<br />
print("liste de couleur spécifique: ", liste_neopix)<br />
<br />
# Attribution des couleurs par pixel<br />
liste_pixels = []<br />
for i in range(0, nb_part):<br />
for j in range(0, len(taille_groupe)):<br />
if i in groupeList[j]:<br />
pix = liste_neopix[j]<br />
liste_pixels.append(pix)<br />
print("couleurs des pixels : ", liste_pixels)<br />
<br />
"""<br />
TRANSMISSION AUX BLUEFRUITS PARTICIPANTS (SLAVES)<br />
"""<br />
# Setup de la transmission<br />
ble = BLERadio()<br />
uart_service = UARTService()<br />
advertisement = ProvideServicesAdvertisement(uart_service)<br />
<br />
uart_connection = None<br />
# Controle sur des connexions disponibles<br />
if ble.connected:<br />
for connection in ble.connections:<br />
if UARTService in connection:<br />
uart_connection = connection<br />
break<br />
<br />
while True:<br />
# Allumage de la bnde neopixel / visualisation des groupes formés<br />
for i in range(0, nb_part - 1):<br />
cpb.pixels[i] = liste_pixels[i]<br />
<br />
# Gestion de la transmission<br />
if not uart_connection or not uart_connection.connected:<br />
# Condition : pas de connexion > scan<br />
print("Scanning...")<br />
for adv in ble.start_scan(ProvideServicesAdvertisement, timeout=5): # Scan...<br />
if UARTService in adv.services: # si periphérique existe<br />
print("Found a UARTService advertisement.")<br />
uart_connection = ble.connect(adv) # crée une connexion<br />
break<br />
# Arrêt du scannage de l'environnement<br />
ble.stop_scan()<br />
<br />
# si connexion existante :<br />
while uart_connection and uart_connection.connected:<br />
if cpb.button_a: # Transmission des données neopixels avec A<br />
print("Bouton A - envoi données")<br />
color = cpb.pixels[0]<br />
if not send_packet(uart_connection, ColorPacket(color)):<br />
uart_connection = None<br />
continue<br />
time.sleep(0.1) # Delay to prevent sending packets too quickly.<br />
</syntaxhighlight><br />
<br />
'''Code pour le CPB Récepteur (participants)'''<br />
<syntaxhighlight lang="python"><br />
"""<br />
Code pour les bluefruits participants<br />
"""<br />
import time<br />
<br />
from adafruit_circuitplayground.bluefruit import cpb<br />
<br />
from adafruit_ble import BLERadio<br />
from adafruit_ble.advertising.standard import ProvideServicesAdvertisement<br />
from adafruit_ble.services.nordic import UARTService<br />
<br />
from adafruit_bluefruit_connect.packet import Packet<br />
from adafruit_bluefruit_connect.color_packet import ColorPacket<br />
<br />
num_pixels = 10<br />
<br />
# animation initiale - "chase" est une animation de base dans les librairies<br />
# d'animation pour neopixel (cf neopixel überguide)<br />
def color_chase(color, wait):<br />
for i in range(num_pixels):<br />
cpb.pixels[i] = color<br />
time.sleep(wait)<br />
cpb.pixels.show()<br />
time.sleep(0.5)<br />
<br />
<br />
# Grille des couleurs de groupe pour animation<br />
dict_couleur = {<br />
"gr1": (0, 255, 0),<br />
"gr2": (255, 0, 255),<br />
"gr3": (255, 255, 0),<br />
"gr4": (0, 255, 255),<br />
"gr5": (255, 0, 0),<br />
}<br />
<br />
liste_couleur = list(dict_couleur.values())<br />
print(liste_couleur)<br />
<br />
# Setup standard pour la réception<br />
ble = BLERadio()<br />
uart = UARTService()<br />
advertisement = ProvideServicesAdvertisement(uart)<br />
<br />
cpb.pixels.brightness = 0.05<br />
receptionGroupe = False<br />
<br />
while True:<br />
ble.start_advertising(advertisement)<br />
<br />
while not cpb.switch:<br />
for i in range(0, len(liste_couleur)):<br />
couleurCode = liste_couleur[i]<br />
color_chase(couleurCode, 0.05)<br />
<br />
if cpb.switch:<br />
while not ble.connected:<br />
pass<br />
ble.stop_advertising()<br />
<br />
while ble.connected:<br />
if uart.in_waiting:<br />
packet = Packet.from_stream(uart)<br />
if isinstance(packet, ColorPacket):<br />
cpb.pixels.fill(packet.color)<br />
</syntaxhighlight><br />
<br />
== Test(s) de la solution ==<br />
<br />
===Cognitive walkthrough===<br />
<br />
Pour produire ce cognitive walkthrough, nous nous sommes basés sur les principes du [https://edutechwiki.unige.ch/en/Cognitive_walkthrough#Fluid_project_overview Fluid Project].<br />
<br />
==== Persona ====<br />
[[Fichier:PERSONA INGO NITO.jpg|néant|cadre]]<br />
<br />
==== Objectifs ====<br />
<br />
* Créer des groupes grâce au dispositif émetteur<br />
* Communiquer ces groupes aux dispositifs récepteurs<br />
* Renforcer l'engagement grâce à un dispositif ludique et actif<br />
<br />
==== Scénario d'utilisation ====<br />
<br />
# (en amont) Réfléchir à un combien de groupes seront créés en fonction du nombre de participant.e.s disponible.s<br />
# Allumage du dispositif<br />
# Lancement du dispositif<br />
# Réalisation d'une séquence de composition de groupe<br />
# Lancement et réalisation de la séquence suivante de communication avec envoi des groupes constitués aux dispositifs distants<br />
# Mise hors tension du dispositif<br />
<br />
=== Tests utilisateur·trice·s===<br />
<br />
==== '''Scénario final''' ====<br />
Le test utilisateur est une méthode utilisée pour évaluer l’expérience utilisateur d’un système, mais également les forces et les faiblesses de celui-ci. Cette méthode, consiste à mettre l’utilisateur·trice en situation « réelle » afin d’observer ses comportements et ses actions lorsqu’il exécute des tâches prédéfinies qui lui sont administrées sous la forme d’un scénario. Il leur est alors demandé de nous renseigner sur leurs expériences.<br />
<br />
Lors de cette phase, un prototype du projet est présenté à des utilisateur·trices recrutés au sein du public cible. A ce stade, le prototype devrait être suffisamment abouti pour offrir les principales fonctionnalités constitutives de la version finale. Néanmoins, il diffère de celle-ci puisque certaines fonctionnalités accessoires ne pourraient ne pas être encore implémentées. En présentant assez tôt un produit relativement proche de la version finale, nous entendons nous assurer que les directions prises dans les précédentes phases de conception soient les plus à même de répondre aux besoins des utilisateur·trice·s. Le prototype sera modifié en fonction des retours formulés par les observations réalisées ainsi que par les analyses des résultats des tests. <br />
<br />
Le test utilisateur se déroulera en 3 étapes :<br />
#Accueil des participants<br />
#Réalisation des tâches<br />
#Entretien succinct<br />
<br />
Dans la première étape, le participant sera accueilli, le contexte et le test utilisateur lui seront alors présentés de manière générale. Lors du test, l’utilisateur·trice « découvrira » le dispositif en réalisant des tâches préparées au préalable (scénario des tâches). Ici, nous éprouverons l’expérience de l’utilisateur·trice.<br />
<br />
Après avoir exposé le contexte dans lequel le scénario prend place, nous demanderons à la personne d’accomplir les tâches décrites dans le tableau "scénario des tâches". De plus, nous encouragerons le/la participant·e à formuler à voix haute ses pensées et ressentis lors de l’utilisation de l’outil. <br />
<br />
Les participant·e·s seront accueillis avec la consigne suivante : <br />
{{Citation encadrée | ''Merci d’avoir accepté de faire ce test avec moi aujourd'hui. Je travaille sur le développement d’un outil pour la constitution aléatoire de groupes de travail dans une classe. Cette technique permet de constituer des groupes rapidement et de communiquer ceux-ci aux participant.e.s quasi instantanément.''}}<br />
<br />
Le scénario des tâches se composera de deux éléments : le contexte et les tâches à effectuer par le/la participant.e. Le contexte aura pour but de mettre l’utilisateur·trice dans une situation réaliste qui se rapprochera de son quotidien et/ou du contexte pendant lequel il pourrait être mené à utiliser le dispositif. Le contexte sera formulé de la manière suivante :<br />
<br />
{{Citation encadrée | ''Vous êtes au début d’une activité de débat, dans votre classe, avec vos étudiant.e.s. Pour réaliser cette activité, vous devez d’abord constituer des groupes de manière aléatoire, avec les étudiant.e.s qui composent votre cours. Pour se faire, vous allez donc devoir utiliser le dispositif-prototype en annexe.''<br />
<br />
''Le dispositif à tester se compose de plusieurs éléments. Le premier élément est le dispositif émetteur. Il va être utilisé pour composer les groupes d’étudiant.e.s de manière aléatoire et par couleur. <br />
Ensuite, avec les boutons présents sur celui-ci, il sera capable de transmettre les données choisies aux dispositifs récepteurs annexes.''<br />
<br />
''Durant le test, vous allez être amené.e à utiliser les différents dispositifs cités afin de réaliser plusieurs tâches. Celles-ci ne devraient pas être trop compliquées et ne nécessiteront, non plus , pas trop de temps de réalisation.''}}<br />
<br />
Après avoir exposé le contexte dans lequel le scénario prend place, nous demanderons au participant d’accomplir les tâches décrites dans le tableau "scénario des tâches".<br />
<br />
Pour l’étape des tâches, nous donnerons les consignes suivantes :<br />
<br />
{{Citation encadrée |''Avant de commencer le test et les tâches, n’hésitez pas à poser des questions si un/des élément(s) ne vous paraissent pas clair(s). Nous restons bien entendu à disposition, si besoin , durant la réalisation des tâches. <br />
''}}<br />
<br />
Chaque tâche sera expliquée au fur et à mesure au participant.<br />
{| style="border: 1px solid black; border-spacing: 0; margin: 0.5em auto;"<br />
|+ '''Scénario des tâches'''<br />
|-<br />
! style="border: 1px solid black; padding: 5px; background: #D4D4D8; width: 200pt;" | Tâche 1<br />
| style="border: 1px solid black; padding: 5px; vertical-align: top; width: 400pt;" |''Pour commencer, veuillez trouver comment allumer le dispositif. Une fois que c’est fait, vous pouvez passer à la tâche suivante.''<br />
|-<br />
! style="border: 1px solid black; padding: 5px; background: #D4D4D8; width: 200pt;" |Tâche 2<br />
| style="border: 1px solid black; padding: 5px; vertical-align: top; width: 400pt;" |''Comme seconde tâche, veuillez décider de combien de groupes vous aurez besoin selon le nombre d’élèves à votre disposition. ''<br />
|-<br />
! style="border: 1px solid black; padding: 5px; background: #D4D4D8; width: 200pt;" | Tâche 3<br />
| style="border: 1px solid black; padding: 5px; vertical-align: top; width: 400pt;" |''Comme tâche suivante, renseignez les informations souhaitées sur le dispositif émetteur (nombre de groupes et nombre d’élèves). ''<br />
|-<br />
! style="border: 1px solid black; padding: 5px; background: #D4D4D8; width: 200pt;" | Tâche 4<br />
| style="border: 1px solid black; padding: 5px; vertical-align: top; width: 400pt;" |''Comme dernière tâche, envoyez les données depuis le dispositif émetteur aux dispositifs récepteurs. ''<br />
|-<br />
|<br />
|<br />
|}<br />
<br />
==== Vidéo du test utilisateur.trice.s ====<br />
[[Fichier:Users Tests.ogg|néant|vignette|600x600px]]<br />
<br />
==== Retours des tests ====<br />
<br />
Nos trois testeurs ont une testé autant le côté participant que formateur.<br />
<br />
Deux sont des formateurs.trices d'adulte qui animent des groupes de 1 à 25 personnes, en présence, en créant régulièrement des activités de sous-groupes et ont exprimé un réel intérêt à posséder un outil leur permettant de varier la façon de créer des groupes et surtout de ne pas avoir à choisir eux-mêmes, bénéficiant de l'aléatoire comme expérimenté à distance avec des outils de visioconférence.<br />
<br />
Le dernier testeur est facilitateur dans des workshops de co-création et Design Thinking. Il est donc régulièrement amené à créer des sous-groupes, pour des groupes de tailles pouvant aller jusqu'à 50. Pour lui aussi, l'outil présente une plue-value, si son design pouvait être adapté à des groupes plus grands.<br />
<br />
Les retours sont classés par rôle (formateur/participant). Comme la plupart des retours ont été très similaires, nous les avons regroupé en spécifiant s'il s'agissait d'une ou plusieurs personnes.<br />
<br />
'''Côté formateur''' (CPB émetteur)<br />
<br />
* Le son n’est pas indispensable selon le formateur. Mais, une étape de validation ou un autre retour serait à envisager. <br />
<br />
* Pas de manque particulier. Cependant, il faudrait poser des conditions automatiques ou en tout cas que les processus soient automatiques sans une maîtrise de la part du formateur. En gros, n’importe qui de la classe pourrait le faire. Une solution serait de demander à quelqu’un.e dans la classe s’il/elle veut procéder au lancement du processus des groupes.<br />
<br />
* Concernant les couleurs, comme elles ne sont pas arrangées dans un ordre précis et que les positions des LED sont décalées, cela perturbe un petit peu. Mais, on comprend que c’est une logique de programmation. Cela serait simplement plus agréable visuellement pour un utilisateur sur 3.<br />
<br />
* Une remarque a été produite concernant la possibilité de garder en main les objets plutôt que de les avoir comme montre au poignet (participant) ou dans une boîte (formateur). En rendant disponible le dispositif à la main directement cela peut démontrer que tout le monde est logé à la même enseigne et qu’il n’y a pas de différences entre l’enseignant et les élèves. Tout le monde a le même objet.<br />
<br />
* Il serait amusant d’ajouter une compétition afin de déterminer si un.e élève choisit et effectue la composition des groupes plutôt que le formateur. Celui qui a la montre qui s’allume par exemple dans la classe en premier pourra alors lancer la séquence de randomisation au lieu du prof. Cela donnerait un côté ludique et encore plus engageant, voire plus hasardeux et permettrait d’aller plus loin que le seul processus de composition aléatoire des groupes par couleurs. <br />
<br />
* Le retour (ou annulation de fonction) n’est pas possible. Cela n’est pas contraignant en soi mais un peu dérangeant selon le testeur-formateur. <br />
<br />
* Le premier testeur a eu envie de secouer le CPB au moment de créer les groupes. Il aurait aimé ne pas avoir à appuyer sur des boutons, mais d’utiliser l’aspect aléatoire de secouer l’objet, comme une boule 8 magique. Cela lui donnerait une meilleure impression que cela est réellement une génération aléatoire de groupes.<br />
<br />
* Il y a globalement eu un besoin de mieux valider les différentes étapes chez les 3 testeurs. Le premier aurait apprécié intégrer les données avec les boutons A et B, valider avec la slider et avoir un retour visuel (changement de couleur des LED) pour valider l’action. Contrairement aux deux autres testeurs, il a aimé devoir appuyer sur un bouton pour envoyer les données aux récepteurs participants. Cela démontre des différences dans les envies et besoins de contrôle des utilisateurs.<br />
<br />
<br />
'''Côté participant.e.s''' (CPB récepteur)<br />
<br />
* Le “slider” ne devrait pas être obligatoire à utiliser car il devrait y avoir une étape automatique et directe de réception de la couleur de groupe. Remarque identique pour la seconde participante.<br />
<br />
* La découverte du dispositif est agréable, “cool”. On a envie de savoir comment cela fonctionne. Le rendu et la structure, cela rend bien. <br />
La rotation des couleurs du dispositif de réception fait penser à un casino ; l’attente devient cool et excitante : la participante était impatiente de connaître son groupe.<br />
<br />
* Il devrait y avoir du son ou une vibration pour valider les étapes ou en tout cas un retour visuel qui viendrait sanctionner les manipulations sur le dispositif. Cela pourrait être une petite musique qui annonce le groupe attribué. La 2e testeuse rapporte que cela donne le sentiment “d’avoir gagné”.<br />
<br />
* Une remarque a été formulée concernant l’utilisation de ce type de dispositif sur toute une journée de cours. En effet, cela peut être répétitif si à chaque fois que l’on doit former des groupes, les participant.e.s doivent utiliser le dispositif. Il devrait apporter une certaine plus-value selon un des testeurs. L’idée d’ajouter un écran au dispositif a été proposée, où des consignes pourraient s’afficher ; cela donnerait un aspect utile en plus. Le dispositif pourrait ainsi faciliter les activités de groupes en plusieurs phases : les participants se regroupent selon la couleur reçue et ils reçoivent une première consigne. Puis le formateur envoie le temps restant et la suite des activités, jusqu’au retour en plénière.<br />
<br />
* Concernant le dispositif de réception, la “montre”, son utilité et son design ont été remis en question. Il pourrait être sous forme de patch ou pin’s plutôt qu’un objet au poignet selon les utilisateur.trice.s. En effet, des participant.e.s ont peut-être déjà des montres ou des bracelets au poignet ce qui pourrait être contraignant. De plus, à cette phase du prototypage, comme il ne s’agit que d’allumer une LED, il serait envisageable d’utiliser de la broderie numérique et d’y intégrer une micro-circuit avec une LED (i.e. Gemma, Flora)<br />
<br />
== Discussion ==<br />
=== Design === <br />
Le design actuel est parti d'une idée d'utiliser la découpe laser pour la boîte émettrice et une forme de montre pour les récepteurs participants, avec un côté vintage et nostalgique des séries des années 80.<br />
Cela dit, nous avions tout de même recherché des produits plus petits et plus discrets, faciles à transporter et à manipuler.Cela s'est confirmé lors des tests, où en fin de compte, les participants ont apprécié avoir des objets légers et faciles à manipuler en main. Pour un prochain prototype, nous nous orienterions vers un Gemma ou Flora, sur un patch en broderie numérique pour les récepteurs participants.<br />
<br />
Du côté émetteur, il est resté jusqu'à la fin la difficulté de l'input du nombre de participants et du nombre de groupes attendus. Les potentiomètres se sont avérés trop complexes, autant pour comprendre ce qu'il fallait commander que pour programmer des niveaux de voltage correspondant à des seuils de chiffre. Pour pallier cette difficulté, nous avons tenté d'utiliser les éléments du CPB, soit les boutons et la slider. Cependant, cela nécessite des manipulations longues (par exemple : bouton A pour ajouter un participant, bouton B pour en enlever, slider pour valider) et rend l'opération fastidieuse. <br />
<br />
Enfin, l'utilisation de la bande neopixel du CPB limite le nombre total de participants à 10. Pour une prochaine itération, nous utiliserions une bande externe permettant la gestion de groupes plus larges.<br />
<br />
=== Résultats des tests utilisateurs === <br />
Une partie des retours utilisateurs ont été intégrés dans la section Design, car ils faisaient écho à nos propres envies, qui n'avaient pas été réalisables techniquement. Nous retenons les points clés suivants pour les prochaines itérations du projet, en avantages et faiblesses : <br />
<br />
Les avantages sont :<br />
* un aspect ludique qui rend excitant le moment de passage à l'activité de sous-groupe et qui renforce l'engagement<br />
* un effet d'appartenance et de cohésion <br />
* une dimension pédagogique de rééquilibrage des postures : la personne qui forme peut choisir de contrôler la création des groupes ou de la rendre démocratique par sa délégation à un membre de la classe. Cela permet de garder une réelle impression de hasard<br />
<br />
Du côté des faiblesses à améliorer :<br />
* Encore trop complexe et long par rapport à sa réelle plus-value. Il faudrait soit simplifier son utilisation (moins d'étapes intermédiaires (clic, slide) ou lui ajouter des fonctionnalités de communications avec les groupes (consignes, temps restants, etc.)<br />
* Le design actuel semble trop envahissant (boite, montre). Il faudrait le rendre plus facile à manipuler, porter et à oublier lorsqu'il n'est pas utilisé<br />
<br />
== Licence, fichiers et documentation ==<br />
[[Fichier:By-nc.png|150px]] Cette œuvre est mise à disposition selon les termes de la [http://creativecommons.org/licenses/by-nc/4.0/ Licence Creative Commons Attribution - Pas d’Utilisation Commerciale 4.0 International].<br />
<br />
* Fichiers :<br />
Insérer ici vos fichiers ou les liens vers vos fichiers<br />
<br />
* Documentation : <br />
Insérer ici une petite documentation pour l'utilisation de l'objet si nécessaire<br />
<br />
== Bibliographie ==<br />
<br />
* Blair, C., Calkins, S., & Kopp, L. (2010). Self-regulation as the interface of emotional and cognitive development: Implications for education and academic achievement.<br />
* Pekrun, R., Goetz, T., Titz, W., & Perry, R. P. (2002). Academic emotions in students' self-regulated learning and achievement: A program of qualitative and quantitative research. Educational psychologist, 37(2), 91-105.</div>Djamileh Aminianhttps://edutechwiki.unige.ch/fmediawiki/index.php?title=STIC:STIC_III_(2020)/Forces_rouge,_rose,_vert,_jaune_ou_bleu_!&diff=154733STIC:STIC III (2020)/Forces rouge, rose, vert, jaune ou bleu !2021-09-04T09:52:38Z<p>Djamileh Aminian : /* Retours des tests */</p>
<hr />
<div>{{bloc important|Projet réalisé par [[Utilisateur:Djamileh_Aminian|Djamileh]] & [[Utilisateur:Simon_Jöhr|Simon]]}}<br />
<br />
== Introduction ==<br />
Durant la dernière année, le passage forcé à la téléformation, soit la formation synchrone à distance, a eu comme effet positif de pousser certains spécialistes de l’éducation à revisiter leurs scénarios pédagogiques pour revenir aux fondamentaux : comment aider les élèves à apprendre ce qu’ils sont sensés apprendre et comment les accompagner au mieux dans leur apprentissage ? Souvent, les difficultés relevées lors des bilans des derniers mois de distantiel ont fait émerger des problèmes qui existaient déjà en présence, mais qui restaient latents ou ignorés.<br />
<br />
En ce sens, l’apprentissage est fortement influencé par les émotions par lesquelles passent les élèves au cours de la formation, et en particulier pendant les moments synchrones. Pourtant, il est très complexe de détecter, mesurer, ou même faire exprimer les étudiant-es sur leur ressenti.<br />
<br />
En donnant leurs cours en visioconférence, nombreux formateurs et formatrices ont exprimé leur frustration de ne pas réussir à évaluer l’état émotionnel et autres indices non verbaux de leurs participant.e.s, retours essentiels pour adapter une explication ou ajuster le rythme. Et cet effet est loin d’être limité à la distance : il est également bien présent dans une salle de classe où il reste complexe de capter en temps réel les émotions d’un étudiant, processus complexe et dynamique.<br />
<br />
Notre projet prend sa racine dans ce constat. Deux questions ont alors émergé : <br />
* comment mesurer l'état émotionnel d'un-e apprenant-e, <br />
* et surtout, pour quel usage ?<br />
<br />
Dans ce contexte, nous avons pensé un dispositif de partage des ressentis de la classe à destination de l'équipe enseignante, et une utilisation de cette donnée comme retour au groupe.<br />
<br />
== Problème ==<br />
<br />
Le but de ce projet est de proposer une solution ludique à la constitution de groupes en classe, que cela soit en présence, à distance ou de manière comodale. En utilisant un Arduino Uno ou des CPX, la phase de constitution de groupes sera ainsi rapide, aléatoire et "fun" !<br />
<br />
Le ''Problem Statement'' peut s’exprimer ainsi : « Comment peut-on aider les formateurs et formatrices à identifier rapidement les difficultés dans l’apprentissage et, le cas échéant, à réagir ? »<br />
<br />
== Cahier des charges == <br />
=== Contexte et public ===<br />
Le public cible est composé de formateurs et formatrices d’adultes, en entreprise ou en institut. Il pourrait également être élargi aux enseignante.s du scolaire, mais la conscientisation et l’expression d’une émotion sont suffisamment complexes pour limiter notre premier dispositif à des adultes, disposant, à priori, d’une compréhension plus fine de leur état émotionnel. De plus, l’asymétrie dans la relation est supposée moins forte dans un groupe d’adultes en formation que dans une classe avec un enseignant et des enfants ou adolescents.<br />
<br />
===Objectifs===<br />
Le but du dispositif est de :<br />
* permettre la communication d'un niveau émotionnel perçu par l'étudiant.e à l'enseignant.e<br />
* faire émerger un état général de la classe et les différences dans l'acquisition du contenu<br />
* de manière plus pragmatique, de créer des groupes sur la base des éléments communiqués<br />
<br />
===Besoins et contraintes===<br />
L'idée du projet a beaucoup évolué entre la phase d'identification des besoins et les constatations sur les possibilités offertes par la technologie et l'expertise à disposition. Nous détaillons ci-dessous les besoins et contraintes qui nous ont menés à la solution présentée plus bas.<br />
<br />
Partant au début d’une idée de jauge émotionnelle dynamique, donnant en tout temps l’état émotionnel d’un groupe de participants, nous avons rapidement détecté, en phase d'idéation avec plusieurs spécialistes en éducation, un aspect extrêmement anxiogène pour le formateur dont le groupe enverrait des signaux d’ennui ou de frustration, durant une explication. <br />
<br />
Afin de juguler cet effet, tout en conservant la possibilité de communiquer un message sur l’état, nous avons adapté le dispositif pour permettre aux étudiants de transmettre leur état à des moments spécifiques de la formation, intégrés dans le scénario pédagogique. L'émotion étant un élément sensible à conscientiser, exprimer et partager au sein d'un groupe, nous avons estimé plus judicieux de faire exprimer son niveau d'aisance face à un contenu qui vient d'être transmis. Ainsi, un-e enseignant-e scénarisera des moments d'autodiagnostic des étudiant-es sur leur perception de compétence sur la thématique. Cette information peut être utilisée pour réaliser des groupes de travail : (1) les personnes qui ont compris peuvent être orientées sur un contenu plus avancé, en échange pendant que l'enseignant organiser une séance de question-réponse avec les personnes en difficulté ou (2) des groupes peuvent être créés pour intégrer des étudiant-es qui ont compris avec des étudiant-es qui ont besoin d'aide.<br />
<br />
Le dispositif est donc pensé comme un outil de sondage à certains moments du cours, pour évaluer les besoins du groupe, dans son ensemble. Il est souvent difficile de récolter des informations sincères lors d’évaluations à chaud, les étudiants réticents à communiquer publiquement leurs difficultés ou désintérêts pour le contenu. Par la technique de transmission, les étudiants pourraient communiquer leur émotion de manière anonyme, favorisant l'authenticité.<br />
<br />
De manière intéressante au fur et à mesure de l'avance du projet, il est ressorti des discussions avec un échantillon du public cible que l'aspect de notre projet qui les intéressait était moins la communication des émotions, mais la création facilitée des groupes. En effet, les formateurs et formatrices ayant travaillé à distance durant la dernière année se sont habitués à disposer d'une fonction de création de groupe aléatoire, selon un nombre total de participants et un nombre de groupe visé. Cette fonction serait très utile également en présence, en utilisant une carte Arduino ou un CPX pour calculer une répartition des élèves par groupe, avec en entrée le nombre d'élèves et les sous-groupes. Une fois les groupes constitués, l'étape suivante est de communiquer ces groupes à l'ensemble de la classe au travers de Lilypad ou autres technologies portables qui s'allument selon la couleur de leur groupe.<br />
<br />
===Apports===<br />
* Cohésion et sentiment d'appartenance au groupe comme soutien à l'apprentissage<br />
* Expression d'un état émotionnel épistémique comme bénéfique à l'apprentissage<br />
<br />
===Présentation du projet===<br />
Suite aux premières itérations dans l'empathie et la définition du projet, nous avons identifié plusieurs points clés qui ont réorienté notre projet :<br />
* la création d'un réseau de cartes Bluetooth contrôlées par Arduino s'est révélée trop ambitieuse, suite au manque de projets existants ou d'expertise sur lesquels s'appuyer, <br />
* l'envie marquée de notre échantillon cible qui s'est dirigée sur l'aspect création de groupe plus que sur la connaissance des états affectifs.<br />
<br />
Nous avons donc revu le projet en le divisant en 3 niveaux de difficulté, afin de réaliser un prototype utilisable, puis de l'améliorer en fonction des retours et du temps à disposition.<br />
* '''Niveau 1 : Création de groupe aléatoire''' : intérêts : facilitation de la création des groupes (demande reçue d'un formateur : "parce que Zoom nous a bien aidé pour cela à distance, je veux la même chose en présence!")<br />
* '''Niveau 2 : Communication du groupe à l’apprenant''' : intérêts : gamification, sentiment d’appartenance, coopération, cohésion<br />
* '''Niveau 3 : Communication de son sentiment de compétence''' : intérêts : plus facile que d'exprimer ses émotions, et plus facile à gérer par l'enseignant.e, par exemple les gens qui ont compris avec celles-ceux qui n'ont pas compris<br />
<br />
Nous avons réalisé complètement le niveau 1, ainsi que prototypé et testé le niveau 2 avec des cables avant de pouvoir gérer par Bluetooth un Bluefruit spécifique dans un réseau comprenant plusieurs Bluefruits. Les solutions avec code et prototypes sont décrites dans la section suivante.<br />
<br />
== Solutions explorées ==<br />
<br />
===1er prototype===<br />
La première solution envisagée comporte deux objets : <br />
* Un '''émetteur''' : facile d’utilisation et agréable à porter, nous penchons pour la solution d’un bracelet contenant un micro circuit type Lilypad, Arduino Gemma ou Tinyduino. L’apprenant disposerait de 4 boutons-pressoirs pour 4 émotions majeures à transmettre (intérêt, confusion, frustration, incompréhension), symbolisés par des logos ou émoticônes. Les messages sont transmis par Bluetooth.<br />
* Un '''récepteur''' : Une jauge, comprenant une bande Neopixels, connectée à un Arduino Uno. Les LED symboliseraient deux dimensions fournies : la couleur pour le type d'émotion et le nombre pour la quantité d'étudiant.e.s ayant transmis l'information. L'Arduino pourrait gérer l'information, en émettant un son lors du dépassement d'un seuil prédéfini sur une émotion par exemple.<br />
<br />
====Maquettes====<br />
<u>1ère itération</u><br />
<br />
[[Fichier:Maquette_projet_STIC_III_Djamileh_et_Simon.jpg|néant|vignette|1103x1103px|Maquette n°1 du projet]]<br />
<br />
<u>2e itération</u><br />
<br />
L'Arduino Uno lance une séquence de randomisation de couleur, en affiche une, puis les participant.e.s font de même sur leur CPX. Si les couleurs affichées "matchent", le groupe est constitué et on peut ainsi passer à la constitution aléatoire du groupe suivant. <br />
[[Fichier:2e Maquette projet STIC III Djamileh et Simon .jpg|néant|vignette|1103x1103px|Maquette n°2 du projet]]<br />
<br />
====Code====<br />
<u>Version 1.0 du code CPX :</u> <syntaxhighlight lang="javascript"><br />
input.buttonA.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 200<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(40)<br />
color2 += Math.randomRange(1, 3)<br />
light.setPhotonPenHue(color2)<br />
}<br />
light.photonFlip()<br />
})<br />
input.buttonsAB.onEvent(ButtonEvent.Click, function () {<br />
control.reset()<br />
})<br />
input.buttonB.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 300<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
color2 += 3<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(50)<br />
}<br />
})<br />
let tonalité = 0<br />
let durée = 0<br />
let color2 = 0<br />
light.setBrightness(158)<br />
music.setVolume(167)<br />
forever(function () {<br />
<br />
})<br />
</syntaxhighlight><br />
<br />
===2e prototype===<br />
<br />
====Maquette====<br />
<u>Boîte émettrice</u><br />
[[Fichier:Boite CPX STIC III.png|néant|vignette|Plan découpe boîte émettrice CPX]]<br />
[[Fichier:Etiquettes Boite CPX STIC III.png|néant|vignette|Etiquettes boîte CPX]]<br />
[[Fichier:Maquette boîte CPX.png|néant|vignette|Rendu de la boîte]]<br />
[[Fichier:Boîte CPX.jpg|néant|vignette|Boîte en cours de réalisation]]<br />
<br />
<u>Cadrans récepteurs</u><br />
[[Fichier:Bracelets CPX STIC III.png|néant|vignette|Cadrans récepteurs]]<br />
<br />
====Code====<br />
[[Fichier:CPX firstproto.jpg|vignette|droite|Une étape dans le test du code - 5 binomes de noël! ]]<br />
La solution présentée ici s'occupe du niveau 1, soit la création de groupe aléatoire à l'aide d'un CPX Bluefruit.<br />
Elle a été codée en CircuitPython. Nous avons rédigé le code nous-mêmes, avec deux supports : la création du dictionnaire pour la randomisation été possible grâce à l'aimable contribution de notre collègue Jérôme. Concernant l'envoi et la réception de données par Bluetooth, nous nous sommes basés sur les [https://learn.adafruit.com/circuitpython-nrf52840/bluetooth-basics tutoriels Adafruit], ainsi que deux projets utilisant des fonctionnalités se rapprochant de notre projet :<br />
* [https://learn.adafruit.com/circuit-playground-bluefruit-neopixel-animation-and-color-remote-control projet 1]<br />
* [https://learn.adafruit.com/color-remote-with-circuit-playground-bluefruit projet 2]<br />
<br />
'''Code pour le CPB Emetteur'''<br />
<syntaxhighlight lang="python"><br />
# Groupify !<br />
# Un projet de S!m & Dja<br />
# Code CircuitPython pour la répartition dans les groupes (MASTER)<br />
<br />
"""<br />
SETUP GENERAL<br />
"""<br />
<br />
# LIBRAIRIES<br />
import random<br />
import time<br />
<br />
# Librairie pour gérer la bande neopixel du bluefruit<br />
from adafruit_circuitplayground.bluefruit import cpb<br />
<br />
# Librairies pour gérer la transmission bluetooth<br />
from adafruit_ble import BLERadio<br />
from adafruit_ble.advertising.standard import ProvideServicesAdvertisement<br />
from adafruit_ble.services.nordic import UARTService<br />
<br />
# Librairie pour envoyer la couleur<br />
from adafruit_bluefruit_connect.color_packet import ColorPacket<br />
<br />
# Helper function pour gérer la connexion entre plusieurs Bluefruits<br />
# reprise sur https://learn.adafruit.com/circuit-playground-bluefruit-neopixel-<br />
# animation-and-color-remote-control/remote-control-code<br />
def send_packet(uart_connection_name, packet):<br />
"""Returns False if no longer connected."""<br />
try:<br />
uart_connection_name[UARTService].write(packet.to_bytes())<br />
except: # pylint: disable=bare-except<br />
try:<br />
uart_connection_name.disconnect()<br />
except: # pylint: disable=bare-except<br />
pass<br />
return False<br />
return True<br />
<br />
<br />
# Input utilisateur<br />
participants = int(input("Nombre de participants : "))<br />
groupe = int(input("Nombre de groupes : "))<br />
<br />
"""<br />
CREATION DES GROUPES<br />
"""<br />
<br />
# création listes à long. variable (+ 1 pour compenser la numération depuis 0)<br />
liste_part = list(range(1, participants + 1)) # print(liste_part)<br />
nb_part = len(liste_part) + 1<br />
liste_groupe = list(range(1, groupe + 1)) # print(liste_groupe)<br />
<br />
# Déf. grille (dict. de listes) combinations possibles<br />
clé_tableau = str(participants) + "_" + str(groupe)<br />
# !!! ajouter combinaisons pas possible : eg. tour de roue lumineuse/son pourri !!!<br />
grille_repartition = {<br />
"10_5": [2, 2, 2, 2, 2],<br />
"10_4": [2, 2, 3, 3],<br />
"10_3": [3, 3, 4],<br />
"10_2": [5, 5],<br />
"9_4": [2, 2, 2, 3],<br />
"9_3": [3, 3, 3],<br />
"9_2": [4, 5],<br />
"8_4": [2, 2, 2, 2],<br />
"8_3": [2, 3, 3],<br />
"8_2": [4, 4],<br />
"7_3": [2, 2, 3],<br />
"7_2": [4, 3],<br />
"6_3": [2, 2, 2],<br />
"6_2": [3, 3],<br />
"5_2": [2, 3],<br />
"4_2": [2, 2],<br />
}<br />
# détermination du nb et taille des groupes à créer<br />
taille_groupe = grille_repartition[clé_tableau]<br />
print(taille_groupe)<br />
<br />
# création (dict) répartition aléatoire<br />
dict_repartition = {} # initialisation<br />
for i in range(0, len(taille_groupe)):<br />
dict_repartition[liste_groupe[i]] = [] # création des items du dictionnaire<br />
for j in range(0, taille_groupe[i]):<br />
etu = liste_part[random.randint(0, len(liste_part) - 1)]<br />
dict_repartition[liste_groupe[i]].append(etu)<br />
liste_part.remove(etu)<br />
# print (liste_part)<br />
# print (dict_repartition)<br />
print(dict_repartition)<br />
<br />
# Définition des groupes avec couleurs<br />
groupeList = list(dict_repartition.values())<br />
print(groupeList)<br />
<br />
# GESTION NEOPIXEL<br />
cpb.pixels.brightness = 0.05<br />
<br />
# Grille de définition des couleurs de groupe<br />
dict_couleur = {<br />
"gr1": (0, 255, 0),<br />
"gr2": (255, 0, 255),<br />
"gr3": (255, 255, 0),<br />
"gr4": (0, 255, 255),<br />
"gr5": (255, 0, 0),<br />
}<br />
# print(dict_couleur)<br />
<br />
# transf. dict -> list<br />
liste_couleur = list(dict_couleur.values())<br />
print("liste de couleur totale: ", liste_couleur)<br />
<br />
# définition des couleurs selon nb de groupe<br />
dict_neopix = {}<br />
for i in range(0, len(taille_groupe)):<br />
codecouleur = liste_couleur[i]<br />
dict_neopix[i] = codecouleur<br />
# print(dict_neopix)<br />
<br />
# transf. dict -> list<br />
liste_neopix = list(dict_neopix.values())<br />
print("liste de couleur spécifique: ", liste_neopix)<br />
<br />
# Attribution des couleurs par pixel<br />
liste_pixels = []<br />
for i in range(0, nb_part):<br />
for j in range(0, len(taille_groupe)):<br />
if i in groupeList[j]:<br />
pix = liste_neopix[j]<br />
liste_pixels.append(pix)<br />
print("couleurs des pixels : ", liste_pixels)<br />
<br />
"""<br />
TRANSMISSION AUX BLUEFRUITS PARTICIPANTS (SLAVES)<br />
"""<br />
# Setup de la transmission<br />
ble = BLERadio()<br />
uart_service = UARTService()<br />
advertisement = ProvideServicesAdvertisement(uart_service)<br />
<br />
uart_connection = None<br />
# Controle sur des connexions disponibles<br />
if ble.connected:<br />
for connection in ble.connections:<br />
if UARTService in connection:<br />
uart_connection = connection<br />
break<br />
<br />
while True:<br />
# Allumage de la bnde neopixel / visualisation des groupes formés<br />
for i in range(0, nb_part - 1):<br />
cpb.pixels[i] = liste_pixels[i]<br />
<br />
# Gestion de la transmission<br />
if not uart_connection or not uart_connection.connected:<br />
# Condition : pas de connexion > scan<br />
print("Scanning...")<br />
for adv in ble.start_scan(ProvideServicesAdvertisement, timeout=5): # Scan...<br />
if UARTService in adv.services: # si periphérique existe<br />
print("Found a UARTService advertisement.")<br />
uart_connection = ble.connect(adv) # crée une connexion<br />
break<br />
# Arrêt du scannage de l'environnement<br />
ble.stop_scan()<br />
<br />
# si connexion existante :<br />
while uart_connection and uart_connection.connected:<br />
if cpb.button_a: # Transmission des données neopixels avec A<br />
print("Bouton A - envoi données")<br />
color = cpb.pixels[0]<br />
if not send_packet(uart_connection, ColorPacket(color)):<br />
uart_connection = None<br />
continue<br />
time.sleep(0.1) # Delay to prevent sending packets too quickly.<br />
</syntaxhighlight><br />
<br />
'''Code pour le CPB Récepteur (participants)'''<br />
<syntaxhighlight lang="python"><br />
"""<br />
Code pour les bluefruits participants<br />
"""<br />
import time<br />
<br />
from adafruit_circuitplayground.bluefruit import cpb<br />
<br />
from adafruit_ble import BLERadio<br />
from adafruit_ble.advertising.standard import ProvideServicesAdvertisement<br />
from adafruit_ble.services.nordic import UARTService<br />
<br />
from adafruit_bluefruit_connect.packet import Packet<br />
from adafruit_bluefruit_connect.color_packet import ColorPacket<br />
<br />
num_pixels = 10<br />
<br />
# animation initiale - "chase" est une animation de base dans les librairies<br />
# d'animation pour neopixel (cf neopixel überguide)<br />
def color_chase(color, wait):<br />
for i in range(num_pixels):<br />
cpb.pixels[i] = color<br />
time.sleep(wait)<br />
cpb.pixels.show()<br />
time.sleep(0.5)<br />
<br />
<br />
# Grille des couleurs de groupe pour animation<br />
dict_couleur = {<br />
"gr1": (0, 255, 0),<br />
"gr2": (255, 0, 255),<br />
"gr3": (255, 255, 0),<br />
"gr4": (0, 255, 255),<br />
"gr5": (255, 0, 0),<br />
}<br />
<br />
liste_couleur = list(dict_couleur.values())<br />
print(liste_couleur)<br />
<br />
# Setup standard pour la réception<br />
ble = BLERadio()<br />
uart = UARTService()<br />
advertisement = ProvideServicesAdvertisement(uart)<br />
<br />
cpb.pixels.brightness = 0.05<br />
receptionGroupe = False<br />
<br />
while True:<br />
ble.start_advertising(advertisement)<br />
<br />
while not cpb.switch:<br />
for i in range(0, len(liste_couleur)):<br />
couleurCode = liste_couleur[i]<br />
color_chase(couleurCode, 0.05)<br />
<br />
if cpb.switch:<br />
while not ble.connected:<br />
pass<br />
ble.stop_advertising()<br />
<br />
while ble.connected:<br />
if uart.in_waiting:<br />
packet = Packet.from_stream(uart)<br />
if isinstance(packet, ColorPacket):<br />
cpb.pixels.fill(packet.color)<br />
</syntaxhighlight><br />
<br />
== Test(s) de la solution ==<br />
<br />
===Cognitive walkthrough===<br />
<br />
Pour produire ce cognitive walkthrough, nous nous sommes basés sur les principes du [https://edutechwiki.unige.ch/en/Cognitive_walkthrough#Fluid_project_overview Fluid Project].<br />
<br />
==== Persona ====<br />
[[Fichier:PERSONA INGO NITO.jpg|néant|cadre]]<br />
<br />
==== Objectifs ====<br />
<br />
* Créer des groupes grâce au dispositif émetteur<br />
* Communiquer ces groupes aux dispositifs récepteurs<br />
* Renforcer l'engagement grâce à un dispositif ludique et actif<br />
<br />
==== Scénario d'utilisation ====<br />
<br />
# (en amont) Réfléchir à un combien de groupes seront créés en fonction du nombre de participant.e.s disponible.s<br />
# Allumage du dispositif<br />
# Lancement du dispositif<br />
# Réalisation d'une séquence de composition de groupe<br />
# Lancement et réalisation de la séquence suivante de communication avec envoi des groupes constitués aux dispositifs distants<br />
# Mise hors tension du dispositif<br />
<br />
=== Tests utilisateur·trice·s===<br />
<br />
==== '''Scénario final''' ====<br />
Le test utilisateur est une méthode utilisée pour évaluer l’expérience utilisateur d’un système, mais également les forces et les faiblesses de celui-ci. Cette méthode, consiste à mettre l’utilisateur·trice en situation « réelle » afin d’observer ses comportements et ses actions lorsqu’il exécute des tâches prédéfinies qui lui sont administrées sous la forme d’un scénario. Il leur est alors demandé de nous renseigner sur leurs expériences.<br />
<br />
Lors de cette phase, un prototype du projet est présenté à des utilisateur·trices recrutés au sein du public cible. A ce stade, le prototype devrait être suffisamment abouti pour offrir les principales fonctionnalités constitutives de la version finale. Néanmoins, il diffère de celle-ci puisque certaines fonctionnalités accessoires ne pourraient ne pas être encore implémentées. En présentant assez tôt un produit relativement proche de la version finale, nous entendons nous assurer que les directions prises dans les précédentes phases de conception soient les plus à même de répondre aux besoins des utilisateur·trice·s. Le prototype sera modifié en fonction des retours formulés par les observations réalisées ainsi que par les analyses des résultats des tests. <br />
<br />
Le test utilisateur se déroulera en 3 étapes :<br />
#Accueil des participants<br />
#Réalisation des tâches<br />
#Entretien succinct<br />
<br />
Dans la première étape, le participant sera accueilli, le contexte et le test utilisateur lui seront alors présentés de manière générale. Lors du test, l’utilisateur·trice « découvrira » le dispositif en réalisant des tâches préparées au préalable (scénario des tâches). Ici, nous éprouverons l’expérience de l’utilisateur·trice.<br />
<br />
Après avoir exposé le contexte dans lequel le scénario prend place, nous demanderons à la personne d’accomplir les tâches décrites dans le tableau "scénario des tâches". De plus, nous encouragerons le/la participant·e à formuler à voix haute ses pensées et ressentis lors de l’utilisation de l’outil. <br />
<br />
Les participant·e·s seront accueillis avec la consigne suivante : <br />
{{Citation encadrée | ''Merci d’avoir accepté de faire ce test avec moi aujourd'hui. Je travaille sur le développement d’un outil pour la constitution aléatoire de groupes de travail dans une classe. Cette technique permet de constituer des groupes rapidement et de communiquer ceux-ci aux participant.e.s quasi instantanément.''}}<br />
<br />
Le scénario des tâches se composera de deux éléments : le contexte et les tâches à effectuer par le/la participant.e. Le contexte aura pour but de mettre l’utilisateur·trice dans une situation réaliste qui se rapprochera de son quotidien et/ou du contexte pendant lequel il pourrait être mené à utiliser le dispositif. Le contexte sera formulé de la manière suivante :<br />
<br />
{{Citation encadrée | ''Vous êtes au début d’une activité de débat, dans votre classe, avec vos étudiant.e.s. Pour réaliser cette activité, vous devez d’abord constituer des groupes de manière aléatoire, avec les étudiant.e.s qui composent votre cours. Pour se faire, vous allez donc devoir utiliser le dispositif-prototype en annexe.''<br />
<br />
''Le dispositif à tester se compose de plusieurs éléments. Le premier élément est le dispositif émetteur. Il va être utilisé pour composer les groupes d’étudiant.e.s de manière aléatoire et par couleur. <br />
Ensuite, avec les boutons présents sur celui-ci, il sera capable de transmettre les données choisies aux dispositifs récepteurs annexes.''<br />
<br />
''Durant le test, vous allez être amené.e à utiliser les différents dispositifs cités afin de réaliser plusieurs tâches. Celles-ci ne devraient pas être trop compliquées et ne nécessiteront, non plus , pas trop de temps de réalisation.''}}<br />
<br />
Après avoir exposé le contexte dans lequel le scénario prend place, nous demanderons au participant d’accomplir les tâches décrites dans le tableau "scénario des tâches".<br />
<br />
Pour l’étape des tâches, nous donnerons les consignes suivantes :<br />
<br />
{{Citation encadrée |''Avant de commencer le test et les tâches, n’hésitez pas à poser des questions si un/des élément(s) ne vous paraissent pas clair(s). Nous restons bien entendu à disposition, si besoin , durant la réalisation des tâches. <br />
''}}<br />
<br />
Chaque tâche sera expliquée au fur et à mesure au participant.<br />
{| style="border: 1px solid black; border-spacing: 0; margin: 0.5em auto;"<br />
|+ '''Scénario des tâches'''<br />
|-<br />
! style="border: 1px solid black; padding: 5px; background: #D4D4D8; width: 200pt;" | Tâche 1<br />
| style="border: 1px solid black; padding: 5px; vertical-align: top; width: 400pt;" |''Pour commencer, veuillez trouver comment allumer le dispositif. Une fois que c’est fait, vous pouvez passer à la tâche suivante.''<br />
|-<br />
! style="border: 1px solid black; padding: 5px; background: #D4D4D8; width: 200pt;" |Tâche 2<br />
| style="border: 1px solid black; padding: 5px; vertical-align: top; width: 400pt;" |''Comme seconde tâche, veuillez décider de combien de groupes vous aurez besoin selon le nombre d’élèves à votre disposition. ''<br />
|-<br />
! style="border: 1px solid black; padding: 5px; background: #D4D4D8; width: 200pt;" | Tâche 3<br />
| style="border: 1px solid black; padding: 5px; vertical-align: top; width: 400pt;" |''Comme tâche suivante, renseignez les informations souhaitées sur le dispositif émetteur (nombre de groupes et nombre d’élèves). ''<br />
|-<br />
! style="border: 1px solid black; padding: 5px; background: #D4D4D8; width: 200pt;" | Tâche 4<br />
| style="border: 1px solid black; padding: 5px; vertical-align: top; width: 400pt;" |''Comme dernière tâche, envoyez les données depuis le dispositif émetteur aux dispositifs récepteurs. ''<br />
|-<br />
|<br />
|<br />
|}<br />
<br />
==== Vidéo du test utilisateur.trice.s ====<br />
[[Fichier:Users Tests.ogg|néant|vignette|600x600px]]<br />
<br />
==== Retours des tests ====<br />
<br />
Nos trois testeurs ont une testé autant le côté participant que formateur.<br />
<br />
Deux sont des formateurs.trices d'adulte qui animent des groupes de 1 à 25 personnes, en présence, en créant régulièrement des activités de sous-groupes et ont exprimé un réel intérêt à posséder un outil leur permettant de varier la façon de créer des groupes et surtout de ne pas avoir à choisir eux-mêmes, bénéficiant de l'aléatoire comme expérimenté à distance avec des outils de visioconférence.<br />
<br />
Le dernier testeur est facilitateur dans des workshops de co-création et Design Thinking. Il est donc régulièrement amené à créer des sous-groupes, pour des groupes de tailles pouvant aller jusqu'à 50. Pour lui aussi, l'outil présente une plue-value, si son design pouvait être adapté à des groupes plus grands.<br />
<br />
Les retours sont classés par rôle (formateur/participant). Comme la plupart des retours ont été très similaires, nous les avons regroupé en spécifiant s'il s'agissait d'une ou plusieurs personnes.<br />
<br />
'''Côté formateur''' (CPB émetteur)<br />
<br />
Le son n’est pas indispensable selon le formateur. Mais, une étape de validation ou un autre retour serait à envisager. <br />
<br />
Pas de manque particulier. Cependant, il faudrait poser des conditions automatiques ou en tout cas que les processus soient automatiques sans une maîtrise de la part du formateur. En gros, n’importe qui de la classe pourrait le faire. Une solution serait de demander à quelqu’un.e dans la classe s’il/elle veut procéder au lancement du processus des groupes.<br />
<br />
Concernant les couleurs, comme elles ne sont pas arrangées dans un ordre précis et que les positions des LED sont décalées, cela perturbe un petit peu. Mais, on comprend que c’est une logique de programmation. Cela serait simplement plus agréable visuellement pour un utilisateur sur 3.<br />
<br />
Une remarque a été produite concernant la possibilité de garder en main les objets plutôt que de les avoir comme montre au poignet (participant) ou dans une boîte (formateur). En rendant disponible le dispositif à la main directement cela peut démontrer que tout le monde est logé à la même enseigne et qu’il n’y a pas de différences entre l’enseignant et les élèves. Tout le monde a le même objet.<br />
<br />
Il serait amusant d’ajouter une compétition afin de déterminer si un.e élève choisit et effectue la composition des groupes plutôt que le formateur. Celui qui a la montre qui s’allume par exemple dans la classe en premier pourra alors lancer la séquence de randomisation au lieu du prof. Cela donnerait un côté ludique et encore plus engageant, voire plus hasardeux et permettrait d’aller plus loin que le seul processus de composition aléatoire des groupes par couleurs. <br />
<br />
Le retour (ou annulation de fonction) n’est pas possible. Cela n’est pas contraignant en soi mais un peu dérangeant selon le testeur-formateur. <br />
<br />
Le premier testeur a eu envie de secouer le CPB au moment de créer les groupes. Il aurait aimé ne pas avoir à appuyer sur des boutons, mais d’utiliser l’aspect aléatoire de secouer l’objet, comme une boule 8 magique. Cela lui donnerait une meilleure impression que cela est réellement une génération aléatoire de groupes.<br />
<br />
Il y a globalement eu un besoin de mieux valider les différentes étapes chez les 3 testeurs. Le premier aurait apprécié intégrer les données avec les boutons A et B, valider avec la slider et avoir un retour visuel (changement de couleur des LED) pour valider l’action. Contrairement aux deux autres testeurs, il a aimé devoir appuyer sur un bouton pour envoyer les données aux récepteurs participants. Cela démontre des différences dans les envies et besoins de contrôle des utilisateurs.<br />
<br />
<br />
'''Côté participant.e.s''' (CPB récepteur)<br />
<br />
Le “slider” ne devrait pas être obligatoire à utiliser car il devrait y avoir une étape automatique et directe de réception de la couleur de groupe. Remarque identique pour la seconde participante.<br />
<br />
La découverte du dispositif est agréable, “cool”. On a envie de savoir comment cela fonctionne. Le rendu et la structure, cela rend bien. <br />
La rotation des couleurs du dispositif de réception fait penser à un casino ; l’attente devient cool et excitante : la participante était impatiente de connaître son groupe.<br />
<br />
Il devrait y avoir du son ou une vibration pour valider les étapes ou en tout cas un retour visuel qui viendrait sanctionner les manipulations sur le dispositif. Cela pourrait être une petite musique qui annonce le groupe attribué. La 2e testeuse rapporte que cela donne le sentiment “d’avoir gagné”.<br />
<br />
Une remarque a été formulée concernant l’utilisation de ce type de dispositif sur toute une journée de cours. En effet, cela peut être répétitif si à chaque fois que l’on doit former des groupes, les participant.e.s doivent utiliser le dispositif. Il devrait apporter une certaine plus-value selon un des testeurs. L’idée d’ajouter un écran au dispositif a été proposée, où des consignes pourraient s’afficher ; cela donnerait un aspect utile en plus. Le dispositif pourrait ainsi faciliter les activités de groupes en plusieurs phases : les participants se regroupent selon la couleur reçue et ils reçoivent une première consigne. Puis le formateur envoie le temps restant et la suite des activités, jusqu’au retour en plénière.<br />
<br />
Concernant le dispositif de réception, la “montre”, son utilité et son design ont été remis en question. Il pourrait être sous forme de patch ou pin’s plutôt qu’un objet au poignet selon les utilisateur.trice.s. En effet, des participant.e.s ont peut-être déjà des montres ou des bracelets au poignet ce qui pourrait être contraignant. De plus, à cette phase du prototypage, comme il ne s’agit que d’allumer une LED, il serait envisageable d’utiliser de la broderie numérique et d’y intégrer une micro-circuit avec une LED (i.e. Gemma, Flora)<br />
<br />
== Discussion ==<br />
=== Design === <br />
Le design actuel est parti d'une idée d'utiliser la découpe laser pour la boîte émettrice et une forme de montre pour les récepteurs participants, avec un côté vintage et nostalgique des séries des années 80.<br />
Cela dit, nous avions tout de même recherché des produits plus petits et plus discrets, faciles à transporter et à manipuler.Cela s'est confirmé lors des tests, où en fin de compte, les participants ont apprécié avoir des objets légers et faciles à manipuler en main. Pour un prochain prototype, nous nous orienterions vers un Gemma ou Flora, sur un patch en broderie numérique pour les récepteurs participants.<br />
<br />
Du côté émetteur, il est resté jusqu'à la fin la difficulté de l'input du nombre de participants et du nombre de groupes attendus. Les potentiomètres se sont avérés trop complexes, autant pour comprendre ce qu'il fallait commander que pour programmer des niveaux de voltage correspondant à des seuils de chiffre. Pour pallier cette difficulté, nous avons tenté d'utiliser les éléments du CPB, soit les boutons et la slider. Cependant, cela nécessite des manipulations longues (par exemple : bouton A pour ajouter un participant, bouton B pour en enlever, slider pour valider) et rend l'opération fastidieuse. <br />
<br />
Enfin, l'utilisation de la bande neopixel du CPB limite le nombre total de participants à 10. Pour une prochaine itération, nous utiliserions une bande externe permettant la gestion de groupes plus larges.<br />
<br />
=== Résultats des tests utilisateurs === <br />
Une partie des retours utilisateurs ont été intégrés dans la section Design, car ils faisaient écho à nos propres envies, qui n'avaient pas été réalisables techniquement. Nous retenons les points clés suivants pour les prochaines itérations du projet, en avantages et faiblesses : <br />
<br />
Les avantages sont :<br />
* un aspect ludique qui rend excitant le moment de passage à l'activité de sous-groupe et qui renforce l'engagement<br />
* un effet d'appartenance et de cohésion <br />
* une dimension pédagogique de rééquilibrage des postures : la personne qui forme peut choisir de contrôler la création des groupes ou de la rendre démocratique par sa délégation à un membre de la classe. Cela permet de garder une réelle impression de hasard<br />
<br />
Du côté des faiblesses à améliorer :<br />
* Encore trop complexe et long par rapport à sa réelle plus-value. Il faudrait soit simplifier son utilisation (moins d'étapes intermédiaires (clic, slide) ou lui ajouter des fonctionnalités de communications avec les groupes (consignes, temps restants, etc.)<br />
* Le design actuel semble trop envahissant (boite, montre). Il faudrait le rendre plus facile à manipuler, porter et à oublier lorsqu'il n'est pas utilisé<br />
<br />
== Licence, fichiers et documentation ==<br />
[[Fichier:By-nc.png|150px]] Cette œuvre est mise à disposition selon les termes de la [http://creativecommons.org/licenses/by-nc/4.0/ Licence Creative Commons Attribution - Pas d’Utilisation Commerciale 4.0 International].<br />
<br />
* Fichiers :<br />
Insérer ici vos fichiers ou les liens vers vos fichiers<br />
<br />
* Documentation : <br />
Insérer ici une petite documentation pour l'utilisation de l'objet si nécessaire<br />
<br />
== Bibliographie ==<br />
<br />
* Blair, C., Calkins, S., & Kopp, L. (2010). Self-regulation as the interface of emotional and cognitive development: Implications for education and academic achievement.<br />
* Pekrun, R., Goetz, T., Titz, W., & Perry, R. P. (2002). Academic emotions in students' self-regulated learning and achievement: A program of qualitative and quantitative research. Educational psychologist, 37(2), 91-105.</div>Djamileh Aminianhttps://edutechwiki.unige.ch/fmediawiki/index.php?title=STIC:STIC_III_(2020)/Forces_rouge,_rose,_vert,_jaune_ou_bleu_!&diff=154728STIC:STIC III (2020)/Forces rouge, rose, vert, jaune ou bleu !2021-09-04T09:47:02Z<p>Djamileh Aminian : /* Retours des tests */</p>
<hr />
<div>{{bloc important|Projet réalisé par [[Utilisateur:Djamileh_Aminian|Djamileh]] & [[Utilisateur:Simon_Jöhr|Simon]]}}<br />
<br />
== Introduction ==<br />
Durant la dernière année, le passage forcé à la téléformation, soit la formation synchrone à distance, a eu comme effet positif de pousser certains spécialistes de l’éducation à revisiter leurs scénarios pédagogiques pour revenir aux fondamentaux : comment aider les élèves à apprendre ce qu’ils sont sensés apprendre et comment les accompagner au mieux dans leur apprentissage ? Souvent, les difficultés relevées lors des bilans des derniers mois de distantiel ont fait émerger des problèmes qui existaient déjà en présence, mais qui restaient latents ou ignorés.<br />
<br />
En ce sens, l’apprentissage est fortement influencé par les émotions par lesquelles passent les élèves au cours de la formation, et en particulier pendant les moments synchrones. Pourtant, il est très complexe de détecter, mesurer, ou même faire exprimer les étudiant-es sur leur ressenti.<br />
<br />
En donnant leurs cours en visioconférence, nombreux formateurs et formatrices ont exprimé leur frustration de ne pas réussir à évaluer l’état émotionnel et autres indices non verbaux de leurs participant.e.s, retours essentiels pour adapter une explication ou ajuster le rythme. Et cet effet est loin d’être limité à la distance : il est également bien présent dans une salle de classe où il reste complexe de capter en temps réel les émotions d’un étudiant, processus complexe et dynamique.<br />
<br />
Notre projet prend sa racine dans ce constat. Deux questions ont alors émergé : <br />
* comment mesurer l'état émotionnel d'un-e apprenant-e, <br />
* et surtout, pour quel usage ?<br />
<br />
Dans ce contexte, nous avons pensé un dispositif de partage des ressentis de la classe à destination de l'équipe enseignante, et une utilisation de cette donnée comme retour au groupe.<br />
<br />
== Problème ==<br />
<br />
Le but de ce projet est de proposer une solution ludique à la constitution de groupes en classe, que cela soit en présence, à distance ou de manière comodale. En utilisant un Arduino Uno ou des CPX, la phase de constitution de groupes sera ainsi rapide, aléatoire et "fun" !<br />
<br />
Le ''Problem Statement'' peut s’exprimer ainsi : « Comment peut-on aider les formateurs et formatrices à identifier rapidement les difficultés dans l’apprentissage et, le cas échéant, à réagir ? »<br />
<br />
== Cahier des charges == <br />
=== Contexte et public ===<br />
Le public cible est composé de formateurs et formatrices d’adultes, en entreprise ou en institut. Il pourrait également être élargi aux enseignante.s du scolaire, mais la conscientisation et l’expression d’une émotion sont suffisamment complexes pour limiter notre premier dispositif à des adultes, disposant, à priori, d’une compréhension plus fine de leur état émotionnel. De plus, l’asymétrie dans la relation est supposée moins forte dans un groupe d’adultes en formation que dans une classe avec un enseignant et des enfants ou adolescents.<br />
<br />
===Objectifs===<br />
Le but du dispositif est de :<br />
* permettre la communication d'un niveau émotionnel perçu par l'étudiant.e à l'enseignant.e<br />
* faire émerger un état général de la classe et les différences dans l'acquisition du contenu<br />
* de manière plus pragmatique, de créer des groupes sur la base des éléments communiqués<br />
<br />
===Besoins et contraintes===<br />
L'idée du projet a beaucoup évolué entre la phase d'identification des besoins et les constatations sur les possibilités offertes par la technologie et l'expertise à disposition. Nous détaillons ci-dessous les besoins et contraintes qui nous ont menés à la solution présentée plus bas.<br />
<br />
Partant au début d’une idée de jauge émotionnelle dynamique, donnant en tout temps l’état émotionnel d’un groupe de participants, nous avons rapidement détecté, en phase d'idéation avec plusieurs spécialistes en éducation, un aspect extrêmement anxiogène pour le formateur dont le groupe enverrait des signaux d’ennui ou de frustration, durant une explication. <br />
<br />
Afin de juguler cet effet, tout en conservant la possibilité de communiquer un message sur l’état, nous avons adapté le dispositif pour permettre aux étudiants de transmettre leur état à des moments spécifiques de la formation, intégrés dans le scénario pédagogique. L'émotion étant un élément sensible à conscientiser, exprimer et partager au sein d'un groupe, nous avons estimé plus judicieux de faire exprimer son niveau d'aisance face à un contenu qui vient d'être transmis. Ainsi, un-e enseignant-e scénarisera des moments d'autodiagnostic des étudiant-es sur leur perception de compétence sur la thématique. Cette information peut être utilisée pour réaliser des groupes de travail : (1) les personnes qui ont compris peuvent être orientées sur un contenu plus avancé, en échange pendant que l'enseignant organiser une séance de question-réponse avec les personnes en difficulté ou (2) des groupes peuvent être créés pour intégrer des étudiant-es qui ont compris avec des étudiant-es qui ont besoin d'aide.<br />
<br />
Le dispositif est donc pensé comme un outil de sondage à certains moments du cours, pour évaluer les besoins du groupe, dans son ensemble. Il est souvent difficile de récolter des informations sincères lors d’évaluations à chaud, les étudiants réticents à communiquer publiquement leurs difficultés ou désintérêts pour le contenu. Par la technique de transmission, les étudiants pourraient communiquer leur émotion de manière anonyme, favorisant l'authenticité.<br />
<br />
De manière intéressante au fur et à mesure de l'avance du projet, il est ressorti des discussions avec un échantillon du public cible que l'aspect de notre projet qui les intéressait était moins la communication des émotions, mais la création facilitée des groupes. En effet, les formateurs et formatrices ayant travaillé à distance durant la dernière année se sont habitués à disposer d'une fonction de création de groupe aléatoire, selon un nombre total de participants et un nombre de groupe visé. Cette fonction serait très utile également en présence, en utilisant une carte Arduino ou un CPX pour calculer une répartition des élèves par groupe, avec en entrée le nombre d'élèves et les sous-groupes. Une fois les groupes constitués, l'étape suivante est de communiquer ces groupes à l'ensemble de la classe au travers de Lilypad ou autres technologies portables qui s'allument selon la couleur de leur groupe.<br />
<br />
===Apports===<br />
* Cohésion et sentiment d'appartenance au groupe comme soutien à l'apprentissage<br />
* Expression d'un état émotionnel épistémique comme bénéfique à l'apprentissage<br />
<br />
===Présentation du projet===<br />
Suite aux premières itérations dans l'empathie et la définition du projet, nous avons identifié plusieurs points clés qui ont réorienté notre projet :<br />
* la création d'un réseau de cartes Bluetooth contrôlées par Arduino s'est révélée trop ambitieuse, suite au manque de projets existants ou d'expertise sur lesquels s'appuyer, <br />
* l'envie marquée de notre échantillon cible qui s'est dirigée sur l'aspect création de groupe plus que sur la connaissance des états affectifs.<br />
<br />
Nous avons donc revu le projet en le divisant en 3 niveaux de difficulté, afin de réaliser un prototype utilisable, puis de l'améliorer en fonction des retours et du temps à disposition.<br />
* '''Niveau 1 : Création de groupe aléatoire''' : intérêts : facilitation de la création des groupes (demande reçue d'un formateur : "parce que Zoom nous a bien aidé pour cela à distance, je veux la même chose en présence!")<br />
* '''Niveau 2 : Communication du groupe à l’apprenant''' : intérêts : gamification, sentiment d’appartenance, coopération, cohésion<br />
* '''Niveau 3 : Communication de son sentiment de compétence''' : intérêts : plus facile que d'exprimer ses émotions, et plus facile à gérer par l'enseignant.e, par exemple les gens qui ont compris avec celles-ceux qui n'ont pas compris<br />
<br />
Nous avons réalisé complètement le niveau 1, ainsi que prototypé et testé le niveau 2 avec des cables avant de pouvoir gérer par Bluetooth un Bluefruit spécifique dans un réseau comprenant plusieurs Bluefruits. Les solutions avec code et prototypes sont décrites dans la section suivante.<br />
<br />
== Solutions explorées ==<br />
<br />
===1er prototype===<br />
La première solution envisagée comporte deux objets : <br />
* Un '''émetteur''' : facile d’utilisation et agréable à porter, nous penchons pour la solution d’un bracelet contenant un micro circuit type Lilypad, Arduino Gemma ou Tinyduino. L’apprenant disposerait de 4 boutons-pressoirs pour 4 émotions majeures à transmettre (intérêt, confusion, frustration, incompréhension), symbolisés par des logos ou émoticônes. Les messages sont transmis par Bluetooth.<br />
* Un '''récepteur''' : Une jauge, comprenant une bande Neopixels, connectée à un Arduino Uno. Les LED symboliseraient deux dimensions fournies : la couleur pour le type d'émotion et le nombre pour la quantité d'étudiant.e.s ayant transmis l'information. L'Arduino pourrait gérer l'information, en émettant un son lors du dépassement d'un seuil prédéfini sur une émotion par exemple.<br />
<br />
====Maquettes====<br />
<u>1ère itération</u><br />
<br />
[[Fichier:Maquette_projet_STIC_III_Djamileh_et_Simon.jpg|néant|vignette|1103x1103px|Maquette n°1 du projet]]<br />
<br />
<u>2e itération</u><br />
<br />
L'Arduino Uno lance une séquence de randomisation de couleur, en affiche une, puis les participant.e.s font de même sur leur CPX. Si les couleurs affichées "matchent", le groupe est constitué et on peut ainsi passer à la constitution aléatoire du groupe suivant. <br />
[[Fichier:2e Maquette projet STIC III Djamileh et Simon .jpg|néant|vignette|1103x1103px|Maquette n°2 du projet]]<br />
<br />
====Code====<br />
<u>Version 1.0 du code CPX :</u> <syntaxhighlight lang="javascript"><br />
input.buttonA.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 200<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(40)<br />
color2 += Math.randomRange(1, 3)<br />
light.setPhotonPenHue(color2)<br />
}<br />
light.photonFlip()<br />
})<br />
input.buttonsAB.onEvent(ButtonEvent.Click, function () {<br />
control.reset()<br />
})<br />
input.buttonB.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 300<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
color2 += 3<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(50)<br />
}<br />
})<br />
let tonalité = 0<br />
let durée = 0<br />
let color2 = 0<br />
light.setBrightness(158)<br />
music.setVolume(167)<br />
forever(function () {<br />
<br />
})<br />
</syntaxhighlight><br />
<br />
===2e prototype===<br />
<br />
====Maquette====<br />
<u>Boîte émettrice</u><br />
[[Fichier:Boite CPX STIC III.png|néant|vignette|Plan découpe boîte émettrice CPX]]<br />
[[Fichier:Etiquettes Boite CPX STIC III.png|néant|vignette|Etiquettes boîte CPX]]<br />
[[Fichier:Maquette boîte CPX.png|néant|vignette|Rendu de la boîte]]<br />
[[Fichier:Boîte CPX.jpg|néant|vignette|Boîte en cours de réalisation]]<br />
<br />
<u>Cadrans récepteurs</u><br />
[[Fichier:Bracelets CPX STIC III.png|néant|vignette|Cadrans récepteurs]]<br />
<br />
====Code====<br />
[[Fichier:CPX firstproto.jpg|vignette|droite|Une étape dans le test du code - 5 binomes de noël! ]]<br />
La solution présentée ici s'occupe du niveau 1, soit la création de groupe aléatoire à l'aide d'un CPX Bluefruit.<br />
Elle a été codée en CircuitPython. Nous avons rédigé le code nous-mêmes, avec deux supports : la création du dictionnaire pour la randomisation été possible grâce à l'aimable contribution de notre collègue Jérôme. Concernant l'envoi et la réception de données par Bluetooth, nous nous sommes basés sur les [https://learn.adafruit.com/circuitpython-nrf52840/bluetooth-basics tutoriels Adafruit], ainsi que deux projets utilisant des fonctionnalités se rapprochant de notre projet :<br />
* [https://learn.adafruit.com/circuit-playground-bluefruit-neopixel-animation-and-color-remote-control projet 1]<br />
* [https://learn.adafruit.com/color-remote-with-circuit-playground-bluefruit projet 2]<br />
<br />
'''Code pour le CPB Emetteur'''<br />
<syntaxhighlight lang="python"><br />
# Groupify !<br />
# Un projet de S!m & Dja<br />
# Code CircuitPython pour la répartition dans les groupes (MASTER)<br />
<br />
"""<br />
SETUP GENERAL<br />
"""<br />
<br />
# LIBRAIRIES<br />
import random<br />
import time<br />
<br />
# Librairie pour gérer la bande neopixel du bluefruit<br />
from adafruit_circuitplayground.bluefruit import cpb<br />
<br />
# Librairies pour gérer la transmission bluetooth<br />
from adafruit_ble import BLERadio<br />
from adafruit_ble.advertising.standard import ProvideServicesAdvertisement<br />
from adafruit_ble.services.nordic import UARTService<br />
<br />
# Librairie pour envoyer la couleur<br />
from adafruit_bluefruit_connect.color_packet import ColorPacket<br />
<br />
# Helper function pour gérer la connexion entre plusieurs Bluefruits<br />
# reprise sur https://learn.adafruit.com/circuit-playground-bluefruit-neopixel-<br />
# animation-and-color-remote-control/remote-control-code<br />
def send_packet(uart_connection_name, packet):<br />
"""Returns False if no longer connected."""<br />
try:<br />
uart_connection_name[UARTService].write(packet.to_bytes())<br />
except: # pylint: disable=bare-except<br />
try:<br />
uart_connection_name.disconnect()<br />
except: # pylint: disable=bare-except<br />
pass<br />
return False<br />
return True<br />
<br />
<br />
# Input utilisateur<br />
participants = int(input("Nombre de participants : "))<br />
groupe = int(input("Nombre de groupes : "))<br />
<br />
"""<br />
CREATION DES GROUPES<br />
"""<br />
<br />
# création listes à long. variable (+ 1 pour compenser la numération depuis 0)<br />
liste_part = list(range(1, participants + 1)) # print(liste_part)<br />
nb_part = len(liste_part) + 1<br />
liste_groupe = list(range(1, groupe + 1)) # print(liste_groupe)<br />
<br />
# Déf. grille (dict. de listes) combinations possibles<br />
clé_tableau = str(participants) + "_" + str(groupe)<br />
# !!! ajouter combinaisons pas possible : eg. tour de roue lumineuse/son pourri !!!<br />
grille_repartition = {<br />
"10_5": [2, 2, 2, 2, 2],<br />
"10_4": [2, 2, 3, 3],<br />
"10_3": [3, 3, 4],<br />
"10_2": [5, 5],<br />
"9_4": [2, 2, 2, 3],<br />
"9_3": [3, 3, 3],<br />
"9_2": [4, 5],<br />
"8_4": [2, 2, 2, 2],<br />
"8_3": [2, 3, 3],<br />
"8_2": [4, 4],<br />
"7_3": [2, 2, 3],<br />
"7_2": [4, 3],<br />
"6_3": [2, 2, 2],<br />
"6_2": [3, 3],<br />
"5_2": [2, 3],<br />
"4_2": [2, 2],<br />
}<br />
# détermination du nb et taille des groupes à créer<br />
taille_groupe = grille_repartition[clé_tableau]<br />
print(taille_groupe)<br />
<br />
# création (dict) répartition aléatoire<br />
dict_repartition = {} # initialisation<br />
for i in range(0, len(taille_groupe)):<br />
dict_repartition[liste_groupe[i]] = [] # création des items du dictionnaire<br />
for j in range(0, taille_groupe[i]):<br />
etu = liste_part[random.randint(0, len(liste_part) - 1)]<br />
dict_repartition[liste_groupe[i]].append(etu)<br />
liste_part.remove(etu)<br />
# print (liste_part)<br />
# print (dict_repartition)<br />
print(dict_repartition)<br />
<br />
# Définition des groupes avec couleurs<br />
groupeList = list(dict_repartition.values())<br />
print(groupeList)<br />
<br />
# GESTION NEOPIXEL<br />
cpb.pixels.brightness = 0.05<br />
<br />
# Grille de définition des couleurs de groupe<br />
dict_couleur = {<br />
"gr1": (0, 255, 0),<br />
"gr2": (255, 0, 255),<br />
"gr3": (255, 255, 0),<br />
"gr4": (0, 255, 255),<br />
"gr5": (255, 0, 0),<br />
}<br />
# print(dict_couleur)<br />
<br />
# transf. dict -> list<br />
liste_couleur = list(dict_couleur.values())<br />
print("liste de couleur totale: ", liste_couleur)<br />
<br />
# définition des couleurs selon nb de groupe<br />
dict_neopix = {}<br />
for i in range(0, len(taille_groupe)):<br />
codecouleur = liste_couleur[i]<br />
dict_neopix[i] = codecouleur<br />
# print(dict_neopix)<br />
<br />
# transf. dict -> list<br />
liste_neopix = list(dict_neopix.values())<br />
print("liste de couleur spécifique: ", liste_neopix)<br />
<br />
# Attribution des couleurs par pixel<br />
liste_pixels = []<br />
for i in range(0, nb_part):<br />
for j in range(0, len(taille_groupe)):<br />
if i in groupeList[j]:<br />
pix = liste_neopix[j]<br />
liste_pixels.append(pix)<br />
print("couleurs des pixels : ", liste_pixels)<br />
<br />
"""<br />
TRANSMISSION AUX BLUEFRUITS PARTICIPANTS (SLAVES)<br />
"""<br />
# Setup de la transmission<br />
ble = BLERadio()<br />
uart_service = UARTService()<br />
advertisement = ProvideServicesAdvertisement(uart_service)<br />
<br />
uart_connection = None<br />
# Controle sur des connexions disponibles<br />
if ble.connected:<br />
for connection in ble.connections:<br />
if UARTService in connection:<br />
uart_connection = connection<br />
break<br />
<br />
while True:<br />
# Allumage de la bnde neopixel / visualisation des groupes formés<br />
for i in range(0, nb_part - 1):<br />
cpb.pixels[i] = liste_pixels[i]<br />
<br />
# Gestion de la transmission<br />
if not uart_connection or not uart_connection.connected:<br />
# Condition : pas de connexion > scan<br />
print("Scanning...")<br />
for adv in ble.start_scan(ProvideServicesAdvertisement, timeout=5): # Scan...<br />
if UARTService in adv.services: # si periphérique existe<br />
print("Found a UARTService advertisement.")<br />
uart_connection = ble.connect(adv) # crée une connexion<br />
break<br />
# Arrêt du scannage de l'environnement<br />
ble.stop_scan()<br />
<br />
# si connexion existante :<br />
while uart_connection and uart_connection.connected:<br />
if cpb.button_a: # Transmission des données neopixels avec A<br />
print("Bouton A - envoi données")<br />
color = cpb.pixels[0]<br />
if not send_packet(uart_connection, ColorPacket(color)):<br />
uart_connection = None<br />
continue<br />
time.sleep(0.1) # Delay to prevent sending packets too quickly.<br />
</syntaxhighlight><br />
<br />
'''Code pour le CPB Récepteur (participants)'''<br />
<syntaxhighlight lang="python"><br />
"""<br />
Code pour les bluefruits participants<br />
"""<br />
import time<br />
<br />
from adafruit_circuitplayground.bluefruit import cpb<br />
<br />
from adafruit_ble import BLERadio<br />
from adafruit_ble.advertising.standard import ProvideServicesAdvertisement<br />
from adafruit_ble.services.nordic import UARTService<br />
<br />
from adafruit_bluefruit_connect.packet import Packet<br />
from adafruit_bluefruit_connect.color_packet import ColorPacket<br />
<br />
num_pixels = 10<br />
<br />
# animation initiale - "chase" est une animation de base dans les librairies<br />
# d'animation pour neopixel (cf neopixel überguide)<br />
def color_chase(color, wait):<br />
for i in range(num_pixels):<br />
cpb.pixels[i] = color<br />
time.sleep(wait)<br />
cpb.pixels.show()<br />
time.sleep(0.5)<br />
<br />
<br />
# Grille des couleurs de groupe pour animation<br />
dict_couleur = {<br />
"gr1": (0, 255, 0),<br />
"gr2": (255, 0, 255),<br />
"gr3": (255, 255, 0),<br />
"gr4": (0, 255, 255),<br />
"gr5": (255, 0, 0),<br />
}<br />
<br />
liste_couleur = list(dict_couleur.values())<br />
print(liste_couleur)<br />
<br />
# Setup standard pour la réception<br />
ble = BLERadio()<br />
uart = UARTService()<br />
advertisement = ProvideServicesAdvertisement(uart)<br />
<br />
cpb.pixels.brightness = 0.05<br />
receptionGroupe = False<br />
<br />
while True:<br />
ble.start_advertising(advertisement)<br />
<br />
while not cpb.switch:<br />
for i in range(0, len(liste_couleur)):<br />
couleurCode = liste_couleur[i]<br />
color_chase(couleurCode, 0.05)<br />
<br />
if cpb.switch:<br />
while not ble.connected:<br />
pass<br />
ble.stop_advertising()<br />
<br />
while ble.connected:<br />
if uart.in_waiting:<br />
packet = Packet.from_stream(uart)<br />
if isinstance(packet, ColorPacket):<br />
cpb.pixels.fill(packet.color)<br />
</syntaxhighlight><br />
<br />
== Test(s) de la solution ==<br />
<br />
===Cognitive walkthrough===<br />
<br />
Pour produire ce cognitive walkthrough, nous nous sommes basés sur les principes du [https://edutechwiki.unige.ch/en/Cognitive_walkthrough#Fluid_project_overview Fluid Project].<br />
<br />
==== Persona ====<br />
[[Fichier:PERSONA INGO NITO.jpg|néant|cadre]]<br />
<br />
==== Objectifs ====<br />
<br />
* Créer des groupes grâce au dispositif émetteur<br />
* Communiquer ces groupes aux dispositifs récepteurs<br />
* Renforcer l'engagement grâce à un dispositif ludique et actif<br />
<br />
==== Scénario d'utilisation ====<br />
<br />
# (en amont) Réfléchir à un combien de groupes seront créés en fonction du nombre de participant.e.s disponible.s<br />
# Allumage du dispositif<br />
# Lancement du dispositif<br />
# Réalisation d'une séquence de composition de groupe<br />
# Lancement et réalisation de la séquence suivante de communication avec envoi des groupes constitués aux dispositifs distants<br />
# Mise hors tension du dispositif<br />
<br />
=== Tests utilisateur·trice·s===<br />
<br />
==== '''Scénario final''' ====<br />
Le test utilisateur est une méthode utilisée pour évaluer l’expérience utilisateur d’un système, mais également les forces et les faiblesses de celui-ci. Cette méthode, consiste à mettre l’utilisateur·trice en situation « réelle » afin d’observer ses comportements et ses actions lorsqu’il exécute des tâches prédéfinies qui lui sont administrées sous la forme d’un scénario. Il leur est alors demandé de nous renseigner sur leurs expériences.<br />
<br />
Lors de cette phase, un prototype du projet est présenté à des utilisateur·trices recrutés au sein du public cible. A ce stade, le prototype devrait être suffisamment abouti pour offrir les principales fonctionnalités constitutives de la version finale. Néanmoins, il diffère de celle-ci puisque certaines fonctionnalités accessoires ne pourraient ne pas être encore implémentées. En présentant assez tôt un produit relativement proche de la version finale, nous entendons nous assurer que les directions prises dans les précédentes phases de conception soient les plus à même de répondre aux besoins des utilisateur·trice·s. Le prototype sera modifié en fonction des retours formulés par les observations réalisées ainsi que par les analyses des résultats des tests. <br />
<br />
Le test utilisateur se déroulera en 3 étapes :<br />
#Accueil des participants<br />
#Réalisation des tâches<br />
#Entretien succinct<br />
<br />
Dans la première étape, le participant sera accueilli, le contexte et le test utilisateur lui seront alors présentés de manière générale. Lors du test, l’utilisateur·trice « découvrira » le dispositif en réalisant des tâches préparées au préalable (scénario des tâches). Ici, nous éprouverons l’expérience de l’utilisateur·trice.<br />
<br />
Après avoir exposé le contexte dans lequel le scénario prend place, nous demanderons à la personne d’accomplir les tâches décrites dans le tableau "scénario des tâches". De plus, nous encouragerons le/la participant·e à formuler à voix haute ses pensées et ressentis lors de l’utilisation de l’outil. <br />
<br />
Les participant·e·s seront accueillis avec la consigne suivante : <br />
{{Citation encadrée | ''Merci d’avoir accepté de faire ce test avec moi aujourd'hui. Je travaille sur le développement d’un outil pour la constitution aléatoire de groupes de travail dans une classe. Cette technique permet de constituer des groupes rapidement et de communiquer ceux-ci aux participant.e.s quasi instantanément.''}}<br />
<br />
Le scénario des tâches se composera de deux éléments : le contexte et les tâches à effectuer par le/la participant.e. Le contexte aura pour but de mettre l’utilisateur·trice dans une situation réaliste qui se rapprochera de son quotidien et/ou du contexte pendant lequel il pourrait être mené à utiliser le dispositif. Le contexte sera formulé de la manière suivante :<br />
<br />
{{Citation encadrée | ''Vous êtes au début d’une activité de débat, dans votre classe, avec vos étudiant.e.s. Pour réaliser cette activité, vous devez d’abord constituer des groupes de manière aléatoire, avec les étudiant.e.s qui composent votre cours. Pour se faire, vous allez donc devoir utiliser le dispositif-prototype en annexe.''<br />
<br />
''Le dispositif à tester se compose de plusieurs éléments. Le premier élément est le dispositif émetteur. Il va être utilisé pour composer les groupes d’étudiant.e.s de manière aléatoire et par couleur. <br />
Ensuite, avec les boutons présents sur celui-ci, il sera capable de transmettre les données choisies aux dispositifs récepteurs annexes.''<br />
<br />
''Durant le test, vous allez être amené.e à utiliser les différents dispositifs cités afin de réaliser plusieurs tâches. Celles-ci ne devraient pas être trop compliquées et ne nécessiteront, non plus , pas trop de temps de réalisation.''}}<br />
<br />
Après avoir exposé le contexte dans lequel le scénario prend place, nous demanderons au participant d’accomplir les tâches décrites dans le tableau "scénario des tâches".<br />
<br />
Pour l’étape des tâches, nous donnerons les consignes suivantes :<br />
<br />
{{Citation encadrée |''Avant de commencer le test et les tâches, n’hésitez pas à poser des questions si un/des élément(s) ne vous paraissent pas clair(s). Nous restons bien entendu à disposition, si besoin , durant la réalisation des tâches. <br />
''}}<br />
<br />
Chaque tâche sera expliquée au fur et à mesure au participant.<br />
{| style="border: 1px solid black; border-spacing: 0; margin: 0.5em auto;"<br />
|+ '''Scénario des tâches'''<br />
|-<br />
! style="border: 1px solid black; padding: 5px; background: #D4D4D8; width: 200pt;" | Tâche 1<br />
| style="border: 1px solid black; padding: 5px; vertical-align: top; width: 400pt;" |''Pour commencer, veuillez trouver comment allumer le dispositif. Une fois que c’est fait, vous pouvez passer à la tâche suivante.''<br />
|-<br />
! style="border: 1px solid black; padding: 5px; background: #D4D4D8; width: 200pt;" |Tâche 2<br />
| style="border: 1px solid black; padding: 5px; vertical-align: top; width: 400pt;" |''Comme seconde tâche, veuillez décider de combien de groupes vous aurez besoin selon le nombre d’élèves à votre disposition. ''<br />
|-<br />
! style="border: 1px solid black; padding: 5px; background: #D4D4D8; width: 200pt;" | Tâche 3<br />
| style="border: 1px solid black; padding: 5px; vertical-align: top; width: 400pt;" |''Comme tâche suivante, renseignez les informations souhaitées sur le dispositif émetteur (nombre de groupes et nombre d’élèves). ''<br />
|-<br />
! style="border: 1px solid black; padding: 5px; background: #D4D4D8; width: 200pt;" | Tâche 4<br />
| style="border: 1px solid black; padding: 5px; vertical-align: top; width: 400pt;" |''Comme dernière tâche, envoyez les données depuis le dispositif émetteur aux dispositifs récepteurs. ''<br />
|-<br />
|<br />
|<br />
|}<br />
<br />
==== Vidéo du test utilisateur.trice.s ====<br />
[[Fichier:Users Tests.ogg|néant|vignette|600x600px]]<br />
<br />
==== Retours des tests ====<br />
'''Côté formateur''' (CPB émetteur)<br />
<br />
Le son n’est pas indispensable selon le formateur. Mais, une étape de validation ou un autre retour serait à envisager. <br />
<br />
Pas de manque particulier. Cependant, il faudrait poser des conditions automatiques ou en tout cas que les processus soient automatiques sans une maîtrise de la part du formateur. En gros, n’importe qui de la classe pourrait le faire. Une solution serait de demander à quelqu’un.e dans la classe s’il/elle veut procéder au lancement du processus des groupes.<br />
<br />
Concernant les couleurs, comme elles ne sont pas arrangées dans un ordre précis et que les positions des LED sont décalées, cela perturbe un petit peu. Mais, on comprend que c’est une logique de programmation. Cela serait simplement plus agréable visuellement pour un utilisateur sur 3.<br />
<br />
Une remarque a été produite concernant la possibilité de garder en main les objets plutôt que de les avoir comme montre au poignet (participant) ou dans une boîte (formateur). En rendant disponible le dispositif à la main directement cela peut démontrer que tout le monde est logé à la même enseigne et qu’il n’y a pas de différences entre l’enseignant et les élèves. Tout le monde a le même objet.<br />
<br />
Il serait amusant d’ajouter une compétition afin de déterminer si un.e élève choisit et effectue la composition des groupes plutôt que le formateur. Celui qui a la montre qui s’allume par exemple dans la classe en premier pourra alors lancer la séquence de randomisation au lieu du prof. Cela donnerait un côté ludique et encore plus engageant, voire plus hasardeux et permettrait d’aller plus loin que le seul processus de composition aléatoire des groupes par couleurs. <br />
<br />
Le retour (ou annulation de fonction) n’est pas possible. Cela n’est pas contraignant en soi mais un peu dérangeant selon le testeur-formateur. <br />
<br />
Le premier testeur a eu envie de secouer le CPB au moment de créer les groupes. Il aurait aimé ne pas avoir à appuyer sur des boutons, mais d’utiliser l’aspect aléatoire de secouer l’objet, comme une boule 8 magique. Cela lui donnerait une meilleure impression que cela est réellement une génération aléatoire de groupes.<br />
<br />
Il y a globalement eu un besoin de mieux valider les différentes étapes chez les 3 testeurs. Le premier aurait apprécié intégrer les données avec les boutons A et B, valider avec la slider et avoir un retour visuel (changement de couleur des LED) pour valider l’action. Contrairement aux deux autres testeurs, il a aimé devoir appuyer sur un bouton pour envoyer les données aux récepteurs participants. Cela démontre des différences dans les envies et besoins de contrôle des utilisateurs.<br />
<br />
<br />
'''Côté participant.e.s''' (CPB récepteur)<br />
<br />
Le “slider” ne devrait pas être obligatoire à utiliser car il devrait y avoir une étape automatique et directe de réception de la couleur de groupe. Remarque identique pour la seconde participante.<br />
<br />
La découverte du dispositif est agréable, “cool”. On a envie de savoir comment cela fonctionne. Le rendu et la structure, cela rend bien. <br />
La rotation des couleurs du dispositif de réception fait penser à un casino ; l’attente devient cool et excitante : la participante était impatiente de connaître son groupe.<br />
<br />
Il devrait y avoir du son ou une vibration pour valider les étapes ou en tout cas un retour visuel qui viendrait sanctionner les manipulations sur le dispositif. Cela pourrait être une petite musique qui annonce le groupe attribué. La 2e testeuse rapporte que cela donne le sentiment “d’avoir gagné”.<br />
<br />
Une remarque a été formulée concernant l’utilisation de ce type de dispositif sur toute une journée de cours. En effet, cela peut être répétitif si à chaque fois que l’on doit former des groupes, les participant.e.s doivent utiliser le dispositif. Il devrait apporter une certaine plus-value selon un des testeurs. L’idée d’ajouter un écran au dispositif a été proposée, où des consignes pourraient s’afficher ; cela donnerait un aspect utile en plus. Le dispositif pourrait ainsi faciliter les activités de groupes en plusieurs phases : les participants se regroupent selon la couleur reçue et ils reçoivent une première consigne. Puis le formateur envoie le temps restant et la suite des activités, jusqu’au retour en plénière.<br />
<br />
Concernant le dispositif de réception, la “montre”, son utilité et son design ont été remis en question. Il pourrait être sous forme de patch ou pin’s plutôt qu’un objet au poignet selon les utilisateur.trice.s. En effet, des participant.e.s ont peut-être déjà des montres ou des bracelets au poignet ce qui pourrait être contraignant. De plus, à cette phase du prototypage, comme il ne s’agit que d’allumer une LED, il serait envisageable d’utiliser de la broderie numérique et d’y intégrer une micro-circuit avec une LED (i.e. Gemma, Flora)<br />
<br />
== Discussion ==<br />
=== Design === <br />
Le design actuel est parti d'une idée d'utiliser la découpe laser pour la boîte émettrice et une forme de montre pour les récepteurs participants, avec un côté vintage et nostalgique des séries des années 80.<br />
Cela dit, nous avions tout de même recherché des produits plus petits et plus discrets, faciles à transporter et à manipuler.Cela s'est confirmé lors des tests, où en fin de compte, les participants ont apprécié avoir des objets légers et faciles à manipuler en main. Pour un prochain prototype, nous nous orienterions vers un Gemma ou Flora, sur un patch en broderie numérique pour les récepteurs participants.<br />
<br />
Du côté émetteur, il est resté jusqu'à la fin la difficulté de l'input du nombre de participants et du nombre de groupes attendus. Les potentiomètres se sont avérés trop complexes, autant pour comprendre ce qu'il fallait commander que pour programmer des niveaux de voltage correspondant à des seuils de chiffre. Pour pallier cette difficulté, nous avons tenté d'utiliser les éléments du CPB, soit les boutons et la slider. Cependant, cela nécessite des manipulations longues (pare exemple : bouton A pour ajouter un participant, bouton B pour en enlever, slider pour valider) et rend l'opération fastidieuse. <br />
<br />
Enfin, l'utilisation de la bande neopixel du CPB limite le nombre total de participants à 10. Pour une prochaine itération, nous utiliserions une bande externe permettant la gestion de groupes plus larges.<br />
<br />
=== Résultats des tests utilisateurs === <br />
Une partie des retours utilisateurs ont été intégrés dans la section Design, car ils faisaient écho à nos propres envies, qui n'avaient pas été réalisables techniquement. Nous retenons les points clés suivants pour les prochaines itérations du projet, en avantages et faiblesses : <br />
<br />
Les avantages sont :<br />
* un aspect ludique qui rend excitant le moment de passage à l'activité de sous-groupe et qui renforce l'engagement<br />
* un effet d'appartenance et de cohésion <br />
* une dimension pédagogique de rééquilibrage des postures : la personne qui forme peut choisir de contrôler la création des groupes ou de la rendre démocratique par sa délégation à un membre de la classe. Cela permet de garder une réelle impression de hasard<br />
<br />
Du côté des faiblesses à améliorer :<br />
* Encore trop complexe et long par rapport à sa réelle plus-value. Il faudrait soit simplifier son utilisation (moins d'étapes intermédiaires (clic, slide) ou lui ajouter des fonctionnalités de communications avec les groupes (consignes, temps restants, etc.)<br />
* Le design actuel semble trop envahissant (boite, montre). Il faudrait le rendre plus facile à manipuler, porter et à oublier lorsqu'il n'est pas utilisé<br />
<br />
== Licence, fichiers et documentation ==<br />
[[Fichier:By-nc.png|150px]] Cette œuvre est mise à disposition selon les termes de la [http://creativecommons.org/licenses/by-nc/4.0/ Licence Creative Commons Attribution - Pas d’Utilisation Commerciale 4.0 International].<br />
<br />
* Fichiers :<br />
Insérer ici vos fichiers ou les liens vers vos fichiers<br />
<br />
* Documentation : <br />
Insérer ici une petite documentation pour l'utilisation de l'objet si nécessaire<br />
<br />
== Bibliographie ==<br />
<br />
* Blair, C., Calkins, S., & Kopp, L. (2010). Self-regulation as the interface of emotional and cognitive development: Implications for education and academic achievement.<br />
* Pekrun, R., Goetz, T., Titz, W., & Perry, R. P. (2002). Academic emotions in students' self-regulated learning and achievement: A program of qualitative and quantitative research. Educational psychologist, 37(2), 91-105.</div>Djamileh Aminianhttps://edutechwiki.unige.ch/fmediawiki/index.php?title=STIC:STIC_III_(2020)/Forces_rouge,_rose,_vert,_jaune_ou_bleu_!&diff=154727STIC:STIC III (2020)/Forces rouge, rose, vert, jaune ou bleu !2021-09-04T09:45:55Z<p>Djamileh Aminian : /* Test(s) de la solution */</p>
<hr />
<div>{{bloc important|Projet réalisé par [[Utilisateur:Djamileh_Aminian|Djamileh]] & [[Utilisateur:Simon_Jöhr|Simon]]}}<br />
<br />
== Introduction ==<br />
Durant la dernière année, le passage forcé à la téléformation, soit la formation synchrone à distance, a eu comme effet positif de pousser certains spécialistes de l’éducation à revisiter leurs scénarios pédagogiques pour revenir aux fondamentaux : comment aider les élèves à apprendre ce qu’ils sont sensés apprendre et comment les accompagner au mieux dans leur apprentissage ? Souvent, les difficultés relevées lors des bilans des derniers mois de distantiel ont fait émerger des problèmes qui existaient déjà en présence, mais qui restaient latents ou ignorés.<br />
<br />
En ce sens, l’apprentissage est fortement influencé par les émotions par lesquelles passent les élèves au cours de la formation, et en particulier pendant les moments synchrones. Pourtant, il est très complexe de détecter, mesurer, ou même faire exprimer les étudiant-es sur leur ressenti.<br />
<br />
En donnant leurs cours en visioconférence, nombreux formateurs et formatrices ont exprimé leur frustration de ne pas réussir à évaluer l’état émotionnel et autres indices non verbaux de leurs participant.e.s, retours essentiels pour adapter une explication ou ajuster le rythme. Et cet effet est loin d’être limité à la distance : il est également bien présent dans une salle de classe où il reste complexe de capter en temps réel les émotions d’un étudiant, processus complexe et dynamique.<br />
<br />
Notre projet prend sa racine dans ce constat. Deux questions ont alors émergé : <br />
* comment mesurer l'état émotionnel d'un-e apprenant-e, <br />
* et surtout, pour quel usage ?<br />
<br />
Dans ce contexte, nous avons pensé un dispositif de partage des ressentis de la classe à destination de l'équipe enseignante, et une utilisation de cette donnée comme retour au groupe.<br />
<br />
== Problème ==<br />
<br />
Le but de ce projet est de proposer une solution ludique à la constitution de groupes en classe, que cela soit en présence, à distance ou de manière comodale. En utilisant un Arduino Uno ou des CPX, la phase de constitution de groupes sera ainsi rapide, aléatoire et "fun" !<br />
<br />
Le ''Problem Statement'' peut s’exprimer ainsi : « Comment peut-on aider les formateurs et formatrices à identifier rapidement les difficultés dans l’apprentissage et, le cas échéant, à réagir ? »<br />
<br />
== Cahier des charges == <br />
=== Contexte et public ===<br />
Le public cible est composé de formateurs et formatrices d’adultes, en entreprise ou en institut. Il pourrait également être élargi aux enseignante.s du scolaire, mais la conscientisation et l’expression d’une émotion sont suffisamment complexes pour limiter notre premier dispositif à des adultes, disposant, à priori, d’une compréhension plus fine de leur état émotionnel. De plus, l’asymétrie dans la relation est supposée moins forte dans un groupe d’adultes en formation que dans une classe avec un enseignant et des enfants ou adolescents.<br />
<br />
===Objectifs===<br />
Le but du dispositif est de :<br />
* permettre la communication d'un niveau émotionnel perçu par l'étudiant.e à l'enseignant.e<br />
* faire émerger un état général de la classe et les différences dans l'acquisition du contenu<br />
* de manière plus pragmatique, de créer des groupes sur la base des éléments communiqués<br />
<br />
===Besoins et contraintes===<br />
L'idée du projet a beaucoup évolué entre la phase d'identification des besoins et les constatations sur les possibilités offertes par la technologie et l'expertise à disposition. Nous détaillons ci-dessous les besoins et contraintes qui nous ont menés à la solution présentée plus bas.<br />
<br />
Partant au début d’une idée de jauge émotionnelle dynamique, donnant en tout temps l’état émotionnel d’un groupe de participants, nous avons rapidement détecté, en phase d'idéation avec plusieurs spécialistes en éducation, un aspect extrêmement anxiogène pour le formateur dont le groupe enverrait des signaux d’ennui ou de frustration, durant une explication. <br />
<br />
Afin de juguler cet effet, tout en conservant la possibilité de communiquer un message sur l’état, nous avons adapté le dispositif pour permettre aux étudiants de transmettre leur état à des moments spécifiques de la formation, intégrés dans le scénario pédagogique. L'émotion étant un élément sensible à conscientiser, exprimer et partager au sein d'un groupe, nous avons estimé plus judicieux de faire exprimer son niveau d'aisance face à un contenu qui vient d'être transmis. Ainsi, un-e enseignant-e scénarisera des moments d'autodiagnostic des étudiant-es sur leur perception de compétence sur la thématique. Cette information peut être utilisée pour réaliser des groupes de travail : (1) les personnes qui ont compris peuvent être orientées sur un contenu plus avancé, en échange pendant que l'enseignant organiser une séance de question-réponse avec les personnes en difficulté ou (2) des groupes peuvent être créés pour intégrer des étudiant-es qui ont compris avec des étudiant-es qui ont besoin d'aide.<br />
<br />
Le dispositif est donc pensé comme un outil de sondage à certains moments du cours, pour évaluer les besoins du groupe, dans son ensemble. Il est souvent difficile de récolter des informations sincères lors d’évaluations à chaud, les étudiants réticents à communiquer publiquement leurs difficultés ou désintérêts pour le contenu. Par la technique de transmission, les étudiants pourraient communiquer leur émotion de manière anonyme, favorisant l'authenticité.<br />
<br />
De manière intéressante au fur et à mesure de l'avance du projet, il est ressorti des discussions avec un échantillon du public cible que l'aspect de notre projet qui les intéressait était moins la communication des émotions, mais la création facilitée des groupes. En effet, les formateurs et formatrices ayant travaillé à distance durant la dernière année se sont habitués à disposer d'une fonction de création de groupe aléatoire, selon un nombre total de participants et un nombre de groupe visé. Cette fonction serait très utile également en présence, en utilisant une carte Arduino ou un CPX pour calculer une répartition des élèves par groupe, avec en entrée le nombre d'élèves et les sous-groupes. Une fois les groupes constitués, l'étape suivante est de communiquer ces groupes à l'ensemble de la classe au travers de Lilypad ou autres technologies portables qui s'allument selon la couleur de leur groupe.<br />
<br />
===Apports===<br />
* Cohésion et sentiment d'appartenance au groupe comme soutien à l'apprentissage<br />
* Expression d'un état émotionnel épistémique comme bénéfique à l'apprentissage<br />
<br />
===Présentation du projet===<br />
Suite aux premières itérations dans l'empathie et la définition du projet, nous avons identifié plusieurs points clés qui ont réorienté notre projet :<br />
* la création d'un réseau de cartes Bluetooth contrôlées par Arduino s'est révélée trop ambitieuse, suite au manque de projets existants ou d'expertise sur lesquels s'appuyer, <br />
* l'envie marquée de notre échantillon cible qui s'est dirigée sur l'aspect création de groupe plus que sur la connaissance des états affectifs.<br />
<br />
Nous avons donc revu le projet en le divisant en 3 niveaux de difficulté, afin de réaliser un prototype utilisable, puis de l'améliorer en fonction des retours et du temps à disposition.<br />
* '''Niveau 1 : Création de groupe aléatoire''' : intérêts : facilitation de la création des groupes (demande reçue d'un formateur : "parce que Zoom nous a bien aidé pour cela à distance, je veux la même chose en présence!")<br />
* '''Niveau 2 : Communication du groupe à l’apprenant''' : intérêts : gamification, sentiment d’appartenance, coopération, cohésion<br />
* '''Niveau 3 : Communication de son sentiment de compétence''' : intérêts : plus facile que d'exprimer ses émotions, et plus facile à gérer par l'enseignant.e, par exemple les gens qui ont compris avec celles-ceux qui n'ont pas compris<br />
<br />
Nous avons réalisé complètement le niveau 1, ainsi que prototypé et testé le niveau 2 avec des cables avant de pouvoir gérer par Bluetooth un Bluefruit spécifique dans un réseau comprenant plusieurs Bluefruits. Les solutions avec code et prototypes sont décrites dans la section suivante.<br />
<br />
== Solutions explorées ==<br />
<br />
===1er prototype===<br />
La première solution envisagée comporte deux objets : <br />
* Un '''émetteur''' : facile d’utilisation et agréable à porter, nous penchons pour la solution d’un bracelet contenant un micro circuit type Lilypad, Arduino Gemma ou Tinyduino. L’apprenant disposerait de 4 boutons-pressoirs pour 4 émotions majeures à transmettre (intérêt, confusion, frustration, incompréhension), symbolisés par des logos ou émoticônes. Les messages sont transmis par Bluetooth.<br />
* Un '''récepteur''' : Une jauge, comprenant une bande Neopixels, connectée à un Arduino Uno. Les LED symboliseraient deux dimensions fournies : la couleur pour le type d'émotion et le nombre pour la quantité d'étudiant.e.s ayant transmis l'information. L'Arduino pourrait gérer l'information, en émettant un son lors du dépassement d'un seuil prédéfini sur une émotion par exemple.<br />
<br />
====Maquettes====<br />
<u>1ère itération</u><br />
<br />
[[Fichier:Maquette_projet_STIC_III_Djamileh_et_Simon.jpg|néant|vignette|1103x1103px|Maquette n°1 du projet]]<br />
<br />
<u>2e itération</u><br />
<br />
L'Arduino Uno lance une séquence de randomisation de couleur, en affiche une, puis les participant.e.s font de même sur leur CPX. Si les couleurs affichées "matchent", le groupe est constitué et on peut ainsi passer à la constitution aléatoire du groupe suivant. <br />
[[Fichier:2e Maquette projet STIC III Djamileh et Simon .jpg|néant|vignette|1103x1103px|Maquette n°2 du projet]]<br />
<br />
====Code====<br />
<u>Version 1.0 du code CPX :</u> <syntaxhighlight lang="javascript"><br />
input.buttonA.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 200<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(40)<br />
color2 += Math.randomRange(1, 3)<br />
light.setPhotonPenHue(color2)<br />
}<br />
light.photonFlip()<br />
})<br />
input.buttonsAB.onEvent(ButtonEvent.Click, function () {<br />
control.reset()<br />
})<br />
input.buttonB.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 300<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
color2 += 3<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(50)<br />
}<br />
})<br />
let tonalité = 0<br />
let durée = 0<br />
let color2 = 0<br />
light.setBrightness(158)<br />
music.setVolume(167)<br />
forever(function () {<br />
<br />
})<br />
</syntaxhighlight><br />
<br />
===2e prototype===<br />
<br />
====Maquette====<br />
<u>Boîte émettrice</u><br />
[[Fichier:Boite CPX STIC III.png|néant|vignette|Plan découpe boîte émettrice CPX]]<br />
[[Fichier:Etiquettes Boite CPX STIC III.png|néant|vignette|Etiquettes boîte CPX]]<br />
[[Fichier:Maquette boîte CPX.png|néant|vignette|Rendu de la boîte]]<br />
[[Fichier:Boîte CPX.jpg|néant|vignette|Boîte en cours de réalisation]]<br />
<br />
<u>Cadrans récepteurs</u><br />
[[Fichier:Bracelets CPX STIC III.png|néant|vignette|Cadrans récepteurs]]<br />
<br />
====Code====<br />
[[Fichier:CPX firstproto.jpg|vignette|droite|Une étape dans le test du code - 5 binomes de noël! ]]<br />
La solution présentée ici s'occupe du niveau 1, soit la création de groupe aléatoire à l'aide d'un CPX Bluefruit.<br />
Elle a été codée en CircuitPython. Nous avons rédigé le code nous-mêmes, avec deux supports : la création du dictionnaire pour la randomisation été possible grâce à l'aimable contribution de notre collègue Jérôme. Concernant l'envoi et la réception de données par Bluetooth, nous nous sommes basés sur les [https://learn.adafruit.com/circuitpython-nrf52840/bluetooth-basics tutoriels Adafruit], ainsi que deux projets utilisant des fonctionnalités se rapprochant de notre projet :<br />
* [https://learn.adafruit.com/circuit-playground-bluefruit-neopixel-animation-and-color-remote-control projet 1]<br />
* [https://learn.adafruit.com/color-remote-with-circuit-playground-bluefruit projet 2]<br />
<br />
'''Code pour le CPB Emetteur'''<br />
<syntaxhighlight lang="python"><br />
# Groupify !<br />
# Un projet de S!m & Dja<br />
# Code CircuitPython pour la répartition dans les groupes (MASTER)<br />
<br />
"""<br />
SETUP GENERAL<br />
"""<br />
<br />
# LIBRAIRIES<br />
import random<br />
import time<br />
<br />
# Librairie pour gérer la bande neopixel du bluefruit<br />
from adafruit_circuitplayground.bluefruit import cpb<br />
<br />
# Librairies pour gérer la transmission bluetooth<br />
from adafruit_ble import BLERadio<br />
from adafruit_ble.advertising.standard import ProvideServicesAdvertisement<br />
from adafruit_ble.services.nordic import UARTService<br />
<br />
# Librairie pour envoyer la couleur<br />
from adafruit_bluefruit_connect.color_packet import ColorPacket<br />
<br />
# Helper function pour gérer la connexion entre plusieurs Bluefruits<br />
# reprise sur https://learn.adafruit.com/circuit-playground-bluefruit-neopixel-<br />
# animation-and-color-remote-control/remote-control-code<br />
def send_packet(uart_connection_name, packet):<br />
"""Returns False if no longer connected."""<br />
try:<br />
uart_connection_name[UARTService].write(packet.to_bytes())<br />
except: # pylint: disable=bare-except<br />
try:<br />
uart_connection_name.disconnect()<br />
except: # pylint: disable=bare-except<br />
pass<br />
return False<br />
return True<br />
<br />
<br />
# Input utilisateur<br />
participants = int(input("Nombre de participants : "))<br />
groupe = int(input("Nombre de groupes : "))<br />
<br />
"""<br />
CREATION DES GROUPES<br />
"""<br />
<br />
# création listes à long. variable (+ 1 pour compenser la numération depuis 0)<br />
liste_part = list(range(1, participants + 1)) # print(liste_part)<br />
nb_part = len(liste_part) + 1<br />
liste_groupe = list(range(1, groupe + 1)) # print(liste_groupe)<br />
<br />
# Déf. grille (dict. de listes) combinations possibles<br />
clé_tableau = str(participants) + "_" + str(groupe)<br />
# !!! ajouter combinaisons pas possible : eg. tour de roue lumineuse/son pourri !!!<br />
grille_repartition = {<br />
"10_5": [2, 2, 2, 2, 2],<br />
"10_4": [2, 2, 3, 3],<br />
"10_3": [3, 3, 4],<br />
"10_2": [5, 5],<br />
"9_4": [2, 2, 2, 3],<br />
"9_3": [3, 3, 3],<br />
"9_2": [4, 5],<br />
"8_4": [2, 2, 2, 2],<br />
"8_3": [2, 3, 3],<br />
"8_2": [4, 4],<br />
"7_3": [2, 2, 3],<br />
"7_2": [4, 3],<br />
"6_3": [2, 2, 2],<br />
"6_2": [3, 3],<br />
"5_2": [2, 3],<br />
"4_2": [2, 2],<br />
}<br />
# détermination du nb et taille des groupes à créer<br />
taille_groupe = grille_repartition[clé_tableau]<br />
print(taille_groupe)<br />
<br />
# création (dict) répartition aléatoire<br />
dict_repartition = {} # initialisation<br />
for i in range(0, len(taille_groupe)):<br />
dict_repartition[liste_groupe[i]] = [] # création des items du dictionnaire<br />
for j in range(0, taille_groupe[i]):<br />
etu = liste_part[random.randint(0, len(liste_part) - 1)]<br />
dict_repartition[liste_groupe[i]].append(etu)<br />
liste_part.remove(etu)<br />
# print (liste_part)<br />
# print (dict_repartition)<br />
print(dict_repartition)<br />
<br />
# Définition des groupes avec couleurs<br />
groupeList = list(dict_repartition.values())<br />
print(groupeList)<br />
<br />
# GESTION NEOPIXEL<br />
cpb.pixels.brightness = 0.05<br />
<br />
# Grille de définition des couleurs de groupe<br />
dict_couleur = {<br />
"gr1": (0, 255, 0),<br />
"gr2": (255, 0, 255),<br />
"gr3": (255, 255, 0),<br />
"gr4": (0, 255, 255),<br />
"gr5": (255, 0, 0),<br />
}<br />
# print(dict_couleur)<br />
<br />
# transf. dict -> list<br />
liste_couleur = list(dict_couleur.values())<br />
print("liste de couleur totale: ", liste_couleur)<br />
<br />
# définition des couleurs selon nb de groupe<br />
dict_neopix = {}<br />
for i in range(0, len(taille_groupe)):<br />
codecouleur = liste_couleur[i]<br />
dict_neopix[i] = codecouleur<br />
# print(dict_neopix)<br />
<br />
# transf. dict -> list<br />
liste_neopix = list(dict_neopix.values())<br />
print("liste de couleur spécifique: ", liste_neopix)<br />
<br />
# Attribution des couleurs par pixel<br />
liste_pixels = []<br />
for i in range(0, nb_part):<br />
for j in range(0, len(taille_groupe)):<br />
if i in groupeList[j]:<br />
pix = liste_neopix[j]<br />
liste_pixels.append(pix)<br />
print("couleurs des pixels : ", liste_pixels)<br />
<br />
"""<br />
TRANSMISSION AUX BLUEFRUITS PARTICIPANTS (SLAVES)<br />
"""<br />
# Setup de la transmission<br />
ble = BLERadio()<br />
uart_service = UARTService()<br />
advertisement = ProvideServicesAdvertisement(uart_service)<br />
<br />
uart_connection = None<br />
# Controle sur des connexions disponibles<br />
if ble.connected:<br />
for connection in ble.connections:<br />
if UARTService in connection:<br />
uart_connection = connection<br />
break<br />
<br />
while True:<br />
# Allumage de la bnde neopixel / visualisation des groupes formés<br />
for i in range(0, nb_part - 1):<br />
cpb.pixels[i] = liste_pixels[i]<br />
<br />
# Gestion de la transmission<br />
if not uart_connection or not uart_connection.connected:<br />
# Condition : pas de connexion > scan<br />
print("Scanning...")<br />
for adv in ble.start_scan(ProvideServicesAdvertisement, timeout=5): # Scan...<br />
if UARTService in adv.services: # si periphérique existe<br />
print("Found a UARTService advertisement.")<br />
uart_connection = ble.connect(adv) # crée une connexion<br />
break<br />
# Arrêt du scannage de l'environnement<br />
ble.stop_scan()<br />
<br />
# si connexion existante :<br />
while uart_connection and uart_connection.connected:<br />
if cpb.button_a: # Transmission des données neopixels avec A<br />
print("Bouton A - envoi données")<br />
color = cpb.pixels[0]<br />
if not send_packet(uart_connection, ColorPacket(color)):<br />
uart_connection = None<br />
continue<br />
time.sleep(0.1) # Delay to prevent sending packets too quickly.<br />
</syntaxhighlight><br />
<br />
'''Code pour le CPB Récepteur (participants)'''<br />
<syntaxhighlight lang="python"><br />
"""<br />
Code pour les bluefruits participants<br />
"""<br />
import time<br />
<br />
from adafruit_circuitplayground.bluefruit import cpb<br />
<br />
from adafruit_ble import BLERadio<br />
from adafruit_ble.advertising.standard import ProvideServicesAdvertisement<br />
from adafruit_ble.services.nordic import UARTService<br />
<br />
from adafruit_bluefruit_connect.packet import Packet<br />
from adafruit_bluefruit_connect.color_packet import ColorPacket<br />
<br />
num_pixels = 10<br />
<br />
# animation initiale - "chase" est une animation de base dans les librairies<br />
# d'animation pour neopixel (cf neopixel überguide)<br />
def color_chase(color, wait):<br />
for i in range(num_pixels):<br />
cpb.pixels[i] = color<br />
time.sleep(wait)<br />
cpb.pixels.show()<br />
time.sleep(0.5)<br />
<br />
<br />
# Grille des couleurs de groupe pour animation<br />
dict_couleur = {<br />
"gr1": (0, 255, 0),<br />
"gr2": (255, 0, 255),<br />
"gr3": (255, 255, 0),<br />
"gr4": (0, 255, 255),<br />
"gr5": (255, 0, 0),<br />
}<br />
<br />
liste_couleur = list(dict_couleur.values())<br />
print(liste_couleur)<br />
<br />
# Setup standard pour la réception<br />
ble = BLERadio()<br />
uart = UARTService()<br />
advertisement = ProvideServicesAdvertisement(uart)<br />
<br />
cpb.pixels.brightness = 0.05<br />
receptionGroupe = False<br />
<br />
while True:<br />
ble.start_advertising(advertisement)<br />
<br />
while not cpb.switch:<br />
for i in range(0, len(liste_couleur)):<br />
couleurCode = liste_couleur[i]<br />
color_chase(couleurCode, 0.05)<br />
<br />
if cpb.switch:<br />
while not ble.connected:<br />
pass<br />
ble.stop_advertising()<br />
<br />
while ble.connected:<br />
if uart.in_waiting:<br />
packet = Packet.from_stream(uart)<br />
if isinstance(packet, ColorPacket):<br />
cpb.pixels.fill(packet.color)<br />
</syntaxhighlight><br />
<br />
== Test(s) de la solution ==<br />
<br />
===Cognitive walkthrough===<br />
<br />
Pour produire ce cognitive walkthrough, nous nous sommes basés sur les principes du [https://edutechwiki.unige.ch/en/Cognitive_walkthrough#Fluid_project_overview Fluid Project].<br />
<br />
==== Persona ====<br />
[[Fichier:PERSONA INGO NITO.jpg|néant|cadre]]<br />
<br />
==== Objectifs ====<br />
<br />
* Créer des groupes grâce au dispositif émetteur<br />
* Communiquer ces groupes aux dispositifs récepteurs<br />
* Renforcer l'engagement grâce à un dispositif ludique et actif<br />
<br />
==== Scénario d'utilisation ====<br />
<br />
# (en amont) Réfléchir à un combien de groupes seront créés en fonction du nombre de participant.e.s disponible.s<br />
# Allumage du dispositif<br />
# Lancement du dispositif<br />
# Réalisation d'une séquence de composition de groupe<br />
# Lancement et réalisation de la séquence suivante de communication avec envoi des groupes constitués aux dispositifs distants<br />
# Mise hors tension du dispositif<br />
<br />
=== Tests utilisateur·trice·s===<br />
<br />
==== '''Scénario final''' ====<br />
Le test utilisateur est une méthode utilisée pour évaluer l’expérience utilisateur d’un système, mais également les forces et les faiblesses de celui-ci. Cette méthode, consiste à mettre l’utilisateur·trice en situation « réelle » afin d’observer ses comportements et ses actions lorsqu’il exécute des tâches prédéfinies qui lui sont administrées sous la forme d’un scénario. Il leur est alors demandé de nous renseigner sur leurs expériences.<br />
<br />
Lors de cette phase, un prototype du projet est présenté à des utilisateur·trices recrutés au sein du public cible. A ce stade, le prototype devrait être suffisamment abouti pour offrir les principales fonctionnalités constitutives de la version finale. Néanmoins, il diffère de celle-ci puisque certaines fonctionnalités accessoires ne pourraient ne pas être encore implémentées. En présentant assez tôt un produit relativement proche de la version finale, nous entendons nous assurer que les directions prises dans les précédentes phases de conception soient les plus à même de répondre aux besoins des utilisateur·trice·s. Le prototype sera modifié en fonction des retours formulés par les observations réalisées ainsi que par les analyses des résultats des tests. <br />
<br />
Le test utilisateur se déroulera en 3 étapes :<br />
#Accueil des participants<br />
#Réalisation des tâches<br />
#Entretien succinct<br />
<br />
Dans la première étape, le participant sera accueilli, le contexte et le test utilisateur lui seront alors présentés de manière générale. Lors du test, l’utilisateur·trice « découvrira » le dispositif en réalisant des tâches préparées au préalable (scénario des tâches). Ici, nous éprouverons l’expérience de l’utilisateur·trice.<br />
<br />
Après avoir exposé le contexte dans lequel le scénario prend place, nous demanderons à la personne d’accomplir les tâches décrites dans le tableau "scénario des tâches". De plus, nous encouragerons le/la participant·e à formuler à voix haute ses pensées et ressentis lors de l’utilisation de l’outil. <br />
<br />
Les participant·e·s seront accueillis avec la consigne suivante : <br />
{{Citation encadrée | ''Merci d’avoir accepté de faire ce test avec moi aujourd'hui. Je travaille sur le développement d’un outil pour la constitution aléatoire de groupes de travail dans une classe. Cette technique permet de constituer des groupes rapidement et de communiquer ceux-ci aux participant.e.s quasi instantanément.''}}<br />
<br />
Le scénario des tâches se composera de deux éléments : le contexte et les tâches à effectuer par le/la participant.e. Le contexte aura pour but de mettre l’utilisateur·trice dans une situation réaliste qui se rapprochera de son quotidien et/ou du contexte pendant lequel il pourrait être mené à utiliser le dispositif. Le contexte sera formulé de la manière suivante :<br />
<br />
{{Citation encadrée | ''Vous êtes au début d’une activité de débat, dans votre classe, avec vos étudiant.e.s. Pour réaliser cette activité, vous devez d’abord constituer des groupes de manière aléatoire, avec les étudiant.e.s qui composent votre cours. Pour se faire, vous allez donc devoir utiliser le dispositif-prototype en annexe.''<br />
<br />
''Le dispositif à tester se compose de plusieurs éléments. Le premier élément est le dispositif émetteur. Il va être utilisé pour composer les groupes d’étudiant.e.s de manière aléatoire et par couleur. <br />
Ensuite, avec les boutons présents sur celui-ci, il sera capable de transmettre les données choisies aux dispositifs récepteurs annexes.''<br />
<br />
''Durant le test, vous allez être amené.e à utiliser les différents dispositifs cités afin de réaliser plusieurs tâches. Celles-ci ne devraient pas être trop compliquées et ne nécessiteront, non plus , pas trop de temps de réalisation.''}}<br />
<br />
Après avoir exposé le contexte dans lequel le scénario prend place, nous demanderons au participant d’accomplir les tâches décrites dans le tableau "scénario des tâches".<br />
<br />
Pour l’étape des tâches, nous donnerons les consignes suivantes :<br />
<br />
{{Citation encadrée |''Avant de commencer le test et les tâches, n’hésitez pas à poser des questions si un/des élément(s) ne vous paraissent pas clair(s). Nous restons bien entendu à disposition, si besoin , durant la réalisation des tâches. <br />
''}}<br />
<br />
Chaque tâche sera expliquée au fur et à mesure au participant.<br />
{| style="border: 1px solid black; border-spacing: 0; margin: 0.5em auto;"<br />
|+ '''Scénario des tâches'''<br />
|-<br />
! style="border: 1px solid black; padding: 5px; background: #D4D4D8; width: 200pt;" | Tâche 1<br />
| style="border: 1px solid black; padding: 5px; vertical-align: top; width: 400pt;" |''Pour commencer, veuillez trouver comment allumer le dispositif. Une fois que c’est fait, vous pouvez passer à la tâche suivante.''<br />
|-<br />
! style="border: 1px solid black; padding: 5px; background: #D4D4D8; width: 200pt;" |Tâche 2<br />
| style="border: 1px solid black; padding: 5px; vertical-align: top; width: 400pt;" |''Comme seconde tâche, veuillez décider de combien de groupes vous aurez besoin selon le nombre d’élèves à votre disposition. ''<br />
|-<br />
! style="border: 1px solid black; padding: 5px; background: #D4D4D8; width: 200pt;" | Tâche 3<br />
| style="border: 1px solid black; padding: 5px; vertical-align: top; width: 400pt;" |''Comme tâche suivante, renseignez les informations souhaitées sur le dispositif émetteur (nombre de groupes et nombre d’élèves). ''<br />
|-<br />
! style="border: 1px solid black; padding: 5px; background: #D4D4D8; width: 200pt;" | Tâche 4<br />
| style="border: 1px solid black; padding: 5px; vertical-align: top; width: 400pt;" |''Comme dernière tâche, envoyez les données depuis le dispositif émetteur aux dispositifs récepteurs. ''<br />
|-<br />
|<br />
|<br />
|}<br />
<br />
==== Vidéo du test utilisateur.trice.s ====<br />
[[Fichier:Users Tests.ogg|néant|vignette|600x600px]]<br />
<br />
==== Retours des tests ====<br />
<br />
== Discussion ==<br />
=== Design === <br />
Le design actuel est parti d'une idée d'utiliser la découpe laser pour la boîte émettrice et une forme de montre pour les récepteurs participants, avec un côté vintage et nostalgique des séries des années 80.<br />
Cela dit, nous avions tout de même recherché des produits plus petits et plus discrets, faciles à transporter et à manipuler.Cela s'est confirmé lors des tests, où en fin de compte, les participants ont apprécié avoir des objets légers et faciles à manipuler en main. Pour un prochain prototype, nous nous orienterions vers un Gemma ou Flora, sur un patch en broderie numérique pour les récepteurs participants.<br />
<br />
Du côté émetteur, il est resté jusqu'à la fin la difficulté de l'input du nombre de participants et du nombre de groupes attendus. Les potentiomètres se sont avérés trop complexes, autant pour comprendre ce qu'il fallait commander que pour programmer des niveaux de voltage correspondant à des seuils de chiffre. Pour pallier cette difficulté, nous avons tenté d'utiliser les éléments du CPB, soit les boutons et la slider. Cependant, cela nécessite des manipulations longues (pare exemple : bouton A pour ajouter un participant, bouton B pour en enlever, slider pour valider) et rend l'opération fastidieuse. <br />
<br />
Enfin, l'utilisation de la bande neopixel du CPB limite le nombre total de participants à 10. Pour une prochaine itération, nous utiliserions une bande externe permettant la gestion de groupes plus larges.<br />
<br />
=== Résultats des tests utilisateurs === <br />
Une partie des retours utilisateurs ont été intégrés dans la section Design, car ils faisaient écho à nos propres envies, qui n'avaient pas été réalisables techniquement. Nous retenons les points clés suivants pour les prochaines itérations du projet, en avantages et faiblesses : <br />
<br />
Les avantages sont :<br />
* un aspect ludique qui rend excitant le moment de passage à l'activité de sous-groupe et qui renforce l'engagement<br />
* un effet d'appartenance et de cohésion <br />
* une dimension pédagogique de rééquilibrage des postures : la personne qui forme peut choisir de contrôler la création des groupes ou de la rendre démocratique par sa délégation à un membre de la classe. Cela permet de garder une réelle impression de hasard<br />
<br />
Du côté des faiblesses à améliorer :<br />
* Encore trop complexe et long par rapport à sa réelle plus-value. Il faudrait soit simplifier son utilisation (moins d'étapes intermédiaires (clic, slide) ou lui ajouter des fonctionnalités de communications avec les groupes (consignes, temps restants, etc.)<br />
* Le design actuel semble trop envahissant (boite, montre). Il faudrait le rendre plus facile à manipuler, porter et à oublier lorsqu'il n'est pas utilisé<br />
<br />
== Licence, fichiers et documentation ==<br />
[[Fichier:By-nc.png|150px]] Cette œuvre est mise à disposition selon les termes de la [http://creativecommons.org/licenses/by-nc/4.0/ Licence Creative Commons Attribution - Pas d’Utilisation Commerciale 4.0 International].<br />
<br />
* Fichiers :<br />
Insérer ici vos fichiers ou les liens vers vos fichiers<br />
<br />
* Documentation : <br />
Insérer ici une petite documentation pour l'utilisation de l'objet si nécessaire<br />
<br />
== Bibliographie ==<br />
<br />
* Blair, C., Calkins, S., & Kopp, L. (2010). Self-regulation as the interface of emotional and cognitive development: Implications for education and academic achievement.<br />
* Pekrun, R., Goetz, T., Titz, W., & Perry, R. P. (2002). Academic emotions in students' self-regulated learning and achievement: A program of qualitative and quantitative research. Educational psychologist, 37(2), 91-105.</div>Djamileh Aminianhttps://edutechwiki.unige.ch/fmediawiki/index.php?title=STIC:STIC_III_(2020)/Forces_rouge,_rose,_vert,_jaune_ou_bleu_!&diff=154726STIC:STIC III (2020)/Forces rouge, rose, vert, jaune ou bleu !2021-09-04T09:44:42Z<p>Djamileh Aminian : /* Résultats des tests utilisateurs */</p>
<hr />
<div>{{bloc important|Projet réalisé par [[Utilisateur:Djamileh_Aminian|Djamileh]] & [[Utilisateur:Simon_Jöhr|Simon]]}}<br />
<br />
== Introduction ==<br />
Durant la dernière année, le passage forcé à la téléformation, soit la formation synchrone à distance, a eu comme effet positif de pousser certains spécialistes de l’éducation à revisiter leurs scénarios pédagogiques pour revenir aux fondamentaux : comment aider les élèves à apprendre ce qu’ils sont sensés apprendre et comment les accompagner au mieux dans leur apprentissage ? Souvent, les difficultés relevées lors des bilans des derniers mois de distantiel ont fait émerger des problèmes qui existaient déjà en présence, mais qui restaient latents ou ignorés.<br />
<br />
En ce sens, l’apprentissage est fortement influencé par les émotions par lesquelles passent les élèves au cours de la formation, et en particulier pendant les moments synchrones. Pourtant, il est très complexe de détecter, mesurer, ou même faire exprimer les étudiant-es sur leur ressenti.<br />
<br />
En donnant leurs cours en visioconférence, nombreux formateurs et formatrices ont exprimé leur frustration de ne pas réussir à évaluer l’état émotionnel et autres indices non verbaux de leurs participant.e.s, retours essentiels pour adapter une explication ou ajuster le rythme. Et cet effet est loin d’être limité à la distance : il est également bien présent dans une salle de classe où il reste complexe de capter en temps réel les émotions d’un étudiant, processus complexe et dynamique.<br />
<br />
Notre projet prend sa racine dans ce constat. Deux questions ont alors émergé : <br />
* comment mesurer l'état émotionnel d'un-e apprenant-e, <br />
* et surtout, pour quel usage ?<br />
<br />
Dans ce contexte, nous avons pensé un dispositif de partage des ressentis de la classe à destination de l'équipe enseignante, et une utilisation de cette donnée comme retour au groupe.<br />
<br />
== Problème ==<br />
<br />
Le but de ce projet est de proposer une solution ludique à la constitution de groupes en classe, que cela soit en présence, à distance ou de manière comodale. En utilisant un Arduino Uno ou des CPX, la phase de constitution de groupes sera ainsi rapide, aléatoire et "fun" !<br />
<br />
Le ''Problem Statement'' peut s’exprimer ainsi : « Comment peut-on aider les formateurs et formatrices à identifier rapidement les difficultés dans l’apprentissage et, le cas échéant, à réagir ? »<br />
<br />
== Cahier des charges == <br />
=== Contexte et public ===<br />
Le public cible est composé de formateurs et formatrices d’adultes, en entreprise ou en institut. Il pourrait également être élargi aux enseignante.s du scolaire, mais la conscientisation et l’expression d’une émotion sont suffisamment complexes pour limiter notre premier dispositif à des adultes, disposant, à priori, d’une compréhension plus fine de leur état émotionnel. De plus, l’asymétrie dans la relation est supposée moins forte dans un groupe d’adultes en formation que dans une classe avec un enseignant et des enfants ou adolescents.<br />
<br />
===Objectifs===<br />
Le but du dispositif est de :<br />
* permettre la communication d'un niveau émotionnel perçu par l'étudiant.e à l'enseignant.e<br />
* faire émerger un état général de la classe et les différences dans l'acquisition du contenu<br />
* de manière plus pragmatique, de créer des groupes sur la base des éléments communiqués<br />
<br />
===Besoins et contraintes===<br />
L'idée du projet a beaucoup évolué entre la phase d'identification des besoins et les constatations sur les possibilités offertes par la technologie et l'expertise à disposition. Nous détaillons ci-dessous les besoins et contraintes qui nous ont menés à la solution présentée plus bas.<br />
<br />
Partant au début d’une idée de jauge émotionnelle dynamique, donnant en tout temps l’état émotionnel d’un groupe de participants, nous avons rapidement détecté, en phase d'idéation avec plusieurs spécialistes en éducation, un aspect extrêmement anxiogène pour le formateur dont le groupe enverrait des signaux d’ennui ou de frustration, durant une explication. <br />
<br />
Afin de juguler cet effet, tout en conservant la possibilité de communiquer un message sur l’état, nous avons adapté le dispositif pour permettre aux étudiants de transmettre leur état à des moments spécifiques de la formation, intégrés dans le scénario pédagogique. L'émotion étant un élément sensible à conscientiser, exprimer et partager au sein d'un groupe, nous avons estimé plus judicieux de faire exprimer son niveau d'aisance face à un contenu qui vient d'être transmis. Ainsi, un-e enseignant-e scénarisera des moments d'autodiagnostic des étudiant-es sur leur perception de compétence sur la thématique. Cette information peut être utilisée pour réaliser des groupes de travail : (1) les personnes qui ont compris peuvent être orientées sur un contenu plus avancé, en échange pendant que l'enseignant organiser une séance de question-réponse avec les personnes en difficulté ou (2) des groupes peuvent être créés pour intégrer des étudiant-es qui ont compris avec des étudiant-es qui ont besoin d'aide.<br />
<br />
Le dispositif est donc pensé comme un outil de sondage à certains moments du cours, pour évaluer les besoins du groupe, dans son ensemble. Il est souvent difficile de récolter des informations sincères lors d’évaluations à chaud, les étudiants réticents à communiquer publiquement leurs difficultés ou désintérêts pour le contenu. Par la technique de transmission, les étudiants pourraient communiquer leur émotion de manière anonyme, favorisant l'authenticité.<br />
<br />
De manière intéressante au fur et à mesure de l'avance du projet, il est ressorti des discussions avec un échantillon du public cible que l'aspect de notre projet qui les intéressait était moins la communication des émotions, mais la création facilitée des groupes. En effet, les formateurs et formatrices ayant travaillé à distance durant la dernière année se sont habitués à disposer d'une fonction de création de groupe aléatoire, selon un nombre total de participants et un nombre de groupe visé. Cette fonction serait très utile également en présence, en utilisant une carte Arduino ou un CPX pour calculer une répartition des élèves par groupe, avec en entrée le nombre d'élèves et les sous-groupes. Une fois les groupes constitués, l'étape suivante est de communiquer ces groupes à l'ensemble de la classe au travers de Lilypad ou autres technologies portables qui s'allument selon la couleur de leur groupe.<br />
<br />
===Apports===<br />
* Cohésion et sentiment d'appartenance au groupe comme soutien à l'apprentissage<br />
* Expression d'un état émotionnel épistémique comme bénéfique à l'apprentissage<br />
<br />
===Présentation du projet===<br />
Suite aux premières itérations dans l'empathie et la définition du projet, nous avons identifié plusieurs points clés qui ont réorienté notre projet :<br />
* la création d'un réseau de cartes Bluetooth contrôlées par Arduino s'est révélée trop ambitieuse, suite au manque de projets existants ou d'expertise sur lesquels s'appuyer, <br />
* l'envie marquée de notre échantillon cible qui s'est dirigée sur l'aspect création de groupe plus que sur la connaissance des états affectifs.<br />
<br />
Nous avons donc revu le projet en le divisant en 3 niveaux de difficulté, afin de réaliser un prototype utilisable, puis de l'améliorer en fonction des retours et du temps à disposition.<br />
* '''Niveau 1 : Création de groupe aléatoire''' : intérêts : facilitation de la création des groupes (demande reçue d'un formateur : "parce que Zoom nous a bien aidé pour cela à distance, je veux la même chose en présence!")<br />
* '''Niveau 2 : Communication du groupe à l’apprenant''' : intérêts : gamification, sentiment d’appartenance, coopération, cohésion<br />
* '''Niveau 3 : Communication de son sentiment de compétence''' : intérêts : plus facile que d'exprimer ses émotions, et plus facile à gérer par l'enseignant.e, par exemple les gens qui ont compris avec celles-ceux qui n'ont pas compris<br />
<br />
Nous avons réalisé complètement le niveau 1, ainsi que prototypé et testé le niveau 2 avec des cables avant de pouvoir gérer par Bluetooth un Bluefruit spécifique dans un réseau comprenant plusieurs Bluefruits. Les solutions avec code et prototypes sont décrites dans la section suivante.<br />
<br />
== Solutions explorées ==<br />
<br />
===1er prototype===<br />
La première solution envisagée comporte deux objets : <br />
* Un '''émetteur''' : facile d’utilisation et agréable à porter, nous penchons pour la solution d’un bracelet contenant un micro circuit type Lilypad, Arduino Gemma ou Tinyduino. L’apprenant disposerait de 4 boutons-pressoirs pour 4 émotions majeures à transmettre (intérêt, confusion, frustration, incompréhension), symbolisés par des logos ou émoticônes. Les messages sont transmis par Bluetooth.<br />
* Un '''récepteur''' : Une jauge, comprenant une bande Neopixels, connectée à un Arduino Uno. Les LED symboliseraient deux dimensions fournies : la couleur pour le type d'émotion et le nombre pour la quantité d'étudiant.e.s ayant transmis l'information. L'Arduino pourrait gérer l'information, en émettant un son lors du dépassement d'un seuil prédéfini sur une émotion par exemple.<br />
<br />
====Maquettes====<br />
<u>1ère itération</u><br />
<br />
[[Fichier:Maquette_projet_STIC_III_Djamileh_et_Simon.jpg|néant|vignette|1103x1103px|Maquette n°1 du projet]]<br />
<br />
<u>2e itération</u><br />
<br />
L'Arduino Uno lance une séquence de randomisation de couleur, en affiche une, puis les participant.e.s font de même sur leur CPX. Si les couleurs affichées "matchent", le groupe est constitué et on peut ainsi passer à la constitution aléatoire du groupe suivant. <br />
[[Fichier:2e Maquette projet STIC III Djamileh et Simon .jpg|néant|vignette|1103x1103px|Maquette n°2 du projet]]<br />
<br />
====Code====<br />
<u>Version 1.0 du code CPX :</u> <syntaxhighlight lang="javascript"><br />
input.buttonA.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 200<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(40)<br />
color2 += Math.randomRange(1, 3)<br />
light.setPhotonPenHue(color2)<br />
}<br />
light.photonFlip()<br />
})<br />
input.buttonsAB.onEvent(ButtonEvent.Click, function () {<br />
control.reset()<br />
})<br />
input.buttonB.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 300<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
color2 += 3<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(50)<br />
}<br />
})<br />
let tonalité = 0<br />
let durée = 0<br />
let color2 = 0<br />
light.setBrightness(158)<br />
music.setVolume(167)<br />
forever(function () {<br />
<br />
})<br />
</syntaxhighlight><br />
<br />
===2e prototype===<br />
<br />
====Maquette====<br />
<u>Boîte émettrice</u><br />
[[Fichier:Boite CPX STIC III.png|néant|vignette|Plan découpe boîte émettrice CPX]]<br />
[[Fichier:Etiquettes Boite CPX STIC III.png|néant|vignette|Etiquettes boîte CPX]]<br />
[[Fichier:Maquette boîte CPX.png|néant|vignette|Rendu de la boîte]]<br />
[[Fichier:Boîte CPX.jpg|néant|vignette|Boîte en cours de réalisation]]<br />
<br />
<u>Cadrans récepteurs</u><br />
[[Fichier:Bracelets CPX STIC III.png|néant|vignette|Cadrans récepteurs]]<br />
<br />
====Code====<br />
[[Fichier:CPX firstproto.jpg|vignette|droite|Une étape dans le test du code - 5 binomes de noël! ]]<br />
La solution présentée ici s'occupe du niveau 1, soit la création de groupe aléatoire à l'aide d'un CPX Bluefruit.<br />
Elle a été codée en CircuitPython. Nous avons rédigé le code nous-mêmes, avec deux supports : la création du dictionnaire pour la randomisation été possible grâce à l'aimable contribution de notre collègue Jérôme. Concernant l'envoi et la réception de données par Bluetooth, nous nous sommes basés sur les [https://learn.adafruit.com/circuitpython-nrf52840/bluetooth-basics tutoriels Adafruit], ainsi que deux projets utilisant des fonctionnalités se rapprochant de notre projet :<br />
* [https://learn.adafruit.com/circuit-playground-bluefruit-neopixel-animation-and-color-remote-control projet 1]<br />
* [https://learn.adafruit.com/color-remote-with-circuit-playground-bluefruit projet 2]<br />
<br />
'''Code pour le CPB Emetteur'''<br />
<syntaxhighlight lang="python"><br />
# Groupify !<br />
# Un projet de S!m & Dja<br />
# Code CircuitPython pour la répartition dans les groupes (MASTER)<br />
<br />
"""<br />
SETUP GENERAL<br />
"""<br />
<br />
# LIBRAIRIES<br />
import random<br />
import time<br />
<br />
# Librairie pour gérer la bande neopixel du bluefruit<br />
from adafruit_circuitplayground.bluefruit import cpb<br />
<br />
# Librairies pour gérer la transmission bluetooth<br />
from adafruit_ble import BLERadio<br />
from adafruit_ble.advertising.standard import ProvideServicesAdvertisement<br />
from adafruit_ble.services.nordic import UARTService<br />
<br />
# Librairie pour envoyer la couleur<br />
from adafruit_bluefruit_connect.color_packet import ColorPacket<br />
<br />
# Helper function pour gérer la connexion entre plusieurs Bluefruits<br />
# reprise sur https://learn.adafruit.com/circuit-playground-bluefruit-neopixel-<br />
# animation-and-color-remote-control/remote-control-code<br />
def send_packet(uart_connection_name, packet):<br />
"""Returns False if no longer connected."""<br />
try:<br />
uart_connection_name[UARTService].write(packet.to_bytes())<br />
except: # pylint: disable=bare-except<br />
try:<br />
uart_connection_name.disconnect()<br />
except: # pylint: disable=bare-except<br />
pass<br />
return False<br />
return True<br />
<br />
<br />
# Input utilisateur<br />
participants = int(input("Nombre de participants : "))<br />
groupe = int(input("Nombre de groupes : "))<br />
<br />
"""<br />
CREATION DES GROUPES<br />
"""<br />
<br />
# création listes à long. variable (+ 1 pour compenser la numération depuis 0)<br />
liste_part = list(range(1, participants + 1)) # print(liste_part)<br />
nb_part = len(liste_part) + 1<br />
liste_groupe = list(range(1, groupe + 1)) # print(liste_groupe)<br />
<br />
# Déf. grille (dict. de listes) combinations possibles<br />
clé_tableau = str(participants) + "_" + str(groupe)<br />
# !!! ajouter combinaisons pas possible : eg. tour de roue lumineuse/son pourri !!!<br />
grille_repartition = {<br />
"10_5": [2, 2, 2, 2, 2],<br />
"10_4": [2, 2, 3, 3],<br />
"10_3": [3, 3, 4],<br />
"10_2": [5, 5],<br />
"9_4": [2, 2, 2, 3],<br />
"9_3": [3, 3, 3],<br />
"9_2": [4, 5],<br />
"8_4": [2, 2, 2, 2],<br />
"8_3": [2, 3, 3],<br />
"8_2": [4, 4],<br />
"7_3": [2, 2, 3],<br />
"7_2": [4, 3],<br />
"6_3": [2, 2, 2],<br />
"6_2": [3, 3],<br />
"5_2": [2, 3],<br />
"4_2": [2, 2],<br />
}<br />
# détermination du nb et taille des groupes à créer<br />
taille_groupe = grille_repartition[clé_tableau]<br />
print(taille_groupe)<br />
<br />
# création (dict) répartition aléatoire<br />
dict_repartition = {} # initialisation<br />
for i in range(0, len(taille_groupe)):<br />
dict_repartition[liste_groupe[i]] = [] # création des items du dictionnaire<br />
for j in range(0, taille_groupe[i]):<br />
etu = liste_part[random.randint(0, len(liste_part) - 1)]<br />
dict_repartition[liste_groupe[i]].append(etu)<br />
liste_part.remove(etu)<br />
# print (liste_part)<br />
# print (dict_repartition)<br />
print(dict_repartition)<br />
<br />
# Définition des groupes avec couleurs<br />
groupeList = list(dict_repartition.values())<br />
print(groupeList)<br />
<br />
# GESTION NEOPIXEL<br />
cpb.pixels.brightness = 0.05<br />
<br />
# Grille de définition des couleurs de groupe<br />
dict_couleur = {<br />
"gr1": (0, 255, 0),<br />
"gr2": (255, 0, 255),<br />
"gr3": (255, 255, 0),<br />
"gr4": (0, 255, 255),<br />
"gr5": (255, 0, 0),<br />
}<br />
# print(dict_couleur)<br />
<br />
# transf. dict -> list<br />
liste_couleur = list(dict_couleur.values())<br />
print("liste de couleur totale: ", liste_couleur)<br />
<br />
# définition des couleurs selon nb de groupe<br />
dict_neopix = {}<br />
for i in range(0, len(taille_groupe)):<br />
codecouleur = liste_couleur[i]<br />
dict_neopix[i] = codecouleur<br />
# print(dict_neopix)<br />
<br />
# transf. dict -> list<br />
liste_neopix = list(dict_neopix.values())<br />
print("liste de couleur spécifique: ", liste_neopix)<br />
<br />
# Attribution des couleurs par pixel<br />
liste_pixels = []<br />
for i in range(0, nb_part):<br />
for j in range(0, len(taille_groupe)):<br />
if i in groupeList[j]:<br />
pix = liste_neopix[j]<br />
liste_pixels.append(pix)<br />
print("couleurs des pixels : ", liste_pixels)<br />
<br />
"""<br />
TRANSMISSION AUX BLUEFRUITS PARTICIPANTS (SLAVES)<br />
"""<br />
# Setup de la transmission<br />
ble = BLERadio()<br />
uart_service = UARTService()<br />
advertisement = ProvideServicesAdvertisement(uart_service)<br />
<br />
uart_connection = None<br />
# Controle sur des connexions disponibles<br />
if ble.connected:<br />
for connection in ble.connections:<br />
if UARTService in connection:<br />
uart_connection = connection<br />
break<br />
<br />
while True:<br />
# Allumage de la bnde neopixel / visualisation des groupes formés<br />
for i in range(0, nb_part - 1):<br />
cpb.pixels[i] = liste_pixels[i]<br />
<br />
# Gestion de la transmission<br />
if not uart_connection or not uart_connection.connected:<br />
# Condition : pas de connexion > scan<br />
print("Scanning...")<br />
for adv in ble.start_scan(ProvideServicesAdvertisement, timeout=5): # Scan...<br />
if UARTService in adv.services: # si periphérique existe<br />
print("Found a UARTService advertisement.")<br />
uart_connection = ble.connect(adv) # crée une connexion<br />
break<br />
# Arrêt du scannage de l'environnement<br />
ble.stop_scan()<br />
<br />
# si connexion existante :<br />
while uart_connection and uart_connection.connected:<br />
if cpb.button_a: # Transmission des données neopixels avec A<br />
print("Bouton A - envoi données")<br />
color = cpb.pixels[0]<br />
if not send_packet(uart_connection, ColorPacket(color)):<br />
uart_connection = None<br />
continue<br />
time.sleep(0.1) # Delay to prevent sending packets too quickly.<br />
</syntaxhighlight><br />
<br />
'''Code pour le CPB Récepteur (participants)'''<br />
<syntaxhighlight lang="python"><br />
"""<br />
Code pour les bluefruits participants<br />
"""<br />
import time<br />
<br />
from adafruit_circuitplayground.bluefruit import cpb<br />
<br />
from adafruit_ble import BLERadio<br />
from adafruit_ble.advertising.standard import ProvideServicesAdvertisement<br />
from adafruit_ble.services.nordic import UARTService<br />
<br />
from adafruit_bluefruit_connect.packet import Packet<br />
from adafruit_bluefruit_connect.color_packet import ColorPacket<br />
<br />
num_pixels = 10<br />
<br />
# animation initiale - "chase" est une animation de base dans les librairies<br />
# d'animation pour neopixel (cf neopixel überguide)<br />
def color_chase(color, wait):<br />
for i in range(num_pixels):<br />
cpb.pixels[i] = color<br />
time.sleep(wait)<br />
cpb.pixels.show()<br />
time.sleep(0.5)<br />
<br />
<br />
# Grille des couleurs de groupe pour animation<br />
dict_couleur = {<br />
"gr1": (0, 255, 0),<br />
"gr2": (255, 0, 255),<br />
"gr3": (255, 255, 0),<br />
"gr4": (0, 255, 255),<br />
"gr5": (255, 0, 0),<br />
}<br />
<br />
liste_couleur = list(dict_couleur.values())<br />
print(liste_couleur)<br />
<br />
# Setup standard pour la réception<br />
ble = BLERadio()<br />
uart = UARTService()<br />
advertisement = ProvideServicesAdvertisement(uart)<br />
<br />
cpb.pixels.brightness = 0.05<br />
receptionGroupe = False<br />
<br />
while True:<br />
ble.start_advertising(advertisement)<br />
<br />
while not cpb.switch:<br />
for i in range(0, len(liste_couleur)):<br />
couleurCode = liste_couleur[i]<br />
color_chase(couleurCode, 0.05)<br />
<br />
if cpb.switch:<br />
while not ble.connected:<br />
pass<br />
ble.stop_advertising()<br />
<br />
while ble.connected:<br />
if uart.in_waiting:<br />
packet = Packet.from_stream(uart)<br />
if isinstance(packet, ColorPacket):<br />
cpb.pixels.fill(packet.color)<br />
</syntaxhighlight><br />
<br />
== Test(s) de la solution ==<br />
<br />
===Cognitive walkthrough===<br />
<br />
Pour produire ce cognitive walkthrough, nous nous sommes basés sur les principes du [https://edutechwiki.unige.ch/en/Cognitive_walkthrough#Fluid_project_overview Fluid Project].<br />
<br />
==== Persona ====<br />
[[Fichier:PERSONA INGO NITO.jpg|néant|cadre]]<br />
<br />
==== Objectifs ====<br />
<br />
* Créer des groupes grâce au dispositif émetteur<br />
* Communiquer ces groupes aux dispositifs récepteurs<br />
* Renforcer l'engagement grâce à un dispositif ludique et actif<br />
<br />
==== Scénario d'utilisation ====<br />
<br />
# (en amont) Réfléchir à un combien de groupes seront créés en fonction du nombre de participant.e.s disponible.s<br />
# Allumage du dispositif<br />
# Lancement du dispositif<br />
# Réalisation d'une séquence de composition de groupe<br />
# Lancement et réalisation de la séquence suivante de communication avec envoi des groupes constitués aux dispositifs distants<br />
# Mise hors tension du dispositif<br />
<br />
=== Tests utilisateur·trice·s===<br />
<br />
==== '''Scénario final''' ====<br />
Le test utilisateur est une méthode utilisée pour évaluer l’expérience utilisateur d’un système, mais également les forces et les faiblesses de celui-ci. Cette méthode, consiste à mettre l’utilisateur·trice en situation « réelle » afin d’observer ses comportements et ses actions lorsqu’il exécute des tâches prédéfinies qui lui sont administrées sous la forme d’un scénario. Il leur est alors demandé de nous renseigner sur leurs expériences.<br />
<br />
Lors de cette phase, un prototype du projet est présenté à des utilisateur·trices recrutés au sein du public cible. A ce stade, le prototype devrait être suffisamment abouti pour offrir les principales fonctionnalités constitutives de la version finale. Néanmoins, il diffère de celle-ci puisque certaines fonctionnalités accessoires ne pourraient ne pas être encore implémentées. En présentant assez tôt un produit relativement proche de la version finale, nous entendons nous assurer que les directions prises dans les précédentes phases de conception soient les plus à même de répondre aux besoins des utilisateur·trice·s. Le prototype sera modifié en fonction des retours formulés par les observations réalisées ainsi que par les analyses des résultats des tests. <br />
<br />
Le test utilisateur se déroulera en 3 étapes :<br />
#Accueil des participants<br />
#Réalisation des tâches<br />
#Entretien succinct<br />
<br />
Dans la première étape, le participant sera accueilli, le contexte et le test utilisateur lui seront alors présentés de manière générale. Lors du test, l’utilisateur·trice « découvrira » le dispositif en réalisant des tâches préparées au préalable (scénario des tâches). Ici, nous éprouverons l’expérience de l’utilisateur·trice.<br />
<br />
Après avoir exposé le contexte dans lequel le scénario prend place, nous demanderons à la personne d’accomplir les tâches décrites dans le tableau "scénario des tâches". De plus, nous encouragerons le/la participant·e à formuler à voix haute ses pensées et ressentis lors de l’utilisation de l’outil. <br />
<br />
Les participant·e·s seront accueillis avec la consigne suivante : <br />
{{Citation encadrée | ''Merci d’avoir accepté de faire ce test avec moi aujourd'hui. Je travaille sur le développement d’un outil pour la constitution aléatoire de groupes de travail dans une classe. Cette technique permet de constituer des groupes rapidement et de communiquer ceux-ci aux participant.e.s quasi instantanément.''}}<br />
<br />
Le scénario des tâches se composera de deux éléments : le contexte et les tâches à effectuer par le/la participant.e. Le contexte aura pour but de mettre l’utilisateur·trice dans une situation réaliste qui se rapprochera de son quotidien et/ou du contexte pendant lequel il pourrait être mené à utiliser le dispositif. Le contexte sera formulé de la manière suivante :<br />
<br />
{{Citation encadrée | ''Vous êtes au début d’une activité de débat, dans votre classe, avec vos étudiant.e.s. Pour réaliser cette activité, vous devez d’abord constituer des groupes de manière aléatoire, avec les étudiant.e.s qui composent votre cours. Pour se faire, vous allez donc devoir utiliser le dispositif-prototype en annexe.''<br />
<br />
''Le dispositif à tester se compose de plusieurs éléments. Le premier élément est le dispositif émetteur. Il va être utilisé pour composer les groupes d’étudiant.e.s de manière aléatoire et par couleur. <br />
Ensuite, avec les boutons présents sur celui-ci, il sera capable de transmettre les données choisies aux dispositifs récepteurs annexes.''<br />
<br />
''Durant le test, vous allez être amené.e à utiliser les différents dispositifs cités afin de réaliser plusieurs tâches. Celles-ci ne devraient pas être trop compliquées et ne nécessiteront, non plus , pas trop de temps de réalisation.''}}<br />
<br />
Après avoir exposé le contexte dans lequel le scénario prend place, nous demanderons au participant d’accomplir les tâches décrites dans le tableau "scénario des tâches".<br />
<br />
Pour l’étape des tâches, nous donnerons les consignes suivantes :<br />
<br />
{{Citation encadrée |''Avant de commencer le test et les tâches, n’hésitez pas à poser des questions si un/des élément(s) ne vous paraissent pas clair(s). Nous restons bien entendu à disposition, si besoin , durant la réalisation des tâches. <br />
''}}<br />
<br />
Chaque tâche sera expliquée au fur et à mesure au participant.<br />
{| style="border: 1px solid black; border-spacing: 0; margin: 0.5em auto;"<br />
|+ '''Scénario des tâches'''<br />
|-<br />
! style="border: 1px solid black; padding: 5px; background: #D4D4D8; width: 200pt;" | Tâche 1<br />
| style="border: 1px solid black; padding: 5px; vertical-align: top; width: 400pt;" |''Pour commencer, veuillez trouver comment allumer le dispositif. Une fois que c’est fait, vous pouvez passer à la tâche suivante.''<br />
|-<br />
! style="border: 1px solid black; padding: 5px; background: #D4D4D8; width: 200pt;" |Tâche 2<br />
| style="border: 1px solid black; padding: 5px; vertical-align: top; width: 400pt;" |''Comme seconde tâche, veuillez décider de combien de groupes vous aurez besoin selon le nombre d’élèves à votre disposition. ''<br />
|-<br />
! style="border: 1px solid black; padding: 5px; background: #D4D4D8; width: 200pt;" | Tâche 3<br />
| style="border: 1px solid black; padding: 5px; vertical-align: top; width: 400pt;" |''Comme tâche suivante, renseignez les informations souhaitées sur le dispositif émetteur (nombre de groupes et nombre d’élèves). ''<br />
|-<br />
! style="border: 1px solid black; padding: 5px; background: #D4D4D8; width: 200pt;" | Tâche 4<br />
| style="border: 1px solid black; padding: 5px; vertical-align: top; width: 400pt;" |''Comme dernière tâche, envoyez les données depuis le dispositif émetteur aux dispositifs récepteurs. ''<br />
|-<br />
|<br />
|<br />
|}<br />
<br />
==== Vidéo du test utilisateur.trice.s ====<br />
[[Fichier:Users Tests.ogg|néant|vignette|600x600px]]<br />
<br />
== Discussion ==<br />
=== Design === <br />
Le design actuel est parti d'une idée d'utiliser la découpe laser pour la boîte émettrice et une forme de montre pour les récepteurs participants, avec un côté vintage et nostalgique des séries des années 80.<br />
Cela dit, nous avions tout de même recherché des produits plus petits et plus discrets, faciles à transporter et à manipuler.Cela s'est confirmé lors des tests, où en fin de compte, les participants ont apprécié avoir des objets légers et faciles à manipuler en main. Pour un prochain prototype, nous nous orienterions vers un Gemma ou Flora, sur un patch en broderie numérique pour les récepteurs participants.<br />
<br />
Du côté émetteur, il est resté jusqu'à la fin la difficulté de l'input du nombre de participants et du nombre de groupes attendus. Les potentiomètres se sont avérés trop complexes, autant pour comprendre ce qu'il fallait commander que pour programmer des niveaux de voltage correspondant à des seuils de chiffre. Pour pallier cette difficulté, nous avons tenté d'utiliser les éléments du CPB, soit les boutons et la slider. Cependant, cela nécessite des manipulations longues (pare exemple : bouton A pour ajouter un participant, bouton B pour en enlever, slider pour valider) et rend l'opération fastidieuse. <br />
<br />
Enfin, l'utilisation de la bande neopixel du CPB limite le nombre total de participants à 10. Pour une prochaine itération, nous utiliserions une bande externe permettant la gestion de groupes plus larges.<br />
<br />
=== Résultats des tests utilisateurs === <br />
Une partie des retours utilisateurs ont été intégrés dans la section Design, car ils faisaient écho à nos propres envies, qui n'avaient pas été réalisables techniquement. Nous retenons les points clés suivants pour les prochaines itérations du projet, en avantages et faiblesses : <br />
<br />
Les avantages sont :<br />
* un aspect ludique qui rend excitant le moment de passage à l'activité de sous-groupe et qui renforce l'engagement<br />
* un effet d'appartenance et de cohésion <br />
* une dimension pédagogique de rééquilibrage des postures : la personne qui forme peut choisir de contrôler la création des groupes ou de la rendre démocratique par sa délégation à un membre de la classe. Cela permet de garder une réelle impression de hasard<br />
<br />
Du côté des faiblesses à améliorer :<br />
* Encore trop complexe et long par rapport à sa réelle plus-value. Il faudrait soit simplifier son utilisation (moins d'étapes intermédiaires (clic, slide) ou lui ajouter des fonctionnalités de communications avec les groupes (consignes, temps restants, etc.)<br />
* Le design actuel semble trop envahissant (boite, montre). Il faudrait le rendre plus facile à manipuler, porter et à oublier lorsqu'il n'est pas utilisé<br />
<br />
== Licence, fichiers et documentation ==<br />
[[Fichier:By-nc.png|150px]] Cette œuvre est mise à disposition selon les termes de la [http://creativecommons.org/licenses/by-nc/4.0/ Licence Creative Commons Attribution - Pas d’Utilisation Commerciale 4.0 International].<br />
<br />
* Fichiers :<br />
Insérer ici vos fichiers ou les liens vers vos fichiers<br />
<br />
* Documentation : <br />
Insérer ici une petite documentation pour l'utilisation de l'objet si nécessaire<br />
<br />
== Bibliographie ==<br />
<br />
* Blair, C., Calkins, S., & Kopp, L. (2010). Self-regulation as the interface of emotional and cognitive development: Implications for education and academic achievement.<br />
* Pekrun, R., Goetz, T., Titz, W., & Perry, R. P. (2002). Academic emotions in students' self-regulated learning and achievement: A program of qualitative and quantitative research. Educational psychologist, 37(2), 91-105.</div>Djamileh Aminianhttps://edutechwiki.unige.ch/fmediawiki/index.php?title=STIC:STIC_III_(2020)/Forces_rouge,_rose,_vert,_jaune_ou_bleu_!&diff=154720STIC:STIC III (2020)/Forces rouge, rose, vert, jaune ou bleu !2021-09-04T09:39:03Z<p>Djamileh Aminian : /* Discussion */</p>
<hr />
<div>{{bloc important|Projet réalisé par [[Utilisateur:Djamileh_Aminian|Djamileh]] & [[Utilisateur:Simon_Jöhr|Simon]]}}<br />
<br />
== Introduction ==<br />
Durant la dernière année, le passage forcé à la téléformation, soit la formation synchrone à distance, a eu comme effet positif de pousser certains spécialistes de l’éducation à revisiter leurs scénarios pédagogiques pour revenir aux fondamentaux : comment aider les élèves à apprendre ce qu’ils sont sensés apprendre et comment les accompagner au mieux dans leur apprentissage ? Souvent, les difficultés relevées lors des bilans des derniers mois de distantiel ont fait émerger des problèmes qui existaient déjà en présence, mais qui restaient latents ou ignorés.<br />
<br />
En ce sens, l’apprentissage est fortement influencé par les émotions par lesquelles passent les élèves au cours de la formation, et en particulier pendant les moments synchrones. Pourtant, il est très complexe de détecter, mesurer, ou même faire exprimer les étudiant-es sur leur ressenti.<br />
<br />
En donnant leurs cours en visioconférence, nombreux formateurs et formatrices ont exprimé leur frustration de ne pas réussir à évaluer l’état émotionnel et autres indices non verbaux de leurs participant.e.s, retours essentiels pour adapter une explication ou ajuster le rythme. Et cet effet est loin d’être limité à la distance : il est également bien présent dans une salle de classe où il reste complexe de capter en temps réel les émotions d’un étudiant, processus complexe et dynamique.<br />
<br />
Notre projet prend sa racine dans ce constat. Deux questions ont alors émergé : <br />
* comment mesurer l'état émotionnel d'un-e apprenant-e, <br />
* et surtout, pour quel usage ?<br />
<br />
Dans ce contexte, nous avons pensé un dispositif de partage des ressentis de la classe à destination de l'équipe enseignante, et une utilisation de cette donnée comme retour au groupe.<br />
<br />
== Problème ==<br />
<br />
Le but de ce projet est de proposer une solution ludique à la constitution de groupes en classe, que cela soit en présence, à distance ou de manière comodale. En utilisant un Arduino Uno ou des CPX, la phase de constitution de groupes sera ainsi rapide, aléatoire et "fun" !<br />
<br />
Le ''Problem Statement'' peut s’exprimer ainsi : « Comment peut-on aider les formateurs et formatrices à identifier rapidement les difficultés dans l’apprentissage et, le cas échéant, à réagir ? »<br />
<br />
== Cahier des charges == <br />
=== Contexte et public ===<br />
Le public cible est composé de formateurs et formatrices d’adultes, en entreprise ou en institut. Il pourrait également être élargi aux enseignante.s du scolaire, mais la conscientisation et l’expression d’une émotion sont suffisamment complexes pour limiter notre premier dispositif à des adultes, disposant, à priori, d’une compréhension plus fine de leur état émotionnel. De plus, l’asymétrie dans la relation est supposée moins forte dans un groupe d’adultes en formation que dans une classe avec un enseignant et des enfants ou adolescents.<br />
<br />
===Objectifs===<br />
Le but du dispositif est de :<br />
* permettre la communication d'un niveau émotionnel perçu par l'étudiant.e à l'enseignant.e<br />
* faire émerger un état général de la classe et les différences dans l'acquisition du contenu<br />
* de manière plus pragmatique, de créer des groupes sur la base des éléments communiqués<br />
<br />
===Besoins et contraintes===<br />
L'idée du projet a beaucoup évolué entre la phase d'identification des besoins et les constatations sur les possibilités offertes par la technologie et l'expertise à disposition. Nous détaillons ci-dessous les besoins et contraintes qui nous ont menés à la solution présentée plus bas.<br />
<br />
Partant au début d’une idée de jauge émotionnelle dynamique, donnant en tout temps l’état émotionnel d’un groupe de participants, nous avons rapidement détecté, en phase d'idéation avec plusieurs spécialistes en éducation, un aspect extrêmement anxiogène pour le formateur dont le groupe enverrait des signaux d’ennui ou de frustration, durant une explication. <br />
<br />
Afin de juguler cet effet, tout en conservant la possibilité de communiquer un message sur l’état, nous avons adapté le dispositif pour permettre aux étudiants de transmettre leur état à des moments spécifiques de la formation, intégrés dans le scénario pédagogique. L'émotion étant un élément sensible à conscientiser, exprimer et partager au sein d'un groupe, nous avons estimé plus judicieux de faire exprimer son niveau d'aisance face à un contenu qui vient d'être transmis. Ainsi, un-e enseignant-e scénarisera des moments d'autodiagnostic des étudiant-es sur leur perception de compétence sur la thématique. Cette information peut être utilisée pour réaliser des groupes de travail : (1) les personnes qui ont compris peuvent être orientées sur un contenu plus avancé, en échange pendant que l'enseignant organiser une séance de question-réponse avec les personnes en difficulté ou (2) des groupes peuvent être créés pour intégrer des étudiant-es qui ont compris avec des étudiant-es qui ont besoin d'aide.<br />
<br />
Le dispositif est donc pensé comme un outil de sondage à certains moments du cours, pour évaluer les besoins du groupe, dans son ensemble. Il est souvent difficile de récolter des informations sincères lors d’évaluations à chaud, les étudiants réticents à communiquer publiquement leurs difficultés ou désintérêts pour le contenu. Par la technique de transmission, les étudiants pourraient communiquer leur émotion de manière anonyme, favorisant l'authenticité.<br />
<br />
De manière intéressante au fur et à mesure de l'avance du projet, il est ressorti des discussions avec un échantillon du public cible que l'aspect de notre projet qui les intéressait était moins la communication des émotions, mais la création facilitée des groupes. En effet, les formateurs et formatrices ayant travaillé à distance durant la dernière année se sont habitués à disposer d'une fonction de création de groupe aléatoire, selon un nombre total de participants et un nombre de groupe visé. Cette fonction serait très utile également en présence, en utilisant une carte Arduino ou un CPX pour calculer une répartition des élèves par groupe, avec en entrée le nombre d'élèves et les sous-groupes. Une fois les groupes constitués, l'étape suivante est de communiquer ces groupes à l'ensemble de la classe au travers de Lilypad ou autres technologies portables qui s'allument selon la couleur de leur groupe.<br />
<br />
===Apports===<br />
* Cohésion et sentiment d'appartenance au groupe comme soutien à l'apprentissage<br />
* Expression d'un état émotionnel épistémique comme bénéfique à l'apprentissage<br />
<br />
===Présentation du projet===<br />
Suite aux premières itérations dans l'empathie et la définition du projet, nous avons identifié plusieurs points clés qui ont réorienté notre projet :<br />
* la création d'un réseau de cartes Bluetooth contrôlées par Arduino s'est révélée trop ambitieuse, suite au manque de projets existants ou d'expertise sur lesquels s'appuyer, <br />
* l'envie marquée de notre échantillon cible qui s'est dirigée sur l'aspect création de groupe plus que sur la connaissance des états affectifs.<br />
<br />
Nous avons donc revu le projet en le divisant en 3 niveaux de difficulté, afin de réaliser un prototype utilisable, puis de l'améliorer en fonction des retours et du temps à disposition.<br />
* '''Niveau 1 : Création de groupe aléatoire''' : intérêts : facilitation de la création des groupes (demande reçue d'un formateur : "parce que Zoom nous a bien aidé pour cela à distance, je veux la même chose en présence!")<br />
* '''Niveau 2 : Communication du groupe à l’apprenant''' : intérêts : gamification, sentiment d’appartenance, coopération, cohésion<br />
* '''Niveau 3 : Communication de son sentiment de compétence''' : intérêts : plus facile que d'exprimer ses émotions, et plus facile à gérer par l'enseignant.e, par exemple les gens qui ont compris avec celles-ceux qui n'ont pas compris<br />
<br />
Nous avons réalisé complètement le niveau 1, ainsi que prototypé et testé le niveau 2 avec des cables avant de pouvoir gérer par Bluetooth un Bluefruit spécifique dans un réseau comprenant plusieurs Bluefruits. Les solutions avec code et prototypes sont décrites dans la section suivante.<br />
<br />
== Solutions explorées ==<br />
<br />
===1er prototype===<br />
La première solution envisagée comporte deux objets : <br />
* Un '''émetteur''' : facile d’utilisation et agréable à porter, nous penchons pour la solution d’un bracelet contenant un micro circuit type Lilypad, Arduino Gemma ou Tinyduino. L’apprenant disposerait de 4 boutons-pressoirs pour 4 émotions majeures à transmettre (intérêt, confusion, frustration, incompréhension), symbolisés par des logos ou émoticônes. Les messages sont transmis par Bluetooth.<br />
* Un '''récepteur''' : Une jauge, comprenant une bande Neopixels, connectée à un Arduino Uno. Les LED symboliseraient deux dimensions fournies : la couleur pour le type d'émotion et le nombre pour la quantité d'étudiant.e.s ayant transmis l'information. L'Arduino pourrait gérer l'information, en émettant un son lors du dépassement d'un seuil prédéfini sur une émotion par exemple.<br />
<br />
====Maquettes====<br />
<u>1ère itération</u><br />
<br />
[[Fichier:Maquette_projet_STIC_III_Djamileh_et_Simon.jpg|néant|vignette|1103x1103px|Maquette n°1 du projet]]<br />
<br />
<u>2e itération</u><br />
<br />
L'Arduino Uno lance une séquence de randomisation de couleur, en affiche une, puis les participant.e.s font de même sur leur CPX. Si les couleurs affichées "matchent", le groupe est constitué et on peut ainsi passer à la constitution aléatoire du groupe suivant. <br />
[[Fichier:2e Maquette projet STIC III Djamileh et Simon .jpg|néant|vignette|1103x1103px|Maquette n°2 du projet]]<br />
<br />
====Code====<br />
<u>Version 1.0 du code CPX :</u> <syntaxhighlight lang="javascript"><br />
input.buttonA.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 200<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(40)<br />
color2 += Math.randomRange(1, 3)<br />
light.setPhotonPenHue(color2)<br />
}<br />
light.photonFlip()<br />
})<br />
input.buttonsAB.onEvent(ButtonEvent.Click, function () {<br />
control.reset()<br />
})<br />
input.buttonB.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 300<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
color2 += 3<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(50)<br />
}<br />
})<br />
let tonalité = 0<br />
let durée = 0<br />
let color2 = 0<br />
light.setBrightness(158)<br />
music.setVolume(167)<br />
forever(function () {<br />
<br />
})<br />
</syntaxhighlight><br />
<br />
===2e prototype===<br />
<br />
====Maquette====<br />
<u>Boîte émettrice</u><br />
[[Fichier:Boite CPX STIC III.png|néant|vignette|Plan découpe boîte émettrice CPX]]<br />
[[Fichier:Etiquettes Boite CPX STIC III.png|néant|vignette|Etiquettes boîte CPX]]<br />
[[Fichier:Maquette boîte CPX.png|néant|vignette|Rendu de la boîte]]<br />
[[Fichier:Boîte CPX.jpg|néant|vignette|Boîte en cours de réalisation]]<br />
<br />
<u>Cadrans récepteurs</u><br />
[[Fichier:Bracelets CPX STIC III.png|néant|vignette|Cadrans récepteurs]]<br />
<br />
====Code====<br />
[[Fichier:CPX firstproto.jpg|vignette|droite|Une étape dans le test du code - 5 binomes de noël! ]]<br />
La solution présentée ici s'occupe du niveau 1, soit la création de groupe aléatoire à l'aide d'un CPX Bluefruit.<br />
Elle a été codée en CircuitPython. Nous avons rédigé le code nous-mêmes, avec deux supports : la création du dictionnaire pour la randomisation été possible grâce à l'aimable contribution de notre collègue Jérôme. Concernant l'envoi et la réception de données par Bluetooth, nous nous sommes basés sur les [https://learn.adafruit.com/circuitpython-nrf52840/bluetooth-basics tutoriels Adafruit], ainsi que deux projets utilisant des fonctionnalités se rapprochant de notre projet :<br />
* [https://learn.adafruit.com/circuit-playground-bluefruit-neopixel-animation-and-color-remote-control projet 1]<br />
* [https://learn.adafruit.com/color-remote-with-circuit-playground-bluefruit projet 2]<br />
<br />
'''Code pour le CPB Emetteur'''<br />
<syntaxhighlight lang="python"><br />
# Groupify !<br />
# Un projet de S!m & Dja<br />
# Code CircuitPython pour la répartition dans les groupes (MASTER)<br />
<br />
"""<br />
SETUP GENERAL<br />
"""<br />
<br />
# LIBRAIRIES<br />
import random<br />
import time<br />
<br />
# Librairie pour gérer la bande neopixel du bluefruit<br />
from adafruit_circuitplayground.bluefruit import cpb<br />
<br />
# Librairies pour gérer la transmission bluetooth<br />
from adafruit_ble import BLERadio<br />
from adafruit_ble.advertising.standard import ProvideServicesAdvertisement<br />
from adafruit_ble.services.nordic import UARTService<br />
<br />
# Librairie pour envoyer la couleur<br />
from adafruit_bluefruit_connect.color_packet import ColorPacket<br />
<br />
# Helper function pour gérer la connexion entre plusieurs Bluefruits<br />
# reprise sur https://learn.adafruit.com/circuit-playground-bluefruit-neopixel-<br />
# animation-and-color-remote-control/remote-control-code<br />
def send_packet(uart_connection_name, packet):<br />
"""Returns False if no longer connected."""<br />
try:<br />
uart_connection_name[UARTService].write(packet.to_bytes())<br />
except: # pylint: disable=bare-except<br />
try:<br />
uart_connection_name.disconnect()<br />
except: # pylint: disable=bare-except<br />
pass<br />
return False<br />
return True<br />
<br />
<br />
# Input utilisateur<br />
participants = int(input("Nombre de participants : "))<br />
groupe = int(input("Nombre de groupes : "))<br />
<br />
"""<br />
CREATION DES GROUPES<br />
"""<br />
<br />
# création listes à long. variable (+ 1 pour compenser la numération depuis 0)<br />
liste_part = list(range(1, participants + 1)) # print(liste_part)<br />
nb_part = len(liste_part) + 1<br />
liste_groupe = list(range(1, groupe + 1)) # print(liste_groupe)<br />
<br />
# Déf. grille (dict. de listes) combinations possibles<br />
clé_tableau = str(participants) + "_" + str(groupe)<br />
# !!! ajouter combinaisons pas possible : eg. tour de roue lumineuse/son pourri !!!<br />
grille_repartition = {<br />
"10_5": [2, 2, 2, 2, 2],<br />
"10_4": [2, 2, 3, 3],<br />
"10_3": [3, 3, 4],<br />
"10_2": [5, 5],<br />
"9_4": [2, 2, 2, 3],<br />
"9_3": [3, 3, 3],<br />
"9_2": [4, 5],<br />
"8_4": [2, 2, 2, 2],<br />
"8_3": [2, 3, 3],<br />
"8_2": [4, 4],<br />
"7_3": [2, 2, 3],<br />
"7_2": [4, 3],<br />
"6_3": [2, 2, 2],<br />
"6_2": [3, 3],<br />
"5_2": [2, 3],<br />
"4_2": [2, 2],<br />
}<br />
# détermination du nb et taille des groupes à créer<br />
taille_groupe = grille_repartition[clé_tableau]<br />
print(taille_groupe)<br />
<br />
# création (dict) répartition aléatoire<br />
dict_repartition = {} # initialisation<br />
for i in range(0, len(taille_groupe)):<br />
dict_repartition[liste_groupe[i]] = [] # création des items du dictionnaire<br />
for j in range(0, taille_groupe[i]):<br />
etu = liste_part[random.randint(0, len(liste_part) - 1)]<br />
dict_repartition[liste_groupe[i]].append(etu)<br />
liste_part.remove(etu)<br />
# print (liste_part)<br />
# print (dict_repartition)<br />
print(dict_repartition)<br />
<br />
# Définition des groupes avec couleurs<br />
groupeList = list(dict_repartition.values())<br />
print(groupeList)<br />
<br />
# GESTION NEOPIXEL<br />
cpb.pixels.brightness = 0.05<br />
<br />
# Grille de définition des couleurs de groupe<br />
dict_couleur = {<br />
"gr1": (0, 255, 0),<br />
"gr2": (255, 0, 255),<br />
"gr3": (255, 255, 0),<br />
"gr4": (0, 255, 255),<br />
"gr5": (255, 0, 0),<br />
}<br />
# print(dict_couleur)<br />
<br />
# transf. dict -> list<br />
liste_couleur = list(dict_couleur.values())<br />
print("liste de couleur totale: ", liste_couleur)<br />
<br />
# définition des couleurs selon nb de groupe<br />
dict_neopix = {}<br />
for i in range(0, len(taille_groupe)):<br />
codecouleur = liste_couleur[i]<br />
dict_neopix[i] = codecouleur<br />
# print(dict_neopix)<br />
<br />
# transf. dict -> list<br />
liste_neopix = list(dict_neopix.values())<br />
print("liste de couleur spécifique: ", liste_neopix)<br />
<br />
# Attribution des couleurs par pixel<br />
liste_pixels = []<br />
for i in range(0, nb_part):<br />
for j in range(0, len(taille_groupe)):<br />
if i in groupeList[j]:<br />
pix = liste_neopix[j]<br />
liste_pixels.append(pix)<br />
print("couleurs des pixels : ", liste_pixels)<br />
<br />
"""<br />
TRANSMISSION AUX BLUEFRUITS PARTICIPANTS (SLAVES)<br />
"""<br />
# Setup de la transmission<br />
ble = BLERadio()<br />
uart_service = UARTService()<br />
advertisement = ProvideServicesAdvertisement(uart_service)<br />
<br />
uart_connection = None<br />
# Controle sur des connexions disponibles<br />
if ble.connected:<br />
for connection in ble.connections:<br />
if UARTService in connection:<br />
uart_connection = connection<br />
break<br />
<br />
while True:<br />
# Allumage de la bnde neopixel / visualisation des groupes formés<br />
for i in range(0, nb_part - 1):<br />
cpb.pixels[i] = liste_pixels[i]<br />
<br />
# Gestion de la transmission<br />
if not uart_connection or not uart_connection.connected:<br />
# Condition : pas de connexion > scan<br />
print("Scanning...")<br />
for adv in ble.start_scan(ProvideServicesAdvertisement, timeout=5): # Scan...<br />
if UARTService in adv.services: # si periphérique existe<br />
print("Found a UARTService advertisement.")<br />
uart_connection = ble.connect(adv) # crée une connexion<br />
break<br />
# Arrêt du scannage de l'environnement<br />
ble.stop_scan()<br />
<br />
# si connexion existante :<br />
while uart_connection and uart_connection.connected:<br />
if cpb.button_a: # Transmission des données neopixels avec A<br />
print("Bouton A - envoi données")<br />
color = cpb.pixels[0]<br />
if not send_packet(uart_connection, ColorPacket(color)):<br />
uart_connection = None<br />
continue<br />
time.sleep(0.1) # Delay to prevent sending packets too quickly.<br />
</syntaxhighlight><br />
<br />
'''Code pour le CPB Récepteur (participants)'''<br />
<syntaxhighlight lang="python"><br />
"""<br />
Code pour les bluefruits participants<br />
"""<br />
import time<br />
<br />
from adafruit_circuitplayground.bluefruit import cpb<br />
<br />
from adafruit_ble import BLERadio<br />
from adafruit_ble.advertising.standard import ProvideServicesAdvertisement<br />
from adafruit_ble.services.nordic import UARTService<br />
<br />
from adafruit_bluefruit_connect.packet import Packet<br />
from adafruit_bluefruit_connect.color_packet import ColorPacket<br />
<br />
num_pixels = 10<br />
<br />
# animation initiale - "chase" est une animation de base dans les librairies<br />
# d'animation pour neopixel (cf neopixel überguide)<br />
def color_chase(color, wait):<br />
for i in range(num_pixels):<br />
cpb.pixels[i] = color<br />
time.sleep(wait)<br />
cpb.pixels.show()<br />
time.sleep(0.5)<br />
<br />
<br />
# Grille des couleurs de groupe pour animation<br />
dict_couleur = {<br />
"gr1": (0, 255, 0),<br />
"gr2": (255, 0, 255),<br />
"gr3": (255, 255, 0),<br />
"gr4": (0, 255, 255),<br />
"gr5": (255, 0, 0),<br />
}<br />
<br />
liste_couleur = list(dict_couleur.values())<br />
print(liste_couleur)<br />
<br />
# Setup standard pour la réception<br />
ble = BLERadio()<br />
uart = UARTService()<br />
advertisement = ProvideServicesAdvertisement(uart)<br />
<br />
cpb.pixels.brightness = 0.05<br />
receptionGroupe = False<br />
<br />
while True:<br />
ble.start_advertising(advertisement)<br />
<br />
while not cpb.switch:<br />
for i in range(0, len(liste_couleur)):<br />
couleurCode = liste_couleur[i]<br />
color_chase(couleurCode, 0.05)<br />
<br />
if cpb.switch:<br />
while not ble.connected:<br />
pass<br />
ble.stop_advertising()<br />
<br />
while ble.connected:<br />
if uart.in_waiting:<br />
packet = Packet.from_stream(uart)<br />
if isinstance(packet, ColorPacket):<br />
cpb.pixels.fill(packet.color)<br />
</syntaxhighlight><br />
<br />
== Test(s) de la solution ==<br />
<br />
===Cognitive walkthrough===<br />
<br />
Pour produire ce cognitive walkthrough, nous nous sommes basés sur les principes du [https://edutechwiki.unige.ch/en/Cognitive_walkthrough#Fluid_project_overview Fluid Project].<br />
<br />
==== Persona ====<br />
[[Fichier:PERSONA INGO NITO.jpg|néant|cadre]]<br />
<br />
==== Objectifs ====<br />
<br />
* Créer des groupes grâce au dispositif émetteur<br />
* Communiquer ces groupes aux dispositifs récepteurs<br />
* Renforcer l'engagement grâce à un dispositif ludique et actif<br />
<br />
==== Scénario d'utilisation ====<br />
<br />
# (en amont) Réfléchir à un combien de groupes seront créés en fonction du nombre de participant.e.s disponible.s<br />
# Allumage du dispositif<br />
# Lancement du dispositif<br />
# Réalisation d'une séquence de composition de groupe<br />
# Lancement et réalisation de la séquence suivante de communication avec envoi des groupes constitués aux dispositifs distants<br />
# Mise hors tension du dispositif<br />
<br />
=== Tests utilisateur·trice·s===<br />
<br />
==== '''Ébauche du scénario''' ====<br />
Le test utilisateur est une méthode utilisée pour évaluer l’expérience utilisateur d’un système, mais également les forces et les faiblesses de celui-ci. Cette méthode, consiste à mettre l’utilisateur·trice en situation « réelle » afin d’observer ses comportements et ses actions lorsqu’il exécute des tâches prédéfinies qui lui sont administrées sous la forme d’un scénario. Il leur est alors demandé de nous renseigner sur leurs expériences.<br />
<br />
Lors de cette phase, un prototype du projet est présenté à des utilisateur·trices recrutés au sein du public cible. A ce stade, le prototype devrait être suffisamment abouti pour offrir les principales fonctionnalités constitutives de la version finale. Néanmoins, il diffère de celle-ci puisque certaines fonctionnalités accessoires ne pourraient ne pas être encore implémentées. En présentant assez tôt un produit relativement proche de la version finale, nous entendons nous assurer que les directions prises dans les précédentes phases de conception soient les plus à même de répondre aux besoins des utilisateur·trice·s. Le prototype sera modifié en fonction des retours formulés par les observations réalisées ainsi que par les analyses des résultats des tests. <br />
<br />
Le test utilisateur se déroulera en 3 étapes :<br />
#Accueil des participants<br />
#Réalisation des tâches<br />
#Entretien succinct<br />
<br />
Dans la première étape, le participant sera accueilli, le contexte et le test utilisateur lui seront alors présentés de manière générale. Lors du test, l’utilisateur·trice « découvrira » le dispositif en réalisant des tâches préparées au préalable (scénario des tâches). Ici, nous éprouverons l’expérience de l’utilisateur·trice.<br />
<br />
Après avoir exposé le contexte dans lequel le scénario prend place, nous demanderons à la personne d’accomplir les tâches décrites dans le tableau "scénario des tâches". De plus, nous encouragerons le/la participant·e à formuler à voix haute ses pensées et ressentis lors de l’utilisation de l’outil. <br />
<br />
Les participant·e·s seront accueillis avec la consigne suivante : <br />
{{Citation encadrée | ''Merci d’avoir accepté de faire ce test avec moi aujourd'hui. Je travaille sur le développement d’un outil pour la constitution aléatoire de groupes de travail dans une classe. Cette technique permet de constituer des groupes rapidement et de communiquer ceux-ci aux participant.e.s quasi instantanément.''}}<br />
<br />
Le scénario des tâches se composera de deux éléments : le contexte et les tâches à effectuer par le/la participant.e. Le contexte aura pour but de mettre l’utilisateur·trice dans une situation réaliste qui se rapprochera de son quotidien et/ou du contexte pendant lequel il pourrait être mené à utiliser le dispositif. Le contexte sera formulé de la manière suivante :<br />
<br />
{{Citation encadrée | ''Vous êtes au début d’une activité de débat, dans votre classe, avec vos étudiant.e.s. Pour réaliser cette activité, vous devez d’abord constituer des groupes de manière aléatoire, avec les étudiant.e.s qui composent votre cours. Pour se faire, vous allez donc devoir utiliser le dispositif-prototype en annexe.''<br />
<br />
''Le dispositif à tester se compose de plusieurs éléments. Le premier élément est le dispositif émetteur. Il va être utilisé pour composer les groupes d’étudiant.e.s de manière aléatoire et par couleur. <br />
Ensuite, avec les boutons présents sur celui-ci, il sera capable de transmettre les données choisies aux dispositifs récepteurs annexes.''<br />
<br />
''Durant le test, vous allez être amené.e à utiliser les différents dispositifs cités afin de réaliser plusieurs tâches. Celles-ci ne devraient pas être trop compliquées et ne nécessiteront, non plus , pas trop de temps de réalisation.''}}<br />
<br />
Après avoir exposé le contexte dans lequel le scénario prend place, nous demanderons au participant d’accomplir les tâches décrites dans le tableau "scénario des tâches".<br />
<br />
Pour l’étape des tâches, nous donnerons les consignes suivantes :<br />
<br />
{{Citation encadrée |''Avant de commencer le test et les tâches, n’hésitez pas à poser des questions si un/des élément(s) ne vous paraissent pas clair(s). Nous restons bien entendu à disposition, si besoin , durant la réalisation des tâches. <br />
''}}<br />
<br />
Chaque tâche sera expliquée au fur et à mesure au participant.<br />
{| style="border: 1px solid black; border-spacing: 0; margin: 1em auto;"<br />
|+ '''Scénario des tâches'''<br />
|-<br />
! style="border: 1px solid black; padding: 5px; background: #D4D4D8; width: 400pt;" | Tâche 1<br />
| style="border: 1px solid black; padding: 5px; background: #D4D4D8; width: 400pt;" |''En cours de création...''<br />
|-<br />
! style="border: 1px solid black; padding: 5px; background: #D4D4D8; width: 400pt;" |Tâche 2<br />
| style="border: 1px solid black; padding: 5px; vertical-align: top; width: 200pt;" |''En cours de création...''<br />
|-<br />
! style="border: 1px solid black; padding: 5px; background: #D4D4D8; width: 400pt;" | Tâche 3<br />
|''En cours de création...''<br />
|-<br />
! style="border: 1px solid black; padding: 5px; background: #D4D4D8; width: 400pt;" | Tâche 4<br />
|''En cours de création...''<br />
|-<br />
|<br />
|<br />
|}<br />
<br />
==== Vidéo du test utilisateur.trice.s ====<br />
[[Fichier:Users Tests.ogg|néant|vignette|600x600px]]<br />
<br />
== Discussion ==<br />
=== Design === <br />
Le design actuel est parti d'une idée d'utiliser la découpe laser pour la boîte émettrice et une forme de montre pour les récepteurs participants, avec un côté vintage et nostalgique des séries des années 80.<br />
Cela dit, nous avions tout de même recherché des produits plus petits et plus discrets, faciles à transporter et à manipuler.Cela s'est confirmé lors des tests, où en fin de compte, les participants ont apprécié avoir des objets légers et faciles à manipuler en main. Pour un prochain prototype, nous nous orienterions vers un Gemma ou Flora, sur un patch en broderie numérique pour les récepteurs participants.<br />
<br />
Du côté émetteur, il est resté jusqu'à la fin la difficulté de l'input du nombre de participants et du nombre de groupes attendus. Les potentiomètres se sont avérés trop complexes, autant pour comprendre ce qu'il fallait commander que pour programmer des niveaux de voltage correspondant à des seuils de chiffre. Pour pallier cette difficulté, nous avons tenté d'utiliser les éléments du CPB, soit les boutons et la slider. Cependant, cela nécessite des manipulations longues (pare exemple : bouton A pour ajouter un participant, bouton B pour en enlever, slider pour valider) et rend l'opération fastidieuse. <br />
<br />
Enfin, l'utilisation de la bande neopixel du CPB limite le nombre total de participants à 10. Pour une prochaine itération, nous utiliserions une bande externe permettant la gestion de groupes plus larges.<br />
<br />
=== Résultats des tests utilisateurs === <br />
Les retours utilisateurs ont en partie été discutés dans la section Design, car ils faisaient écho à nos propres envies, qui n'avaient pas été réalisables techniquement. Nous retenons les points clés suivants pour les prochaines itérations du projet, en avantages et faiblesses : <br />
<br />
Les avantages sont :<br />
* un aspect ludique qui rend excitant le moment de passage à l'activité de sous-groupe et qui renforce l'engagement<br />
* un effet d'appartenance et de cohésion <br />
* une dimension pédagogique de rééquilibrage des postures : la personne qui forme peut choisir de contrôler la création des groupes ou de la rendre démocratique par sa délégation à un membre de la classe. Cela permet de garder une réelle impression de hasard<br />
<br />
Du côté des faiblesses à améliorer :<br />
* Encore trop complexe et long par rapport à sa réelle plus-value<br />
* Le design actuel est trop envahissant (boite, montre). Le rendre plus facile à intégrer et oublier lorsqu'il n'est pas utilisé<br />
<br />
== Licence, fichiers et documentation ==<br />
[[Fichier:By-nc.png|150px]] Cette œuvre est mise à disposition selon les termes de la [http://creativecommons.org/licenses/by-nc/4.0/ Licence Creative Commons Attribution - Pas d’Utilisation Commerciale 4.0 International].<br />
<br />
* Fichiers :<br />
Insérer ici vos fichiers ou les liens vers vos fichiers<br />
<br />
* Documentation : <br />
Insérer ici une petite documentation pour l'utilisation de l'objet si nécessaire<br />
<br />
== Bibliographie ==<br />
<br />
* Blair, C., Calkins, S., & Kopp, L. (2010). Self-regulation as the interface of emotional and cognitive development: Implications for education and academic achievement.<br />
* Pekrun, R., Goetz, T., Titz, W., & Perry, R. P. (2002). Academic emotions in students' self-regulated learning and achievement: A program of qualitative and quantitative research. Educational psychologist, 37(2), 91-105.</div>Djamileh Aminianhttps://edutechwiki.unige.ch/fmediawiki/index.php?title=STIC:STIC_III_(2020)/Forces_rouge,_rose,_vert,_jaune_ou_bleu_!&diff=154713STIC:STIC III (2020)/Forces rouge, rose, vert, jaune ou bleu !2021-09-04T09:26:57Z<p>Djamileh Aminian : /* Design */</p>
<hr />
<div>{{bloc important|Projet réalisé par [[Utilisateur:Djamileh_Aminian|Djamileh]] & [[Utilisateur:Simon_Jöhr|Simon]]}}<br />
<br />
== Introduction ==<br />
Durant la dernière année, le passage forcé à la téléformation, soit la formation synchrone à distance, a eu comme effet positif de pousser certains spécialistes de l’éducation à revisiter leurs scénarios pédagogiques pour revenir aux fondamentaux : comment aider les élèves à apprendre ce qu’ils sont sensés apprendre et comment les accompagner au mieux dans leur apprentissage ? Souvent, les difficultés relevées lors des bilans des derniers mois de distantiel ont fait émerger des problèmes qui existaient déjà en présence, mais qui restaient latents ou ignorés.<br />
<br />
En ce sens, l’apprentissage est fortement influencé par les émotions par lesquelles passent les élèves au cours de la formation, et en particulier pendant les moments synchrones. Pourtant, il est très complexe de détecter, mesurer, ou même faire exprimer les étudiant-es sur leur ressenti.<br />
<br />
En donnant leurs cours en visioconférence, nombreux formateurs et formatrices ont exprimé leur frustration de ne pas réussir à évaluer l’état émotionnel et autres indices non verbaux de leurs participant.e.s, retours essentiels pour adapter une explication ou ajuster le rythme. Et cet effet est loin d’être limité à la distance : il est également bien présent dans une salle de classe où il reste complexe de capter en temps réel les émotions d’un étudiant, processus complexe et dynamique.<br />
<br />
Notre projet prend sa racine dans ce constat. Deux questions ont alors émergé : <br />
* comment mesurer l'état émotionnel d'un-e apprenant-e, <br />
* et surtout, pour quel usage ?<br />
<br />
Dans ce contexte, nous avons pensé un dispositif de partage des ressentis de la classe à destination de l'équipe enseignante, et une utilisation de cette donnée comme retour au groupe.<br />
<br />
== Problème ==<br />
<br />
Le but de ce projet est de proposer une solution ludique à la constitution de groupes en classe, que cela soit en présence, à distance ou de manière comodale. En utilisant un Arduino Uno ou des CPX, la phase de constitution de groupes sera ainsi rapide, aléatoire et "fun" !<br />
<br />
Le ''Problem Statement'' peut s’exprimer ainsi : « Comment peut-on aider les formateurs et formatrices à identifier rapidement les difficultés dans l’apprentissage et, le cas échéant, à réagir ? »<br />
<br />
== Cahier des charges == <br />
=== Contexte et public ===<br />
Le public cible est composé de formateurs et formatrices d’adultes, en entreprise ou en institut. Il pourrait également être élargi aux enseignante.s du scolaire, mais la conscientisation et l’expression d’une émotion sont suffisamment complexes pour limiter notre premier dispositif à des adultes, disposant, à priori, d’une compréhension plus fine de leur état émotionnel. De plus, l’asymétrie dans la relation est supposée moins forte dans un groupe d’adultes en formation que dans une classe avec un enseignant et des enfants ou adolescents.<br />
<br />
===Objectifs===<br />
Le but du dispositif est de :<br />
* permettre la communication d'un niveau émotionnel perçu par l'étudiant.e à l'enseignant.e<br />
* faire émerger un état général de la classe et les différences dans l'acquisition du contenu<br />
* de manière plus pragmatique, de créer des groupes sur la base des éléments communiqués<br />
<br />
===Besoins et contraintes===<br />
L'idée du projet a beaucoup évolué entre la phase d'identification des besoins et les constatations sur les possibilités offertes par la technologie et l'expertise à disposition. Nous détaillons ci-dessous les besoins et contraintes qui nous ont menés à la solution présentée plus bas.<br />
<br />
Partant au début d’une idée de jauge émotionnelle dynamique, donnant en tout temps l’état émotionnel d’un groupe de participants, nous avons rapidement détecté, en phase d'idéation avec plusieurs spécialistes en éducation, un aspect extrêmement anxiogène pour le formateur dont le groupe enverrait des signaux d’ennui ou de frustration, durant une explication. <br />
<br />
Afin de juguler cet effet, tout en conservant la possibilité de communiquer un message sur l’état, nous avons adapté le dispositif pour permettre aux étudiants de transmettre leur état à des moments spécifiques de la formation, intégrés dans le scénario pédagogique. L'émotion étant un élément sensible à conscientiser, exprimer et partager au sein d'un groupe, nous avons estimé plus judicieux de faire exprimer son niveau d'aisance face à un contenu qui vient d'être transmis. Ainsi, un-e enseignant-e scénarisera des moments d'autodiagnostic des étudiant-es sur leur perception de compétence sur la thématique. Cette information peut être utilisée pour réaliser des groupes de travail : (1) les personnes qui ont compris peuvent être orientées sur un contenu plus avancé, en échange pendant que l'enseignant organiser une séance de question-réponse avec les personnes en difficulté ou (2) des groupes peuvent être créés pour intégrer des étudiant-es qui ont compris avec des étudiant-es qui ont besoin d'aide.<br />
<br />
Le dispositif est donc pensé comme un outil de sondage à certains moments du cours, pour évaluer les besoins du groupe, dans son ensemble. Il est souvent difficile de récolter des informations sincères lors d’évaluations à chaud, les étudiants réticents à communiquer publiquement leurs difficultés ou désintérêts pour le contenu. Par la technique de transmission, les étudiants pourraient communiquer leur émotion de manière anonyme, favorisant l'authenticité.<br />
<br />
De manière intéressante au fur et à mesure de l'avance du projet, il est ressorti des discussions avec un échantillon du public cible que l'aspect de notre projet qui les intéressait était moins la communication des émotions, mais la création facilitée des groupes. En effet, les formateurs et formatrices ayant travaillé à distance durant la dernière année se sont habitués à disposer d'une fonction de création de groupe aléatoire, selon un nombre total de participants et un nombre de groupe visé. Cette fonction serait très utile également en présence, en utilisant une carte Arduino ou un CPX pour calculer une répartition des élèves par groupe, avec en entrée le nombre d'élèves et les sous-groupes. Une fois les groupes constitués, l'étape suivante est de communiquer ces groupes à l'ensemble de la classe au travers de Lilypad ou autres technologies portables qui s'allument selon la couleur de leur groupe.<br />
<br />
===Apports===<br />
* Cohésion et sentiment d'appartenance au groupe comme soutien à l'apprentissage<br />
* Expression d'un état émotionnel épistémique comme bénéfique à l'apprentissage<br />
<br />
===Présentation du projet===<br />
Suite aux premières itérations dans l'empathie et la définition du projet, nous avons identifié plusieurs points clés qui ont réorienté notre projet :<br />
* la création d'un réseau de cartes Bluetooth contrôlées par Arduino s'est révélée trop ambitieuse, suite au manque de projets existants ou d'expertise sur lesquels s'appuyer, <br />
* l'envie marquée de notre échantillon cible qui s'est dirigée sur l'aspect création de groupe plus que sur la connaissance des états affectifs.<br />
<br />
Nous avons donc revu le projet en le divisant en 3 niveaux de difficulté, afin de réaliser un prototype utilisable, puis de l'améliorer en fonction des retours et du temps à disposition.<br />
* '''Niveau 1 : Création de groupe aléatoire''' : intérêts : facilitation de la création des groupes (demande reçue d'un formateur : "parce que Zoom nous a bien aidé pour cela à distance, je veux la même chose en présence!")<br />
* '''Niveau 2 : Communication du groupe à l’apprenant''' : intérêts : gamification, sentiment d’appartenance, coopération, cohésion<br />
* '''Niveau 3 : Communication de son sentiment de compétence''' : intérêts : plus facile que d'exprimer ses émotions, et plus facile à gérer par l'enseignant.e, par exemple les gens qui ont compris avec celles-ceux qui n'ont pas compris<br />
<br />
Nous avons réalisé complètement le niveau 1, ainsi que prototypé et testé le niveau 2 avec des cables avant de pouvoir gérer par Bluetooth un Bluefruit spécifique dans un réseau comprenant plusieurs Bluefruits. Les solutions avec code et prototypes sont décrites dans la section suivante.<br />
<br />
== Solutions explorées ==<br />
<br />
===1er prototype===<br />
La première solution envisagée comporte deux objets : <br />
* Un '''émetteur''' : facile d’utilisation et agréable à porter, nous penchons pour la solution d’un bracelet contenant un micro circuit type Lilypad, Arduino Gemma ou Tinyduino. L’apprenant disposerait de 4 boutons-pressoirs pour 4 émotions majeures à transmettre (intérêt, confusion, frustration, incompréhension), symbolisés par des logos ou émoticônes. Les messages sont transmis par Bluetooth.<br />
* Un '''récepteur''' : Une jauge, comprenant une bande Neopixels, connectée à un Arduino Uno. Les LED symboliseraient deux dimensions fournies : la couleur pour le type d'émotion et le nombre pour la quantité d'étudiant.e.s ayant transmis l'information. L'Arduino pourrait gérer l'information, en émettant un son lors du dépassement d'un seuil prédéfini sur une émotion par exemple.<br />
<br />
====Maquettes====<br />
<u>1ère itération</u><br />
<br />
[[Fichier:Maquette_projet_STIC_III_Djamileh_et_Simon.jpg|néant|vignette|1103x1103px|Maquette n°1 du projet]]<br />
<br />
<u>2e itération</u><br />
<br />
L'Arduino Uno lance une séquence de randomisation de couleur, en affiche une, puis les participant.e.s font de même sur leur CPX. Si les couleurs affichées "matchent", le groupe est constitué et on peut ainsi passer à la constitution aléatoire du groupe suivant. <br />
[[Fichier:2e Maquette projet STIC III Djamileh et Simon .jpg|néant|vignette|1103x1103px|Maquette n°2 du projet]]<br />
<br />
====Code====<br />
<u>Version 1.0 du code CPX :</u> <syntaxhighlight lang="javascript"><br />
input.buttonA.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 200<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(40)<br />
color2 += Math.randomRange(1, 3)<br />
light.setPhotonPenHue(color2)<br />
}<br />
light.photonFlip()<br />
})<br />
input.buttonsAB.onEvent(ButtonEvent.Click, function () {<br />
control.reset()<br />
})<br />
input.buttonB.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 300<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
color2 += 3<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(50)<br />
}<br />
})<br />
let tonalité = 0<br />
let durée = 0<br />
let color2 = 0<br />
light.setBrightness(158)<br />
music.setVolume(167)<br />
forever(function () {<br />
<br />
})<br />
</syntaxhighlight><br />
<br />
===2e prototype===<br />
<br />
====Maquette====<br />
<u>Boîte émettrice</u><br />
[[Fichier:Boite CPX STIC III.png|néant|vignette|Plan découpe boîte émettrice CPX]]<br />
[[Fichier:Etiquettes Boite CPX STIC III.png|néant|vignette|Etiquettes boîte CPX]]<br />
[[Fichier:Maquette boîte CPX.png|néant|vignette|Rendu de la boîte]]<br />
[[Fichier:Boîte CPX.jpg|néant|vignette|Boîte en cours de réalisation]]<br />
<br />
<u>Cadrans récepteurs</u><br />
[[Fichier:Bracelets CPX STIC III.png|néant|vignette|Cadrans récepteurs]]<br />
<br />
====Code====<br />
[[Fichier:CPX firstproto.jpg|vignette|droite|Une étape dans le test du code - 5 binomes de noël! ]]<br />
La solution présentée ici s'occupe du niveau 1, soit la création de groupe aléatoire à l'aide d'un CPX Bluefruit.<br />
Elle a été codée en CircuitPython. Nous avons rédigé le code nous-mêmes, avec deux supports : la création du dictionnaire pour la randomisation été possible grâce à l'aimable contribution de notre collègue Jérôme. Concernant l'envoi et la réception de données par Bluetooth, nous nous sommes basés sur les [https://learn.adafruit.com/circuitpython-nrf52840/bluetooth-basics tutoriels Adafruit], ainsi que deux projets utilisant des fonctionnalités se rapprochant de notre projet :<br />
* [https://learn.adafruit.com/circuit-playground-bluefruit-neopixel-animation-and-color-remote-control projet 1]<br />
* [https://learn.adafruit.com/color-remote-with-circuit-playground-bluefruit projet 2]<br />
<br />
'''Code pour le CPB Emetteur'''<br />
<syntaxhighlight lang="python"><br />
# Groupify !<br />
# Un projet de S!m & Dja<br />
# Code CircuitPython pour la répartition dans les groupes (MASTER)<br />
<br />
"""<br />
SETUP GENERAL<br />
"""<br />
<br />
# LIBRAIRIES<br />
import random<br />
import time<br />
<br />
# Librairie pour gérer la bande neopixel du bluefruit<br />
from adafruit_circuitplayground.bluefruit import cpb<br />
<br />
# Librairies pour gérer la transmission bluetooth<br />
from adafruit_ble import BLERadio<br />
from adafruit_ble.advertising.standard import ProvideServicesAdvertisement<br />
from adafruit_ble.services.nordic import UARTService<br />
<br />
# Librairie pour envoyer la couleur<br />
from adafruit_bluefruit_connect.color_packet import ColorPacket<br />
<br />
# Helper function pour gérer la connexion entre plusieurs Bluefruits<br />
# reprise sur https://learn.adafruit.com/circuit-playground-bluefruit-neopixel-<br />
# animation-and-color-remote-control/remote-control-code<br />
def send_packet(uart_connection_name, packet):<br />
"""Returns False if no longer connected."""<br />
try:<br />
uart_connection_name[UARTService].write(packet.to_bytes())<br />
except: # pylint: disable=bare-except<br />
try:<br />
uart_connection_name.disconnect()<br />
except: # pylint: disable=bare-except<br />
pass<br />
return False<br />
return True<br />
<br />
<br />
# Input utilisateur<br />
participants = int(input("Nombre de participants : "))<br />
groupe = int(input("Nombre de groupes : "))<br />
<br />
"""<br />
CREATION DES GROUPES<br />
"""<br />
<br />
# création listes à long. variable (+ 1 pour compenser la numération depuis 0)<br />
liste_part = list(range(1, participants + 1)) # print(liste_part)<br />
nb_part = len(liste_part) + 1<br />
liste_groupe = list(range(1, groupe + 1)) # print(liste_groupe)<br />
<br />
# Déf. grille (dict. de listes) combinations possibles<br />
clé_tableau = str(participants) + "_" + str(groupe)<br />
# !!! ajouter combinaisons pas possible : eg. tour de roue lumineuse/son pourri !!!<br />
grille_repartition = {<br />
"10_5": [2, 2, 2, 2, 2],<br />
"10_4": [2, 2, 3, 3],<br />
"10_3": [3, 3, 4],<br />
"10_2": [5, 5],<br />
"9_4": [2, 2, 2, 3],<br />
"9_3": [3, 3, 3],<br />
"9_2": [4, 5],<br />
"8_4": [2, 2, 2, 2],<br />
"8_3": [2, 3, 3],<br />
"8_2": [4, 4],<br />
"7_3": [2, 2, 3],<br />
"7_2": [4, 3],<br />
"6_3": [2, 2, 2],<br />
"6_2": [3, 3],<br />
"5_2": [2, 3],<br />
"4_2": [2, 2],<br />
}<br />
# détermination du nb et taille des groupes à créer<br />
taille_groupe = grille_repartition[clé_tableau]<br />
print(taille_groupe)<br />
<br />
# création (dict) répartition aléatoire<br />
dict_repartition = {} # initialisation<br />
for i in range(0, len(taille_groupe)):<br />
dict_repartition[liste_groupe[i]] = [] # création des items du dictionnaire<br />
for j in range(0, taille_groupe[i]):<br />
etu = liste_part[random.randint(0, len(liste_part) - 1)]<br />
dict_repartition[liste_groupe[i]].append(etu)<br />
liste_part.remove(etu)<br />
# print (liste_part)<br />
# print (dict_repartition)<br />
print(dict_repartition)<br />
<br />
# Définition des groupes avec couleurs<br />
groupeList = list(dict_repartition.values())<br />
print(groupeList)<br />
<br />
# GESTION NEOPIXEL<br />
cpb.pixels.brightness = 0.05<br />
<br />
# Grille de définition des couleurs de groupe<br />
dict_couleur = {<br />
"gr1": (0, 255, 0),<br />
"gr2": (255, 0, 255),<br />
"gr3": (255, 255, 0),<br />
"gr4": (0, 255, 255),<br />
"gr5": (255, 0, 0),<br />
}<br />
# print(dict_couleur)<br />
<br />
# transf. dict -> list<br />
liste_couleur = list(dict_couleur.values())<br />
print("liste de couleur totale: ", liste_couleur)<br />
<br />
# définition des couleurs selon nb de groupe<br />
dict_neopix = {}<br />
for i in range(0, len(taille_groupe)):<br />
codecouleur = liste_couleur[i]<br />
dict_neopix[i] = codecouleur<br />
# print(dict_neopix)<br />
<br />
# transf. dict -> list<br />
liste_neopix = list(dict_neopix.values())<br />
print("liste de couleur spécifique: ", liste_neopix)<br />
<br />
# Attribution des couleurs par pixel<br />
liste_pixels = []<br />
for i in range(0, nb_part):<br />
for j in range(0, len(taille_groupe)):<br />
if i in groupeList[j]:<br />
pix = liste_neopix[j]<br />
liste_pixels.append(pix)<br />
print("couleurs des pixels : ", liste_pixels)<br />
<br />
"""<br />
TRANSMISSION AUX BLUEFRUITS PARTICIPANTS (SLAVES)<br />
"""<br />
# Setup de la transmission<br />
ble = BLERadio()<br />
uart_service = UARTService()<br />
advertisement = ProvideServicesAdvertisement(uart_service)<br />
<br />
uart_connection = None<br />
# Controle sur des connexions disponibles<br />
if ble.connected:<br />
for connection in ble.connections:<br />
if UARTService in connection:<br />
uart_connection = connection<br />
break<br />
<br />
while True:<br />
# Allumage de la bnde neopixel / visualisation des groupes formés<br />
for i in range(0, nb_part - 1):<br />
cpb.pixels[i] = liste_pixels[i]<br />
<br />
# Gestion de la transmission<br />
if not uart_connection or not uart_connection.connected:<br />
# Condition : pas de connexion > scan<br />
print("Scanning...")<br />
for adv in ble.start_scan(ProvideServicesAdvertisement, timeout=5): # Scan...<br />
if UARTService in adv.services: # si periphérique existe<br />
print("Found a UARTService advertisement.")<br />
uart_connection = ble.connect(adv) # crée une connexion<br />
break<br />
# Arrêt du scannage de l'environnement<br />
ble.stop_scan()<br />
<br />
# si connexion existante :<br />
while uart_connection and uart_connection.connected:<br />
if cpb.button_a: # Transmission des données neopixels avec A<br />
print("Bouton A - envoi données")<br />
color = cpb.pixels[0]<br />
if not send_packet(uart_connection, ColorPacket(color)):<br />
uart_connection = None<br />
continue<br />
time.sleep(0.1) # Delay to prevent sending packets too quickly.<br />
</syntaxhighlight><br />
<br />
'''Code pour le CPB Récepteur (participants)'''<br />
<syntaxhighlight lang="python"><br />
"""<br />
Code pour les bluefruits participants<br />
"""<br />
import time<br />
<br />
from adafruit_circuitplayground.bluefruit import cpb<br />
<br />
from adafruit_ble import BLERadio<br />
from adafruit_ble.advertising.standard import ProvideServicesAdvertisement<br />
from adafruit_ble.services.nordic import UARTService<br />
<br />
from adafruit_bluefruit_connect.packet import Packet<br />
from adafruit_bluefruit_connect.color_packet import ColorPacket<br />
<br />
num_pixels = 10<br />
<br />
# animation initiale - "chase" est une animation de base dans les librairies<br />
# d'animation pour neopixel (cf neopixel überguide)<br />
def color_chase(color, wait):<br />
for i in range(num_pixels):<br />
cpb.pixels[i] = color<br />
time.sleep(wait)<br />
cpb.pixels.show()<br />
time.sleep(0.5)<br />
<br />
<br />
# Grille des couleurs de groupe pour animation<br />
dict_couleur = {<br />
"gr1": (0, 255, 0),<br />
"gr2": (255, 0, 255),<br />
"gr3": (255, 255, 0),<br />
"gr4": (0, 255, 255),<br />
"gr5": (255, 0, 0),<br />
}<br />
<br />
liste_couleur = list(dict_couleur.values())<br />
print(liste_couleur)<br />
<br />
# Setup standard pour la réception<br />
ble = BLERadio()<br />
uart = UARTService()<br />
advertisement = ProvideServicesAdvertisement(uart)<br />
<br />
cpb.pixels.brightness = 0.05<br />
receptionGroupe = False<br />
<br />
while True:<br />
ble.start_advertising(advertisement)<br />
<br />
while not cpb.switch:<br />
for i in range(0, len(liste_couleur)):<br />
couleurCode = liste_couleur[i]<br />
color_chase(couleurCode, 0.05)<br />
<br />
if cpb.switch:<br />
while not ble.connected:<br />
pass<br />
ble.stop_advertising()<br />
<br />
while ble.connected:<br />
if uart.in_waiting:<br />
packet = Packet.from_stream(uart)<br />
if isinstance(packet, ColorPacket):<br />
cpb.pixels.fill(packet.color)<br />
</syntaxhighlight><br />
<br />
== Test(s) de la solution ==<br />
<br />
===Cognitive walkthrough===<br />
<br />
Pour produire ce cognitive walkthrough, nous nous sommes basés sur les principes du [https://edutechwiki.unige.ch/en/Cognitive_walkthrough#Fluid_project_overview Fluid Project].<br />
<br />
==== Persona ====<br />
[[Fichier:PERSONA INGO NITO.jpg|néant|cadre]]<br />
<br />
==== Objectifs ====<br />
<br />
* Créer des groupes grâce au dispositif émetteur<br />
* Communiquer ces groupes aux dispositifs récepteurs<br />
* Renforcer l'engagement grâce à un dispositif ludique et actif<br />
<br />
==== Scénario d'utilisation ====<br />
<br />
# (en amont) Réfléchir à un combien de groupes seront créés en fonction du nombre de participant.e.s disponible.s<br />
# Allumage du dispositif<br />
# Lancement du dispositif<br />
# Réalisation d'une séquence de composition de groupe<br />
# Lancement et réalisation de la séquence suivante de communication avec envoi des groupes constitués aux dispositifs distants<br />
# Mise hors tension du dispositif<br />
<br />
=== Tests utilisateur·trice·s===<br />
<br />
''Restant à réaliser...''<br />
<br />
'''Ébauche du scénario''' <br />
<br />
Le test utilisateur est une méthode utilisée pour évaluer l’expérience utilisateur d’un système, mais également les forces et les faiblesses de celui-ci. Cette méthode, consiste à mettre l’utilisateur·trice en situation « réelle » afin d’observer ses comportements et ses actions lorsqu’il exécute des tâches prédéfinies qui lui sont administrées sous la forme d’un scénario. Il leur est alors demandé de nous renseigner sur leurs expériences.<br />
<br />
Lors de cette phase, un prototype du projet est présenté à des utilisateur·trices recrutés au sein du public cible. A ce stade, le prototype devrait être suffisamment abouti pour offrir les principales fonctionnalités constitutives de la version finale. Néanmoins, il diffère de celle-ci puisque certaines fonctionnalités accessoires ne pourraient ne pas être encore implémentées. En présentant assez tôt un produit relativement proche de la version finale, nous entendons nous assurer que les directions prises dans les précédentes phases de conception soient les plus à même de répondre aux besoins des utilisateur·trice·s. Le prototype sera modifié en fonction des retours formulés par les observations réalisées ainsi que par les analyses des résultats des tests. <br />
<br />
Le test utilisateur se déroulera en 3 étapes :<br />
#Accueil des participants<br />
#Réalisation des tâches<br />
#Entretien succinct<br />
<br />
Dans la première étape, le participant sera accueilli, le contexte et le test utilisateur lui seront alors présentés de manière générale. Lors du test, l’utilisateur·trice « découvrira » le dispositif en réalisant des tâches préparées au préalable (scénario des tâches). Ici, nous éprouverons l’expérience de l’utilisateur·trice.<br />
<br />
Après avoir exposé le contexte dans lequel le scénario prend place, nous demanderons à la personne d’accomplir les tâches décrites dans le tableau "scénario des tâches" (encore en cours de réalisation). De plus, nous encouragerons le/la participant·e à formuler à voix haute ses pensées et ressentis lors de l’utilisation de l’outil. <br />
<br />
Les participant·e·s seront accueillis avec la consigne suivante : <br />
{{Citation encadrée | ''Merci d’avoir accepté de faire ce test avec moi aujourd'hui. Je travaille sur le développement d’un outil pour la constitution aléatoire de groupes de travail dans une classe. Cette technique permet de constituer des groupes rapidement et de communiquer ceux-ci aux participant.e.s quasi instantanément.''}}<br />
<br />
Le scénario des tâches se composera de deux éléments : le contexte et les tâches à effectuer par le/la participant.e. Le contexte aura pour but de mettre l’utilisateur·trice dans une situation réaliste qui se rapprochera de son quotidien et/ou du contexte pendant lequel il pourrait être mené à utiliser le dispositif. Le contexte sera formulé de la manière suivante :<br />
<br />
{{Citation encadrée |''En cours d'édition...''}}<br />
<br />
Après avoir exposé le contexte dans lequel le scénario prend place, nous demanderons au participant d’accomplir les tâches décrites dans le tableau "scénario des tâches" (encore en cours de réalisation).<br />
<br />
Pour l’étape des tâches, nous donnerons les consignes suivantes :<br />
<br />
{{Citation encadrée |''En cours d'édition...''}}<br />
<br />
Chaque tâche sera expliquée au fur et à mesure au participant.<br />
{| style="border: 1px solid black; border-spacing: 0; margin: 1em auto;"<br />
|+ '''Scénario des tâches'''<br />
|-<br />
! style="border: 1px solid black; padding: 5px; background: #D4D4D8; width: 400pt;" | Tâche 1<br />
! style="border: 1px solid black; padding: 5px; background: #D4D4D8; width: 400pt;" | Tâche 2<br />
|-<br />
| style="border: 1px solid black; padding: 5px; vertical-align: top;" |''En cours de création...''<br />
| style="border: 1px solid black; padding: 5px; vertical-align: top; width: 200pt;" |''En cours de création...''<br />
|}<br />
<br />
== Discussion ==<br />
=== Design === <br />
Le design actuel est parti d'une idée d'utiliser la découpe laser pour la boîte émettrice et une forme de montre pour les récepteurs participants, avec un côté vintage et nostalgique des séries des années 80.<br />
Cela dit, nous avions tout de même recherché des produits plus petits et plus discrets, faciles à transporter et à manipuler.Cela s'est confirmé lors des tests, où en fin de compte, les participants ont apprécié avoir des objets légers et faciles à manipuler en main. Pour un prochain prototype, nous nous orienterions vers un Gemma ou Flora, sur un patch en broderie numérique pour les récepteurs participants.<br />
<br />
Du côté émetteur, il est resté jusqu'à la fin la difficulté de l'input du nombre de participants et du nombre de groupes attendus. Les potentiomètres se sont avérés trop complexes, autant pour comprendre ce qu'il fallait commander que pour programmer des niveaux de voltage correspondant à des seuils de chiffre. Pour pallier cette difficulté, nous avons tenté d'utiliser les éléments du CPB, soit les boutons et la slider. Cependant, cela nécessite des manipulations longues (pare exemple : bouton A pour ajouter un participant, bouton B pour en enlever, slider pour valider) et rend l'opération fastidieuse. <br />
<br />
Enfin, l'utilisation de la bande neopixel du CPB limite le nombre total de participants à 10. Pour une prochaine itération, nous utiliserions une bande externe permettant la gestion de groupes plus larges.<br />
<br />
=== Résultats des tests utilisateurs === <br />
<br />
<br />
En résumé, les avantages sont :<br />
* un aspect ludique qui rend excitant le moment de passage à l'activité de sous-groupe et qui renforce l'engagement<br />
* un effet d'appartenance et de cohésion <br />
* une dimension pédagogique de rééquilibrage des postures : la personne qui forme peut choisir de contrôler la création des groupes ou de la rendre démocratique par sa délégation à un membre de la classe. Cela permet de garder une réelle impression de hasard<br />
<br />
<br />
Du côté des faiblesses à améliorer :<br />
* Encore trop complexe et long par rapport à sa réelle plus-value<br />
* Le design actuel est trop envahissant (boite, montre). Le rendre plus facile à intégrer et oublier lorsqu'il n'est pas utilisé<br />
<br />
== Licence, fichiers et documentation ==<br />
[[Fichier:By-nc.png|150px]] Cette œuvre est mise à disposition selon les termes de la [http://creativecommons.org/licenses/by-nc/4.0/ Licence Creative Commons Attribution - Pas d’Utilisation Commerciale 4.0 International].<br />
<br />
* Fichiers :<br />
Insérer ici vos fichiers ou les liens vers vos fichiers<br />
<br />
* Documentation : <br />
Insérer ici une petite documentation pour l'utilisation de l'objet si nécessaire<br />
<br />
== Bibliographie ==<br />
<br />
* Blair, C., Calkins, S., & Kopp, L. (2010). Self-regulation as the interface of emotional and cognitive development: Implications for education and academic achievement.<br />
* Pekrun, R., Goetz, T., Titz, W., & Perry, R. P. (2002). Academic emotions in students' self-regulated learning and achievement: A program of qualitative and quantitative research. Educational psychologist, 37(2), 91-105.</div>Djamileh Aminianhttps://edutechwiki.unige.ch/fmediawiki/index.php?title=STIC:STIC_III_(2020)/Forces_rouge,_rose,_vert,_jaune_ou_bleu_!&diff=154712STIC:STIC III (2020)/Forces rouge, rose, vert, jaune ou bleu !2021-09-04T09:26:21Z<p>Djamileh Aminian : /* Discussion */</p>
<hr />
<div>{{bloc important|Projet réalisé par [[Utilisateur:Djamileh_Aminian|Djamileh]] & [[Utilisateur:Simon_Jöhr|Simon]]}}<br />
<br />
== Introduction ==<br />
Durant la dernière année, le passage forcé à la téléformation, soit la formation synchrone à distance, a eu comme effet positif de pousser certains spécialistes de l’éducation à revisiter leurs scénarios pédagogiques pour revenir aux fondamentaux : comment aider les élèves à apprendre ce qu’ils sont sensés apprendre et comment les accompagner au mieux dans leur apprentissage ? Souvent, les difficultés relevées lors des bilans des derniers mois de distantiel ont fait émerger des problèmes qui existaient déjà en présence, mais qui restaient latents ou ignorés.<br />
<br />
En ce sens, l’apprentissage est fortement influencé par les émotions par lesquelles passent les élèves au cours de la formation, et en particulier pendant les moments synchrones. Pourtant, il est très complexe de détecter, mesurer, ou même faire exprimer les étudiant-es sur leur ressenti.<br />
<br />
En donnant leurs cours en visioconférence, nombreux formateurs et formatrices ont exprimé leur frustration de ne pas réussir à évaluer l’état émotionnel et autres indices non verbaux de leurs participant.e.s, retours essentiels pour adapter une explication ou ajuster le rythme. Et cet effet est loin d’être limité à la distance : il est également bien présent dans une salle de classe où il reste complexe de capter en temps réel les émotions d’un étudiant, processus complexe et dynamique.<br />
<br />
Notre projet prend sa racine dans ce constat. Deux questions ont alors émergé : <br />
* comment mesurer l'état émotionnel d'un-e apprenant-e, <br />
* et surtout, pour quel usage ?<br />
<br />
Dans ce contexte, nous avons pensé un dispositif de partage des ressentis de la classe à destination de l'équipe enseignante, et une utilisation de cette donnée comme retour au groupe.<br />
<br />
== Problème ==<br />
<br />
Le but de ce projet est de proposer une solution ludique à la constitution de groupes en classe, que cela soit en présence, à distance ou de manière comodale. En utilisant un Arduino Uno ou des CPX, la phase de constitution de groupes sera ainsi rapide, aléatoire et "fun" !<br />
<br />
Le ''Problem Statement'' peut s’exprimer ainsi : « Comment peut-on aider les formateurs et formatrices à identifier rapidement les difficultés dans l’apprentissage et, le cas échéant, à réagir ? »<br />
<br />
== Cahier des charges == <br />
=== Contexte et public ===<br />
Le public cible est composé de formateurs et formatrices d’adultes, en entreprise ou en institut. Il pourrait également être élargi aux enseignante.s du scolaire, mais la conscientisation et l’expression d’une émotion sont suffisamment complexes pour limiter notre premier dispositif à des adultes, disposant, à priori, d’une compréhension plus fine de leur état émotionnel. De plus, l’asymétrie dans la relation est supposée moins forte dans un groupe d’adultes en formation que dans une classe avec un enseignant et des enfants ou adolescents.<br />
<br />
===Objectifs===<br />
Le but du dispositif est de :<br />
* permettre la communication d'un niveau émotionnel perçu par l'étudiant.e à l'enseignant.e<br />
* faire émerger un état général de la classe et les différences dans l'acquisition du contenu<br />
* de manière plus pragmatique, de créer des groupes sur la base des éléments communiqués<br />
<br />
===Besoins et contraintes===<br />
L'idée du projet a beaucoup évolué entre la phase d'identification des besoins et les constatations sur les possibilités offertes par la technologie et l'expertise à disposition. Nous détaillons ci-dessous les besoins et contraintes qui nous ont menés à la solution présentée plus bas.<br />
<br />
Partant au début d’une idée de jauge émotionnelle dynamique, donnant en tout temps l’état émotionnel d’un groupe de participants, nous avons rapidement détecté, en phase d'idéation avec plusieurs spécialistes en éducation, un aspect extrêmement anxiogène pour le formateur dont le groupe enverrait des signaux d’ennui ou de frustration, durant une explication. <br />
<br />
Afin de juguler cet effet, tout en conservant la possibilité de communiquer un message sur l’état, nous avons adapté le dispositif pour permettre aux étudiants de transmettre leur état à des moments spécifiques de la formation, intégrés dans le scénario pédagogique. L'émotion étant un élément sensible à conscientiser, exprimer et partager au sein d'un groupe, nous avons estimé plus judicieux de faire exprimer son niveau d'aisance face à un contenu qui vient d'être transmis. Ainsi, un-e enseignant-e scénarisera des moments d'autodiagnostic des étudiant-es sur leur perception de compétence sur la thématique. Cette information peut être utilisée pour réaliser des groupes de travail : (1) les personnes qui ont compris peuvent être orientées sur un contenu plus avancé, en échange pendant que l'enseignant organiser une séance de question-réponse avec les personnes en difficulté ou (2) des groupes peuvent être créés pour intégrer des étudiant-es qui ont compris avec des étudiant-es qui ont besoin d'aide.<br />
<br />
Le dispositif est donc pensé comme un outil de sondage à certains moments du cours, pour évaluer les besoins du groupe, dans son ensemble. Il est souvent difficile de récolter des informations sincères lors d’évaluations à chaud, les étudiants réticents à communiquer publiquement leurs difficultés ou désintérêts pour le contenu. Par la technique de transmission, les étudiants pourraient communiquer leur émotion de manière anonyme, favorisant l'authenticité.<br />
<br />
De manière intéressante au fur et à mesure de l'avance du projet, il est ressorti des discussions avec un échantillon du public cible que l'aspect de notre projet qui les intéressait était moins la communication des émotions, mais la création facilitée des groupes. En effet, les formateurs et formatrices ayant travaillé à distance durant la dernière année se sont habitués à disposer d'une fonction de création de groupe aléatoire, selon un nombre total de participants et un nombre de groupe visé. Cette fonction serait très utile également en présence, en utilisant une carte Arduino ou un CPX pour calculer une répartition des élèves par groupe, avec en entrée le nombre d'élèves et les sous-groupes. Une fois les groupes constitués, l'étape suivante est de communiquer ces groupes à l'ensemble de la classe au travers de Lilypad ou autres technologies portables qui s'allument selon la couleur de leur groupe.<br />
<br />
===Apports===<br />
* Cohésion et sentiment d'appartenance au groupe comme soutien à l'apprentissage<br />
* Expression d'un état émotionnel épistémique comme bénéfique à l'apprentissage<br />
<br />
===Présentation du projet===<br />
Suite aux premières itérations dans l'empathie et la définition du projet, nous avons identifié plusieurs points clés qui ont réorienté notre projet :<br />
* la création d'un réseau de cartes Bluetooth contrôlées par Arduino s'est révélée trop ambitieuse, suite au manque de projets existants ou d'expertise sur lesquels s'appuyer, <br />
* l'envie marquée de notre échantillon cible qui s'est dirigée sur l'aspect création de groupe plus que sur la connaissance des états affectifs.<br />
<br />
Nous avons donc revu le projet en le divisant en 3 niveaux de difficulté, afin de réaliser un prototype utilisable, puis de l'améliorer en fonction des retours et du temps à disposition.<br />
* '''Niveau 1 : Création de groupe aléatoire''' : intérêts : facilitation de la création des groupes (demande reçue d'un formateur : "parce que Zoom nous a bien aidé pour cela à distance, je veux la même chose en présence!")<br />
* '''Niveau 2 : Communication du groupe à l’apprenant''' : intérêts : gamification, sentiment d’appartenance, coopération, cohésion<br />
* '''Niveau 3 : Communication de son sentiment de compétence''' : intérêts : plus facile que d'exprimer ses émotions, et plus facile à gérer par l'enseignant.e, par exemple les gens qui ont compris avec celles-ceux qui n'ont pas compris<br />
<br />
Nous avons réalisé complètement le niveau 1, ainsi que prototypé et testé le niveau 2 avec des cables avant de pouvoir gérer par Bluetooth un Bluefruit spécifique dans un réseau comprenant plusieurs Bluefruits. Les solutions avec code et prototypes sont décrites dans la section suivante.<br />
<br />
== Solutions explorées ==<br />
<br />
===1er prototype===<br />
La première solution envisagée comporte deux objets : <br />
* Un '''émetteur''' : facile d’utilisation et agréable à porter, nous penchons pour la solution d’un bracelet contenant un micro circuit type Lilypad, Arduino Gemma ou Tinyduino. L’apprenant disposerait de 4 boutons-pressoirs pour 4 émotions majeures à transmettre (intérêt, confusion, frustration, incompréhension), symbolisés par des logos ou émoticônes. Les messages sont transmis par Bluetooth.<br />
* Un '''récepteur''' : Une jauge, comprenant une bande Neopixels, connectée à un Arduino Uno. Les LED symboliseraient deux dimensions fournies : la couleur pour le type d'émotion et le nombre pour la quantité d'étudiant.e.s ayant transmis l'information. L'Arduino pourrait gérer l'information, en émettant un son lors du dépassement d'un seuil prédéfini sur une émotion par exemple.<br />
<br />
====Maquettes====<br />
<u>1ère itération</u><br />
<br />
[[Fichier:Maquette_projet_STIC_III_Djamileh_et_Simon.jpg|néant|vignette|1103x1103px|Maquette n°1 du projet]]<br />
<br />
<u>2e itération</u><br />
<br />
L'Arduino Uno lance une séquence de randomisation de couleur, en affiche une, puis les participant.e.s font de même sur leur CPX. Si les couleurs affichées "matchent", le groupe est constitué et on peut ainsi passer à la constitution aléatoire du groupe suivant. <br />
[[Fichier:2e Maquette projet STIC III Djamileh et Simon .jpg|néant|vignette|1103x1103px|Maquette n°2 du projet]]<br />
<br />
====Code====<br />
<u>Version 1.0 du code CPX :</u> <syntaxhighlight lang="javascript"><br />
input.buttonA.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 200<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(40)<br />
color2 += Math.randomRange(1, 3)<br />
light.setPhotonPenHue(color2)<br />
}<br />
light.photonFlip()<br />
})<br />
input.buttonsAB.onEvent(ButtonEvent.Click, function () {<br />
control.reset()<br />
})<br />
input.buttonB.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 300<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
color2 += 3<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(50)<br />
}<br />
})<br />
let tonalité = 0<br />
let durée = 0<br />
let color2 = 0<br />
light.setBrightness(158)<br />
music.setVolume(167)<br />
forever(function () {<br />
<br />
})<br />
</syntaxhighlight><br />
<br />
===2e prototype===<br />
<br />
====Maquette====<br />
<u>Boîte émettrice</u><br />
[[Fichier:Boite CPX STIC III.png|néant|vignette|Plan découpe boîte émettrice CPX]]<br />
[[Fichier:Etiquettes Boite CPX STIC III.png|néant|vignette|Etiquettes boîte CPX]]<br />
[[Fichier:Maquette boîte CPX.png|néant|vignette|Rendu de la boîte]]<br />
[[Fichier:Boîte CPX.jpg|néant|vignette|Boîte en cours de réalisation]]<br />
<br />
<u>Cadrans récepteurs</u><br />
[[Fichier:Bracelets CPX STIC III.png|néant|vignette|Cadrans récepteurs]]<br />
<br />
====Code====<br />
[[Fichier:CPX firstproto.jpg|vignette|droite|Une étape dans le test du code - 5 binomes de noël! ]]<br />
La solution présentée ici s'occupe du niveau 1, soit la création de groupe aléatoire à l'aide d'un CPX Bluefruit.<br />
Elle a été codée en CircuitPython. Nous avons rédigé le code nous-mêmes, avec deux supports : la création du dictionnaire pour la randomisation été possible grâce à l'aimable contribution de notre collègue Jérôme. Concernant l'envoi et la réception de données par Bluetooth, nous nous sommes basés sur les [https://learn.adafruit.com/circuitpython-nrf52840/bluetooth-basics tutoriels Adafruit], ainsi que deux projets utilisant des fonctionnalités se rapprochant de notre projet :<br />
* [https://learn.adafruit.com/circuit-playground-bluefruit-neopixel-animation-and-color-remote-control projet 1]<br />
* [https://learn.adafruit.com/color-remote-with-circuit-playground-bluefruit projet 2]<br />
<br />
'''Code pour le CPB Emetteur'''<br />
<syntaxhighlight lang="python"><br />
# Groupify !<br />
# Un projet de S!m & Dja<br />
# Code CircuitPython pour la répartition dans les groupes (MASTER)<br />
<br />
"""<br />
SETUP GENERAL<br />
"""<br />
<br />
# LIBRAIRIES<br />
import random<br />
import time<br />
<br />
# Librairie pour gérer la bande neopixel du bluefruit<br />
from adafruit_circuitplayground.bluefruit import cpb<br />
<br />
# Librairies pour gérer la transmission bluetooth<br />
from adafruit_ble import BLERadio<br />
from adafruit_ble.advertising.standard import ProvideServicesAdvertisement<br />
from adafruit_ble.services.nordic import UARTService<br />
<br />
# Librairie pour envoyer la couleur<br />
from adafruit_bluefruit_connect.color_packet import ColorPacket<br />
<br />
# Helper function pour gérer la connexion entre plusieurs Bluefruits<br />
# reprise sur https://learn.adafruit.com/circuit-playground-bluefruit-neopixel-<br />
# animation-and-color-remote-control/remote-control-code<br />
def send_packet(uart_connection_name, packet):<br />
"""Returns False if no longer connected."""<br />
try:<br />
uart_connection_name[UARTService].write(packet.to_bytes())<br />
except: # pylint: disable=bare-except<br />
try:<br />
uart_connection_name.disconnect()<br />
except: # pylint: disable=bare-except<br />
pass<br />
return False<br />
return True<br />
<br />
<br />
# Input utilisateur<br />
participants = int(input("Nombre de participants : "))<br />
groupe = int(input("Nombre de groupes : "))<br />
<br />
"""<br />
CREATION DES GROUPES<br />
"""<br />
<br />
# création listes à long. variable (+ 1 pour compenser la numération depuis 0)<br />
liste_part = list(range(1, participants + 1)) # print(liste_part)<br />
nb_part = len(liste_part) + 1<br />
liste_groupe = list(range(1, groupe + 1)) # print(liste_groupe)<br />
<br />
# Déf. grille (dict. de listes) combinations possibles<br />
clé_tableau = str(participants) + "_" + str(groupe)<br />
# !!! ajouter combinaisons pas possible : eg. tour de roue lumineuse/son pourri !!!<br />
grille_repartition = {<br />
"10_5": [2, 2, 2, 2, 2],<br />
"10_4": [2, 2, 3, 3],<br />
"10_3": [3, 3, 4],<br />
"10_2": [5, 5],<br />
"9_4": [2, 2, 2, 3],<br />
"9_3": [3, 3, 3],<br />
"9_2": [4, 5],<br />
"8_4": [2, 2, 2, 2],<br />
"8_3": [2, 3, 3],<br />
"8_2": [4, 4],<br />
"7_3": [2, 2, 3],<br />
"7_2": [4, 3],<br />
"6_3": [2, 2, 2],<br />
"6_2": [3, 3],<br />
"5_2": [2, 3],<br />
"4_2": [2, 2],<br />
}<br />
# détermination du nb et taille des groupes à créer<br />
taille_groupe = grille_repartition[clé_tableau]<br />
print(taille_groupe)<br />
<br />
# création (dict) répartition aléatoire<br />
dict_repartition = {} # initialisation<br />
for i in range(0, len(taille_groupe)):<br />
dict_repartition[liste_groupe[i]] = [] # création des items du dictionnaire<br />
for j in range(0, taille_groupe[i]):<br />
etu = liste_part[random.randint(0, len(liste_part) - 1)]<br />
dict_repartition[liste_groupe[i]].append(etu)<br />
liste_part.remove(etu)<br />
# print (liste_part)<br />
# print (dict_repartition)<br />
print(dict_repartition)<br />
<br />
# Définition des groupes avec couleurs<br />
groupeList = list(dict_repartition.values())<br />
print(groupeList)<br />
<br />
# GESTION NEOPIXEL<br />
cpb.pixels.brightness = 0.05<br />
<br />
# Grille de définition des couleurs de groupe<br />
dict_couleur = {<br />
"gr1": (0, 255, 0),<br />
"gr2": (255, 0, 255),<br />
"gr3": (255, 255, 0),<br />
"gr4": (0, 255, 255),<br />
"gr5": (255, 0, 0),<br />
}<br />
# print(dict_couleur)<br />
<br />
# transf. dict -> list<br />
liste_couleur = list(dict_couleur.values())<br />
print("liste de couleur totale: ", liste_couleur)<br />
<br />
# définition des couleurs selon nb de groupe<br />
dict_neopix = {}<br />
for i in range(0, len(taille_groupe)):<br />
codecouleur = liste_couleur[i]<br />
dict_neopix[i] = codecouleur<br />
# print(dict_neopix)<br />
<br />
# transf. dict -> list<br />
liste_neopix = list(dict_neopix.values())<br />
print("liste de couleur spécifique: ", liste_neopix)<br />
<br />
# Attribution des couleurs par pixel<br />
liste_pixels = []<br />
for i in range(0, nb_part):<br />
for j in range(0, len(taille_groupe)):<br />
if i in groupeList[j]:<br />
pix = liste_neopix[j]<br />
liste_pixels.append(pix)<br />
print("couleurs des pixels : ", liste_pixels)<br />
<br />
"""<br />
TRANSMISSION AUX BLUEFRUITS PARTICIPANTS (SLAVES)<br />
"""<br />
# Setup de la transmission<br />
ble = BLERadio()<br />
uart_service = UARTService()<br />
advertisement = ProvideServicesAdvertisement(uart_service)<br />
<br />
uart_connection = None<br />
# Controle sur des connexions disponibles<br />
if ble.connected:<br />
for connection in ble.connections:<br />
if UARTService in connection:<br />
uart_connection = connection<br />
break<br />
<br />
while True:<br />
# Allumage de la bnde neopixel / visualisation des groupes formés<br />
for i in range(0, nb_part - 1):<br />
cpb.pixels[i] = liste_pixels[i]<br />
<br />
# Gestion de la transmission<br />
if not uart_connection or not uart_connection.connected:<br />
# Condition : pas de connexion > scan<br />
print("Scanning...")<br />
for adv in ble.start_scan(ProvideServicesAdvertisement, timeout=5): # Scan...<br />
if UARTService in adv.services: # si periphérique existe<br />
print("Found a UARTService advertisement.")<br />
uart_connection = ble.connect(adv) # crée une connexion<br />
break<br />
# Arrêt du scannage de l'environnement<br />
ble.stop_scan()<br />
<br />
# si connexion existante :<br />
while uart_connection and uart_connection.connected:<br />
if cpb.button_a: # Transmission des données neopixels avec A<br />
print("Bouton A - envoi données")<br />
color = cpb.pixels[0]<br />
if not send_packet(uart_connection, ColorPacket(color)):<br />
uart_connection = None<br />
continue<br />
time.sleep(0.1) # Delay to prevent sending packets too quickly.<br />
</syntaxhighlight><br />
<br />
'''Code pour le CPB Récepteur (participants)'''<br />
<syntaxhighlight lang="python"><br />
"""<br />
Code pour les bluefruits participants<br />
"""<br />
import time<br />
<br />
from adafruit_circuitplayground.bluefruit import cpb<br />
<br />
from adafruit_ble import BLERadio<br />
from adafruit_ble.advertising.standard import ProvideServicesAdvertisement<br />
from adafruit_ble.services.nordic import UARTService<br />
<br />
from adafruit_bluefruit_connect.packet import Packet<br />
from adafruit_bluefruit_connect.color_packet import ColorPacket<br />
<br />
num_pixels = 10<br />
<br />
# animation initiale - "chase" est une animation de base dans les librairies<br />
# d'animation pour neopixel (cf neopixel überguide)<br />
def color_chase(color, wait):<br />
for i in range(num_pixels):<br />
cpb.pixels[i] = color<br />
time.sleep(wait)<br />
cpb.pixels.show()<br />
time.sleep(0.5)<br />
<br />
<br />
# Grille des couleurs de groupe pour animation<br />
dict_couleur = {<br />
"gr1": (0, 255, 0),<br />
"gr2": (255, 0, 255),<br />
"gr3": (255, 255, 0),<br />
"gr4": (0, 255, 255),<br />
"gr5": (255, 0, 0),<br />
}<br />
<br />
liste_couleur = list(dict_couleur.values())<br />
print(liste_couleur)<br />
<br />
# Setup standard pour la réception<br />
ble = BLERadio()<br />
uart = UARTService()<br />
advertisement = ProvideServicesAdvertisement(uart)<br />
<br />
cpb.pixels.brightness = 0.05<br />
receptionGroupe = False<br />
<br />
while True:<br />
ble.start_advertising(advertisement)<br />
<br />
while not cpb.switch:<br />
for i in range(0, len(liste_couleur)):<br />
couleurCode = liste_couleur[i]<br />
color_chase(couleurCode, 0.05)<br />
<br />
if cpb.switch:<br />
while not ble.connected:<br />
pass<br />
ble.stop_advertising()<br />
<br />
while ble.connected:<br />
if uart.in_waiting:<br />
packet = Packet.from_stream(uart)<br />
if isinstance(packet, ColorPacket):<br />
cpb.pixels.fill(packet.color)<br />
</syntaxhighlight><br />
<br />
== Test(s) de la solution ==<br />
<br />
===Cognitive walkthrough===<br />
<br />
Pour produire ce cognitive walkthrough, nous nous sommes basés sur les principes du [https://edutechwiki.unige.ch/en/Cognitive_walkthrough#Fluid_project_overview Fluid Project].<br />
<br />
==== Persona ====<br />
[[Fichier:PERSONA INGO NITO.jpg|néant|cadre]]<br />
<br />
==== Objectifs ====<br />
<br />
* Créer des groupes grâce au dispositif émetteur<br />
* Communiquer ces groupes aux dispositifs récepteurs<br />
* Renforcer l'engagement grâce à un dispositif ludique et actif<br />
<br />
==== Scénario d'utilisation ====<br />
<br />
# (en amont) Réfléchir à un combien de groupes seront créés en fonction du nombre de participant.e.s disponible.s<br />
# Allumage du dispositif<br />
# Lancement du dispositif<br />
# Réalisation d'une séquence de composition de groupe<br />
# Lancement et réalisation de la séquence suivante de communication avec envoi des groupes constitués aux dispositifs distants<br />
# Mise hors tension du dispositif<br />
<br />
=== Tests utilisateur·trice·s===<br />
<br />
''Restant à réaliser...''<br />
<br />
'''Ébauche du scénario''' <br />
<br />
Le test utilisateur est une méthode utilisée pour évaluer l’expérience utilisateur d’un système, mais également les forces et les faiblesses de celui-ci. Cette méthode, consiste à mettre l’utilisateur·trice en situation « réelle » afin d’observer ses comportements et ses actions lorsqu’il exécute des tâches prédéfinies qui lui sont administrées sous la forme d’un scénario. Il leur est alors demandé de nous renseigner sur leurs expériences.<br />
<br />
Lors de cette phase, un prototype du projet est présenté à des utilisateur·trices recrutés au sein du public cible. A ce stade, le prototype devrait être suffisamment abouti pour offrir les principales fonctionnalités constitutives de la version finale. Néanmoins, il diffère de celle-ci puisque certaines fonctionnalités accessoires ne pourraient ne pas être encore implémentées. En présentant assez tôt un produit relativement proche de la version finale, nous entendons nous assurer que les directions prises dans les précédentes phases de conception soient les plus à même de répondre aux besoins des utilisateur·trice·s. Le prototype sera modifié en fonction des retours formulés par les observations réalisées ainsi que par les analyses des résultats des tests. <br />
<br />
Le test utilisateur se déroulera en 3 étapes :<br />
#Accueil des participants<br />
#Réalisation des tâches<br />
#Entretien succinct<br />
<br />
Dans la première étape, le participant sera accueilli, le contexte et le test utilisateur lui seront alors présentés de manière générale. Lors du test, l’utilisateur·trice « découvrira » le dispositif en réalisant des tâches préparées au préalable (scénario des tâches). Ici, nous éprouverons l’expérience de l’utilisateur·trice.<br />
<br />
Après avoir exposé le contexte dans lequel le scénario prend place, nous demanderons à la personne d’accomplir les tâches décrites dans le tableau "scénario des tâches" (encore en cours de réalisation). De plus, nous encouragerons le/la participant·e à formuler à voix haute ses pensées et ressentis lors de l’utilisation de l’outil. <br />
<br />
Les participant·e·s seront accueillis avec la consigne suivante : <br />
{{Citation encadrée | ''Merci d’avoir accepté de faire ce test avec moi aujourd'hui. Je travaille sur le développement d’un outil pour la constitution aléatoire de groupes de travail dans une classe. Cette technique permet de constituer des groupes rapidement et de communiquer ceux-ci aux participant.e.s quasi instantanément.''}}<br />
<br />
Le scénario des tâches se composera de deux éléments : le contexte et les tâches à effectuer par le/la participant.e. Le contexte aura pour but de mettre l’utilisateur·trice dans une situation réaliste qui se rapprochera de son quotidien et/ou du contexte pendant lequel il pourrait être mené à utiliser le dispositif. Le contexte sera formulé de la manière suivante :<br />
<br />
{{Citation encadrée |''En cours d'édition...''}}<br />
<br />
Après avoir exposé le contexte dans lequel le scénario prend place, nous demanderons au participant d’accomplir les tâches décrites dans le tableau "scénario des tâches" (encore en cours de réalisation).<br />
<br />
Pour l’étape des tâches, nous donnerons les consignes suivantes :<br />
<br />
{{Citation encadrée |''En cours d'édition...''}}<br />
<br />
Chaque tâche sera expliquée au fur et à mesure au participant.<br />
{| style="border: 1px solid black; border-spacing: 0; margin: 1em auto;"<br />
|+ '''Scénario des tâches'''<br />
|-<br />
! style="border: 1px solid black; padding: 5px; background: #D4D4D8; width: 400pt;" | Tâche 1<br />
! style="border: 1px solid black; padding: 5px; background: #D4D4D8; width: 400pt;" | Tâche 2<br />
|-<br />
| style="border: 1px solid black; padding: 5px; vertical-align: top;" |''En cours de création...''<br />
| style="border: 1px solid black; padding: 5px; vertical-align: top; width: 200pt;" |''En cours de création...''<br />
|}<br />
<br />
== Discussion ==<br />
=== Design === <br />
Le design actuel est parti d'une idée d'utiliser la découpe laser pour la boîte émettrice et une forme de montre pour les récepteurs participants, avec un côté vintage et nostalgique des séries des années 80.<br />
Cela dit, nous avions tout de même recherché des produits plus petits et plus discrets, faciles à transporter et à manipuler.<br />
Cela s'est confirmé lors des tests, où en fin de compte, les participants ont apprécié avoir des objets légers et faciles à manipuler en main.<br />
Pour une prochain prototype, nous nous orienterions vers un Gemma ou Flora, sur un patch en broderie numérique pour les récepteurs participants.<br />
Du côté émetteur, il est resté jusqu'à la fin la difficulté de l'input du nombre de participants et du nombre de groupes attendus. Les potentiomètres se sont avérés trop complexes, autant pour comprendre ce qu'il fallait commander que pour programmer des niveaux de voltage correspondant à des seuils de chiffre. Pour pallier cette difficulté, nous avons tenté d'utiliser les éléments du CPB, soit les boutons et la slider. Cependant, cela nécessite des manipulations longues (pare exemple : bouton A pour ajouter un participant, bouton B pour en enlever, slider pour valider) et rend l'opération fastidieuse. <br />
Enfin, l'utilisation de la bande neopixel du CPB limite le nombre total de participants à 10. Pour une prochaine itération, nous utiliserions une bande externe permettant la gestion de groupes plus larges.<br />
<br />
=== Résultats des tests utilisateurs === <br />
<br />
<br />
En résumé, les avantages sont :<br />
* un aspect ludique qui rend excitant le moment de passage à l'activité de sous-groupe et qui renforce l'engagement<br />
* un effet d'appartenance et de cohésion <br />
* une dimension pédagogique de rééquilibrage des postures : la personne qui forme peut choisir de contrôler la création des groupes ou de la rendre démocratique par sa délégation à un membre de la classe. Cela permet de garder une réelle impression de hasard<br />
<br />
<br />
Du côté des faiblesses à améliorer :<br />
* Encore trop complexe et long par rapport à sa réelle plus-value<br />
* Le design actuel est trop envahissant (boite, montre). Le rendre plus facile à intégrer et oublier lorsqu'il n'est pas utilisé<br />
<br />
== Licence, fichiers et documentation ==<br />
[[Fichier:By-nc.png|150px]] Cette œuvre est mise à disposition selon les termes de la [http://creativecommons.org/licenses/by-nc/4.0/ Licence Creative Commons Attribution - Pas d’Utilisation Commerciale 4.0 International].<br />
<br />
* Fichiers :<br />
Insérer ici vos fichiers ou les liens vers vos fichiers<br />
<br />
* Documentation : <br />
Insérer ici une petite documentation pour l'utilisation de l'objet si nécessaire<br />
<br />
== Bibliographie ==<br />
<br />
* Blair, C., Calkins, S., & Kopp, L. (2010). Self-regulation as the interface of emotional and cognitive development: Implications for education and academic achievement.<br />
* Pekrun, R., Goetz, T., Titz, W., & Perry, R. P. (2002). Academic emotions in students' self-regulated learning and achievement: A program of qualitative and quantitative research. Educational psychologist, 37(2), 91-105.</div>Djamileh Aminianhttps://edutechwiki.unige.ch/fmediawiki/index.php?title=STIC:STIC_III_(2020)/Forces_rouge,_rose,_vert,_jaune_ou_bleu_!&diff=154708STIC:STIC III (2020)/Forces rouge, rose, vert, jaune ou bleu !2021-09-04T08:59:11Z<p>Djamileh Aminian : /* Objectifs */</p>
<hr />
<div>{{bloc important|Projet réalisé par [[Utilisateur:Djamileh_Aminian|Djamileh]] & [[Utilisateur:Simon_Jöhr|Simon]]}}<br />
<br />
== Introduction ==<br />
Durant la dernière année, le passage forcé à la téléformation, soit la formation synchrone à distance, a eu comme effet positif de pousser certains spécialistes de l’éducation à revisiter leurs scénarios pédagogiques pour revenir aux fondamentaux : comment aider les élèves à apprendre ce qu’ils sont sensés apprendre et comment les accompagner au mieux dans leur apprentissage ? Souvent, les difficultés relevées lors des bilans des derniers mois de distantiel ont fait émerger des problèmes qui existaient déjà en présence, mais qui restaient latents ou ignorés.<br />
<br />
En ce sens, l’apprentissage est fortement influencé par les émotions par lesquelles passent les élèves au cours de la formation, et en particulier pendant les moments synchrones. Pourtant, il est très complexe de détecter, mesurer, ou même faire exprimer les étudiant-es sur leur ressenti.<br />
<br />
En donnant leurs cours en visioconférence, nombreux formateurs et formatrices ont exprimé leur frustration de ne pas réussir à évaluer l’état émotionnel et autres indices non verbaux de leurs participant.e.s, retours essentiels pour adapter une explication ou ajuster le rythme. Et cet effet est loin d’être limité à la distance : il est également bien présent dans une salle de classe où il reste complexe de capter en temps réel les émotions d’un étudiant, processus complexe et dynamique.<br />
<br />
Notre projet prend sa racine dans ce constat. Deux questions ont alors émergé : <br />
* comment mesurer l'état émotionnel d'un-e apprenant-e, <br />
* et surtout, pour quel usage ?<br />
<br />
Dans ce contexte, nous avons pensé un dispositif de partage des ressentis de la classe à destination de l'équipe enseignante, et une utilisation de cette donnée comme retour au groupe.<br />
<br />
== Problème ==<br />
<br />
Le but de ce projet est de proposer une solution ludique à la constitution de groupes en classe, que cela soit en présence, à distance ou de manière comodale. En utilisant un Arduino Uno ou des CPX, la phase de constitution de groupes sera ainsi rapide, aléatoire et "fun" !<br />
<br />
Le ''Problem Statement'' peut s’exprimer ainsi : « Comment peut-on aider les formateurs et formatrices à identifier rapidement les difficultés dans l’apprentissage et, le cas échéant, à réagir ? »<br />
<br />
== Cahier des charges == <br />
=== Contexte et public ===<br />
Le public cible est composé de formateurs et formatrices d’adultes, en entreprise ou en institut. Il pourrait également être élargi aux enseignante.s du scolaire, mais la conscientisation et l’expression d’une émotion sont suffisamment complexes pour limiter notre premier dispositif à des adultes, disposant, à priori, d’une compréhension plus fine de leur état émotionnel. De plus, l’asymétrie dans la relation est supposée moins forte dans un groupe d’adultes en formation que dans une classe avec un enseignant et des enfants ou adolescents.<br />
<br />
===Objectifs===<br />
Le but du dispositif est de :<br />
* permettre la communication d'un niveau émotionnel perçu par l'étudiant.e à l'enseignant.e<br />
* faire émerger un état général de la classe et les différences dans l'acquisition du contenu<br />
* de manière plus pragmatique, de créer des groupes sur la base des éléments communiqués<br />
<br />
===Besoins et contraintes===<br />
L'idée du projet a beaucoup évolué entre la phase d'identification des besoins et les constatations sur les possibilités offertes par la technologie et l'expertise à disposition. Nous détaillons ci-dessous les besoins et contraintes qui nous ont menés à la solution présentée plus bas.<br />
<br />
Partant au début d’une idée de jauge émotionnelle dynamique, donnant en tout temps l’état émotionnel d’un groupe de participants, nous avons rapidement détecté, en phase d'idéation avec plusieurs spécialistes en éducation, un aspect extrêmement anxiogène pour le formateur dont le groupe enverrait des signaux d’ennui ou de frustration, durant une explication. <br />
<br />
Afin de juguler cet effet, tout en conservant la possibilité de communiquer un message sur l’état, nous avons adapté le dispositif pour permettre aux étudiants de transmettre leur état à des moments spécifiques de la formation, intégrés dans le scénario pédagogique. L'émotion étant un élément sensible à conscientiser, exprimer et partager au sein d'un groupe, nous avons estimé plus judicieux de faire exprimer son niveau d'aisance face à un contenu qui vient d'être transmis. Ainsi, un-e enseignant-e scénarisera des moments d'autodiagnostic des étudiant-es sur leur perception de compétence sur la thématique. Cette information peut être utilisée pour réaliser des groupes de travail : (1) les personnes qui ont compris peuvent être orientées sur un contenu plus avancé, en échange pendant que l'enseignant organiser une séance de question-réponse avec les personnes en difficulté ou (2) des groupes peuvent être créés pour intégrer des étudiant-es qui ont compris avec des étudiant-es qui ont besoin d'aide.<br />
<br />
Le dispositif est donc pensé comme un outil de sondage à certains moments du cours, pour évaluer les besoins du groupe, dans son ensemble. Il est souvent difficile de récolter des informations sincères lors d’évaluations à chaud, les étudiants réticents à communiquer publiquement leurs difficultés ou désintérêts pour le contenu. Par la technique de transmission, les étudiants pourraient communiquer leur émotion de manière anonyme, favorisant l'authenticité.<br />
<br />
De manière intéressante au fur et à mesure de l'avance du projet, il est ressorti des discussions avec un échantillon du public cible que l'aspect de notre projet qui les intéressait était moins la communication des émotions, mais la création facilitée des groupes. En effet, les formateurs et formatrices ayant travaillé à distance durant la dernière année se sont habitués à disposer d'une fonction de création de groupe aléatoire, selon un nombre total de participants et un nombre de groupe visé. Cette fonction serait très utile également en présence, en utilisant une carte Arduino ou un CPX pour calculer une répartition des élèves par groupe, avec en entrée le nombre d'élèves et les sous-groupes. Une fois les groupes constitués, l'étape suivante est de communiquer ces groupes à l'ensemble de la classe au travers de Lilypad ou autres technologies portables qui s'allument selon la couleur de leur groupe.<br />
<br />
===Apports===<br />
* Cohésion et sentiment d'appartenance au groupe comme soutien à l'apprentissage<br />
* Expression d'un état émotionnel épistémique comme bénéfique à l'apprentissage<br />
<br />
===Présentation du projet===<br />
Suite aux premières itérations dans l'empathie et la définition du projet, nous avons identifié plusieurs points clés qui ont réorienté notre projet :<br />
* la création d'un réseau de cartes Bluetooth contrôlées par Arduino s'est révélée trop ambitieuse, suite au manque de projets existants ou d'expertise sur lesquels s'appuyer, <br />
* l'envie marquée de notre échantillon cible qui s'est dirigée sur l'aspect création de groupe plus que sur la connaissance des états affectifs.<br />
<br />
Nous avons donc revu le projet en le divisant en 3 niveaux de difficulté, afin de réaliser un prototype utilisable, puis de l'améliorer en fonction des retours et du temps à disposition.<br />
* '''Niveau 1 : Création de groupe aléatoire''' : intérêts : facilitation de la création des groupes (demande reçue d'un formateur : "parce que Zoom nous a bien aidé pour cela à distance, je veux la même chose en présence!")<br />
* '''Niveau 2 : Communication du groupe à l’apprenant''' : intérêts : gamification, sentiment d’appartenance, coopération, cohésion<br />
* '''Niveau 3 : Communication de son sentiment de compétence''' : intérêts : plus facile que d'exprimer ses émotions, et plus facile à gérer par l'enseignant.e, par exemple les gens qui ont compris avec celles-ceux qui n'ont pas compris<br />
<br />
Nous avons réalisé complètement le niveau 1, ainsi que prototypé et testé le niveau 2 avec des cables avant de pouvoir gérer par Bluetooth un Bluefruit spécifique dans un réseau comprenant plusieurs Bluefruits. Les solutions avec code et prototypes sont décrites dans la section suivante.<br />
<br />
== Solutions explorées ==<br />
<br />
===1er prototype===<br />
La première solution envisagée comporte deux objets : <br />
* Un '''émetteur''' : facile d’utilisation et agréable à porter, nous penchons pour la solution d’un bracelet contenant un micro circuit type Lilypad, Arduino Gemma ou Tinyduino. L’apprenant disposerait de 4 boutons-pressoirs pour 4 émotions majeures à transmettre (intérêt, confusion, frustration, incompréhension), symbolisés par des logos ou émoticônes. Les messages sont transmis par Bluetooth.<br />
* Un '''récepteur''' : Une jauge, comprenant une bande Neopixels, connectée à un Arduino Uno. Les LED symboliseraient deux dimensions fournies : la couleur pour le type d'émotion et le nombre pour la quantité d'étudiant.e.s ayant transmis l'information. L'Arduino pourrait gérer l'information, en émettant un son lors du dépassement d'un seuil prédéfini sur une émotion par exemple.<br />
<br />
====Maquettes====<br />
<u>1ère itération</u><br />
<br />
[[Fichier:Maquette_projet_STIC_III_Djamileh_et_Simon.jpg|néant|vignette|1103x1103px|Maquette n°1 du projet]]<br />
<br />
<u>2e itération</u><br />
<br />
L'Arduino Uno lance une séquence de randomisation de couleur, en affiche une, puis les participant.e.s font de même sur leur CPX. Si les couleurs affichées "matchent", le groupe est constitué et on peut ainsi passer à la constitution aléatoire du groupe suivant. <br />
[[Fichier:2e Maquette projet STIC III Djamileh et Simon .jpg|néant|vignette|1103x1103px|Maquette n°2 du projet]]<br />
<br />
====Code====<br />
<u>Version 1.0 du code CPX :</u> <syntaxhighlight lang="javascript"><br />
input.buttonA.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 200<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(40)<br />
color2 += Math.randomRange(1, 3)<br />
light.setPhotonPenHue(color2)<br />
}<br />
light.photonFlip()<br />
})<br />
input.buttonsAB.onEvent(ButtonEvent.Click, function () {<br />
control.reset()<br />
})<br />
input.buttonB.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 300<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
color2 += 3<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(50)<br />
}<br />
})<br />
let tonalité = 0<br />
let durée = 0<br />
let color2 = 0<br />
light.setBrightness(158)<br />
music.setVolume(167)<br />
forever(function () {<br />
<br />
})<br />
</syntaxhighlight><br />
<br />
===2e prototype===<br />
<br />
====Maquette====<br />
<u>Boîte émettrice</u><br />
[[Fichier:Boite CPX STIC III.png|néant|vignette|Plan découpe boîte émettrice CPX]]<br />
[[Fichier:Etiquettes Boite CPX STIC III.png|néant|vignette|Etiquettes boîte CPX]]<br />
[[Fichier:Maquette boîte CPX.png|néant|vignette|Rendu de la boîte]]<br />
[[Fichier:Boîte CPX.jpg|néant|vignette|Boîte en cours de réalisation]]<br />
<br />
<u>Cadrans récepteurs</u><br />
[[Fichier:Bracelets CPX STIC III.png|néant|vignette|Cadrans récepteurs]]<br />
<br />
====Code====<br />
[[Fichier:CPX firstproto.jpg|vignette|droite|Une étape dans le test du code - 5 binomes de noël! ]]<br />
La solution présentée ici s'occupe du niveau 1, soit la création de groupe aléatoire à l'aide d'un CPX Bluefruit.<br />
Elle a été codée en CircuitPython. Nous avons rédigé le code nous-mêmes, avec deux supports : la création du dictionnaire pour la randomisation été possible grâce à l'aimable contribution de notre collègue Jérôme. Concernant l'envoi et la réception de données par Bluetooth, nous nous sommes basés sur les [https://learn.adafruit.com/circuitpython-nrf52840/bluetooth-basics tutoriels Adafruit], ainsi que deux projets utilisant des fonctionnalités se rapprochant de notre projet :<br />
* [https://learn.adafruit.com/circuit-playground-bluefruit-neopixel-animation-and-color-remote-control projet 1]<br />
* [https://learn.adafruit.com/color-remote-with-circuit-playground-bluefruit projet 2]<br />
<br />
'''Code pour le CPB Emetteur'''<br />
<syntaxhighlight lang="python"><br />
# Groupify !<br />
# Un projet de S!m & Dja<br />
# Code CircuitPython pour la répartition dans les groupes (MASTER)<br />
<br />
"""<br />
SETUP GENERAL<br />
"""<br />
<br />
# LIBRAIRIES<br />
import random<br />
import time<br />
<br />
# Librairie pour gérer la bande neopixel du bluefruit<br />
from adafruit_circuitplayground.bluefruit import cpb<br />
<br />
# Librairies pour gérer la transmission bluetooth<br />
from adafruit_ble import BLERadio<br />
from adafruit_ble.advertising.standard import ProvideServicesAdvertisement<br />
from adafruit_ble.services.nordic import UARTService<br />
<br />
# Librairie pour envoyer la couleur<br />
from adafruit_bluefruit_connect.color_packet import ColorPacket<br />
<br />
# Helper function pour gérer la connexion entre plusieurs Bluefruits<br />
# reprise sur https://learn.adafruit.com/circuit-playground-bluefruit-neopixel-<br />
# animation-and-color-remote-control/remote-control-code<br />
def send_packet(uart_connection_name, packet):<br />
"""Returns False if no longer connected."""<br />
try:<br />
uart_connection_name[UARTService].write(packet.to_bytes())<br />
except: # pylint: disable=bare-except<br />
try:<br />
uart_connection_name.disconnect()<br />
except: # pylint: disable=bare-except<br />
pass<br />
return False<br />
return True<br />
<br />
<br />
# Input utilisateur<br />
participants = int(input("Nombre de participants : "))<br />
groupe = int(input("Nombre de groupes : "))<br />
<br />
"""<br />
CREATION DES GROUPES<br />
"""<br />
<br />
# création listes à long. variable (+ 1 pour compenser la numération depuis 0)<br />
liste_part = list(range(1, participants + 1)) # print(liste_part)<br />
nb_part = len(liste_part) + 1<br />
liste_groupe = list(range(1, groupe + 1)) # print(liste_groupe)<br />
<br />
# Déf. grille (dict. de listes) combinations possibles<br />
clé_tableau = str(participants) + "_" + str(groupe)<br />
# !!! ajouter combinaisons pas possible : eg. tour de roue lumineuse/son pourri !!!<br />
grille_repartition = {<br />
"10_5": [2, 2, 2, 2, 2],<br />
"10_4": [2, 2, 3, 3],<br />
"10_3": [3, 3, 4],<br />
"10_2": [5, 5],<br />
"9_4": [2, 2, 2, 3],<br />
"9_3": [3, 3, 3],<br />
"9_2": [4, 5],<br />
"8_4": [2, 2, 2, 2],<br />
"8_3": [2, 3, 3],<br />
"8_2": [4, 4],<br />
"7_3": [2, 2, 3],<br />
"7_2": [4, 3],<br />
"6_3": [2, 2, 2],<br />
"6_2": [3, 3],<br />
"5_2": [2, 3],<br />
"4_2": [2, 2],<br />
}<br />
# détermination du nb et taille des groupes à créer<br />
taille_groupe = grille_repartition[clé_tableau]<br />
print(taille_groupe)<br />
<br />
# création (dict) répartition aléatoire<br />
dict_repartition = {} # initialisation<br />
for i in range(0, len(taille_groupe)):<br />
dict_repartition[liste_groupe[i]] = [] # création des items du dictionnaire<br />
for j in range(0, taille_groupe[i]):<br />
etu = liste_part[random.randint(0, len(liste_part) - 1)]<br />
dict_repartition[liste_groupe[i]].append(etu)<br />
liste_part.remove(etu)<br />
# print (liste_part)<br />
# print (dict_repartition)<br />
print(dict_repartition)<br />
<br />
# Définition des groupes avec couleurs<br />
groupeList = list(dict_repartition.values())<br />
print(groupeList)<br />
<br />
# GESTION NEOPIXEL<br />
cpb.pixels.brightness = 0.05<br />
<br />
# Grille de définition des couleurs de groupe<br />
dict_couleur = {<br />
"gr1": (0, 255, 0),<br />
"gr2": (255, 0, 255),<br />
"gr3": (255, 255, 0),<br />
"gr4": (0, 255, 255),<br />
"gr5": (255, 0, 0),<br />
}<br />
# print(dict_couleur)<br />
<br />
# transf. dict -> list<br />
liste_couleur = list(dict_couleur.values())<br />
print("liste de couleur totale: ", liste_couleur)<br />
<br />
# définition des couleurs selon nb de groupe<br />
dict_neopix = {}<br />
for i in range(0, len(taille_groupe)):<br />
codecouleur = liste_couleur[i]<br />
dict_neopix[i] = codecouleur<br />
# print(dict_neopix)<br />
<br />
# transf. dict -> list<br />
liste_neopix = list(dict_neopix.values())<br />
print("liste de couleur spécifique: ", liste_neopix)<br />
<br />
# Attribution des couleurs par pixel<br />
liste_pixels = []<br />
for i in range(0, nb_part):<br />
for j in range(0, len(taille_groupe)):<br />
if i in groupeList[j]:<br />
pix = liste_neopix[j]<br />
liste_pixels.append(pix)<br />
print("couleurs des pixels : ", liste_pixels)<br />
<br />
"""<br />
TRANSMISSION AUX BLUEFRUITS PARTICIPANTS (SLAVES)<br />
"""<br />
# Setup de la transmission<br />
ble = BLERadio()<br />
uart_service = UARTService()<br />
advertisement = ProvideServicesAdvertisement(uart_service)<br />
<br />
uart_connection = None<br />
# Controle sur des connexions disponibles<br />
if ble.connected:<br />
for connection in ble.connections:<br />
if UARTService in connection:<br />
uart_connection = connection<br />
break<br />
<br />
while True:<br />
# Allumage de la bnde neopixel / visualisation des groupes formés<br />
for i in range(0, nb_part - 1):<br />
cpb.pixels[i] = liste_pixels[i]<br />
<br />
# Gestion de la transmission<br />
if not uart_connection or not uart_connection.connected:<br />
# Condition : pas de connexion > scan<br />
print("Scanning...")<br />
for adv in ble.start_scan(ProvideServicesAdvertisement, timeout=5): # Scan...<br />
if UARTService in adv.services: # si periphérique existe<br />
print("Found a UARTService advertisement.")<br />
uart_connection = ble.connect(adv) # crée une connexion<br />
break<br />
# Arrêt du scannage de l'environnement<br />
ble.stop_scan()<br />
<br />
# si connexion existante :<br />
while uart_connection and uart_connection.connected:<br />
if cpb.button_a: # Transmission des données neopixels avec A<br />
print("Bouton A - envoi données")<br />
color = cpb.pixels[0]<br />
if not send_packet(uart_connection, ColorPacket(color)):<br />
uart_connection = None<br />
continue<br />
time.sleep(0.1) # Delay to prevent sending packets too quickly.<br />
</syntaxhighlight><br />
<br />
'''Code pour le CPB Récepteur (participants)'''<br />
<syntaxhighlight lang="python"><br />
"""<br />
Code pour les bluefruits participants<br />
"""<br />
import time<br />
<br />
from adafruit_circuitplayground.bluefruit import cpb<br />
<br />
from adafruit_ble import BLERadio<br />
from adafruit_ble.advertising.standard import ProvideServicesAdvertisement<br />
from adafruit_ble.services.nordic import UARTService<br />
<br />
from adafruit_bluefruit_connect.packet import Packet<br />
from adafruit_bluefruit_connect.color_packet import ColorPacket<br />
<br />
num_pixels = 10<br />
<br />
# animation initiale - "chase" est une animation de base dans les librairies<br />
# d'animation pour neopixel (cf neopixel überguide)<br />
def color_chase(color, wait):<br />
for i in range(num_pixels):<br />
cpb.pixels[i] = color<br />
time.sleep(wait)<br />
cpb.pixels.show()<br />
time.sleep(0.5)<br />
<br />
<br />
# Grille des couleurs de groupe pour animation<br />
dict_couleur = {<br />
"gr1": (0, 255, 0),<br />
"gr2": (255, 0, 255),<br />
"gr3": (255, 255, 0),<br />
"gr4": (0, 255, 255),<br />
"gr5": (255, 0, 0),<br />
}<br />
<br />
liste_couleur = list(dict_couleur.values())<br />
print(liste_couleur)<br />
<br />
# Setup standard pour la réception<br />
ble = BLERadio()<br />
uart = UARTService()<br />
advertisement = ProvideServicesAdvertisement(uart)<br />
<br />
cpb.pixels.brightness = 0.05<br />
receptionGroupe = False<br />
<br />
while True:<br />
ble.start_advertising(advertisement)<br />
<br />
while not cpb.switch:<br />
for i in range(0, len(liste_couleur)):<br />
couleurCode = liste_couleur[i]<br />
color_chase(couleurCode, 0.05)<br />
<br />
if cpb.switch:<br />
while not ble.connected:<br />
pass<br />
ble.stop_advertising()<br />
<br />
while ble.connected:<br />
if uart.in_waiting:<br />
packet = Packet.from_stream(uart)<br />
if isinstance(packet, ColorPacket):<br />
cpb.pixels.fill(packet.color)<br />
</syntaxhighlight><br />
<br />
== Test(s) de la solution ==<br />
<br />
===Cognitive walkthrough===<br />
<br />
Pour produire ce cognitive walkthrough, nous nous sommes basés sur les principes du [https://edutechwiki.unige.ch/en/Cognitive_walkthrough#Fluid_project_overview Fluid Project].<br />
<br />
==== Persona ====<br />
<br />
''En cours de création...''<br />
<br />
==== Objectifs ====<br />
<br />
* Créer des groupes grâce au dispositif émetteur<br />
* Communiquer ces groupes aux dispositifs récepteurs<br />
* Renforcer l'engagement grâce à un dispositif ludique et actif<br />
<br />
==== Scénario d'utilisation ====<br />
<br />
# (en amont) Réfléchir à un combien de groupes seront créés en fonction du nombre de participant.e.s disponible.s<br />
# Allumage du dispositif<br />
# Lancement du dispositif<br />
# Réalisation d'une séquence de composition de groupe<br />
# Lancement et réalisation de la séquence suivante de communication avec envoi des groupes constitués aux dispositifs distants<br />
# Mise hors tension du dispositif<br />
<br />
=== Tests utilisateur·trice·s===<br />
<br />
''Restant à réaliser...''<br />
<br />
'''Ébauche du scénario''' <br />
<br />
Le test utilisateur est une méthode utilisée pour évaluer l’expérience utilisateur d’un système, mais également les forces et les faiblesses de celui-ci. Cette méthode, consiste à mettre l’utilisateur·trice en situation « réelle » afin d’observer ses comportements et ses actions lorsqu’il exécute des tâches prédéfinies qui lui sont administrées sous la forme d’un scénario. Il leur est alors demandé de nous renseigner sur leurs expériences.<br />
<br />
Lors de cette phase, un prototype du projet est présenté à des utilisateur·trices recrutés au sein du public cible. A ce stade, le prototype devrait être suffisamment abouti pour offrir les principales fonctionnalités constitutives de la version finale. Néanmoins, il diffère de celle-ci puisque certaines fonctionnalités accessoires ne pourraient ne pas être encore implémentées. En présentant assez tôt un produit relativement proche de la version finale, nous entendons nous assurer que les directions prises dans les précédentes phases de conception soient les plus à même de répondre aux besoins des utilisateur·trice·s. Le prototype sera modifié en fonction des retours formulés par les observations réalisées ainsi que par les analyses des résultats des tests. <br />
<br />
Le test utilisateur se déroulera en 3 étapes :<br />
#Accueil des participants<br />
#Réalisation des tâches<br />
#Entretien succinct<br />
<br />
Dans la première étape, le participant sera accueilli, le contexte et le test utilisateur lui seront alors présentés de manière générale. Lors du test, l’utilisateur·trice « découvrira » le dispositif en réalisant des tâches préparées au préalable (scénario des tâches). Ici, nous éprouverons l’expérience de l’utilisateur·trice.<br />
<br />
Après avoir exposé le contexte dans lequel le scénario prend place, nous demanderons à la personne d’accomplir les tâches décrites dans le tableau "scénario des tâches" (encore en cours de réalisation). De plus, nous encouragerons le/la participant·e à formuler à voix haute ses pensées et ressentis lors de l’utilisation de l’outil. <br />
<br />
Les participant·e·s seront accueillis avec la consigne suivante : <br />
{{Citation encadrée | ''Merci d’avoir accepté de faire ce test avec moi aujourd'hui. Je travaille sur le développement d’un outil pour la constitution aléatoire de groupes de travail dans une classe. Cette technique permet de constituer des groupes rapidement et de communiquer ceux-ci aux participant.e.s quasi instantanément.''}}<br />
<br />
Le scénario des tâches se composera de deux éléments : le contexte et les tâches à effectuer par le/la participant.e. Le contexte aura pour but de mettre l’utilisateur·trice dans une situation réaliste qui se rapprochera de son quotidien et/ou du contexte pendant lequel il pourrait être mené à utiliser le dispositif. Le contexte sera formulé de la manière suivante :<br />
<br />
{{Citation encadrée |''En cours d'édition...''}}<br />
<br />
Après avoir exposé le contexte dans lequel le scénario prend place, nous demanderons au participant d’accomplir les tâches décrites dans le tableau "scénario des tâches" (encore en cours de réalisation).<br />
<br />
Pour l’étape des tâches, nous donnerons les consignes suivantes :<br />
<br />
{{Citation encadrée |''En cours d'édition...''}}<br />
<br />
Chaque tâche sera expliquée au fur et à mesure au participant.<br />
{| style="border: 1px solid black; border-spacing: 0; margin: 1em auto;"<br />
|+ '''Scénario des tâches'''<br />
|-<br />
! style="border: 1px solid black; padding: 5px; background: #D4D4D8; width: 400pt;" | Tâche 1<br />
! style="border: 1px solid black; padding: 5px; background: #D4D4D8; width: 400pt;" | Tâche 2<br />
|-<br />
| style="border: 1px solid black; padding: 5px; vertical-align: top;" |''En cours de création...''<br />
| style="border: 1px solid black; padding: 5px; vertical-align: top; width: 200pt;" |''En cours de création...''<br />
|}<br />
<br />
== Discussion ==<br />
Cette partie inclus deux sous parties : <br />
* Discussion du design (et si c'était à refaire ou à améliorer),<br />
* Discussion des résultats de vos tests utilisateurs<br />
<br />
== Licence, fichiers et documentation ==<br />
[[Fichier:By-nc.png|150px]] Cette œuvre est mise à disposition selon les termes de la [http://creativecommons.org/licenses/by-nc/4.0/ Licence Creative Commons Attribution - Pas d’Utilisation Commerciale 4.0 International].<br />
<br />
* Fichiers :<br />
Insérer ici vos fichiers ou les liens vers vos fichiers<br />
<br />
* Documentation : <br />
Insérer ici une petite documentation pour l'utilisation de l'objet si nécessaire<br />
<br />
== Bibliographie ==<br />
<br />
* Blair, C., Calkins, S., & Kopp, L. (2010). Self-regulation as the interface of emotional and cognitive development: Implications for education and academic achievement.<br />
* Pekrun, R., Goetz, T., Titz, W., & Perry, R. P. (2002). Academic emotions in students' self-regulated learning and achievement: A program of qualitative and quantitative research. Educational psychologist, 37(2), 91-105.</div>Djamileh Aminianhttps://edutechwiki.unige.ch/fmediawiki/index.php?title=STIC:STIC_III_(2020)/Forces_rouge,_rose,_vert,_jaune_ou_bleu_!&diff=154707STIC:STIC III (2020)/Forces rouge, rose, vert, jaune ou bleu !2021-09-04T08:37:20Z<p>Djamileh Aminian : /* Code */</p>
<hr />
<div>{{bloc important|Projet réalisé par [[Utilisateur:Djamileh_Aminian|Djamileh]] & [[Utilisateur:Simon_Jöhr|Simon]]}}<br />
<br />
== Introduction ==<br />
Durant la dernière année, le passage forcé à la téléformation, soit la formation synchrone à distance, a eu comme effet positif de pousser certains spécialistes de l’éducation à revisiter leurs scénarios pédagogiques pour revenir aux fondamentaux : comment aider les élèves à apprendre ce qu’ils sont sensés apprendre et comment les accompagner au mieux dans leur apprentissage ? Souvent, les difficultés relevées lors des bilans des derniers mois de distantiel ont fait émerger des problèmes qui existaient déjà en présence, mais qui restaient latents ou ignorés.<br />
<br />
En ce sens, l’apprentissage est fortement influencé par les émotions par lesquelles passent les élèves au cours de la formation, et en particulier pendant les moments synchrones. Pourtant, il est très complexe de détecter, mesurer, ou même faire exprimer les étudiant-es sur leur ressenti.<br />
<br />
En donnant leurs cours en visioconférence, nombreux formateurs et formatrices ont exprimé leur frustration de ne pas réussir à évaluer l’état émotionnel et autres indices non verbaux de leurs participant.e.s, retours essentiels pour adapter une explication ou ajuster le rythme. Et cet effet est loin d’être limité à la distance : il est également bien présent dans une salle de classe où il reste complexe de capter en temps réel les émotions d’un étudiant, processus complexe et dynamique.<br />
<br />
Notre projet prend sa racine dans ce constat. Deux questions ont alors émergé : <br />
* comment mesurer l'état émotionnel d'un-e apprenant-e, <br />
* et surtout, pour quel usage ?<br />
<br />
Dans ce contexte, nous avons pensé un dispositif de partage des ressentis de la classe à destination de l'équipe enseignante, et une utilisation de cette donnée comme retour au groupe.<br />
<br />
== Problème ==<br />
<br />
Le but de ce projet est de proposer une solution ludique à la constitution de groupes en classe, que cela soit en présence, à distance ou de manière comodale. En utilisant un Arduino Uno ou des CPX, la phase de constitution de groupes sera ainsi rapide, aléatoire et "fun" !<br />
<br />
Le ''Problem Statement'' peut s’exprimer ainsi : « Comment peut-on aider les formateurs et formatrices à identifier rapidement les difficultés dans l’apprentissage et, le cas échéant, à réagir ? »<br />
<br />
== Cahier des charges == <br />
=== Contexte et public ===<br />
Le public cible est composé de formateurs et formatrices d’adultes, en entreprise ou en institut. Il pourrait également être élargi aux enseignante.s du scolaire, mais la conscientisation et l’expression d’une émotion sont suffisamment complexes pour limiter notre premier dispositif à des adultes, disposant, à priori, d’une compréhension plus fine de leur état émotionnel. De plus, l’asymétrie dans la relation est supposée moins forte dans un groupe d’adultes en formation que dans une classe avec un enseignant et des enfants ou adolescents.<br />
<br />
===Objectifs===<br />
Le but du dispositif est de :<br />
* permettre la communication d'un niveau émotionnel perçu par l'étudiant.e à l'enseignant.e<br />
* faire émerger un état général de la classe et les différences dans l'acquisition du contenu<br />
* de manière plus pragmatique, de créer des groupes sur la base des éléments communiqués<br />
<br />
===Besoins et contraintes===<br />
L'idée du projet a beaucoup évolué entre la phase d'identification des besoins et les constatations sur les possibilités offertes par la technologie et l'expertise à disposition. Nous détaillons ci-dessous les besoins et contraintes qui nous ont menés à la solution présentée plus bas.<br />
<br />
Partant au début d’une idée de jauge émotionnelle dynamique, donnant en tout temps l’état émotionnel d’un groupe de participants, nous avons rapidement détecté, en phase d'idéation avec plusieurs spécialistes en éducation, un aspect extrêmement anxiogène pour le formateur dont le groupe enverrait des signaux d’ennui ou de frustration, durant une explication. <br />
<br />
Afin de juguler cet effet, tout en conservant la possibilité de communiquer un message sur l’état, nous avons adapté le dispositif pour permettre aux étudiants de transmettre leur état à des moments spécifiques de la formation, intégrés dans le scénario pédagogique. L'émotion étant un élément sensible à conscientiser, exprimer et partager au sein d'un groupe, nous avons estimé plus judicieux de faire exprimer son niveau d'aisance face à un contenu qui vient d'être transmis. Ainsi, un-e enseignant-e scénarisera des moments d'autodiagnostic des étudiant-es sur leur perception de compétence sur la thématique. Cette information peut être utilisée pour réaliser des groupes de travail : (1) les personnes qui ont compris peuvent être orientées sur un contenu plus avancé, en échange pendant que l'enseignant organiser une séance de question-réponse avec les personnes en difficulté ou (2) des groupes peuvent être créés pour intégrer des étudiant-es qui ont compris avec des étudiant-es qui ont besoin d'aide.<br />
<br />
Le dispositif est donc pensé comme un outil de sondage à certains moments du cours, pour évaluer les besoins du groupe, dans son ensemble. Il est souvent difficile de récolter des informations sincères lors d’évaluations à chaud, les étudiants réticents à communiquer publiquement leurs difficultés ou désintérêts pour le contenu. Par la technique de transmission, les étudiants pourraient communiquer leur émotion de manière anonyme, favorisant l'authenticité.<br />
<br />
De manière intéressante au fur et à mesure de l'avance du projet, il est ressorti des discussions avec un échantillon du public cible que l'aspect de notre projet qui les intéressait était moins la communication des émotions, mais la création facilitée des groupes. En effet, les formateurs et formatrices ayant travaillé à distance durant la dernière année se sont habitués à disposer d'une fonction de création de groupe aléatoire, selon un nombre total de participants et un nombre de groupe visé. Cette fonction serait très utile également en présence, en utilisant une carte Arduino ou un CPX pour calculer une répartition des élèves par groupe, avec en entrée le nombre d'élèves et les sous-groupes. Une fois les groupes constitués, l'étape suivante est de communiquer ces groupes à l'ensemble de la classe au travers de Lilypad ou autres technologies portables qui s'allument selon la couleur de leur groupe.<br />
<br />
===Apports===<br />
* Cohésion et sentiment d'appartenance au groupe comme soutien à l'apprentissage<br />
* Expression d'un état émotionnel épistémique comme bénéfique à l'apprentissage<br />
<br />
===Présentation du projet===<br />
Suite aux premières itérations dans l'empathie et la définition du projet, nous avons identifié plusieurs points clés qui ont réorienté notre projet :<br />
* la création d'un réseau de cartes Bluetooth contrôlées par Arduino s'est révélée trop ambitieuse, suite au manque de projets existants ou d'expertise sur lesquels s'appuyer, <br />
* l'envie marquée de notre échantillon cible qui s'est dirigée sur l'aspect création de groupe plus que sur la connaissance des états affectifs.<br />
<br />
Nous avons donc revu le projet en le divisant en 3 niveaux de difficulté, afin de réaliser un prototype utilisable, puis de l'améliorer en fonction des retours et du temps à disposition.<br />
* '''Niveau 1 : Création de groupe aléatoire''' : intérêts : facilitation de la création des groupes (demande reçue d'un formateur : "parce que Zoom nous a bien aidé pour cela à distance, je veux la même chose en présence!")<br />
* '''Niveau 2 : Communication du groupe à l’apprenant''' : intérêts : gamification, sentiment d’appartenance, coopération, cohésion<br />
* '''Niveau 3 : Communication de son sentiment de compétence''' : intérêts : plus facile que d'exprimer ses émotions, et plus facile à gérer par l'enseignant.e, par exemple les gens qui ont compris avec celles-ceux qui n'ont pas compris<br />
<br />
Nous avons réalisé complètement le niveau 1, ainsi que prototypé et testé le niveau 2 avec des cables avant de pouvoir gérer par Bluetooth un Bluefruit spécifique dans un réseau comprenant plusieurs Bluefruits. Les solutions avec code et prototypes sont décrites dans la section suivante.<br />
<br />
== Solutions explorées ==<br />
<br />
===1er prototype===<br />
La première solution envisagée comporte deux objets : <br />
* Un '''émetteur''' : facile d’utilisation et agréable à porter, nous penchons pour la solution d’un bracelet contenant un micro circuit type Lilypad, Arduino Gemma ou Tinyduino. L’apprenant disposerait de 4 boutons-pressoirs pour 4 émotions majeures à transmettre (intérêt, confusion, frustration, incompréhension), symbolisés par des logos ou émoticônes. Les messages sont transmis par Bluetooth.<br />
* Un '''récepteur''' : Une jauge, comprenant une bande Neopixels, connectée à un Arduino Uno. Les LED symboliseraient deux dimensions fournies : la couleur pour le type d'émotion et le nombre pour la quantité d'étudiant.e.s ayant transmis l'information. L'Arduino pourrait gérer l'information, en émettant un son lors du dépassement d'un seuil prédéfini sur une émotion par exemple.<br />
<br />
====Maquettes====<br />
<u>1ère itération</u><br />
<br />
[[Fichier:Maquette_projet_STIC_III_Djamileh_et_Simon.jpg|néant|vignette|1103x1103px|Maquette n°1 du projet]]<br />
<br />
<u>2e itération</u><br />
<br />
L'Arduino Uno lance une séquence de randomisation de couleur, en affiche une, puis les participant.e.s font de même sur leur CPX. Si les couleurs affichées "matchent", le groupe est constitué et on peut ainsi passer à la constitution aléatoire du groupe suivant. <br />
[[Fichier:2e Maquette projet STIC III Djamileh et Simon .jpg|néant|vignette|1103x1103px|Maquette n°2 du projet]]<br />
<br />
====Code====<br />
<u>Version 1.0 du code CPX :</u> <syntaxhighlight lang="javascript"><br />
input.buttonA.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 200<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(40)<br />
color2 += Math.randomRange(1, 3)<br />
light.setPhotonPenHue(color2)<br />
}<br />
light.photonFlip()<br />
})<br />
input.buttonsAB.onEvent(ButtonEvent.Click, function () {<br />
control.reset()<br />
})<br />
input.buttonB.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 300<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
color2 += 3<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(50)<br />
}<br />
})<br />
let tonalité = 0<br />
let durée = 0<br />
let color2 = 0<br />
light.setBrightness(158)<br />
music.setVolume(167)<br />
forever(function () {<br />
<br />
})<br />
</syntaxhighlight><br />
<br />
===2e prototype===<br />
<br />
====Maquette====<br />
<u>Boîte émettrice</u><br />
[[Fichier:Boite CPX STIC III.png|néant|vignette|Plan découpe boîte émettrice CPX]]<br />
[[Fichier:Etiquettes Boite CPX STIC III.png|néant|vignette|Etiquettes boîte CPX]]<br />
[[Fichier:Maquette boîte CPX.png|néant|vignette|Rendu de la boîte]]<br />
[[Fichier:Boîte CPX.jpg|néant|vignette|Boîte en cours de réalisation]]<br />
<br />
<u>Cadrans récepteurs</u><br />
[[Fichier:Bracelets CPX STIC III.png|néant|vignette|Cadrans récepteurs]]<br />
<br />
====Code====<br />
[[Fichier:CPX firstproto.jpg|vignette|droite|Une étape dans le test du code - 5 binomes de noël! ]]<br />
La solution présentée ici s'occupe du niveau 1, soit la création de groupe aléatoire à l'aide d'un CPX Bluefruit.<br />
Elle a été codée en CircuitPython. Nous avons rédigé le code nous-mêmes, avec deux supports : la création du dictionnaire pour la randomisation été possible grâce à l'aimable contribution de notre collègue Jérôme. Concernant l'envoi et la réception de données par Bluetooth, nous nous sommes basés sur les [https://learn.adafruit.com/circuitpython-nrf52840/bluetooth-basics tutoriels Adafruit], ainsi que deux projets utilisant des fonctionnalités se rapprochant de notre projet :<br />
* [https://learn.adafruit.com/circuit-playground-bluefruit-neopixel-animation-and-color-remote-control projet 1]<br />
* [https://learn.adafruit.com/color-remote-with-circuit-playground-bluefruit projet 2]<br />
<br />
'''Code pour le CPB Emetteur'''<br />
<syntaxhighlight lang="python"><br />
# Groupify !<br />
# Un projet de S!m & Dja<br />
# Code CircuitPython pour la répartition dans les groupes (MASTER)<br />
<br />
"""<br />
SETUP GENERAL<br />
"""<br />
<br />
# LIBRAIRIES<br />
import random<br />
import time<br />
<br />
# Librairie pour gérer la bande neopixel du bluefruit<br />
from adafruit_circuitplayground.bluefruit import cpb<br />
<br />
# Librairies pour gérer la transmission bluetooth<br />
from adafruit_ble import BLERadio<br />
from adafruit_ble.advertising.standard import ProvideServicesAdvertisement<br />
from adafruit_ble.services.nordic import UARTService<br />
<br />
# Librairie pour envoyer la couleur<br />
from adafruit_bluefruit_connect.color_packet import ColorPacket<br />
<br />
# Helper function pour gérer la connexion entre plusieurs Bluefruits<br />
# reprise sur https://learn.adafruit.com/circuit-playground-bluefruit-neopixel-<br />
# animation-and-color-remote-control/remote-control-code<br />
def send_packet(uart_connection_name, packet):<br />
"""Returns False if no longer connected."""<br />
try:<br />
uart_connection_name[UARTService].write(packet.to_bytes())<br />
except: # pylint: disable=bare-except<br />
try:<br />
uart_connection_name.disconnect()<br />
except: # pylint: disable=bare-except<br />
pass<br />
return False<br />
return True<br />
<br />
<br />
# Input utilisateur<br />
participants = int(input("Nombre de participants : "))<br />
groupe = int(input("Nombre de groupes : "))<br />
<br />
"""<br />
CREATION DES GROUPES<br />
"""<br />
<br />
# création listes à long. variable (+ 1 pour compenser la numération depuis 0)<br />
liste_part = list(range(1, participants + 1)) # print(liste_part)<br />
nb_part = len(liste_part) + 1<br />
liste_groupe = list(range(1, groupe + 1)) # print(liste_groupe)<br />
<br />
# Déf. grille (dict. de listes) combinations possibles<br />
clé_tableau = str(participants) + "_" + str(groupe)<br />
# !!! ajouter combinaisons pas possible : eg. tour de roue lumineuse/son pourri !!!<br />
grille_repartition = {<br />
"10_5": [2, 2, 2, 2, 2],<br />
"10_4": [2, 2, 3, 3],<br />
"10_3": [3, 3, 4],<br />
"10_2": [5, 5],<br />
"9_4": [2, 2, 2, 3],<br />
"9_3": [3, 3, 3],<br />
"9_2": [4, 5],<br />
"8_4": [2, 2, 2, 2],<br />
"8_3": [2, 3, 3],<br />
"8_2": [4, 4],<br />
"7_3": [2, 2, 3],<br />
"7_2": [4, 3],<br />
"6_3": [2, 2, 2],<br />
"6_2": [3, 3],<br />
"5_2": [2, 3],<br />
"4_2": [2, 2],<br />
}<br />
# détermination du nb et taille des groupes à créer<br />
taille_groupe = grille_repartition[clé_tableau]<br />
print(taille_groupe)<br />
<br />
# création (dict) répartition aléatoire<br />
dict_repartition = {} # initialisation<br />
for i in range(0, len(taille_groupe)):<br />
dict_repartition[liste_groupe[i]] = [] # création des items du dictionnaire<br />
for j in range(0, taille_groupe[i]):<br />
etu = liste_part[random.randint(0, len(liste_part) - 1)]<br />
dict_repartition[liste_groupe[i]].append(etu)<br />
liste_part.remove(etu)<br />
# print (liste_part)<br />
# print (dict_repartition)<br />
print(dict_repartition)<br />
<br />
# Définition des groupes avec couleurs<br />
groupeList = list(dict_repartition.values())<br />
print(groupeList)<br />
<br />
# GESTION NEOPIXEL<br />
cpb.pixels.brightness = 0.05<br />
<br />
# Grille de définition des couleurs de groupe<br />
dict_couleur = {<br />
"gr1": (0, 255, 0),<br />
"gr2": (255, 0, 255),<br />
"gr3": (255, 255, 0),<br />
"gr4": (0, 255, 255),<br />
"gr5": (255, 0, 0),<br />
}<br />
# print(dict_couleur)<br />
<br />
# transf. dict -> list<br />
liste_couleur = list(dict_couleur.values())<br />
print("liste de couleur totale: ", liste_couleur)<br />
<br />
# définition des couleurs selon nb de groupe<br />
dict_neopix = {}<br />
for i in range(0, len(taille_groupe)):<br />
codecouleur = liste_couleur[i]<br />
dict_neopix[i] = codecouleur<br />
# print(dict_neopix)<br />
<br />
# transf. dict -> list<br />
liste_neopix = list(dict_neopix.values())<br />
print("liste de couleur spécifique: ", liste_neopix)<br />
<br />
# Attribution des couleurs par pixel<br />
liste_pixels = []<br />
for i in range(0, nb_part):<br />
for j in range(0, len(taille_groupe)):<br />
if i in groupeList[j]:<br />
pix = liste_neopix[j]<br />
liste_pixels.append(pix)<br />
print("couleurs des pixels : ", liste_pixels)<br />
<br />
"""<br />
TRANSMISSION AUX BLUEFRUITS PARTICIPANTS (SLAVES)<br />
"""<br />
# Setup de la transmission<br />
ble = BLERadio()<br />
uart_service = UARTService()<br />
advertisement = ProvideServicesAdvertisement(uart_service)<br />
<br />
uart_connection = None<br />
# Controle sur des connexions disponibles<br />
if ble.connected:<br />
for connection in ble.connections:<br />
if UARTService in connection:<br />
uart_connection = connection<br />
break<br />
<br />
while True:<br />
# Allumage de la bnde neopixel / visualisation des groupes formés<br />
for i in range(0, nb_part - 1):<br />
cpb.pixels[i] = liste_pixels[i]<br />
<br />
# Gestion de la transmission<br />
if not uart_connection or not uart_connection.connected:<br />
# Condition : pas de connexion > scan<br />
print("Scanning...")<br />
for adv in ble.start_scan(ProvideServicesAdvertisement, timeout=5): # Scan...<br />
if UARTService in adv.services: # si periphérique existe<br />
print("Found a UARTService advertisement.")<br />
uart_connection = ble.connect(adv) # crée une connexion<br />
break<br />
# Arrêt du scannage de l'environnement<br />
ble.stop_scan()<br />
<br />
# si connexion existante :<br />
while uart_connection and uart_connection.connected:<br />
if cpb.button_a: # Transmission des données neopixels avec A<br />
print("Bouton A - envoi données")<br />
color = cpb.pixels[0]<br />
if not send_packet(uart_connection, ColorPacket(color)):<br />
uart_connection = None<br />
continue<br />
time.sleep(0.1) # Delay to prevent sending packets too quickly.<br />
</syntaxhighlight><br />
<br />
'''Code pour le CPB Récepteur (participants)'''<br />
<syntaxhighlight lang="python"><br />
"""<br />
Code pour les bluefruits participants<br />
"""<br />
import time<br />
<br />
from adafruit_circuitplayground.bluefruit import cpb<br />
<br />
from adafruit_ble import BLERadio<br />
from adafruit_ble.advertising.standard import ProvideServicesAdvertisement<br />
from adafruit_ble.services.nordic import UARTService<br />
<br />
from adafruit_bluefruit_connect.packet import Packet<br />
from adafruit_bluefruit_connect.color_packet import ColorPacket<br />
<br />
num_pixels = 10<br />
<br />
# animation initiale - "chase" est une animation de base dans les librairies<br />
# d'animation pour neopixel (cf neopixel überguide)<br />
def color_chase(color, wait):<br />
for i in range(num_pixels):<br />
cpb.pixels[i] = color<br />
time.sleep(wait)<br />
cpb.pixels.show()<br />
time.sleep(0.5)<br />
<br />
<br />
# Grille des couleurs de groupe pour animation<br />
dict_couleur = {<br />
"gr1": (0, 255, 0),<br />
"gr2": (255, 0, 255),<br />
"gr3": (255, 255, 0),<br />
"gr4": (0, 255, 255),<br />
"gr5": (255, 0, 0),<br />
}<br />
<br />
liste_couleur = list(dict_couleur.values())<br />
print(liste_couleur)<br />
<br />
# Setup standard pour la réception<br />
ble = BLERadio()<br />
uart = UARTService()<br />
advertisement = ProvideServicesAdvertisement(uart)<br />
<br />
cpb.pixels.brightness = 0.05<br />
receptionGroupe = False<br />
<br />
while True:<br />
ble.start_advertising(advertisement)<br />
<br />
while not cpb.switch:<br />
for i in range(0, len(liste_couleur)):<br />
couleurCode = liste_couleur[i]<br />
color_chase(couleurCode, 0.05)<br />
<br />
if cpb.switch:<br />
while not ble.connected:<br />
pass<br />
ble.stop_advertising()<br />
<br />
while ble.connected:<br />
if uart.in_waiting:<br />
packet = Packet.from_stream(uart)<br />
if isinstance(packet, ColorPacket):<br />
cpb.pixels.fill(packet.color)<br />
</syntaxhighlight><br />
<br />
== Test(s) de la solution ==<br />
<br />
===Cognitive walkthrough===<br />
<br />
Pour produire ce cognitive walkthrough, nous nous sommes basés sur les principes du [https://edutechwiki.unige.ch/en/Cognitive_walkthrough#Fluid_project_overview Fluid Project].<br />
<br />
==== Persona ====<br />
<br />
''En cours de création...''<br />
<br />
==== Objectifs ====<br />
<br />
* Créer des groupes grâce au dispositif émetteur<br />
* Communiquer ces groupes aux dispositifs récepteurs <br />
<br />
==== Scénario d'utilisation ====<br />
<br />
# (en amont) Réfléchir à un combien de groupes seront créés en fonction du nombre de participant.e.s disponible.s<br />
# Allumage du dispositif<br />
# Lancement du dispositif<br />
# Réalisation d'une séquence de composition de groupe<br />
# Lancement et réalisation de la séquence suivante de communication avec envoi des groupes constitués aux dispositifs distants<br />
# Mise hors tension du dispositif<br />
<br />
=== Tests utilisateur·trice·s===<br />
<br />
''Restant à réaliser...''<br />
<br />
'''Ébauche du scénario''' <br />
<br />
Le test utilisateur est une méthode utilisée pour évaluer l’expérience utilisateur d’un système, mais également les forces et les faiblesses de celui-ci. Cette méthode, consiste à mettre l’utilisateur·trice en situation « réelle » afin d’observer ses comportements et ses actions lorsqu’il exécute des tâches prédéfinies qui lui sont administrées sous la forme d’un scénario. Il leur est alors demandé de nous renseigner sur leurs expériences.<br />
<br />
Lors de cette phase, un prototype du projet est présenté à des utilisateur·trices recrutés au sein du public cible. A ce stade, le prototype devrait être suffisamment abouti pour offrir les principales fonctionnalités constitutives de la version finale. Néanmoins, il diffère de celle-ci puisque certaines fonctionnalités accessoires ne pourraient ne pas être encore implémentées. En présentant assez tôt un produit relativement proche de la version finale, nous entendons nous assurer que les directions prises dans les précédentes phases de conception soient les plus à même de répondre aux besoins des utilisateur·trice·s. Le prototype sera modifié en fonction des retours formulés par les observations réalisées ainsi que par les analyses des résultats des tests. <br />
<br />
Le test utilisateur se déroulera en 3 étapes :<br />
#Accueil des participants<br />
#Réalisation des tâches<br />
#Entretien succinct<br />
<br />
Dans la première étape, le participant sera accueilli, le contexte et le test utilisateur lui seront alors présentés de manière générale. Lors du test, l’utilisateur·trice « découvrira » le dispositif en réalisant des tâches préparées au préalable (scénario des tâches). Ici, nous éprouverons l’expérience de l’utilisateur·trice.<br />
<br />
Après avoir exposé le contexte dans lequel le scénario prend place, nous demanderons à la personne d’accomplir les tâches décrites dans le tableau "scénario des tâches" (encore en cours de réalisation). De plus, nous encouragerons le/la participant·e à formuler à voix haute ses pensées et ressentis lors de l’utilisation de l’outil. <br />
<br />
Les participant·e·s seront accueillis avec la consigne suivante : <br />
{{Citation encadrée | ''Merci d’avoir accepté de faire ce test avec moi aujourd'hui. Je travaille sur le développement d’un outil pour la constitution aléatoire de groupes de travail dans une classe. Cette technique permet de constituer des groupes rapidement et de communiquer ceux-ci aux participant.e.s quasi instantanément.''}}<br />
<br />
Le scénario des tâches se composera de deux éléments : le contexte et les tâches à effectuer par le/la participant.e. Le contexte aura pour but de mettre l’utilisateur·trice dans une situation réaliste qui se rapprochera de son quotidien et/ou du contexte pendant lequel il pourrait être mené à utiliser le dispositif. Le contexte sera formulé de la manière suivante :<br />
<br />
{{Citation encadrée |''En cours d'édition...''}}<br />
<br />
Après avoir exposé le contexte dans lequel le scénario prend place, nous demanderons au participant d’accomplir les tâches décrites dans le tableau "scénario des tâches" (encore en cours de réalisation).<br />
<br />
Pour l’étape des tâches, nous donnerons les consignes suivantes :<br />
<br />
{{Citation encadrée |''En cours d'édition...''}}<br />
<br />
Chaque tâche sera expliquée au fur et à mesure au participant.<br />
{| style="border: 1px solid black; border-spacing: 0; margin: 1em auto;"<br />
|+ '''Scénario des tâches'''<br />
|-<br />
! style="border: 1px solid black; padding: 5px; background: #D4D4D8; width: 400pt;" | Tâche 1<br />
! style="border: 1px solid black; padding: 5px; background: #D4D4D8; width: 400pt;" | Tâche 2<br />
|-<br />
| style="border: 1px solid black; padding: 5px; vertical-align: top;" |''En cours de création...''<br />
| style="border: 1px solid black; padding: 5px; vertical-align: top; width: 200pt;" |''En cours de création...''<br />
|}<br />
<br />
== Discussion ==<br />
Cette partie inclus deux sous parties : <br />
* Discussion du design (et si c'était à refaire ou à améliorer),<br />
* Discussion des résultats de vos tests utilisateurs<br />
<br />
== Licence, fichiers et documentation ==<br />
[[Fichier:By-nc.png|150px]] Cette œuvre est mise à disposition selon les termes de la [http://creativecommons.org/licenses/by-nc/4.0/ Licence Creative Commons Attribution - Pas d’Utilisation Commerciale 4.0 International].<br />
<br />
* Fichiers :<br />
Insérer ici vos fichiers ou les liens vers vos fichiers<br />
<br />
* Documentation : <br />
Insérer ici une petite documentation pour l'utilisation de l'objet si nécessaire<br />
<br />
== Bibliographie ==<br />
<br />
* Blair, C., Calkins, S., & Kopp, L. (2010). Self-regulation as the interface of emotional and cognitive development: Implications for education and academic achievement.<br />
* Pekrun, R., Goetz, T., Titz, W., & Perry, R. P. (2002). Academic emotions in students' self-regulated learning and achievement: A program of qualitative and quantitative research. Educational psychologist, 37(2), 91-105.</div>Djamileh Aminianhttps://edutechwiki.unige.ch/fmediawiki/index.php?title=STIC:STIC_III_(2020)/Initiation_impression_3D&diff=154294STIC:STIC III (2020)/Initiation impression 3D2021-06-21T15:44:44Z<p>Djamileh Aminian : /* Objets 3D */</p>
<hr />
<div>== Introduction ==<br />
Cette page fait partie du module I du cours [[STIC:STIC III (2020)]]. Cette page est consacrée à l'[[Impression 3D]].<br />
<br />
[[Fichier:Felix printer.jpg|350px|right|thumb|Imprimante 3D Felix Tec 4]]<br />
<br />
; Dans cette page, vous trouverez :<br />
* Une présentation de la technologie et des exemples d'applications en éducation, <br />
* Les consignes de l'activité hands-on réalisée en classe et celles de l'activité à distance, <br />
* Les outils de support et les liens utiles pour vous épauler dans votre apprentissage, <br />
* Un espace pour y déposer vos productions.<br />
<br />
== Activités en classe (60') ==<br />
<br />
=== Présentation (8') ===<br />
* [[Atelier d'initiation à l'impression 3D#Présentation de la technologie|Présentation de la technologie]]<br />
* [[Atelier d'initiation à l'impression 3D#Impression 3D et éducation|Impression 3D et éducation]]<br />
: Plus d'informations sur les pages [[Fabrication avec une imprimante 3D]] (essentiel) et [[Imprimante 3D Felix Tec 4]] <br />
<br />
=== Workflow (2') ===<br />
[[Fichier:Workflow-3D.png|none|900px]]<br />
<br />
==== Etapes ====<br />
# Modéliser un objet avec un environnement de modélisation : '''langage de bloc (BlocksCAD), langage de programmation (OpenSCAD) ou interface graphique (TinkerCAD)''',<br />
# Exporter le design en format *stl (tous les environnements de modélisation 3D propose l'export en *stl),<br />
# (facultatif) Redimensionner, positionner et réparer le fichier *.stl en utilisant un logiciel permettant la [[Réparation de fichier STL]],<br />
# Importer dans un [[Tranchage en impression 3D|trancheur]], trancher l'objet (transformation en plusieurs couches) et paramétrer l'impression 3D, <br />
# Imprimer l'objet en envoyant le [[g-code]] à la machine.<br />
<br />
=== Activités hands-on (50') ===<br />
Thématique : les {{Lien|[[Emoji]]}} 🤗<br />
<br />
Objectif : concevoir votre premier objet prêt à imprimer<br />
<br />
Pour l'organisation, on vous propose [https://www.tinkercad.com TinkerCAD] (interface graphique) ou [https://www.blockscad3d.com/ BlocksCAD] (langage de blocs)<br />
* Utilisation de TinkerCAD pour l'initiation<br />
* Démo de BlocksCAD <br />
<br />
==== Processus ====<br />
{{Goblock|content=1. Choisissez un projet ci-dessous|nowrap=true|bgcolor=LightYellow}} '''5''''<br />
<br />
* TinkerCAD, page [https://www.tinkercad.com/search?category=tinkercad&sort=likes&q=emoji&&view_mode=default Emojis]. Si le lien ne fonctionne pas, faites une recherche avec le terme '''emoji'''<br />
* Démo choix d'un emoji sur [https://thenounproject.com/search/?q=emoji the noun project]. Convertir le format SVG à convertir en STL avec Tinkercad ou [https://activmap.github.io/svg-to-stl/ ActivMap](pas testé)<br />
<br />
{{Goblock|content=2. Personnalisez votre modèle d'emoji |nowrap=true|bgcolor=LightYellow}} '''25''''<br />
<br />
===== Deux phases : =====<br />
* Phase de démonstration (10') : explication des axes, déplacements des blocs, opérations booléennes etc.<br />
* Phase de manipulation (15') : <br />
** personnaliser votre modèle en analysant les effets de vos modifications sur votre objet (faites des tests, il est toujours possible de repartir de zéro donc n'hésitez pas à déstructurer complètement l'objet). <br />
** Option bonus : déposer l'emoji sur un support au choix.<br />
** Groupe et retailler l'objet dans une volume de 5cm<sup>3</sup>(50mm<sup>3</sup>)<br />
** Exporter l'objet en format STL<br />
<br />
{{Goblock|content=4. Tranchage de l'objet avec le slicer Cura|nowrap=true|bgcolor=LightYellow}} '''10''''<br />
<br />
Dans [[Cura]], deux opérations sont effectuées : 1) le paramétrage de l'impression et 2) le tranchage, c'est à dire l'opération par laquelle l'objet est transformé en [[g-code]] (liste de commandes compréhensibles pour l'imprimante 3D).<br />
<br />
==== Etapes ====<br />
* '''Importer''' les fichiers *.stl dans Cura <br />
* '''Paramétrer''' l'impression (cf. [[Tranchage en impression 3D]]). Les principaux réglages sont:<br />
*# 1re couche, la plus importante : diminuer la vitesse pour une bonne adhérence,<br />
*# Hauteur des couches : plus la hauteur est fine, plus la qualité est meilleure et l'impression lente. 0,2 mm est une qualité moyenne<br />
*# Périmètre : contour de l'objet et épaisseur des couches (valeur dépendante du diamètre de la buse, en théorie on multiplie par 3)<br />
*# Remplissage définit par le taux de remplissage (0% à 100%) et le motif (triangle, grille etc.). Le taux de remplissage et le motif influence la solidité de l'objet.<br />
*# Diamètre de la buse : largeur minimale des lignes. La Felix Tec4 a une buse de 0,35 mm. Cependant, il est conseillé de ne pas dépasser 80% du diamètre de la buse soit 0,28 mm dans notre cas.<br />
** Température : à définir en fonction du matériau utilisé; le mieux est de se référez vous aux inscriptions sur la bobine.<br />
** Vitesse: se définit en fonction du matériau utilisé et de la qualité d'impression souhaitée. Plus la vitesse est lente, plus la qualité d'impression est meilleure. Par exemple, pour du PLA, la vitesse se situe entre 30 et 90.<br />
** Ventilation : activer la ventilation à partir de la 2e couche pour minimiser la déformation des pièces (ne pas activer à la 1re couche car cela réduit l'adhérence). <br />
* '''Trancher''' les objets pour générer le g-code et enregistrer sur une carte SD. <br />
<br />
{{Goblock|content=5. Fabrication de vos objets avec la [[Imprimante 3D Felix Tec 4]]|nowrap=true|bgcolor=LightYellow}} '''10''''<br />
* Partage des designs, <br />
* Importer le g-code dans la machine et fabrication de l'objet<br />
<br />
== Activités à distance ==<br />
<br />
=== Thématique ===<br />
; Matérialisation de l'invisible <br />
<br />
=== Consignes ===<br />
* Réaliser 2 objets sur la thématique proposée<br />
** Input : données externes invisible (une ou deux thématiques).<br />
** Output : votre interprétation de ces données avec l'imprimante 3D.<br />
* Taille : objet de '''4 à 5 cm en long/large/hauteur max.'''<br />
* Forme : libre<br />
<br />
NOTE : vous pouvez utiliser des modèles faits par d'autres à condition de citer vos sources.<br />
<br />
==== Conception et fabrication des objets ====<br />
* Une fois votre objet prêt, consulter [[STIC:STIC III (2020)/Calendrier de RDV STIC III|Calendrier de RDV]] (Lisez bien les conditions SVP).<br />
<br />
== Support et liens utiles ==<br />
<br />
=== Support ===<br />
* Pour les questions rapides ou demande d'avis non bloquants : utilisez la page ''discussion'' de cette page<br />
* Ateliers de conception et de fabrication : si vous avez plusieurs questions ou si vous avez besoin de plus d'explications voire d'une conception suivie, inscrivez-vous aux ateliers de conception et de fabrication (cf. [[STIC:STIC III (2020)/Calendrier de RDV STIC III|calendrier de RDV STIC III]]). <br />
<br />
=== Liens utiles ===<br />
''Wiki français''<br />
* [[Fabrication avec une imprimante 3D]] (essentiel)<br />
* [[Filament pour impression 3D]]<br />
* [[Imprimante 3D Felix Tec 4]]<br />
* Conception <br />
** Langage de Blocs [[BlocksCAD]]<br />
** Langage de programmation [[OpenSCAD]]. Voir aussi [[Tutoriel OpenSCAD]]<br />
** Interface graphique [[Tinkercad]]<br />
* Manipulation de mailles et réparation<br />
** [[Réparation de fichier STL]]<br />
** [[Meshlab pour impression 3D]]<br />
* Tranchage <br />
** [[Tranchage en impression 3D]]<br />
** [[Cura]]<br />
<br />
''Wiki anglais''<br />
* [[:en:BlocksCAD]]<br />
* [[:en:OpenScad beginners tutorial]]<br />
* [[:en:Doblo_factory]] (pour les utilisateurs et utilisatrices de OpenSCAD)<br />
* D'autres pages sont disponibles en consultant la [[:en:Category:3D]]<br />
<br />
== Productions des étudiant-es ==<br />
<br />
Déposez vos travaux en copiant-collant la section exemple ci-dessous : <br />
<br />
=== Production de NOM ===<br />
Dans votre paragraphe, <br />
* insérer votre design (g-code) et une photo de votre objet 3D imprimé<br />
* expliquer la signification de votre objet, ses étapes de conception et les difficultés rencontrées.<br />
<br />
=== Production de [[Utilisateur:Aurélie A. | Aurélie]] === <br />
====Design====<br />
<gallery><br />
Fichier:Puzzlemoiprojetaurelie.stl|Design 1: Puzzle<br />
Fichier:Clefessentielstic3projetaurelie.stl|Design 2: Clé<br />
</gallery><br />
<br />
'''Sources''':<br />
*Design 1: "La pièce manquante"<br />
Puzzle: [https://thenounproject.com/search/?q=puzzle&i=2653765| Puzzle by Icon Lauk from the Noun Project]<br />
<br />
*Design 2: "La clé"<br />
Clé: [https://thenounproject.com/search/?q=key&i=3407583| Key by Alice Design from the Noun Project]<br />
<br />
====Fichiers====<br />
=====Fichiers .gcode=====<br />
[[Fichier:Stic3ProjetAurelie3D.zip]]<br />
<br />
=====Fichiers sur [[Tinkercad]]=====<br />
*[https://www.tinkercad.com/things/8QYZ3UCkmzv Clef]<br />
*[https://www.tinkercad.com/things/kdU2UBrM06K Puzzle]<br />
<br />
====Objets 3D====<br />
[[Fichier:Objets3DAurelieStic3.jpg|600px|vignette|néant|Objets 3D]]<br />
<br />
====Signification====<br />
Comme le dit Antoine de Saint Exupery, "l'essentiel est invisible pour les yeux". Le design utilisé avec le vinyle ont été repris afin de rendre tangible le 2D. En effet, le 3D permet de rendre l'objet plus concret et plus représentatif de la réalité. Le puzzle représente la pièce manquante d'un problème ou alors notre âme sœur, un futur enfant ou l'élément qu'il nous manquait dans notre vie. Un coeur et la notion du "Moi" ont été intégrés au design initial. La clé représente la clé du succès, du bonheur, etc. La notion d'essentiel a été gravée dessus pour rappeler la citation du Petit Prince.<br />
<br />
====Etapes de conception====<br />
# Trouver le design et l'importer dans [[Inkscape]]<br />
# Modifier le design dans [[Tinkercad]]<br />
# Importation du design dans Cura en choisissant l'imprimante Felix Tec 4.<br />
# Slice et sauvegarde des fichiers<br />
<br />
====Difficultés rencontrées====<br />
La principale difficulté a été de combiner plusieurs éléments au sein d'un même design et d'ajouter une gravure. En effet, il faut faire attention à la superposition des éléments et à ce que le texte gravé ne soit pas trop profond pour ne pas "casser" l'objet. Ensuite, pour accéder à Cura, il a été nécessaire de trouver la bonne imprimante pour générer les fichiers.<br />
<br />
=== Production de [[Utilisateur:Martina Salemma | Martina]] ===<br />
==== Design ====<br />
'''Design 1 : Vie multilingue'''<br />
* Outil "texte" de TinkerCad.<br />
* Le kanji "生" (japonais)<br />
<br />
'''Design 2 : Un nouveau Triskèle'''<br />
* [https://thenounproject.com/search/?q=elements&i=1678632 elements by pxLens from the Noun Project]<br />
* [https://thenounproject.com/term/water-water/1235535/ water water by Manohara from the Noun Project]<br />
* [https://thenounproject.com/search/?q=soil&i=904464 Fertile Soil by Ben Davis from the Noun Project]<br />
* [https://thenounproject.com/search/?q=flame&i=1463590 Flame by rivercon from the Noun Project]<br />
<br />
==== Fichiers .stl ====<br />
<gallery><br />
Vie multilingue.stl|''Design 1 : Vie multilingue''<br />
Nouveau Triskèle.stl|''Design 2 : Nouveau Triskèle''<br />
</gallery><br />
<br />
==== Fichiers g-code ====<br />
[[Fichier:Impression 3d martina 2021.zip|vignette]]<br />
<br />
==== Photos ====<br />
<br />
<gallery heights=400px widths=600px><br />
Objets 3d martina 2021.jpg|Objets 3D imprimés<br />
</gallery><br />
<br />
==== Signification ====<br />
Le thème général est simple, il s'agit de "'''la vie'''".<br />
<br />
'''Le design 1, Vie Multilingue''', représente le kanji "[https://en.wiktionary.org/wiki/%E7%94%9F 生]" (japonais), signifiant ''vivre, naître et grandir.'' En "perçage", j'ai ajouté le mot "vie" en plusieurs langue (français, anglais, italien, espagnol).<br />
<br />
'''Le design 2, Un nouveau Triskèle''', représente le [https://fr.wikipedia.org/wiki/Trisk%C3%A8le Triskèle ou Triskelion], un symbole celtique représentant la vie à travers les trois éléments qui sont l'eau, le feu, et la terre. Il est souvent représenté par trois jambes, ou trois spirales. Ici, j'ai pris une forme avec trois branches pour simplifier le design, et rappeler aussi une molécule, la base de la vie.<br />
<br />
==== Etapes de conception ====<br />
# Trouver l'idée du thème général : la vie<br />
# Trouver les idées de design avec des recherche sur google, chercher les images sur The Noun Project<br />
# Importer les images SVG<br />
# Ajouter le texte, régler les hauteurs etc<br />
# Grouper et sauvegarder en .stl<br />
# Ouvrir le .stl sur Ultimate Cura et enregistrer en g-code avec le bon profil<br />
# Imprimer en 3D<br />
<br />
==== Difficultés rencontrées ====<br />
* Trouver les bons paramètres sur Ultimate Cura<br />
* L'un des bords du kanji s'est décollé durant l'impression. Mais l'objet a continué de s'imprimer correctement.<br />
<br />
=== Production de [[Utilisateur:Simon Jöhr|Simon]] ===<br />
==== Design ====<br />
Transmettre et matérialiser des émotions par le langage Braille (messages : l'amour par un ''je t'aime /'' la joie par ''un sourire)''<br />
<br />
'''Design 1 :''' <br />
* je t'aime ♥️<br />
<br />
'''Design 2 :'''<br />
* smile (ou Braille-''smaille'') 😄<br />
<br />
==== Sources, attributions ou ressources ====<br />
Traduction en Braille : https://www.dcode.fr/alphabet-braille<br />
<br />
==== Fichiers .stl ====<br />
<gallery><br />
Braille smaille.stl|''Braille-smile''<br />
Braille je t'aime 2.stl|''Braille-je t'aime 2''<br />
</gallery><br />
<br />
==== Fichiers g-code ====<br />
[[Fichier:2e VERSION Impression 3D Simon 2021.zip|vignette]]<br />
<br />
==== Photos ====<br />
[[Fichier:Photo objets 3D Simon Stic III.jpg|néant|vignette]]<br />
<br />
==== Signification ====<br />
Pour le thème "Matérialisation de l'invisible", je me suis demandé comment les personnes malvoyantes pouvaient ressentir l'émotion que procure la transmission d'un "Je t'aime" griffoné sur un papier par son amoureu.x.se ou d'un simple sourire affiché joyeusement sur un visage. J'ai ainsi eu l'envie de créer ces messages en langage Braille afin qu'au touché, ces émotions invisibles à l'oeil, dès lors matérialisées, soient transmises.<br />
<br />
==== Etapes de conception ====<br />
# Trouver l'idée du thème général<br />
# Penser/griffoner plusieurs "designs" possibles<br />
# Tester des réalisations sous Tinkercad.com<br />
# Traduire les messages souhaités(je t'aime et smile) en Braille avec le site Dcode.fr<br />
# Se renseigner sur la taille minimum et les normes du langage Braille<br />
# Perfectionner les objets sous Tinkercad.com et les exportes en .STL<br />
# Les importer dans Ultimaker Cura, vérifier s'il existe des erreurs puis les exporter en .gcode<br />
<br />
==== Difficultés rencontrées ====<br />
La principale difficulté que j'ai rencontré était dans la réalisation du langage Braille sur les objets 3D. En effet, je voulais être certain d'être dans les normes et les mesures appropriées pour ce langage et l'édition des points convexes.<br />
<br />
Comme seconde difficulté, mais minime cette fois-ci, j'hésite encore entre deux designs pour mon objet n°1 (message ''je t'aime''). En effet, je me demande si l'objet en forme de coeur pourra donner quelque-chose de bien ou non ou, si à l'inverse, l'excavation du coeur sur mon objet carré donnera aussi quelque-chose de sympa. Je verrai lequel je choisirai le jour de l'impression 3D... ☺️<br />
<br />
'''Rép''' Cette petite expérience du braille me rappelle une expérience avec l'un de mes étudiant-es enseignant-es dans mon cours de fabrication. Il voulait faire aussi des choses en 3D (on avait fait plein de test avec du braille inversé, de la pâte filo ...) et au final, la conclusion est que la 3D n'est pas la machine la plus adéquate pour cela mais plus la fraiseuse numérique (il y a en une à l'unige : au FacLab au CUI à Batelle).<br />
<br />
=== Production de [[Utilisateur:JeromeHumbert|Jérôme]] ===<br />
==== Design ====<br />
Design 1 : la goutte d'eau<br />
Design 2 : Une balle de Volleyball<br />
<br />
==== Sources, attributions ou ressources ====<br />
Modèle de la goutte : https://www.thingiverse.com/thing:50851 par by tc_fea<br />
<br />
Modèle du ballon : https://www.thingiverse.com/thing:2254663 par by dragoboarder<br />
<br />
==== Fichiers .stl ====<br />
<gallery><br />
Fichier:Gouttes.stl|Gouttes<br />
Fichier:Volleyball cookie.stl|Ballon de Volleyball<br />
</gallery><br />
<br />
==== Fichiers g-code ====<br />
[[Fichier:Jerome gcodes.zip]]<br />
<br />
==== Photos ====<br />
[[Fichier:Impression3DHumbert.jpg|450px]]<br />
<br />
==== Signification ====<br />
L'eau est devenu tellement banale et usuelle à nos yeux que l'on oublie souvent que celle-ci est composée de beaucoup de gouttes qui ne sont plus visible à nos yeux.<br />
Je n'ai pas vu de ballon de volleyball depuis 8 mois, pour moi c'est devenu invisible 😄<br />
<br />
==== Etapes de conception ====<br />
# Trouver l'idée du thème général<br />
# Trouver des modèles sur TinkerCAD<br />
# Exporter les modèles en stl<br />
# Produire les gcode des modèles dans Cura<br />
<br />
==== Difficultés rencontrées ====<br />
Pas évident de faire le lien avec les paramètres d'impression dans Cura. J'espère ne pas avoir fait quelque chose de faux.<br />
<br />
=== Production de [[Utilisateur:Anne Sorin|Anne]] ===<br />
==== Design ====<br />
Sources<br />
<br />
'''Design 1 : Le hasard'''<br />
<br />
[https://www.tinkercad.com/things/3TN1hFfHqXk Dice by MLGPlayer]<br />
<br />
'''Design 2 : La chance'''<br />
<br />
[https://www.tinkercad.com/things/5rjET6i8YPY Fortune Cat by Shankins2023]<br />
==== Fichiers .stl ====<br />
[[Fichier:DiceALS Redim.stl|alt=Design1: Dé - Hasard|néant|vignette|Design1: Dé - Hasard]]<br />
[[Fichier:FortuneCatALS Redim.stl|alt=Design 2: Fortune Cat - Chance|néant|vignette|Design 2: Fortune Cat - Chance]]<br />
<br />
==== Fichiers g-code ====<br />
[[Fichier:Stic3Anne fichiersGcodes.zip]][[:Fichier:Stic3Anne fichiersGcodes.zip|Fichiers g-code Anne]]<br />
<br />
==== Photos ====<br />
<gallery><br />
Fichier:6FaceDice.png|alt=Design 1: 6 Faces Dice - Hasard|Design 1: 6 Faces Dice - Hasard<br />
Fichier:FortuneCat.png|alt=Design 2: Fortune Cat - Chance|Design 2: Fortune Cat - Chance<br />
</gallery><br />
<br />
==== Signification ====<br />
"Le hasard fait bien les choses", "je te souhaite bonne chance" autant d'expressions qui finalement sont très abstraites. Chacun a sa propre interprétation de ce qu'est le hasard. Chacun voit sa chance en fonction de son vécu. <br />
<br />
S'en remettre au hasard, c'est comme lancer les dés. Cela nous donne la possibilité de réaliser 1 hasard sur 6 possibles quand le dé a six faces.<br />
<br />
La chance est plutôt représentée par des objets porte-bonheur, qui varient en fonction des cultures et des croyances. Mon choix s'est porté sur le "fortune cat" des la culture chinoise.<br />
<br />
==== Étapes de conception ====<br />
# Choix des fichiers modèles sur [https://www.tinkercad.com/ TinkerCAD]<br />
# Personnalisation des modèles: Pour le Fortune Cat, j'ai enlevé le cube avec le texte en caractères chinois, pour le dé, j'ai joué avec la forme et les vides qui représentent les numéros, pour finalement revenir à la forme classique. Réglage de la taille des objets: Redimensionnement du dé pour qu'il soit à 51mm x 51mm x 51mm. Redimensionnement du chat pour qu'il soit également de 5cm.<br />
# Exportation des modèles en .stl<br />
# Importation des fichiers dans [https://ultimaker.com Cura]<br />
# Paramétrage de l'impression et slicing. Puis importation dans le logiciel builder de mon imprimante 3D [https://micro.printm3d.com (printm3D)]<br />
# Lancement de l'impression (durée totale 1h15)<br />
<br />
# <br />
<br />
==== Difficultés rencontrées ====<br />
La représentation et la manipulation en 3D m'ont été très difficiles. J'ai passé beaucoup de temps dans la manipulation des formes et l'ajustement sur TinkerCAD popremière forme (le dé), puis cela a été plus facile pour le second design.<br />
<br />
Le rendu pourrait être plus joli pour le fortune cat (couches très visibles).<br />
<br />
Pour le dé, le filament s'est tordu dans son déroulement, ce qui a stoppé l'impression.<br />
*<br />
<br />
=== Production de [[Utilisateur:Djamileh Aminian | Djamileh]] === <br />
====Design====<br />
<gallery><br />
Fichier:Brain2.stl | Cerveau<br />
Fichier:NeuronBase.stl | Neurone<br />
</gallery><br />
<br />
'''Sources et attributions''':<br />
* Cerveau : Brain by Giuditta Valentina Gentile from the Noun Project<br />
* [https://www.tinkercad.com/things/hjGJ163Yizs Neuron] par Kiki Ahearn<br />
<br />
====Fichiers====<br />
* Fichiers de base :[[Fichier:Projet3D Djamileh gcode.zip]]<br />
* Nouveaux fichiers pour 2e impression (stl+gcode) : [[Fichier:FTEC Neuron.zip|vignette]]<br />
<br />
====Objets 3D====<br />
<gallery heights=550px widths=400px><br />
Brain 3D.jpg | Design 1 : Cerveau<br />
Neurone jupe.jpg| Design 2 : Neurone avec jupe (merci Kalli !)<br />
</gallery><br />
<br />
====Signification====<br />
A force de réfléchir à l'apprentissage, à vouloir comprendre ce qui se passe au niveau cognitif, affectif, social, motivationnel, j'en oublie que l'apprentissage a des bases physiologiques. Aujourd'hui, la seule manière de "voir" l'apprentissage est de brancher l'humain dans des appareils chers et peu propice à lui faire oublier qu'on le mesure! Ainsi, en formation, on tente de mesurer un apprentissage par la production de comportements qui démontreraient que la personne a bien appris ce qui "devait être appris". Mais qu'est-ce que qui se passe réellement au niveau cérébral ? quels sont les neurones qui ont déchargés et qui créent des liens entre eux ? tout cela reste encore bien invisible.<br />
<br />
====Etapes de conception====<br />
# Trouver un design dans Tinkercad<br />
# Ajouter des plateaux et modifier les design selon mes besoins<br />
# Importer le design dans Cura<br />
# Définir les réglages pour la FelicTec<br />
# Finaliser avec Slice et sauvegarder les fichiers<br />
# Imprimer avec les bons réglages!<br />
<br />
====Difficultés rencontrées====<br />
'''Conception'''<br />
J'ai préféré utiliser un design déjà fait et simplement changer la taille et certaines couleurs (bien qu'il me semble que les impressions soient monochromes), car durant le présentiel, j'avais eu beaucoup de mal à superposer des objets. A ce stade, les paramètrages de vitesse, température et autres restent encore flou, vu que je n'ai jamais touché à une imprimante 3D. Je me réjouis de pouvoir voir et toucher en vrai pour mieux intégrer les points clés.<br />
A la correction du 2e objet, j'ai mieux compris les réglages dans TinkerCAD concernant les différentes couches (dans mon premier design, un cylindre à plat faisait "flotter" des couches dans le vide)<br />
'''Réalisation'''<br />
Les réglagles avec l'imprimante ont fonctionné du premier coup. La superposition d'un plateau pour faire tenir tous les morceaux de l'objet a bien marché aussi.<br />
<br />
=== Production de [[Utilisateur:Tiffany Nguyen | Tiffany]] === <br />
====Design====<br />
<gallery><br />
Fichier:Maison3D.stl | Design 1 : Maison<br />
Fichier:Invisible3D.stl | Design 2 : Invisible<br />
</gallery><br />
====Fichiers====<br />
[[Fichier:Tiffany stl2.zip|vignette]]<br />
<br />
====Objets 3D====<br />
<gallery heights=450px widths=450px><br />
Fichier:Photo impression 3D.jpg|vignette|Impression 3D du design Maison<br />
Fichier:Impression 3D Invisible STIC 3.jpg|vignette|Impression 3D du design Invisible<br />
</gallery><br />
<br />
====Signification====<br />
Le premier design est une maison qui représente l'espace personnel. Ce lieu est l'endroit où nous sommes le plus réels et gardons cacher tout ce qui nous est intime. <br />
<br />
Le deuxième design est un bloc avec le mot 'invisible' ancré à l'intérieur. Lorsque le bloc est de dos, le mot est 'invisible' est invisible pour nous. Cela représente ce qui est invisible à nos yeux n'est pas forcément réellement inexistant. <br />
====Etapes de conception====<br />
# Choix et réflexion à propos du thème.<br />
# Utilisation de Tinkercad et conception à partir des outils proposés.<br />
# Utilisation de Ultimaker Cura pour paramétrer le fichier selon l'imprimante Felix Tec 4 et le profil des Lego 0.2 pour "les désespérés".<br />
# Enregistrer le gcode et déposer le fichier sur l'EdutechWiki. <br />
# Lancer l'impression Utlimaker Cura et se rendre compte que le fichier est trop lourd et le temps d'impression est beaucoup trop long. <br />
# Nouvelles adaptions des designs pour l'impression : suppression de la porte pour Maison, amincir pour Invisible. <br />
# Calibrer l'imprimante et lancer l'impression (par Kalli). Espérer que cela ne devienne pas des spaghetti. <br />
<br />
====Difficultés rencontrées====<br />
Ma plus grande difficulté était de configurer le Ultimaker Cura. Il y avait des options partout et je ne savais pas par où commencer. De plus, il est informée que l'une de mes formes prend 7h à être imprimée, je me demande donc s'il n'y aurait pas un problème dans mon paramétrage... J'ai donc résolu le problème en adaptant les designs à l'impression. J'ai réduit son épaisseur et enlever un élément non-imprimable. <br />
<br />
=== Production de [[Utilisateur:Yong Xin Lam|Lylia]] === <br />
====Design====<br />
<gallery><br />
Fichier:Rainbow STIC III v2 Lylia.stl| Design 1: L'arc-en-ciel<br />
Fichier:3D Daruma.stl| Design 2: Le daruma<br />
</gallery><br />
<br />
'''Sources:'''<br />
* [https://www.tinkercad.com/things/gdiNXpIzPP1 Daruma Doll (Luck & Good fortune), Conception réalisée par RedIcarus]<br />
* [https://thenounproject.com/term/rainbow/1833074/, Rainbow by fauzan akbar from the Noun Project]<br />
<br />
====Fichiers====<br />
[[Fichier:Rainbow_STIC_III_v2_Lylia.stl|vignette]]<br />
[[Fichier:Daruma lylia v3.stl|vignette]]<br />
<br />
====Objets 3D====<br />
[[Fichier:Impression 3D initiation Lylia.jpg|none|450px]] <br />
<br />
Update P6: Manque de temps pour la réalisation lors de la séance en présence du 7 mai, solution: envoi des fichiers à Kalli <br />
<br />
Update 11/06: Objets imprimés. Merci Kalli!<br />
<br />
====Signification====<br />
Le thème général que j’ai choisi pour les activités d’initiation est la chance/la bonne fortune. A travers le monde, différents objets, ou symboles sont utilisés pour interpréter ce concept. Pour chaque type de machine, j’ai choisi d’associer un prototype à l’Europe et un à l’Asie.<br />
<br />
1) L'arc-en-ciel. Un phénomène météo rare qui survient lors de jours de pluie. Il paraît qu'un chaudron remplit d'or attend celui qui parviendra au pied de l'arc-en-ciel..!<br />
2) Le daruma. Petit personnage rond de provenance bouddhiste. Ils sont vendus sans pupille dessinées, et la tradition veut que l’on fasse un vœu ou choisisse un objectif à atteindre en remplissant un œil. La 2ème pupille ne sera dessinée qu’une fois le vœu réalisé. Ici, il est carré, mais garde les caractéristiques de l'original.<br />
<br />
====Etapes de conception====<br />
# Réflexion sur les objets à réaliser<br />
# Réalisation des tutoriels de manipulations de base sur Tinkercad<br />
# Recherche de modèles réalisés par des membres de la communauté<br />
# Modifications mineures pour correspondre aux consignes données.<br />
<br />
====Difficultés rencontrées====<br />
N'ayant jamais touché à la modélisation 3D auparavant, j'ai l'impression que ce n'est pas facile du tout de faire des choses complexes...!<br />
<br />
=== Production de [[Utilisateur:Elias E.|Elias]] === <br />
====Design====<br />
<gallery><br />
Fichier:Oeuf-stic3-elias.stl| Design n°1: L'œuf<br />
Fichier:Pyramide-stic3-elias.stl| Design n°2: La pyramide<br />
</gallery><br />
<br />
'''Sources:'''<br />
* [https://www.tinkercad.com/things/3dENQhBWufz-piramide Piramide (Luck & Good fortune), Conception réalisée par Dyonata Ferreira]<br />
<br />
====Fichiers====<br />
[[Fichier:Oeuf-stic3-elias.stl|vignette]]<br />
<br />
[[Fichier:Pyramide-stic3-elias.stl|vignette]]<br />
<br />
====Objets 3D====<br />
<gallery heights=450px widths=450px><br />
Fichier:Oeuf-elias-final-stic3.jpg| Design n°1: L'œuf (design final)<br />
Fichier:pyramide-elias-final-stic3.jpg| Design n°2: La pyramide (design final)<br />
</gallery><br />
<br />
====Signification====<br />
L'oeuf est trop souvent invisible dans les plats dans lesquels il est présent (gâteau, crêpes, pancakes), ici il est donc représenté sous forme d'oeuf au plat<br />
<br />
Les pyramides ont encore aujourd'hui des grands mystères à élucider, encore faut-il les trouver. La porte de la pyramide a l'air entrouverte, allons découvrir tout ça !<br />
<br />
====Etapes de conception====<br />
# Choix des objets à réaliser en rapport avec le thème.<br />
# Comparaison avec des modèles existants.<br />
# Modifications mineures pour la pyramide et conception pour l'oeuf.<br />
# Impression des productions finales.<br />
<br />
====Difficultés rencontrées====<br />
J'ai eu un peu de difficulté à prendre en main la conception 3D qui est domaine nouveau pour moi.<br />
<br />
=== Production de [[Utilisateur:Orfelis|Orfelis]] ===<br />
==== Design ====<br />
<br />
<gallery><br />
Fichier:<br />
Fichier:Figuresilence1.stl|Répresente le silence personnel <br />
Fichier:Orfelisfigure1.stl|Répresente le silence humaine<br />
<br />
</gallery><br />
<br />
'''Sources'''<br />
L’idée a été prise d’un tutorial [https://www.youtube.com/watch?v=5qP3d3U9BgY YouTube.]<br />
<br />
==== Photos des réalisations ====<br />
<gallery widths=400px heights=400px >><br />
Fichier:Resultat1 impremente3d.jpg|Lors de ce premier essai, le texte ne s’est pas imprimé. <br />
Fichier:Images3dsilence.jpg|vignette|Deuxième impression de l'objet<br />
Fichier:Verre silence.jpg|vignette|Deuxième image. Prenez une pause pour faire de silence <br />
</gallery><br />
*Contraintes: Les premiers fichiers créés avaient des problèmes liés au nettoyage et aussi à la position des objets sur le plan.<br />
Nous avons donc corrigé les fichiers à partir de zéro avec le logiciel Tinkercad et mis à jour ces fichiers sur le wiki pour un deuxième test d'impression.<br />
<br />
==== Signification ====<br />
Le verre vert (comme la nature) signifie la nécessité de faire une pause pour être en silence. <br />
==== Étapes de conception ====<br />
# Lecture des différentes <br />
# Choix de la thématique <br />
# Tester le logiciel avec les bases du cours <br />
# Chercher de tutoriels pour maitriser le logiciel Tinkercad<br />
# Tester d’autres logiciels de design 3D (BlocksCAD)<br />
# Crée une figure sur la base d’un tutoriel et liée au thème <br />
# Tester le prototype par le logiciel CURA <br />
# La deuxième figure a été réalisée dans Inkscape, puis importée dans Tinkercad et éditée dans ce logiciel.<br />
# Sans impression<br />
<br />
==== Difficultés rencontrées ====<br />
La plus grosse difficulté a été de maitriser le logiciel. Cela m’a pris trop de temps. De plus, j’ai essayé d’autres logiciels pour finalement choisir Tinkercad. Pour conclure que c’est plus facile depuis qu’on l'utilise.</div>Djamileh Aminianhttps://edutechwiki.unige.ch/fmediawiki/index.php?title=Fichier:Neurone_jupe.jpg&diff=154293Fichier:Neurone jupe.jpg2021-06-21T15:44:12Z<p>Djamileh Aminian : </p>
<hr />
<div>Neurone avec jupe</div>Djamileh Aminianhttps://edutechwiki.unige.ch/fmediawiki/index.php?title=STIC:STIC_III_(2020)/Forces_rouge,_rose,_vert,_jaune_ou_bleu_!&diff=153791STIC:STIC III (2020)/Forces rouge, rose, vert, jaune ou bleu !2021-06-14T20:38:18Z<p>Djamileh Aminian : /* code */</p>
<hr />
<div>{{bloc important|Projet réalisé par [[Utilisateur:Djamileh_Aminian|Djamileh]] & [[Utilisateur:Simon_Jöhr|Simon]]}}<br />
<br />
== Introduction ==<br />
Durant la dernière année, le passage forcé à la téléformation, soit la formation synchrone à distance, a eu comme effet positif de pousser certains spécialistes de l’éducation à revisiter leurs scénarios pédagogiques pour revenir aux fondamentaux : comment aider les élèves à apprendre ce qu’ils sont sensés apprendre et comment les accompagner au mieux dans leur apprentissage ? Souvent, les difficultés relevées lors des bilans des derniers mois de distantiel ont fait émerger des problèmes qui existaient déjà en présence, mais qui restaient latents ou ignorés.<br />
<br />
En ce sens, l’apprentissage est fortement influencé par les émotions par lesquelles passent les élèves au cours de la formation, et en particulier pendant les moments synchrones. Pourtant, il est très complexe de détecter, mesurer, ou même faire exprimer les étudiant-es sur leur ressenti.<br />
<br />
En donnant leurs cours en visioconférence, nombreux formateurs et formatrices ont exprimé leur frustration de ne pas réussir à évaluer l’état émotionnel et autres indices non verbaux de leurs participant.e.s, retours essentiels pour adapter une explication ou ajuster le rythme. Et cet effet est loin d’être limité à la distance : il est également bien présent dans une salle de classe où il reste complexe de capter en temps réel les émotions d’un étudiant, processus complexe et dynamique.<br />
<br />
Notre projet prend sa racine dans ce constat. Deux questions ont alors émergé : <br />
* comment mesurer l'état émotionnel d'un-e apprenant-e, <br />
* et surtout, pour quel usage ?<br />
<br />
Dans ce contexte, nous avons pensé un dispositif de partage des ressentis de la classe à destination de l'équipe enseignante, et une utilisation de cette donnée comme retour au groupe.<br />
<br />
== Problème ==<br />
<br />
Le but de ce projet est de proposer une solution ludique à la constitution de groupes en classe, que cela soit en présence, à distance ou de manière comodale. En utilisant un Arduino Uno ou des CPX, la phase de constitution de groupes sera ainsi rapide, aléatoire et "fun" !<br />
<br />
Le ''Problem Statement'' peut s’exprimer ainsi : « Comment peut-on aider les formateurs et formatrices à identifier rapidement les difficultés dans l’apprentissage et, le cas échéant, à réagir ? »<br />
<br />
== Cahier des charges == <br />
=== Contexte et public ===<br />
Le public cible est composé de formateurs et formatrices d’adultes, en entreprise ou en institut. Il pourrait également être élargi aux enseignante.s du scolaire, mais la conscientisation et l’expression d’une émotion sont suffisamment complexes pour limiter notre premier dispositif à des adultes, disposant, à priori, d’une compréhension plus fine de leur état émotionnel. De plus, l’asymétrie dans la relation est supposée moins forte dans un groupe d’adultes en formation que dans une classe avec un enseignant et des enfants ou adolescents.<br />
<br />
===Objectifs===<br />
Le but du dispositif est de :<br />
* permettre la communication d'un niveau émotionnel perçu par l'étudiant.e à l'enseignant.e<br />
* faire émerger un état général de la classe et les différences dans l'acquisition du contenu<br />
* de manière plus pragmatique, de créer des groupes sur la base des éléments communiqués<br />
<br />
===Besoins et contraintes===<br />
L'idée du projet a beaucoup évolué entre la phase d'identification des besoins et les constatations sur les possiblités offertes par la technologie et l'expertise à disposition. Nous détaillons ci-dessous les besoins et contraintes qui nous ont mené à la solution présentée plus bas.<br />
<br />
Partant au début d’une idée de jauge émotionnelle dynamique, donnant en tout temps l’état émotionnel d’un groupe de participants, nous avons rapidement détecté, en phase d'idéation avec plusieurs spécialistes en éducation, un aspect extrêmement anxiogène pour le formateur dont le groupe enverrait des signaux d’ennui ou de frustration, durant une explication. <br />
<br />
Afin de juguler cet effet, tout en conservant la possibilité de communiquer un message sur l’état, nous avons adapté le dispositif pour permettre aux étudiants de transmettre leur état à des moments spécifiques de la formation, intégrés dans le scénario pédagogique. L'émotion étant un élément sensible à conscientiser, exprimer et partager au sein d'un groupe, nous avons estimé plus judicieux de faire exprimer son niveau d'aisance face à un contenu qui vient d'être transmis. Ainsi, un-e enseignant-e scénarisera des moments d'auto-diagnostique des étudiant-es sur leur perception de compétence sur la thématique. Cette information peut être utilisée pour réaliser des groupes de travail : (1) les personnes qui ont compris peuvent être orientées sur un contenu plus avancé, en échange pendant que l'enseignant organiser une séance de question-réponse avec les personnes en difficulté ou (2) des groupes peuvent être créés pour intégrer des étudiant-es qui ont compris avec des étudiant-es qui ont besoin d'aide.<br />
<br />
Le dispositif est donc pensé comme un outil de sondage à certains moments du cours, pour évaluer les besoins du groupe, dans son ensemble. Il est souvent difficile de récolter des informations sincères lors d’évaluations à chaud, les étudiants réticents à communiquer publiquement leurs difficultés ou désintérêts pour le contenu. Par la technique de transmission, les étudiants pourraient communiquer leur émotion de manière anonyme, favorisant l'authenticité.<br />
<br />
De manière intéressante au fur et à mesure de l'avance du projet, il est ressorti des discussions avec un échantillon du public cible que l'aspect de notre projet qui les intéressaient étaient moins la communication des émotions, mais la création facilitée des groupes. En effet, les formateurs et formatrices ayant travaillé à distance durant la dernière année se sont habitués à disposer d'une fonction de création de groupe aléatoire, selon un nombre total de participant et un nombre de groupe visé. Cette fonction serait très utile également en présence, en utilisant une carte Arduino ou un CPX pour calculer une répartition des élèves par groupe, avec en entrée le nombre d'élèves et les sous-groupes. Une fois les groupes constitué, l'étape suivante est de communiquer ces groupes à l'ensemble de la classe au travers de Lilypad ou autres technologies portables qui s'allument selon la couleur de leur groupe.<br />
<br />
===Apports===<br />
* Cohésion et sentiment d'appartenance au groupe comme soutien à l'apprentissage<br />
* Expression d'un état émotionnel épistémique comme bénéfique à l'apprentissage<br />
<br />
===Présentation du projet===<br />
Suite aux premières itérations dans l'empathie et la définition du projet, nous avons identifié plusieurs points clés qui ont réorienté notre projet :<br />
* la création d'un réseau de cartes bluetooth contrôlées par Arduino s'est révélé trop ambitieux, suite au manque de projets existants ou d'expertise sur lesquels s'appuyer, <br />
* l'envie marquée de notre échantillon cible qui s'est dirigée sur l'aspect création de groupe plus que sur la connaissance des états affectifs.<br />
<br />
Nous avons donc revu le projet en le divisant en 3 niveaux de difficuté, afin de réaliser un prototype utilisable, puis de l'améliorer en fonction des retours et du temps à disposition.<br />
* '''Niveau 1 - Création de groupe aléatoire''' : intérêts : facilitation de la création des groupes (demande reçue d'un formateur : "parce que Zoom nous a bien aidé pour cela à distance, je veux la même chose en présence!")<br />
* '''Niveau 2 : Communication du groupe à l’apprenant''' : intérêts : gamification, sentiment d’appartenance, coopération, cohésion<br />
* '''Niveau 3 : Communication de son sentiment de compétence''' : intérêts : plus facile que d'exprimer ses émotions, et plus facile à gérer par l'enseignant.e, par exemple les gens qui ont compris avec celles-ceux qui n'ont pas compris<br />
<br />
Nous avons réalisé complètement le niveau 1, ainsi que prototypé et testé le niveau 2 avec des cables avant de pouvoir gérer par Bluetooth un Bluefruit spécifique dans un réseau comprenant plusieurs Bluefruits. Les solutions avec code et prototypes sont décrites dans la section suivante.<br />
<br />
== Solutions explorées ==<br />
<br />
===1er prototype===<br />
La première solution envisagée comporte deux objets : <br />
* Un '''émetteur''' : facile d’utilisation et agréable à porter, nous penchons pour la solution d’un bracelet contenant un micro circuit type Lilypad, Arduino Gemma ou Tinyduino. L’apprenant disposerait de 4 boutons-pressoirs pour 4 émotions majeures à transmettre (intérêt, confusion, frustration, incompréhension), symbolisés par des logos ou émoticônes. Les messages sont transmis par Bluetooth.<br />
* Un '''récepteur''' : Une jauge, comprenant une bande Neopixels, connectée à un Arduino Uno. Les LED symboliseraient deux dimensions fournies : la couleur pour le type d'émotion et le nombre pour la quantité d'étudiant.e.s ayant transmis l'information. L'Arduino pourrait gérer l'information, en émettant un son lors du dépassement d'un seuil prédéfini sur une émotion par exemple.<br />
<br />
====maquette====<br />
L'Arduino Uno lance une séquence de randomisation de couleur, en affiche une, puis les participant.e.s font de même sur leur CPX. Si les couleurs affichées "matchent", le groupe est constitué et on peut ainsi passer à la constitution aléatoire du groupe suivant. <br />
[[Fichier:2e Maquette projet STIC III Djamileh et Simon .jpg|néant|vignette|1103x1103px|Maquette du projet]] <br />
<br />
====code====<br />
<u>Version 1.0 du code CPX :</u> <syntaxhighlight lang="javascript"><br />
input.buttonA.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 200<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(40)<br />
color2 += Math.randomRange(1, 3)<br />
light.setPhotonPenHue(color2)<br />
}<br />
light.photonFlip()<br />
})<br />
input.buttonsAB.onEvent(ButtonEvent.Click, function () {<br />
control.reset()<br />
})<br />
input.buttonB.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 300<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
color2 += 3<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(50)<br />
}<br />
})<br />
let tonalité = 0<br />
let durée = 0<br />
let color2 = 0<br />
light.setBrightness(158)<br />
music.setVolume(167)<br />
forever(function () {<br />
<br />
})<br />
</syntaxhighlight><br />
<br />
===2e prototype===<br />
<br />
====maquette====<br />
<br />
<br />
====code====<br />
[[Fichier:CPX firstproto.jpg|vignette|droite|Une étape dans le test du code - 5 binomes de noël! ]]<br />
La solution présentée ici s'occupe du niveau 1, soit la création de groupe aléatoire à l'aide d'un CPX Bluefruit.<br />
Elle a été codée en CircuitPython. Nous n'avons pas utilisé de code existant, et la première partie de dictionnaire a été finalisée grâce à l'aimable contribution de notre collègue Jérôme.<br />
<br />
<syntaxhighlight lang="python"><br />
# Groupify !<br />
# Un projet de S!m & Dja<br />
<br />
# code python pur pour la répartition dans les groupes<br />
import random<br />
<br />
# Librairie pour gérer la bande neopixel du bluefruit<br />
from adafruit_circuitplayground import cp<br />
<br />
participants = int(input("Combien y a de participants : "))<br />
groupe = int(input("Combien tu veux de groupes : "))<br />
<br />
liste_part = list(range(1, participants + 1))<br />
liste_groupe = list(range(1, groupe + 1))<br />
<br />
clé_tableau = str(participants) + "_" + str(groupe)<br />
# ajouter combinaisons pas possible --> genre un tour de roue lumineuse/un son pourri<br />
grille_repartition = {"10_5": [2, 2, 2, 2, 2], "10_4": [2, 2, 3, 3], "10_3": [3, 3, 4]}<br />
<br />
taille_groupe = grille_repartition[clé_tableau]<br />
<br />
dict_repartition = {}<br />
for i in range(0, len(taille_groupe)):<br />
dict_repartition[liste_groupe[i]] = []<br />
for j in range(0, taille_groupe[i]):<br />
etu = liste_part[random.randint(0, len(liste_part) - 1)]<br />
dict_repartition[liste_groupe[i]].append(etu)<br />
liste_part.remove(etu)<br />
print(dict_repartition)<br />
<br />
# Définition des groupes avec couleurs<br />
groupeTotal = dict_repartition.values()<br />
groupeList = list(groupeTotal)<br />
print(groupeList)<br />
<br />
# créer un test pour si existe pas --> ignorer / boucle sur la base de len(groupeList)<br />
groupe1 = groupeList[0]<br />
groupe2 = groupeList[1]<br />
groupe3 = groupeList[2]<br />
groupe4 = groupeList[3]<br />
groupe5 = groupeList[4]<br />
<br />
# Gestion des LEDs<br />
cp.pixels.brightness = 0.05<br />
<br />
groupe1_color = (0, 255, 0)<br />
groupe2_color = (255, 0, 255)<br />
groupe3_color = (255, 255, 0)<br />
groupe4_color = (0, 255, 255)<br />
groupe5_color = (255, 0, 0)<br />
<br />
# recherche des participants (LED) dans les groupes<br />
if 1 in groupe1:<br />
pix1 = groupe1_color<br />
elif 1 in groupe2:<br />
pix1 = groupe2_color<br />
elif 1 in groupe3:<br />
pix1 = groupe3_color<br />
elif 1 in groupe4:<br />
pix1 = groupe4_color<br />
elif 1 in groupe5:<br />
pix1 = groupe5_color<br />
<br />
if 2 in groupe1:<br />
pix2 = groupe1_color<br />
elif 2 in groupe2:<br />
pix2 = groupe2_color<br />
elif 2 in groupe3:<br />
pix2 = groupe3_color<br />
elif 2 in groupe4:<br />
pix2 = groupe4_color<br />
elif 2 in groupe5:<br />
pix2 = groupe5_color<br />
<br />
if 3 in groupe1:<br />
pix3 = groupe1_color<br />
elif 3 in groupe2:<br />
pix3 = groupe2_color<br />
elif 3 in groupe3:<br />
pix3 = groupe3_color<br />
elif 3 in groupe4:<br />
pix3 = groupe4_color<br />
elif 3 in groupe5:<br />
pix3 = groupe5_color<br />
<br />
if 4 in groupe1:<br />
pix4 = groupe1_color<br />
elif 4 in groupe2:<br />
pix4 = groupe2_color<br />
elif 4 in groupe3:<br />
pix4 = groupe3_color<br />
elif 4 in groupe4:<br />
pix4 = groupe4_color<br />
elif 4 in groupe5:<br />
pix4 = groupe5_color<br />
<br />
if 5 in groupe1:<br />
pix5 = groupe1_color<br />
elif 5 in groupe2:<br />
pix5 = groupe2_color<br />
elif 5 in groupe3:<br />
pix5 = groupe3_color<br />
elif 5 in groupe4:<br />
pix5 = groupe4_color<br />
elif 5 in groupe5:<br />
pix5 = groupe5_color<br />
<br />
if 6 in groupe1:<br />
pix6 = groupe1_color<br />
elif 6 in groupe2:<br />
pix6 = groupe2_color<br />
elif 6 in groupe3:<br />
pix6 = groupe3_color<br />
elif 6 in groupe4:<br />
pix6 = groupe4_color<br />
elif 6 in groupe5:<br />
pix6 = groupe5_color<br />
<br />
if 7 in groupe1:<br />
pix7 = groupe1_color<br />
elif 7 in groupe2:<br />
pix7 = groupe2_color<br />
elif 7 in groupe3:<br />
pix7 = groupe3_color<br />
elif 7 in groupe4:<br />
pix7 = groupe4_color<br />
elif 7 in groupe5:<br />
pix7 = groupe5_color<br />
<br />
if 8 in groupe1:<br />
pix8 = groupe1_color<br />
elif 8 in groupe2:<br />
pix8 = groupe2_color<br />
elif 8 in groupe3:<br />
pix8 = groupe3_color<br />
elif 8 in groupe4:<br />
pix8 = groupe4_color<br />
elif 8 in groupe5:<br />
pix8 = groupe5_color<br />
<br />
if 9 in groupe1:<br />
pix9 = groupe1_color<br />
elif 9 in groupe2:<br />
pix9 = groupe2_color<br />
elif 9 in groupe3:<br />
pix9 = groupe3_color<br />
elif 9 in groupe4:<br />
pix9 = groupe4_color<br />
elif 9 in groupe5:<br />
pix9 = groupe5_color<br />
<br />
if 10 in groupe1:<br />
pix10 = groupe1_color<br />
elif 10 in groupe2:<br />
pix10 = groupe2_color<br />
elif 10 in groupe3:<br />
pix10 = groupe3_color<br />
elif 10 in groupe4:<br />
pix10 = groupe4_color<br />
elif 10 in groupe5:<br />
pix10 = groupe5_color<br />
<br />
# Gestion de l'allumage de la bande neopixel<br />
while True:<br />
cp.pixels[0] = pix1<br />
cp.pixels[1] = pix2<br />
cp.pixels[2] = pix3<br />
cp.pixels[3] = pix4<br />
cp.pixels[4] = pix5<br />
cp.pixels[5] = pix6<br />
cp.pixels[6] = pix7<br />
cp.pixels[7] = pix8<br />
cp.pixels[8] = pix9<br />
cp.pixels[9] = pix10<br />
</syntaxhighlight><br />
<br />
== Test(s) de la solution ==<br />
Documentation dans votre page projet avec un [[:en:Cognitive walkthrough|cognitive walkthrough]] ou similaire pour le testing + avec un test utilisateurs (3 personnes minimum) c'est à dire création d’un scénario (tâches à réaliser), passation et analyse des résultats. <br />
<br />
== Discussion ==<br />
Cette partie inclus deux sous parties : <br />
* Discussion du design (et si c'était à refaire ou à améliorer),<br />
* Discussion des résultats de vos tests utilisateurs<br />
<br />
== Licence, fichiers et documentation ==<br />
[[Fichier:By-nc.png|150px]] Cette œuvre est mise à disposition selon les termes de la [http://creativecommons.org/licenses/by-nc/4.0/ Licence Creative Commons Attribution - Pas d’Utilisation Commerciale 4.0 International].<br />
<br />
* Fichiers :<br />
Insérer ici vos fichiers ou les liens vers vos fichiers<br />
<br />
* Documentation : <br />
Insérer ici une petite documentation pour l'utilisation de l'objet si nécessaire<br />
<br />
== Bibliographie ==<br />
<br />
* Blair, C., Calkins, S., & Kopp, L. (2010). Self-regulation as the interface of emotional and cognitive development: Implications for education and academic achievement.<br />
* Pekrun, R., Goetz, T., Titz, W., & Perry, R. P. (2002). Academic emotions in students' self-regulated learning and achievement: A program of qualitative and quantitative research. Educational psychologist, 37(2), 91-105.</div>Djamileh Aminianhttps://edutechwiki.unige.ch/fmediawiki/index.php?title=Fichier:CPX_firstproto.jpg&diff=153790Fichier:CPX firstproto.jpg2021-06-14T20:37:05Z<p>Djamileh Aminian : </p>
<hr />
<div>Joli CPX qui brille</div>Djamileh Aminianhttps://edutechwiki.unige.ch/fmediawiki/index.php?title=STIC:STIC_III_(2020)/Forces_rouge,_rose,_vert,_jaune_ou_bleu_!&diff=153789STIC:STIC III (2020)/Forces rouge, rose, vert, jaune ou bleu !2021-06-14T20:25:00Z<p>Djamileh Aminian : /* Bibliographie */</p>
<hr />
<div>{{bloc important|Projet réalisé par [[Utilisateur:Djamileh_Aminian|Djamileh]] & [[Utilisateur:Simon_Jöhr|Simon]]}}<br />
<br />
== Introduction ==<br />
Durant la dernière année, le passage forcé à la téléformation, soit la formation synchrone à distance, a eu comme effet positif de pousser certains spécialistes de l’éducation à revisiter leurs scénarios pédagogiques pour revenir aux fondamentaux : comment aider les élèves à apprendre ce qu’ils sont sensés apprendre et comment les accompagner au mieux dans leur apprentissage ? Souvent, les difficultés relevées lors des bilans des derniers mois de distantiel ont fait émerger des problèmes qui existaient déjà en présence, mais qui restaient latents ou ignorés.<br />
<br />
En ce sens, l’apprentissage est fortement influencé par les émotions par lesquelles passent les élèves au cours de la formation, et en particulier pendant les moments synchrones. Pourtant, il est très complexe de détecter, mesurer, ou même faire exprimer les étudiant-es sur leur ressenti.<br />
<br />
En donnant leurs cours en visioconférence, nombreux formateurs et formatrices ont exprimé leur frustration de ne pas réussir à évaluer l’état émotionnel et autres indices non verbaux de leurs participant.e.s, retours essentiels pour adapter une explication ou ajuster le rythme. Et cet effet est loin d’être limité à la distance : il est également bien présent dans une salle de classe où il reste complexe de capter en temps réel les émotions d’un étudiant, processus complexe et dynamique.<br />
<br />
Notre projet prend sa racine dans ce constat. Deux questions ont alors émergé : <br />
* comment mesurer l'état émotionnel d'un-e apprenant-e, <br />
* et surtout, pour quel usage ?<br />
<br />
Dans ce contexte, nous avons pensé un dispositif de partage des ressentis de la classe à destination de l'équipe enseignante, et une utilisation de cette donnée comme retour au groupe.<br />
<br />
== Problème ==<br />
<br />
Le but de ce projet est de proposer une solution ludique à la constitution de groupes en classe, que cela soit en présence, à distance ou de manière comodale. En utilisant un Arduino Uno ou des CPX, la phase de constitution de groupes sera ainsi rapide, aléatoire et "fun" !<br />
<br />
Le ''Problem Statement'' peut s’exprimer ainsi : « Comment peut-on aider les formateurs et formatrices à identifier rapidement les difficultés dans l’apprentissage et, le cas échéant, à réagir ? »<br />
<br />
== Cahier des charges == <br />
=== Contexte et public ===<br />
Le public cible est composé de formateurs et formatrices d’adultes, en entreprise ou en institut. Il pourrait également être élargi aux enseignante.s du scolaire, mais la conscientisation et l’expression d’une émotion sont suffisamment complexes pour limiter notre premier dispositif à des adultes, disposant, à priori, d’une compréhension plus fine de leur état émotionnel. De plus, l’asymétrie dans la relation est supposée moins forte dans un groupe d’adultes en formation que dans une classe avec un enseignant et des enfants ou adolescents.<br />
<br />
===Objectifs===<br />
Le but du dispositif est de :<br />
* permettre la communication d'un niveau émotionnel perçu par l'étudiant.e à l'enseignant.e<br />
* faire émerger un état général de la classe et les différences dans l'acquisition du contenu<br />
* de manière plus pragmatique, de créer des groupes sur la base des éléments communiqués<br />
<br />
===Besoins et contraintes===<br />
L'idée du projet a beaucoup évolué entre la phase d'identification des besoins et les constatations sur les possiblités offertes par la technologie et l'expertise à disposition. Nous détaillons ci-dessous les besoins et contraintes qui nous ont mené à la solution présentée plus bas.<br />
<br />
Partant au début d’une idée de jauge émotionnelle dynamique, donnant en tout temps l’état émotionnel d’un groupe de participants, nous avons rapidement détecté, en phase d'idéation avec plusieurs spécialistes en éducation, un aspect extrêmement anxiogène pour le formateur dont le groupe enverrait des signaux d’ennui ou de frustration, durant une explication. <br />
<br />
Afin de juguler cet effet, tout en conservant la possibilité de communiquer un message sur l’état, nous avons adapté le dispositif pour permettre aux étudiants de transmettre leur état à des moments spécifiques de la formation, intégrés dans le scénario pédagogique. L'émotion étant un élément sensible à conscientiser, exprimer et partager au sein d'un groupe, nous avons estimé plus judicieux de faire exprimer son niveau d'aisance face à un contenu qui vient d'être transmis. Ainsi, un-e enseignant-e scénarisera des moments d'auto-diagnostique des étudiant-es sur leur perception de compétence sur la thématique. Cette information peut être utilisée pour réaliser des groupes de travail : (1) les personnes qui ont compris peuvent être orientées sur un contenu plus avancé, en échange pendant que l'enseignant organiser une séance de question-réponse avec les personnes en difficulté ou (2) des groupes peuvent être créés pour intégrer des étudiant-es qui ont compris avec des étudiant-es qui ont besoin d'aide.<br />
<br />
Le dispositif est donc pensé comme un outil de sondage à certains moments du cours, pour évaluer les besoins du groupe, dans son ensemble. Il est souvent difficile de récolter des informations sincères lors d’évaluations à chaud, les étudiants réticents à communiquer publiquement leurs difficultés ou désintérêts pour le contenu. Par la technique de transmission, les étudiants pourraient communiquer leur émotion de manière anonyme, favorisant l'authenticité.<br />
<br />
De manière intéressante au fur et à mesure de l'avance du projet, il est ressorti des discussions avec un échantillon du public cible que l'aspect de notre projet qui les intéressaient étaient moins la communication des émotions, mais la création facilitée des groupes. En effet, les formateurs et formatrices ayant travaillé à distance durant la dernière année se sont habitués à disposer d'une fonction de création de groupe aléatoire, selon un nombre total de participant et un nombre de groupe visé. Cette fonction serait très utile également en présence, en utilisant une carte Arduino ou un CPX pour calculer une répartition des élèves par groupe, avec en entrée le nombre d'élèves et les sous-groupes. Une fois les groupes constitué, l'étape suivante est de communiquer ces groupes à l'ensemble de la classe au travers de Lilypad ou autres technologies portables qui s'allument selon la couleur de leur groupe.<br />
<br />
===Apports===<br />
* Cohésion et sentiment d'appartenance au groupe comme soutien à l'apprentissage<br />
* Expression d'un état émotionnel épistémique comme bénéfique à l'apprentissage<br />
<br />
===Présentation du projet===<br />
Suite aux premières itérations dans l'empathie et la définition du projet, nous avons identifié plusieurs points clés qui ont réorienté notre projet :<br />
* la création d'un réseau de cartes bluetooth contrôlées par Arduino s'est révélé trop ambitieux, suite au manque de projets existants ou d'expertise sur lesquels s'appuyer, <br />
* l'envie marquée de notre échantillon cible qui s'est dirigée sur l'aspect création de groupe plus que sur la connaissance des états affectifs.<br />
<br />
Nous avons donc revu le projet en le divisant en 3 niveaux de difficuté, afin de réaliser un prototype utilisable, puis de l'améliorer en fonction des retours et du temps à disposition.<br />
* '''Niveau 1 - Création de groupe aléatoire''' : intérêts : facilitation de la création des groupes (demande reçue d'un formateur : "parce que Zoom nous a bien aidé pour cela à distance, je veux la même chose en présence!")<br />
* '''Niveau 2 : Communication du groupe à l’apprenant''' : intérêts : gamification, sentiment d’appartenance, coopération, cohésion<br />
* '''Niveau 3 : Communication de son sentiment de compétence''' : intérêts : plus facile que d'exprimer ses émotions, et plus facile à gérer par l'enseignant.e, par exemple les gens qui ont compris avec celles-ceux qui n'ont pas compris<br />
<br />
Nous avons réalisé complètement le niveau 1, ainsi que prototypé et testé le niveau 2 avec des cables avant de pouvoir gérer par Bluetooth un Bluefruit spécifique dans un réseau comprenant plusieurs Bluefruits. Les solutions avec code et prototypes sont décrites dans la section suivante.<br />
<br />
== Solutions explorées ==<br />
<br />
===1er prototype===<br />
La première solution envisagée comporte deux objets : <br />
* Un '''émetteur''' : facile d’utilisation et agréable à porter, nous penchons pour la solution d’un bracelet contenant un micro circuit type Lilypad, Arduino Gemma ou Tinyduino. L’apprenant disposerait de 4 boutons-pressoirs pour 4 émotions majeures à transmettre (intérêt, confusion, frustration, incompréhension), symbolisés par des logos ou émoticônes. Les messages sont transmis par Bluetooth.<br />
* Un '''récepteur''' : Une jauge, comprenant une bande Neopixels, connectée à un Arduino Uno. Les LED symboliseraient deux dimensions fournies : la couleur pour le type d'émotion et le nombre pour la quantité d'étudiant.e.s ayant transmis l'information. L'Arduino pourrait gérer l'information, en émettant un son lors du dépassement d'un seuil prédéfini sur une émotion par exemple.<br />
<br />
====maquette====<br />
L'Arduino Uno lance une séquence de randomisation de couleur, en affiche une, puis les participant.e.s font de même sur leur CPX. Si les couleurs affichées "matchent", le groupe est constitué et on peut ainsi passer à la constitution aléatoire du groupe suivant. <br />
[[Fichier:2e Maquette projet STIC III Djamileh et Simon .jpg|néant|vignette|1103x1103px|Maquette du projet]] <br />
<br />
====code====<br />
<u>Version 1.0 du code CPX :</u> <syntaxhighlight lang="javascript"><br />
input.buttonA.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 200<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(40)<br />
color2 += Math.randomRange(1, 3)<br />
light.setPhotonPenHue(color2)<br />
}<br />
light.photonFlip()<br />
})<br />
input.buttonsAB.onEvent(ButtonEvent.Click, function () {<br />
control.reset()<br />
})<br />
input.buttonB.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 300<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
color2 += 3<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(50)<br />
}<br />
})<br />
let tonalité = 0<br />
let durée = 0<br />
let color2 = 0<br />
light.setBrightness(158)<br />
music.setVolume(167)<br />
forever(function () {<br />
<br />
})<br />
</syntaxhighlight><br />
<br />
===2e prototype===<br />
<br />
====maquette====<br />
<br />
<br />
====code====<br />
La solution présentée ici s'occupe du niveau 1, soit la création de groupe aléatoire à l'aide d'un CPX Bluefruit.<br />
Elle a été codée en CircuitPython. Nous n'avons pas utilisé de code existant, et la première partie de dictionnaire a été finalisée grâce à l'aimable contribution de notre collègue Jérôme.<br />
<br />
<syntaxhighlight lang="python"><br />
# Groupify !<br />
# Un projet de S!m & Dja<br />
<br />
# code python pur pour la répartition dans les groupes<br />
import random<br />
<br />
# Librairie pour gérer la bande neopixel du bluefruit<br />
from adafruit_circuitplayground import cp<br />
<br />
participants = int(input("Combien y a de participants : "))<br />
groupe = int(input("Combien tu veux de groupes : "))<br />
<br />
liste_part = list(range(1, participants + 1))<br />
liste_groupe = list(range(1, groupe + 1))<br />
<br />
clé_tableau = str(participants) + "_" + str(groupe)<br />
# ajouter combinaisons pas possible --> genre un tour de roue lumineuse/un son pourri<br />
grille_repartition = {"10_5": [2, 2, 2, 2, 2], "10_4": [2, 2, 3, 3], "10_3": [3, 3, 4]}<br />
<br />
taille_groupe = grille_repartition[clé_tableau]<br />
<br />
dict_repartition = {}<br />
for i in range(0, len(taille_groupe)):<br />
dict_repartition[liste_groupe[i]] = []<br />
for j in range(0, taille_groupe[i]):<br />
etu = liste_part[random.randint(0, len(liste_part) - 1)]<br />
dict_repartition[liste_groupe[i]].append(etu)<br />
liste_part.remove(etu)<br />
print(dict_repartition)<br />
<br />
# Définition des groupes avec couleurs<br />
groupeTotal = dict_repartition.values()<br />
groupeList = list(groupeTotal)<br />
print(groupeList)<br />
<br />
# créer un test pour si existe pas --> ignorer / boucle sur la base de len(groupeList)<br />
groupe1 = groupeList[0]<br />
groupe2 = groupeList[1]<br />
groupe3 = groupeList[2]<br />
groupe4 = groupeList[3]<br />
groupe5 = groupeList[4]<br />
<br />
# Gestion des LEDs<br />
cp.pixels.brightness = 0.05<br />
<br />
groupe1_color = (0, 255, 0)<br />
groupe2_color = (255, 0, 255)<br />
groupe3_color = (255, 255, 0)<br />
groupe4_color = (0, 255, 255)<br />
groupe5_color = (255, 0, 0)<br />
<br />
# recherche des participants (LED) dans les groupes<br />
if 1 in groupe1:<br />
pix1 = groupe1_color<br />
elif 1 in groupe2:<br />
pix1 = groupe2_color<br />
elif 1 in groupe3:<br />
pix1 = groupe3_color<br />
elif 1 in groupe4:<br />
pix1 = groupe4_color<br />
elif 1 in groupe5:<br />
pix1 = groupe5_color<br />
<br />
if 2 in groupe1:<br />
pix2 = groupe1_color<br />
elif 2 in groupe2:<br />
pix2 = groupe2_color<br />
elif 2 in groupe3:<br />
pix2 = groupe3_color<br />
elif 2 in groupe4:<br />
pix2 = groupe4_color<br />
elif 2 in groupe5:<br />
pix2 = groupe5_color<br />
<br />
if 3 in groupe1:<br />
pix3 = groupe1_color<br />
elif 3 in groupe2:<br />
pix3 = groupe2_color<br />
elif 3 in groupe3:<br />
pix3 = groupe3_color<br />
elif 3 in groupe4:<br />
pix3 = groupe4_color<br />
elif 3 in groupe5:<br />
pix3 = groupe5_color<br />
<br />
if 4 in groupe1:<br />
pix4 = groupe1_color<br />
elif 4 in groupe2:<br />
pix4 = groupe2_color<br />
elif 4 in groupe3:<br />
pix4 = groupe3_color<br />
elif 4 in groupe4:<br />
pix4 = groupe4_color<br />
elif 4 in groupe5:<br />
pix4 = groupe5_color<br />
<br />
if 5 in groupe1:<br />
pix5 = groupe1_color<br />
elif 5 in groupe2:<br />
pix5 = groupe2_color<br />
elif 5 in groupe3:<br />
pix5 = groupe3_color<br />
elif 5 in groupe4:<br />
pix5 = groupe4_color<br />
elif 5 in groupe5:<br />
pix5 = groupe5_color<br />
<br />
if 6 in groupe1:<br />
pix6 = groupe1_color<br />
elif 6 in groupe2:<br />
pix6 = groupe2_color<br />
elif 6 in groupe3:<br />
pix6 = groupe3_color<br />
elif 6 in groupe4:<br />
pix6 = groupe4_color<br />
elif 6 in groupe5:<br />
pix6 = groupe5_color<br />
<br />
if 7 in groupe1:<br />
pix7 = groupe1_color<br />
elif 7 in groupe2:<br />
pix7 = groupe2_color<br />
elif 7 in groupe3:<br />
pix7 = groupe3_color<br />
elif 7 in groupe4:<br />
pix7 = groupe4_color<br />
elif 7 in groupe5:<br />
pix7 = groupe5_color<br />
<br />
if 8 in groupe1:<br />
pix8 = groupe1_color<br />
elif 8 in groupe2:<br />
pix8 = groupe2_color<br />
elif 8 in groupe3:<br />
pix8 = groupe3_color<br />
elif 8 in groupe4:<br />
pix8 = groupe4_color<br />
elif 8 in groupe5:<br />
pix8 = groupe5_color<br />
<br />
if 9 in groupe1:<br />
pix9 = groupe1_color<br />
elif 9 in groupe2:<br />
pix9 = groupe2_color<br />
elif 9 in groupe3:<br />
pix9 = groupe3_color<br />
elif 9 in groupe4:<br />
pix9 = groupe4_color<br />
elif 9 in groupe5:<br />
pix9 = groupe5_color<br />
<br />
if 10 in groupe1:<br />
pix10 = groupe1_color<br />
elif 10 in groupe2:<br />
pix10 = groupe2_color<br />
elif 10 in groupe3:<br />
pix10 = groupe3_color<br />
elif 10 in groupe4:<br />
pix10 = groupe4_color<br />
elif 10 in groupe5:<br />
pix10 = groupe5_color<br />
<br />
# Gestion de l'allumage de la bande neopixel<br />
while True:<br />
cp.pixels[0] = pix1<br />
cp.pixels[1] = pix2<br />
cp.pixels[2] = pix3<br />
cp.pixels[3] = pix4<br />
cp.pixels[4] = pix5<br />
cp.pixels[5] = pix6<br />
cp.pixels[6] = pix7<br />
cp.pixels[7] = pix8<br />
cp.pixels[8] = pix9<br />
cp.pixels[9] = pix10<br />
</syntaxhighlight><br />
<br />
== Test(s) de la solution ==<br />
Documentation dans votre page projet avec un [[:en:Cognitive walkthrough|cognitive walkthrough]] ou similaire pour le testing + avec un test utilisateurs (3 personnes minimum) c'est à dire création d’un scénario (tâches à réaliser), passation et analyse des résultats. <br />
<br />
== Discussion ==<br />
Cette partie inclus deux sous parties : <br />
* Discussion du design (et si c'était à refaire ou à améliorer),<br />
* Discussion des résultats de vos tests utilisateurs<br />
<br />
== Licence, fichiers et documentation ==<br />
[[Fichier:By-nc.png|150px]] Cette œuvre est mise à disposition selon les termes de la [http://creativecommons.org/licenses/by-nc/4.0/ Licence Creative Commons Attribution - Pas d’Utilisation Commerciale 4.0 International].<br />
<br />
* Fichiers :<br />
Insérer ici vos fichiers ou les liens vers vos fichiers<br />
<br />
* Documentation : <br />
Insérer ici une petite documentation pour l'utilisation de l'objet si nécessaire<br />
<br />
== Bibliographie ==<br />
<br />
* Blair, C., Calkins, S., & Kopp, L. (2010). Self-regulation as the interface of emotional and cognitive development: Implications for education and academic achievement.<br />
* Pekrun, R., Goetz, T., Titz, W., & Perry, R. P. (2002). Academic emotions in students' self-regulated learning and achievement: A program of qualitative and quantitative research. Educational psychologist, 37(2), 91-105.</div>Djamileh Aminianhttps://edutechwiki.unige.ch/fmediawiki/index.php?title=STIC:STIC_III_(2020)/Forces_rouge,_rose,_vert,_jaune_ou_bleu_!&diff=153788STIC:STIC III (2020)/Forces rouge, rose, vert, jaune ou bleu !2021-06-14T20:24:00Z<p>Djamileh Aminian : /* code= */</p>
<hr />
<div>{{bloc important|Projet réalisé par [[Utilisateur:Djamileh_Aminian|Djamileh]] & [[Utilisateur:Simon_Jöhr|Simon]]}}<br />
<br />
== Introduction ==<br />
Durant la dernière année, le passage forcé à la téléformation, soit la formation synchrone à distance, a eu comme effet positif de pousser certains spécialistes de l’éducation à revisiter leurs scénarios pédagogiques pour revenir aux fondamentaux : comment aider les élèves à apprendre ce qu’ils sont sensés apprendre et comment les accompagner au mieux dans leur apprentissage ? Souvent, les difficultés relevées lors des bilans des derniers mois de distantiel ont fait émerger des problèmes qui existaient déjà en présence, mais qui restaient latents ou ignorés.<br />
<br />
En ce sens, l’apprentissage est fortement influencé par les émotions par lesquelles passent les élèves au cours de la formation, et en particulier pendant les moments synchrones. Pourtant, il est très complexe de détecter, mesurer, ou même faire exprimer les étudiant-es sur leur ressenti.<br />
<br />
En donnant leurs cours en visioconférence, nombreux formateurs et formatrices ont exprimé leur frustration de ne pas réussir à évaluer l’état émotionnel et autres indices non verbaux de leurs participant.e.s, retours essentiels pour adapter une explication ou ajuster le rythme. Et cet effet est loin d’être limité à la distance : il est également bien présent dans une salle de classe où il reste complexe de capter en temps réel les émotions d’un étudiant, processus complexe et dynamique.<br />
<br />
Notre projet prend sa racine dans ce constat. Deux questions ont alors émergé : <br />
* comment mesurer l'état émotionnel d'un-e apprenant-e, <br />
* et surtout, pour quel usage ?<br />
<br />
Dans ce contexte, nous avons pensé un dispositif de partage des ressentis de la classe à destination de l'équipe enseignante, et une utilisation de cette donnée comme retour au groupe.<br />
<br />
== Problème ==<br />
<br />
Le but de ce projet est de proposer une solution ludique à la constitution de groupes en classe, que cela soit en présence, à distance ou de manière comodale. En utilisant un Arduino Uno ou des CPX, la phase de constitution de groupes sera ainsi rapide, aléatoire et "fun" !<br />
<br />
Le ''Problem Statement'' peut s’exprimer ainsi : « Comment peut-on aider les formateurs et formatrices à identifier rapidement les difficultés dans l’apprentissage et, le cas échéant, à réagir ? »<br />
<br />
== Cahier des charges == <br />
=== Contexte et public ===<br />
Le public cible est composé de formateurs et formatrices d’adultes, en entreprise ou en institut. Il pourrait également être élargi aux enseignante.s du scolaire, mais la conscientisation et l’expression d’une émotion sont suffisamment complexes pour limiter notre premier dispositif à des adultes, disposant, à priori, d’une compréhension plus fine de leur état émotionnel. De plus, l’asymétrie dans la relation est supposée moins forte dans un groupe d’adultes en formation que dans une classe avec un enseignant et des enfants ou adolescents.<br />
<br />
===Objectifs===<br />
Le but du dispositif est de :<br />
* permettre la communication d'un niveau émotionnel perçu par l'étudiant.e à l'enseignant.e<br />
* faire émerger un état général de la classe et les différences dans l'acquisition du contenu<br />
* de manière plus pragmatique, de créer des groupes sur la base des éléments communiqués<br />
<br />
===Besoins et contraintes===<br />
L'idée du projet a beaucoup évolué entre la phase d'identification des besoins et les constatations sur les possiblités offertes par la technologie et l'expertise à disposition. Nous détaillons ci-dessous les besoins et contraintes qui nous ont mené à la solution présentée plus bas.<br />
<br />
Partant au début d’une idée de jauge émotionnelle dynamique, donnant en tout temps l’état émotionnel d’un groupe de participants, nous avons rapidement détecté, en phase d'idéation avec plusieurs spécialistes en éducation, un aspect extrêmement anxiogène pour le formateur dont le groupe enverrait des signaux d’ennui ou de frustration, durant une explication. <br />
<br />
Afin de juguler cet effet, tout en conservant la possibilité de communiquer un message sur l’état, nous avons adapté le dispositif pour permettre aux étudiants de transmettre leur état à des moments spécifiques de la formation, intégrés dans le scénario pédagogique. L'émotion étant un élément sensible à conscientiser, exprimer et partager au sein d'un groupe, nous avons estimé plus judicieux de faire exprimer son niveau d'aisance face à un contenu qui vient d'être transmis. Ainsi, un-e enseignant-e scénarisera des moments d'auto-diagnostique des étudiant-es sur leur perception de compétence sur la thématique. Cette information peut être utilisée pour réaliser des groupes de travail : (1) les personnes qui ont compris peuvent être orientées sur un contenu plus avancé, en échange pendant que l'enseignant organiser une séance de question-réponse avec les personnes en difficulté ou (2) des groupes peuvent être créés pour intégrer des étudiant-es qui ont compris avec des étudiant-es qui ont besoin d'aide.<br />
<br />
Le dispositif est donc pensé comme un outil de sondage à certains moments du cours, pour évaluer les besoins du groupe, dans son ensemble. Il est souvent difficile de récolter des informations sincères lors d’évaluations à chaud, les étudiants réticents à communiquer publiquement leurs difficultés ou désintérêts pour le contenu. Par la technique de transmission, les étudiants pourraient communiquer leur émotion de manière anonyme, favorisant l'authenticité.<br />
<br />
De manière intéressante au fur et à mesure de l'avance du projet, il est ressorti des discussions avec un échantillon du public cible que l'aspect de notre projet qui les intéressaient étaient moins la communication des émotions, mais la création facilitée des groupes. En effet, les formateurs et formatrices ayant travaillé à distance durant la dernière année se sont habitués à disposer d'une fonction de création de groupe aléatoire, selon un nombre total de participant et un nombre de groupe visé. Cette fonction serait très utile également en présence, en utilisant une carte Arduino ou un CPX pour calculer une répartition des élèves par groupe, avec en entrée le nombre d'élèves et les sous-groupes. Une fois les groupes constitué, l'étape suivante est de communiquer ces groupes à l'ensemble de la classe au travers de Lilypad ou autres technologies portables qui s'allument selon la couleur de leur groupe.<br />
<br />
===Apports===<br />
* Cohésion et sentiment d'appartenance au groupe comme soutien à l'apprentissage<br />
* Expression d'un état émotionnel épistémique comme bénéfique à l'apprentissage<br />
<br />
===Présentation du projet===<br />
Suite aux premières itérations dans l'empathie et la définition du projet, nous avons identifié plusieurs points clés qui ont réorienté notre projet :<br />
* la création d'un réseau de cartes bluetooth contrôlées par Arduino s'est révélé trop ambitieux, suite au manque de projets existants ou d'expertise sur lesquels s'appuyer, <br />
* l'envie marquée de notre échantillon cible qui s'est dirigée sur l'aspect création de groupe plus que sur la connaissance des états affectifs.<br />
<br />
Nous avons donc revu le projet en le divisant en 3 niveaux de difficuté, afin de réaliser un prototype utilisable, puis de l'améliorer en fonction des retours et du temps à disposition.<br />
* '''Niveau 1 - Création de groupe aléatoire''' : intérêts : facilitation de la création des groupes (demande reçue d'un formateur : "parce que Zoom nous a bien aidé pour cela à distance, je veux la même chose en présence!")<br />
* '''Niveau 2 : Communication du groupe à l’apprenant''' : intérêts : gamification, sentiment d’appartenance, coopération, cohésion<br />
* '''Niveau 3 : Communication de son sentiment de compétence''' : intérêts : plus facile que d'exprimer ses émotions, et plus facile à gérer par l'enseignant.e, par exemple les gens qui ont compris avec celles-ceux qui n'ont pas compris<br />
<br />
Nous avons réalisé complètement le niveau 1, ainsi que prototypé et testé le niveau 2 avec des cables avant de pouvoir gérer par Bluetooth un Bluefruit spécifique dans un réseau comprenant plusieurs Bluefruits. Les solutions avec code et prototypes sont décrites dans la section suivante.<br />
<br />
== Solutions explorées ==<br />
<br />
===1er prototype===<br />
La première solution envisagée comporte deux objets : <br />
* Un '''émetteur''' : facile d’utilisation et agréable à porter, nous penchons pour la solution d’un bracelet contenant un micro circuit type Lilypad, Arduino Gemma ou Tinyduino. L’apprenant disposerait de 4 boutons-pressoirs pour 4 émotions majeures à transmettre (intérêt, confusion, frustration, incompréhension), symbolisés par des logos ou émoticônes. Les messages sont transmis par Bluetooth.<br />
* Un '''récepteur''' : Une jauge, comprenant une bande Neopixels, connectée à un Arduino Uno. Les LED symboliseraient deux dimensions fournies : la couleur pour le type d'émotion et le nombre pour la quantité d'étudiant.e.s ayant transmis l'information. L'Arduino pourrait gérer l'information, en émettant un son lors du dépassement d'un seuil prédéfini sur une émotion par exemple.<br />
<br />
====maquette====<br />
L'Arduino Uno lance une séquence de randomisation de couleur, en affiche une, puis les participant.e.s font de même sur leur CPX. Si les couleurs affichées "matchent", le groupe est constitué et on peut ainsi passer à la constitution aléatoire du groupe suivant. <br />
[[Fichier:2e Maquette projet STIC III Djamileh et Simon .jpg|néant|vignette|1103x1103px|Maquette du projet]] <br />
<br />
====code====<br />
<u>Version 1.0 du code CPX :</u> <syntaxhighlight lang="javascript"><br />
input.buttonA.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 200<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(40)<br />
color2 += Math.randomRange(1, 3)<br />
light.setPhotonPenHue(color2)<br />
}<br />
light.photonFlip()<br />
})<br />
input.buttonsAB.onEvent(ButtonEvent.Click, function () {<br />
control.reset()<br />
})<br />
input.buttonB.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 300<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
color2 += 3<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(50)<br />
}<br />
})<br />
let tonalité = 0<br />
let durée = 0<br />
let color2 = 0<br />
light.setBrightness(158)<br />
music.setVolume(167)<br />
forever(function () {<br />
<br />
})<br />
</syntaxhighlight><br />
<br />
===2e prototype===<br />
<br />
====maquette====<br />
<br />
<br />
====code====<br />
La solution présentée ici s'occupe du niveau 1, soit la création de groupe aléatoire à l'aide d'un CPX Bluefruit.<br />
Elle a été codée en CircuitPython. Nous n'avons pas utilisé de code existant, et la première partie de dictionnaire a été finalisée grâce à l'aimable contribution de notre collègue Jérôme.<br />
<br />
<syntaxhighlight lang="python"><br />
# Groupify !<br />
# Un projet de S!m & Dja<br />
<br />
# code python pur pour la répartition dans les groupes<br />
import random<br />
<br />
# Librairie pour gérer la bande neopixel du bluefruit<br />
from adafruit_circuitplayground import cp<br />
<br />
participants = int(input("Combien y a de participants : "))<br />
groupe = int(input("Combien tu veux de groupes : "))<br />
<br />
liste_part = list(range(1, participants + 1))<br />
liste_groupe = list(range(1, groupe + 1))<br />
<br />
clé_tableau = str(participants) + "_" + str(groupe)<br />
# ajouter combinaisons pas possible --> genre un tour de roue lumineuse/un son pourri<br />
grille_repartition = {"10_5": [2, 2, 2, 2, 2], "10_4": [2, 2, 3, 3], "10_3": [3, 3, 4]}<br />
<br />
taille_groupe = grille_repartition[clé_tableau]<br />
<br />
dict_repartition = {}<br />
for i in range(0, len(taille_groupe)):<br />
dict_repartition[liste_groupe[i]] = []<br />
for j in range(0, taille_groupe[i]):<br />
etu = liste_part[random.randint(0, len(liste_part) - 1)]<br />
dict_repartition[liste_groupe[i]].append(etu)<br />
liste_part.remove(etu)<br />
print(dict_repartition)<br />
<br />
# Définition des groupes avec couleurs<br />
groupeTotal = dict_repartition.values()<br />
groupeList = list(groupeTotal)<br />
print(groupeList)<br />
<br />
# créer un test pour si existe pas --> ignorer / boucle sur la base de len(groupeList)<br />
groupe1 = groupeList[0]<br />
groupe2 = groupeList[1]<br />
groupe3 = groupeList[2]<br />
groupe4 = groupeList[3]<br />
groupe5 = groupeList[4]<br />
<br />
# Gestion des LEDs<br />
cp.pixels.brightness = 0.05<br />
<br />
groupe1_color = (0, 255, 0)<br />
groupe2_color = (255, 0, 255)<br />
groupe3_color = (255, 255, 0)<br />
groupe4_color = (0, 255, 255)<br />
groupe5_color = (255, 0, 0)<br />
<br />
# recherche des participants (LED) dans les groupes<br />
if 1 in groupe1:<br />
pix1 = groupe1_color<br />
elif 1 in groupe2:<br />
pix1 = groupe2_color<br />
elif 1 in groupe3:<br />
pix1 = groupe3_color<br />
elif 1 in groupe4:<br />
pix1 = groupe4_color<br />
elif 1 in groupe5:<br />
pix1 = groupe5_color<br />
<br />
if 2 in groupe1:<br />
pix2 = groupe1_color<br />
elif 2 in groupe2:<br />
pix2 = groupe2_color<br />
elif 2 in groupe3:<br />
pix2 = groupe3_color<br />
elif 2 in groupe4:<br />
pix2 = groupe4_color<br />
elif 2 in groupe5:<br />
pix2 = groupe5_color<br />
<br />
if 3 in groupe1:<br />
pix3 = groupe1_color<br />
elif 3 in groupe2:<br />
pix3 = groupe2_color<br />
elif 3 in groupe3:<br />
pix3 = groupe3_color<br />
elif 3 in groupe4:<br />
pix3 = groupe4_color<br />
elif 3 in groupe5:<br />
pix3 = groupe5_color<br />
<br />
if 4 in groupe1:<br />
pix4 = groupe1_color<br />
elif 4 in groupe2:<br />
pix4 = groupe2_color<br />
elif 4 in groupe3:<br />
pix4 = groupe3_color<br />
elif 4 in groupe4:<br />
pix4 = groupe4_color<br />
elif 4 in groupe5:<br />
pix4 = groupe5_color<br />
<br />
if 5 in groupe1:<br />
pix5 = groupe1_color<br />
elif 5 in groupe2:<br />
pix5 = groupe2_color<br />
elif 5 in groupe3:<br />
pix5 = groupe3_color<br />
elif 5 in groupe4:<br />
pix5 = groupe4_color<br />
elif 5 in groupe5:<br />
pix5 = groupe5_color<br />
<br />
if 6 in groupe1:<br />
pix6 = groupe1_color<br />
elif 6 in groupe2:<br />
pix6 = groupe2_color<br />
elif 6 in groupe3:<br />
pix6 = groupe3_color<br />
elif 6 in groupe4:<br />
pix6 = groupe4_color<br />
elif 6 in groupe5:<br />
pix6 = groupe5_color<br />
<br />
if 7 in groupe1:<br />
pix7 = groupe1_color<br />
elif 7 in groupe2:<br />
pix7 = groupe2_color<br />
elif 7 in groupe3:<br />
pix7 = groupe3_color<br />
elif 7 in groupe4:<br />
pix7 = groupe4_color<br />
elif 7 in groupe5:<br />
pix7 = groupe5_color<br />
<br />
if 8 in groupe1:<br />
pix8 = groupe1_color<br />
elif 8 in groupe2:<br />
pix8 = groupe2_color<br />
elif 8 in groupe3:<br />
pix8 = groupe3_color<br />
elif 8 in groupe4:<br />
pix8 = groupe4_color<br />
elif 8 in groupe5:<br />
pix8 = groupe5_color<br />
<br />
if 9 in groupe1:<br />
pix9 = groupe1_color<br />
elif 9 in groupe2:<br />
pix9 = groupe2_color<br />
elif 9 in groupe3:<br />
pix9 = groupe3_color<br />
elif 9 in groupe4:<br />
pix9 = groupe4_color<br />
elif 9 in groupe5:<br />
pix9 = groupe5_color<br />
<br />
if 10 in groupe1:<br />
pix10 = groupe1_color<br />
elif 10 in groupe2:<br />
pix10 = groupe2_color<br />
elif 10 in groupe3:<br />
pix10 = groupe3_color<br />
elif 10 in groupe4:<br />
pix10 = groupe4_color<br />
elif 10 in groupe5:<br />
pix10 = groupe5_color<br />
<br />
# Gestion de l'allumage de la bande neopixel<br />
while True:<br />
cp.pixels[0] = pix1<br />
cp.pixels[1] = pix2<br />
cp.pixels[2] = pix3<br />
cp.pixels[3] = pix4<br />
cp.pixels[4] = pix5<br />
cp.pixels[5] = pix6<br />
cp.pixels[6] = pix7<br />
cp.pixels[7] = pix8<br />
cp.pixels[8] = pix9<br />
cp.pixels[9] = pix10<br />
</syntaxhighlight><br />
<br />
== Test(s) de la solution ==<br />
Documentation dans votre page projet avec un [[:en:Cognitive walkthrough|cognitive walkthrough]] ou similaire pour le testing + avec un test utilisateurs (3 personnes minimum) c'est à dire création d’un scénario (tâches à réaliser), passation et analyse des résultats. <br />
<br />
== Discussion ==<br />
Cette partie inclus deux sous parties : <br />
* Discussion du design (et si c'était à refaire ou à améliorer),<br />
* Discussion des résultats de vos tests utilisateurs<br />
<br />
== Licence, fichiers et documentation ==<br />
[[Fichier:By-nc.png|150px]] Cette œuvre est mise à disposition selon les termes de la [http://creativecommons.org/licenses/by-nc/4.0/ Licence Creative Commons Attribution - Pas d’Utilisation Commerciale 4.0 International].<br />
<br />
* Fichiers :<br />
Insérer ici vos fichiers ou les liens vers vos fichiers<br />
<br />
* Documentation : <br />
Insérer ici une petite documentation pour l'utilisation de l'objet si nécessaire<br />
<br />
== Bibliographie ==<br />
<br />
* Blair, C., Calkins, S., & Kopp, L. (2010). Self-regulation as the interface of emotional and cognitive development: Implications for education and academic achievement.</div>Djamileh Aminianhttps://edutechwiki.unige.ch/fmediawiki/index.php?title=STIC:STIC_III_(2020)/Forces_rouge,_rose,_vert,_jaune_ou_bleu_!&diff=153787STIC:STIC III (2020)/Forces rouge, rose, vert, jaune ou bleu !2021-06-14T20:23:22Z<p>Djamileh Aminian : /* Solution */</p>
<hr />
<div>{{bloc important|Projet réalisé par [[Utilisateur:Djamileh_Aminian|Djamileh]] & [[Utilisateur:Simon_Jöhr|Simon]]}}<br />
<br />
== Introduction ==<br />
Durant la dernière année, le passage forcé à la téléformation, soit la formation synchrone à distance, a eu comme effet positif de pousser certains spécialistes de l’éducation à revisiter leurs scénarios pédagogiques pour revenir aux fondamentaux : comment aider les élèves à apprendre ce qu’ils sont sensés apprendre et comment les accompagner au mieux dans leur apprentissage ? Souvent, les difficultés relevées lors des bilans des derniers mois de distantiel ont fait émerger des problèmes qui existaient déjà en présence, mais qui restaient latents ou ignorés.<br />
<br />
En ce sens, l’apprentissage est fortement influencé par les émotions par lesquelles passent les élèves au cours de la formation, et en particulier pendant les moments synchrones. Pourtant, il est très complexe de détecter, mesurer, ou même faire exprimer les étudiant-es sur leur ressenti.<br />
<br />
En donnant leurs cours en visioconférence, nombreux formateurs et formatrices ont exprimé leur frustration de ne pas réussir à évaluer l’état émotionnel et autres indices non verbaux de leurs participant.e.s, retours essentiels pour adapter une explication ou ajuster le rythme. Et cet effet est loin d’être limité à la distance : il est également bien présent dans une salle de classe où il reste complexe de capter en temps réel les émotions d’un étudiant, processus complexe et dynamique.<br />
<br />
Notre projet prend sa racine dans ce constat. Deux questions ont alors émergé : <br />
* comment mesurer l'état émotionnel d'un-e apprenant-e, <br />
* et surtout, pour quel usage ?<br />
<br />
Dans ce contexte, nous avons pensé un dispositif de partage des ressentis de la classe à destination de l'équipe enseignante, et une utilisation de cette donnée comme retour au groupe.<br />
<br />
== Problème ==<br />
<br />
Le but de ce projet est de proposer une solution ludique à la constitution de groupes en classe, que cela soit en présence, à distance ou de manière comodale. En utilisant un Arduino Uno ou des CPX, la phase de constitution de groupes sera ainsi rapide, aléatoire et "fun" !<br />
<br />
Le ''Problem Statement'' peut s’exprimer ainsi : « Comment peut-on aider les formateurs et formatrices à identifier rapidement les difficultés dans l’apprentissage et, le cas échéant, à réagir ? »<br />
<br />
== Cahier des charges == <br />
=== Contexte et public ===<br />
Le public cible est composé de formateurs et formatrices d’adultes, en entreprise ou en institut. Il pourrait également être élargi aux enseignante.s du scolaire, mais la conscientisation et l’expression d’une émotion sont suffisamment complexes pour limiter notre premier dispositif à des adultes, disposant, à priori, d’une compréhension plus fine de leur état émotionnel. De plus, l’asymétrie dans la relation est supposée moins forte dans un groupe d’adultes en formation que dans une classe avec un enseignant et des enfants ou adolescents.<br />
<br />
===Objectifs===<br />
Le but du dispositif est de :<br />
* permettre la communication d'un niveau émotionnel perçu par l'étudiant.e à l'enseignant.e<br />
* faire émerger un état général de la classe et les différences dans l'acquisition du contenu<br />
* de manière plus pragmatique, de créer des groupes sur la base des éléments communiqués<br />
<br />
===Besoins et contraintes===<br />
L'idée du projet a beaucoup évolué entre la phase d'identification des besoins et les constatations sur les possiblités offertes par la technologie et l'expertise à disposition. Nous détaillons ci-dessous les besoins et contraintes qui nous ont mené à la solution présentée plus bas.<br />
<br />
Partant au début d’une idée de jauge émotionnelle dynamique, donnant en tout temps l’état émotionnel d’un groupe de participants, nous avons rapidement détecté, en phase d'idéation avec plusieurs spécialistes en éducation, un aspect extrêmement anxiogène pour le formateur dont le groupe enverrait des signaux d’ennui ou de frustration, durant une explication. <br />
<br />
Afin de juguler cet effet, tout en conservant la possibilité de communiquer un message sur l’état, nous avons adapté le dispositif pour permettre aux étudiants de transmettre leur état à des moments spécifiques de la formation, intégrés dans le scénario pédagogique. L'émotion étant un élément sensible à conscientiser, exprimer et partager au sein d'un groupe, nous avons estimé plus judicieux de faire exprimer son niveau d'aisance face à un contenu qui vient d'être transmis. Ainsi, un-e enseignant-e scénarisera des moments d'auto-diagnostique des étudiant-es sur leur perception de compétence sur la thématique. Cette information peut être utilisée pour réaliser des groupes de travail : (1) les personnes qui ont compris peuvent être orientées sur un contenu plus avancé, en échange pendant que l'enseignant organiser une séance de question-réponse avec les personnes en difficulté ou (2) des groupes peuvent être créés pour intégrer des étudiant-es qui ont compris avec des étudiant-es qui ont besoin d'aide.<br />
<br />
Le dispositif est donc pensé comme un outil de sondage à certains moments du cours, pour évaluer les besoins du groupe, dans son ensemble. Il est souvent difficile de récolter des informations sincères lors d’évaluations à chaud, les étudiants réticents à communiquer publiquement leurs difficultés ou désintérêts pour le contenu. Par la technique de transmission, les étudiants pourraient communiquer leur émotion de manière anonyme, favorisant l'authenticité.<br />
<br />
De manière intéressante au fur et à mesure de l'avance du projet, il est ressorti des discussions avec un échantillon du public cible que l'aspect de notre projet qui les intéressaient étaient moins la communication des émotions, mais la création facilitée des groupes. En effet, les formateurs et formatrices ayant travaillé à distance durant la dernière année se sont habitués à disposer d'une fonction de création de groupe aléatoire, selon un nombre total de participant et un nombre de groupe visé. Cette fonction serait très utile également en présence, en utilisant une carte Arduino ou un CPX pour calculer une répartition des élèves par groupe, avec en entrée le nombre d'élèves et les sous-groupes. Une fois les groupes constitué, l'étape suivante est de communiquer ces groupes à l'ensemble de la classe au travers de Lilypad ou autres technologies portables qui s'allument selon la couleur de leur groupe.<br />
<br />
===Apports===<br />
* Cohésion et sentiment d'appartenance au groupe comme soutien à l'apprentissage<br />
* Expression d'un état émotionnel épistémique comme bénéfique à l'apprentissage<br />
<br />
===Présentation du projet===<br />
Suite aux premières itérations dans l'empathie et la définition du projet, nous avons identifié plusieurs points clés qui ont réorienté notre projet :<br />
* la création d'un réseau de cartes bluetooth contrôlées par Arduino s'est révélé trop ambitieux, suite au manque de projets existants ou d'expertise sur lesquels s'appuyer, <br />
* l'envie marquée de notre échantillon cible qui s'est dirigée sur l'aspect création de groupe plus que sur la connaissance des états affectifs.<br />
<br />
Nous avons donc revu le projet en le divisant en 3 niveaux de difficuté, afin de réaliser un prototype utilisable, puis de l'améliorer en fonction des retours et du temps à disposition.<br />
* '''Niveau 1 - Création de groupe aléatoire''' : intérêts : facilitation de la création des groupes (demande reçue d'un formateur : "parce que Zoom nous a bien aidé pour cela à distance, je veux la même chose en présence!")<br />
* '''Niveau 2 : Communication du groupe à l’apprenant''' : intérêts : gamification, sentiment d’appartenance, coopération, cohésion<br />
* '''Niveau 3 : Communication de son sentiment de compétence''' : intérêts : plus facile que d'exprimer ses émotions, et plus facile à gérer par l'enseignant.e, par exemple les gens qui ont compris avec celles-ceux qui n'ont pas compris<br />
<br />
Nous avons réalisé complètement le niveau 1, ainsi que prototypé et testé le niveau 2 avec des cables avant de pouvoir gérer par Bluetooth un Bluefruit spécifique dans un réseau comprenant plusieurs Bluefruits. Les solutions avec code et prototypes sont décrites dans la section suivante.<br />
<br />
== Solutions explorées ==<br />
<br />
===1er prototype===<br />
La première solution envisagée comporte deux objets : <br />
* Un '''émetteur''' : facile d’utilisation et agréable à porter, nous penchons pour la solution d’un bracelet contenant un micro circuit type Lilypad, Arduino Gemma ou Tinyduino. L’apprenant disposerait de 4 boutons-pressoirs pour 4 émotions majeures à transmettre (intérêt, confusion, frustration, incompréhension), symbolisés par des logos ou émoticônes. Les messages sont transmis par Bluetooth.<br />
* Un '''récepteur''' : Une jauge, comprenant une bande Neopixels, connectée à un Arduino Uno. Les LED symboliseraient deux dimensions fournies : la couleur pour le type d'émotion et le nombre pour la quantité d'étudiant.e.s ayant transmis l'information. L'Arduino pourrait gérer l'information, en émettant un son lors du dépassement d'un seuil prédéfini sur une émotion par exemple.<br />
<br />
====maquette====<br />
L'Arduino Uno lance une séquence de randomisation de couleur, en affiche une, puis les participant.e.s font de même sur leur CPX. Si les couleurs affichées "matchent", le groupe est constitué et on peut ainsi passer à la constitution aléatoire du groupe suivant. <br />
[[Fichier:2e Maquette projet STIC III Djamileh et Simon .jpg|néant|vignette|1103x1103px|Maquette du projet]] <br />
<br />
====code=====<br />
<u>Version 1.0 du code CPX :</u> <syntaxhighlight lang="javascript"><br />
input.buttonA.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 200<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(40)<br />
color2 += Math.randomRange(1, 3)<br />
light.setPhotonPenHue(color2)<br />
}<br />
light.photonFlip()<br />
})<br />
input.buttonsAB.onEvent(ButtonEvent.Click, function () {<br />
control.reset()<br />
})<br />
input.buttonB.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 300<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
color2 += 3<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(50)<br />
}<br />
})<br />
let tonalité = 0<br />
let durée = 0<br />
let color2 = 0<br />
light.setBrightness(158)<br />
music.setVolume(167)<br />
forever(function () {<br />
<br />
})<br />
</syntaxhighlight><br />
<br />
===2e prototype===<br />
<br />
====maquette====<br />
<br />
<br />
====code====<br />
La solution présentée ici s'occupe du niveau 1, soit la création de groupe aléatoire à l'aide d'un CPX Bluefruit.<br />
Elle a été codée en CircuitPython. Nous n'avons pas utilisé de code existant, et la première partie de dictionnaire a été finalisée grâce à l'aimable contribution de notre collègue Jérôme.<br />
<br />
<syntaxhighlight lang="python"><br />
# Groupify !<br />
# Un projet de S!m & Dja<br />
<br />
# code python pur pour la répartition dans les groupes<br />
import random<br />
<br />
# Librairie pour gérer la bande neopixel du bluefruit<br />
from adafruit_circuitplayground import cp<br />
<br />
participants = int(input("Combien y a de participants : "))<br />
groupe = int(input("Combien tu veux de groupes : "))<br />
<br />
liste_part = list(range(1, participants + 1))<br />
liste_groupe = list(range(1, groupe + 1))<br />
<br />
clé_tableau = str(participants) + "_" + str(groupe)<br />
# ajouter combinaisons pas possible --> genre un tour de roue lumineuse/un son pourri<br />
grille_repartition = {"10_5": [2, 2, 2, 2, 2], "10_4": [2, 2, 3, 3], "10_3": [3, 3, 4]}<br />
<br />
taille_groupe = grille_repartition[clé_tableau]<br />
<br />
dict_repartition = {}<br />
for i in range(0, len(taille_groupe)):<br />
dict_repartition[liste_groupe[i]] = []<br />
for j in range(0, taille_groupe[i]):<br />
etu = liste_part[random.randint(0, len(liste_part) - 1)]<br />
dict_repartition[liste_groupe[i]].append(etu)<br />
liste_part.remove(etu)<br />
print(dict_repartition)<br />
<br />
# Définition des groupes avec couleurs<br />
groupeTotal = dict_repartition.values()<br />
groupeList = list(groupeTotal)<br />
print(groupeList)<br />
<br />
# créer un test pour si existe pas --> ignorer / boucle sur la base de len(groupeList)<br />
groupe1 = groupeList[0]<br />
groupe2 = groupeList[1]<br />
groupe3 = groupeList[2]<br />
groupe4 = groupeList[3]<br />
groupe5 = groupeList[4]<br />
<br />
# Gestion des LEDs<br />
cp.pixels.brightness = 0.05<br />
<br />
groupe1_color = (0, 255, 0)<br />
groupe2_color = (255, 0, 255)<br />
groupe3_color = (255, 255, 0)<br />
groupe4_color = (0, 255, 255)<br />
groupe5_color = (255, 0, 0)<br />
<br />
# recherche des participants (LED) dans les groupes<br />
if 1 in groupe1:<br />
pix1 = groupe1_color<br />
elif 1 in groupe2:<br />
pix1 = groupe2_color<br />
elif 1 in groupe3:<br />
pix1 = groupe3_color<br />
elif 1 in groupe4:<br />
pix1 = groupe4_color<br />
elif 1 in groupe5:<br />
pix1 = groupe5_color<br />
<br />
if 2 in groupe1:<br />
pix2 = groupe1_color<br />
elif 2 in groupe2:<br />
pix2 = groupe2_color<br />
elif 2 in groupe3:<br />
pix2 = groupe3_color<br />
elif 2 in groupe4:<br />
pix2 = groupe4_color<br />
elif 2 in groupe5:<br />
pix2 = groupe5_color<br />
<br />
if 3 in groupe1:<br />
pix3 = groupe1_color<br />
elif 3 in groupe2:<br />
pix3 = groupe2_color<br />
elif 3 in groupe3:<br />
pix3 = groupe3_color<br />
elif 3 in groupe4:<br />
pix3 = groupe4_color<br />
elif 3 in groupe5:<br />
pix3 = groupe5_color<br />
<br />
if 4 in groupe1:<br />
pix4 = groupe1_color<br />
elif 4 in groupe2:<br />
pix4 = groupe2_color<br />
elif 4 in groupe3:<br />
pix4 = groupe3_color<br />
elif 4 in groupe4:<br />
pix4 = groupe4_color<br />
elif 4 in groupe5:<br />
pix4 = groupe5_color<br />
<br />
if 5 in groupe1:<br />
pix5 = groupe1_color<br />
elif 5 in groupe2:<br />
pix5 = groupe2_color<br />
elif 5 in groupe3:<br />
pix5 = groupe3_color<br />
elif 5 in groupe4:<br />
pix5 = groupe4_color<br />
elif 5 in groupe5:<br />
pix5 = groupe5_color<br />
<br />
if 6 in groupe1:<br />
pix6 = groupe1_color<br />
elif 6 in groupe2:<br />
pix6 = groupe2_color<br />
elif 6 in groupe3:<br />
pix6 = groupe3_color<br />
elif 6 in groupe4:<br />
pix6 = groupe4_color<br />
elif 6 in groupe5:<br />
pix6 = groupe5_color<br />
<br />
if 7 in groupe1:<br />
pix7 = groupe1_color<br />
elif 7 in groupe2:<br />
pix7 = groupe2_color<br />
elif 7 in groupe3:<br />
pix7 = groupe3_color<br />
elif 7 in groupe4:<br />
pix7 = groupe4_color<br />
elif 7 in groupe5:<br />
pix7 = groupe5_color<br />
<br />
if 8 in groupe1:<br />
pix8 = groupe1_color<br />
elif 8 in groupe2:<br />
pix8 = groupe2_color<br />
elif 8 in groupe3:<br />
pix8 = groupe3_color<br />
elif 8 in groupe4:<br />
pix8 = groupe4_color<br />
elif 8 in groupe5:<br />
pix8 = groupe5_color<br />
<br />
if 9 in groupe1:<br />
pix9 = groupe1_color<br />
elif 9 in groupe2:<br />
pix9 = groupe2_color<br />
elif 9 in groupe3:<br />
pix9 = groupe3_color<br />
elif 9 in groupe4:<br />
pix9 = groupe4_color<br />
elif 9 in groupe5:<br />
pix9 = groupe5_color<br />
<br />
if 10 in groupe1:<br />
pix10 = groupe1_color<br />
elif 10 in groupe2:<br />
pix10 = groupe2_color<br />
elif 10 in groupe3:<br />
pix10 = groupe3_color<br />
elif 10 in groupe4:<br />
pix10 = groupe4_color<br />
elif 10 in groupe5:<br />
pix10 = groupe5_color<br />
<br />
# Gestion de l'allumage de la bande neopixel<br />
while True:<br />
cp.pixels[0] = pix1<br />
cp.pixels[1] = pix2<br />
cp.pixels[2] = pix3<br />
cp.pixels[3] = pix4<br />
cp.pixels[4] = pix5<br />
cp.pixels[5] = pix6<br />
cp.pixels[6] = pix7<br />
cp.pixels[7] = pix8<br />
cp.pixels[8] = pix9<br />
cp.pixels[9] = pix10<br />
</syntaxhighlight><br />
<br />
== Test(s) de la solution ==<br />
Documentation dans votre page projet avec un [[:en:Cognitive walkthrough|cognitive walkthrough]] ou similaire pour le testing + avec un test utilisateurs (3 personnes minimum) c'est à dire création d’un scénario (tâches à réaliser), passation et analyse des résultats. <br />
<br />
== Discussion ==<br />
Cette partie inclus deux sous parties : <br />
* Discussion du design (et si c'était à refaire ou à améliorer),<br />
* Discussion des résultats de vos tests utilisateurs<br />
<br />
== Licence, fichiers et documentation ==<br />
[[Fichier:By-nc.png|150px]] Cette œuvre est mise à disposition selon les termes de la [http://creativecommons.org/licenses/by-nc/4.0/ Licence Creative Commons Attribution - Pas d’Utilisation Commerciale 4.0 International].<br />
<br />
* Fichiers :<br />
Insérer ici vos fichiers ou les liens vers vos fichiers<br />
<br />
* Documentation : <br />
Insérer ici une petite documentation pour l'utilisation de l'objet si nécessaire<br />
<br />
== Bibliographie ==<br />
<br />
* Blair, C., Calkins, S., & Kopp, L. (2010). Self-regulation as the interface of emotional and cognitive development: Implications for education and academic achievement.</div>Djamileh Aminianhttps://edutechwiki.unige.ch/fmediawiki/index.php?title=STIC:STIC_III_(2020)/Forces_rouge,_rose,_vert,_jaune_ou_bleu_!&diff=153786STIC:STIC III (2020)/Forces rouge, rose, vert, jaune ou bleu !2021-06-14T20:22:41Z<p>Djamileh Aminian : /* Solution */</p>
<hr />
<div>{{bloc important|Projet réalisé par [[Utilisateur:Djamileh_Aminian|Djamileh]] & [[Utilisateur:Simon_Jöhr|Simon]]}}<br />
<br />
== Introduction ==<br />
Durant la dernière année, le passage forcé à la téléformation, soit la formation synchrone à distance, a eu comme effet positif de pousser certains spécialistes de l’éducation à revisiter leurs scénarios pédagogiques pour revenir aux fondamentaux : comment aider les élèves à apprendre ce qu’ils sont sensés apprendre et comment les accompagner au mieux dans leur apprentissage ? Souvent, les difficultés relevées lors des bilans des derniers mois de distantiel ont fait émerger des problèmes qui existaient déjà en présence, mais qui restaient latents ou ignorés.<br />
<br />
En ce sens, l’apprentissage est fortement influencé par les émotions par lesquelles passent les élèves au cours de la formation, et en particulier pendant les moments synchrones. Pourtant, il est très complexe de détecter, mesurer, ou même faire exprimer les étudiant-es sur leur ressenti.<br />
<br />
En donnant leurs cours en visioconférence, nombreux formateurs et formatrices ont exprimé leur frustration de ne pas réussir à évaluer l’état émotionnel et autres indices non verbaux de leurs participant.e.s, retours essentiels pour adapter une explication ou ajuster le rythme. Et cet effet est loin d’être limité à la distance : il est également bien présent dans une salle de classe où il reste complexe de capter en temps réel les émotions d’un étudiant, processus complexe et dynamique.<br />
<br />
Notre projet prend sa racine dans ce constat. Deux questions ont alors émergé : <br />
* comment mesurer l'état émotionnel d'un-e apprenant-e, <br />
* et surtout, pour quel usage ?<br />
<br />
Dans ce contexte, nous avons pensé un dispositif de partage des ressentis de la classe à destination de l'équipe enseignante, et une utilisation de cette donnée comme retour au groupe.<br />
<br />
== Problème ==<br />
<br />
Le but de ce projet est de proposer une solution ludique à la constitution de groupes en classe, que cela soit en présence, à distance ou de manière comodale. En utilisant un Arduino Uno ou des CPX, la phase de constitution de groupes sera ainsi rapide, aléatoire et "fun" !<br />
<br />
Le ''Problem Statement'' peut s’exprimer ainsi : « Comment peut-on aider les formateurs et formatrices à identifier rapidement les difficultés dans l’apprentissage et, le cas échéant, à réagir ? »<br />
<br />
== Cahier des charges == <br />
=== Contexte et public ===<br />
Le public cible est composé de formateurs et formatrices d’adultes, en entreprise ou en institut. Il pourrait également être élargi aux enseignante.s du scolaire, mais la conscientisation et l’expression d’une émotion sont suffisamment complexes pour limiter notre premier dispositif à des adultes, disposant, à priori, d’une compréhension plus fine de leur état émotionnel. De plus, l’asymétrie dans la relation est supposée moins forte dans un groupe d’adultes en formation que dans une classe avec un enseignant et des enfants ou adolescents.<br />
<br />
===Objectifs===<br />
Le but du dispositif est de :<br />
* permettre la communication d'un niveau émotionnel perçu par l'étudiant.e à l'enseignant.e<br />
* faire émerger un état général de la classe et les différences dans l'acquisition du contenu<br />
* de manière plus pragmatique, de créer des groupes sur la base des éléments communiqués<br />
<br />
===Besoins et contraintes===<br />
L'idée du projet a beaucoup évolué entre la phase d'identification des besoins et les constatations sur les possiblités offertes par la technologie et l'expertise à disposition. Nous détaillons ci-dessous les besoins et contraintes qui nous ont mené à la solution présentée plus bas.<br />
<br />
Partant au début d’une idée de jauge émotionnelle dynamique, donnant en tout temps l’état émotionnel d’un groupe de participants, nous avons rapidement détecté, en phase d'idéation avec plusieurs spécialistes en éducation, un aspect extrêmement anxiogène pour le formateur dont le groupe enverrait des signaux d’ennui ou de frustration, durant une explication. <br />
<br />
Afin de juguler cet effet, tout en conservant la possibilité de communiquer un message sur l’état, nous avons adapté le dispositif pour permettre aux étudiants de transmettre leur état à des moments spécifiques de la formation, intégrés dans le scénario pédagogique. L'émotion étant un élément sensible à conscientiser, exprimer et partager au sein d'un groupe, nous avons estimé plus judicieux de faire exprimer son niveau d'aisance face à un contenu qui vient d'être transmis. Ainsi, un-e enseignant-e scénarisera des moments d'auto-diagnostique des étudiant-es sur leur perception de compétence sur la thématique. Cette information peut être utilisée pour réaliser des groupes de travail : (1) les personnes qui ont compris peuvent être orientées sur un contenu plus avancé, en échange pendant que l'enseignant organiser une séance de question-réponse avec les personnes en difficulté ou (2) des groupes peuvent être créés pour intégrer des étudiant-es qui ont compris avec des étudiant-es qui ont besoin d'aide.<br />
<br />
Le dispositif est donc pensé comme un outil de sondage à certains moments du cours, pour évaluer les besoins du groupe, dans son ensemble. Il est souvent difficile de récolter des informations sincères lors d’évaluations à chaud, les étudiants réticents à communiquer publiquement leurs difficultés ou désintérêts pour le contenu. Par la technique de transmission, les étudiants pourraient communiquer leur émotion de manière anonyme, favorisant l'authenticité.<br />
<br />
De manière intéressante au fur et à mesure de l'avance du projet, il est ressorti des discussions avec un échantillon du public cible que l'aspect de notre projet qui les intéressaient étaient moins la communication des émotions, mais la création facilitée des groupes. En effet, les formateurs et formatrices ayant travaillé à distance durant la dernière année se sont habitués à disposer d'une fonction de création de groupe aléatoire, selon un nombre total de participant et un nombre de groupe visé. Cette fonction serait très utile également en présence, en utilisant une carte Arduino ou un CPX pour calculer une répartition des élèves par groupe, avec en entrée le nombre d'élèves et les sous-groupes. Une fois les groupes constitué, l'étape suivante est de communiquer ces groupes à l'ensemble de la classe au travers de Lilypad ou autres technologies portables qui s'allument selon la couleur de leur groupe.<br />
<br />
===Apports===<br />
* Cohésion et sentiment d'appartenance au groupe comme soutien à l'apprentissage<br />
* Expression d'un état émotionnel épistémique comme bénéfique à l'apprentissage<br />
<br />
===Présentation du projet===<br />
Suite aux premières itérations dans l'empathie et la définition du projet, nous avons identifié plusieurs points clés qui ont réorienté notre projet :<br />
* la création d'un réseau de cartes bluetooth contrôlées par Arduino s'est révélé trop ambitieux, suite au manque de projets existants ou d'expertise sur lesquels s'appuyer, <br />
* l'envie marquée de notre échantillon cible qui s'est dirigée sur l'aspect création de groupe plus que sur la connaissance des états affectifs.<br />
<br />
Nous avons donc revu le projet en le divisant en 3 niveaux de difficuté, afin de réaliser un prototype utilisable, puis de l'améliorer en fonction des retours et du temps à disposition.<br />
* '''Niveau 1 - Création de groupe aléatoire''' : intérêts : facilitation de la création des groupes (demande reçue d'un formateur : "parce que Zoom nous a bien aidé pour cela à distance, je veux la même chose en présence!")<br />
* '''Niveau 2 : Communication du groupe à l’apprenant''' : intérêts : gamification, sentiment d’appartenance, coopération, cohésion<br />
* '''Niveau 3 : Communication de son sentiment de compétence''' : intérêts : plus facile que d'exprimer ses émotions, et plus facile à gérer par l'enseignant.e, par exemple les gens qui ont compris avec celles-ceux qui n'ont pas compris<br />
<br />
Nous avons réalisé complètement le niveau 1, ainsi que prototypé et testé le niveau 2 avec des cables avant de pouvoir gérer par Bluetooth un Bluefruit spécifique dans un réseau comprenant plusieurs Bluefruits. Les solutions avec code et prototypes sont décrites dans la section suivante.<br />
<br />
== Solution ==<br />
<br />
===1er prototype===<br />
La première solution envisagée comporte deux objets : <br />
* Un '''émetteur''' : facile d’utilisation et agréable à porter, nous penchons pour la solution d’un bracelet contenant un micro circuit type Lilypad, Arduino Gemma ou Tinyduino. L’apprenant disposerait de 4 boutons-pressoirs pour 4 émotions majeures à transmettre (intérêt, confusion, frustration, incompréhension), symbolisés par des logos ou émoticônes. Les messages sont transmis par Bluetooth.<br />
* Un '''récepteur''' : Une jauge, comprenant une bande Neopixels, connectée à un Arduino Uno. Les LED symboliseraient deux dimensions fournies : la couleur pour le type d'émotion et le nombre pour la quantité d'étudiant.e.s ayant transmis l'information. L'Arduino pourrait gérer l'information, en émettant un son lors du dépassement d'un seuil prédéfini sur une émotion par exemple.<br />
<br />
====maquette====<br />
L'Arduino Uno lance une séquence de randomisation de couleur, en affiche une, puis les participant.e.s font de même sur leur CPX. Si les couleurs affichées "matchent", le groupe est constitué et on peut ainsi passer à la constitution aléatoire du groupe suivant. <br />
[[Fichier:2e Maquette projet STIC III Djamileh et Simon .jpg|néant|vignette|1103x1103px|Maquette du projet]] <br />
<br />
====code=====<br />
<u>Version 1.0 du code CPX :</u> <syntaxhighlight lang="javascript"><br />
input.buttonA.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 200<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(40)<br />
color2 += Math.randomRange(1, 3)<br />
light.setPhotonPenHue(color2)<br />
}<br />
light.photonFlip()<br />
})<br />
input.buttonsAB.onEvent(ButtonEvent.Click, function () {<br />
control.reset()<br />
})<br />
input.buttonB.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 300<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
color2 += 3<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(50)<br />
}<br />
})<br />
let tonalité = 0<br />
let durée = 0<br />
let color2 = 0<br />
light.setBrightness(158)<br />
music.setVolume(167)<br />
forever(function () {<br />
<br />
})<br />
</syntaxhighlight><br />
<br />
===2e prototype===<br />
<br />
====maquette====<br />
<br />
<br />
====code====<br />
La solution présentée ici s'occupe du niveau 1, soit la création de groupe aléatoire à l'aide d'un CPX Bluefruit.<br />
Elle a été codée en CircuitPython. Nous n'avons pas utilisé de code existant, et la première partie de dictionnaire a été finalisée grâce à l'aimable contribution de notre collègue Jérôme.<br />
<br />
<syntaxhighlight lang="python"><br />
# Groupify !<br />
# Un projet de S!m & Dja<br />
<br />
# code python pur pour la répartition dans les groupes<br />
import random<br />
<br />
# Librairie pour gérer la bande neopixel du bluefruit<br />
from adafruit_circuitplayground import cp<br />
<br />
participants = int(input("Combien y a de participants : "))<br />
groupe = int(input("Combien tu veux de groupes : "))<br />
<br />
liste_part = list(range(1, participants + 1))<br />
liste_groupe = list(range(1, groupe + 1))<br />
<br />
clé_tableau = str(participants) + "_" + str(groupe)<br />
# ajouter combinaisons pas possible --> genre un tour de roue lumineuse/un son pourri<br />
grille_repartition = {"10_5": [2, 2, 2, 2, 2], "10_4": [2, 2, 3, 3], "10_3": [3, 3, 4]}<br />
<br />
taille_groupe = grille_repartition[clé_tableau]<br />
<br />
dict_repartition = {}<br />
for i in range(0, len(taille_groupe)):<br />
dict_repartition[liste_groupe[i]] = []<br />
for j in range(0, taille_groupe[i]):<br />
etu = liste_part[random.randint(0, len(liste_part) - 1)]<br />
dict_repartition[liste_groupe[i]].append(etu)<br />
liste_part.remove(etu)<br />
print(dict_repartition)<br />
<br />
# Définition des groupes avec couleurs<br />
groupeTotal = dict_repartition.values()<br />
groupeList = list(groupeTotal)<br />
print(groupeList)<br />
<br />
# créer un test pour si existe pas --> ignorer / boucle sur la base de len(groupeList)<br />
groupe1 = groupeList[0]<br />
groupe2 = groupeList[1]<br />
groupe3 = groupeList[2]<br />
groupe4 = groupeList[3]<br />
groupe5 = groupeList[4]<br />
<br />
# Gestion des LEDs<br />
cp.pixels.brightness = 0.05<br />
<br />
groupe1_color = (0, 255, 0)<br />
groupe2_color = (255, 0, 255)<br />
groupe3_color = (255, 255, 0)<br />
groupe4_color = (0, 255, 255)<br />
groupe5_color = (255, 0, 0)<br />
<br />
# recherche des participants (LED) dans les groupes<br />
if 1 in groupe1:<br />
pix1 = groupe1_color<br />
elif 1 in groupe2:<br />
pix1 = groupe2_color<br />
elif 1 in groupe3:<br />
pix1 = groupe3_color<br />
elif 1 in groupe4:<br />
pix1 = groupe4_color<br />
elif 1 in groupe5:<br />
pix1 = groupe5_color<br />
<br />
if 2 in groupe1:<br />
pix2 = groupe1_color<br />
elif 2 in groupe2:<br />
pix2 = groupe2_color<br />
elif 2 in groupe3:<br />
pix2 = groupe3_color<br />
elif 2 in groupe4:<br />
pix2 = groupe4_color<br />
elif 2 in groupe5:<br />
pix2 = groupe5_color<br />
<br />
if 3 in groupe1:<br />
pix3 = groupe1_color<br />
elif 3 in groupe2:<br />
pix3 = groupe2_color<br />
elif 3 in groupe3:<br />
pix3 = groupe3_color<br />
elif 3 in groupe4:<br />
pix3 = groupe4_color<br />
elif 3 in groupe5:<br />
pix3 = groupe5_color<br />
<br />
if 4 in groupe1:<br />
pix4 = groupe1_color<br />
elif 4 in groupe2:<br />
pix4 = groupe2_color<br />
elif 4 in groupe3:<br />
pix4 = groupe3_color<br />
elif 4 in groupe4:<br />
pix4 = groupe4_color<br />
elif 4 in groupe5:<br />
pix4 = groupe5_color<br />
<br />
if 5 in groupe1:<br />
pix5 = groupe1_color<br />
elif 5 in groupe2:<br />
pix5 = groupe2_color<br />
elif 5 in groupe3:<br />
pix5 = groupe3_color<br />
elif 5 in groupe4:<br />
pix5 = groupe4_color<br />
elif 5 in groupe5:<br />
pix5 = groupe5_color<br />
<br />
if 6 in groupe1:<br />
pix6 = groupe1_color<br />
elif 6 in groupe2:<br />
pix6 = groupe2_color<br />
elif 6 in groupe3:<br />
pix6 = groupe3_color<br />
elif 6 in groupe4:<br />
pix6 = groupe4_color<br />
elif 6 in groupe5:<br />
pix6 = groupe5_color<br />
<br />
if 7 in groupe1:<br />
pix7 = groupe1_color<br />
elif 7 in groupe2:<br />
pix7 = groupe2_color<br />
elif 7 in groupe3:<br />
pix7 = groupe3_color<br />
elif 7 in groupe4:<br />
pix7 = groupe4_color<br />
elif 7 in groupe5:<br />
pix7 = groupe5_color<br />
<br />
if 8 in groupe1:<br />
pix8 = groupe1_color<br />
elif 8 in groupe2:<br />
pix8 = groupe2_color<br />
elif 8 in groupe3:<br />
pix8 = groupe3_color<br />
elif 8 in groupe4:<br />
pix8 = groupe4_color<br />
elif 8 in groupe5:<br />
pix8 = groupe5_color<br />
<br />
if 9 in groupe1:<br />
pix9 = groupe1_color<br />
elif 9 in groupe2:<br />
pix9 = groupe2_color<br />
elif 9 in groupe3:<br />
pix9 = groupe3_color<br />
elif 9 in groupe4:<br />
pix9 = groupe4_color<br />
elif 9 in groupe5:<br />
pix9 = groupe5_color<br />
<br />
if 10 in groupe1:<br />
pix10 = groupe1_color<br />
elif 10 in groupe2:<br />
pix10 = groupe2_color<br />
elif 10 in groupe3:<br />
pix10 = groupe3_color<br />
elif 10 in groupe4:<br />
pix10 = groupe4_color<br />
elif 10 in groupe5:<br />
pix10 = groupe5_color<br />
<br />
# Gestion de l'allumage de la bande neopixel<br />
while True:<br />
cp.pixels[0] = pix1<br />
cp.pixels[1] = pix2<br />
cp.pixels[2] = pix3<br />
cp.pixels[3] = pix4<br />
cp.pixels[4] = pix5<br />
cp.pixels[5] = pix6<br />
cp.pixels[6] = pix7<br />
cp.pixels[7] = pix8<br />
cp.pixels[8] = pix9<br />
cp.pixels[9] = pix10<br />
</syntaxhighlight><br />
<br />
== Test(s) de la solution ==<br />
Documentation dans votre page projet avec un [[:en:Cognitive walkthrough|cognitive walkthrough]] ou similaire pour le testing + avec un test utilisateurs (3 personnes minimum) c'est à dire création d’un scénario (tâches à réaliser), passation et analyse des résultats. <br />
<br />
== Discussion ==<br />
Cette partie inclus deux sous parties : <br />
* Discussion du design (et si c'était à refaire ou à améliorer),<br />
* Discussion des résultats de vos tests utilisateurs<br />
<br />
== Licence, fichiers et documentation ==<br />
[[Fichier:By-nc.png|150px]] Cette œuvre est mise à disposition selon les termes de la [http://creativecommons.org/licenses/by-nc/4.0/ Licence Creative Commons Attribution - Pas d’Utilisation Commerciale 4.0 International].<br />
<br />
* Fichiers :<br />
Insérer ici vos fichiers ou les liens vers vos fichiers<br />
<br />
* Documentation : <br />
Insérer ici une petite documentation pour l'utilisation de l'objet si nécessaire<br />
<br />
== Bibliographie ==<br />
<br />
* Blair, C., Calkins, S., & Kopp, L. (2010). Self-regulation as the interface of emotional and cognitive development: Implications for education and academic achievement.</div>Djamileh Aminianhttps://edutechwiki.unige.ch/fmediawiki/index.php?title=STIC:STIC_III_(2020)/Forces_rouge,_rose,_vert,_jaune_ou_bleu_!&diff=153785STIC:STIC III (2020)/Forces rouge, rose, vert, jaune ou bleu !2021-06-14T20:21:18Z<p>Djamileh Aminian : </p>
<hr />
<div>{{bloc important|Projet réalisé par [[Utilisateur:Djamileh_Aminian|Djamileh]] & [[Utilisateur:Simon_Jöhr|Simon]]}}<br />
<br />
== Introduction ==<br />
Durant la dernière année, le passage forcé à la téléformation, soit la formation synchrone à distance, a eu comme effet positif de pousser certains spécialistes de l’éducation à revisiter leurs scénarios pédagogiques pour revenir aux fondamentaux : comment aider les élèves à apprendre ce qu’ils sont sensés apprendre et comment les accompagner au mieux dans leur apprentissage ? Souvent, les difficultés relevées lors des bilans des derniers mois de distantiel ont fait émerger des problèmes qui existaient déjà en présence, mais qui restaient latents ou ignorés.<br />
<br />
En ce sens, l’apprentissage est fortement influencé par les émotions par lesquelles passent les élèves au cours de la formation, et en particulier pendant les moments synchrones. Pourtant, il est très complexe de détecter, mesurer, ou même faire exprimer les étudiant-es sur leur ressenti.<br />
<br />
En donnant leurs cours en visioconférence, nombreux formateurs et formatrices ont exprimé leur frustration de ne pas réussir à évaluer l’état émotionnel et autres indices non verbaux de leurs participant.e.s, retours essentiels pour adapter une explication ou ajuster le rythme. Et cet effet est loin d’être limité à la distance : il est également bien présent dans une salle de classe où il reste complexe de capter en temps réel les émotions d’un étudiant, processus complexe et dynamique.<br />
<br />
Notre projet prend sa racine dans ce constat. Deux questions ont alors émergé : <br />
* comment mesurer l'état émotionnel d'un-e apprenant-e, <br />
* et surtout, pour quel usage ?<br />
<br />
Dans ce contexte, nous avons pensé un dispositif de partage des ressentis de la classe à destination de l'équipe enseignante, et une utilisation de cette donnée comme retour au groupe.<br />
<br />
== Problème ==<br />
<br />
Le but de ce projet est de proposer une solution ludique à la constitution de groupes en classe, que cela soit en présence, à distance ou de manière comodale. En utilisant un Arduino Uno ou des CPX, la phase de constitution de groupes sera ainsi rapide, aléatoire et "fun" !<br />
<br />
Le ''Problem Statement'' peut s’exprimer ainsi : « Comment peut-on aider les formateurs et formatrices à identifier rapidement les difficultés dans l’apprentissage et, le cas échéant, à réagir ? »<br />
<br />
== Cahier des charges == <br />
=== Contexte et public ===<br />
Le public cible est composé de formateurs et formatrices d’adultes, en entreprise ou en institut. Il pourrait également être élargi aux enseignante.s du scolaire, mais la conscientisation et l’expression d’une émotion sont suffisamment complexes pour limiter notre premier dispositif à des adultes, disposant, à priori, d’une compréhension plus fine de leur état émotionnel. De plus, l’asymétrie dans la relation est supposée moins forte dans un groupe d’adultes en formation que dans une classe avec un enseignant et des enfants ou adolescents.<br />
<br />
===Objectifs===<br />
Le but du dispositif est de :<br />
* permettre la communication d'un niveau émotionnel perçu par l'étudiant.e à l'enseignant.e<br />
* faire émerger un état général de la classe et les différences dans l'acquisition du contenu<br />
* de manière plus pragmatique, de créer des groupes sur la base des éléments communiqués<br />
<br />
===Besoins et contraintes===<br />
L'idée du projet a beaucoup évolué entre la phase d'identification des besoins et les constatations sur les possiblités offertes par la technologie et l'expertise à disposition. Nous détaillons ci-dessous les besoins et contraintes qui nous ont mené à la solution présentée plus bas.<br />
<br />
Partant au début d’une idée de jauge émotionnelle dynamique, donnant en tout temps l’état émotionnel d’un groupe de participants, nous avons rapidement détecté, en phase d'idéation avec plusieurs spécialistes en éducation, un aspect extrêmement anxiogène pour le formateur dont le groupe enverrait des signaux d’ennui ou de frustration, durant une explication. <br />
<br />
Afin de juguler cet effet, tout en conservant la possibilité de communiquer un message sur l’état, nous avons adapté le dispositif pour permettre aux étudiants de transmettre leur état à des moments spécifiques de la formation, intégrés dans le scénario pédagogique. L'émotion étant un élément sensible à conscientiser, exprimer et partager au sein d'un groupe, nous avons estimé plus judicieux de faire exprimer son niveau d'aisance face à un contenu qui vient d'être transmis. Ainsi, un-e enseignant-e scénarisera des moments d'auto-diagnostique des étudiant-es sur leur perception de compétence sur la thématique. Cette information peut être utilisée pour réaliser des groupes de travail : (1) les personnes qui ont compris peuvent être orientées sur un contenu plus avancé, en échange pendant que l'enseignant organiser une séance de question-réponse avec les personnes en difficulté ou (2) des groupes peuvent être créés pour intégrer des étudiant-es qui ont compris avec des étudiant-es qui ont besoin d'aide.<br />
<br />
Le dispositif est donc pensé comme un outil de sondage à certains moments du cours, pour évaluer les besoins du groupe, dans son ensemble. Il est souvent difficile de récolter des informations sincères lors d’évaluations à chaud, les étudiants réticents à communiquer publiquement leurs difficultés ou désintérêts pour le contenu. Par la technique de transmission, les étudiants pourraient communiquer leur émotion de manière anonyme, favorisant l'authenticité.<br />
<br />
De manière intéressante au fur et à mesure de l'avance du projet, il est ressorti des discussions avec un échantillon du public cible que l'aspect de notre projet qui les intéressaient étaient moins la communication des émotions, mais la création facilitée des groupes. En effet, les formateurs et formatrices ayant travaillé à distance durant la dernière année se sont habitués à disposer d'une fonction de création de groupe aléatoire, selon un nombre total de participant et un nombre de groupe visé. Cette fonction serait très utile également en présence, en utilisant une carte Arduino ou un CPX pour calculer une répartition des élèves par groupe, avec en entrée le nombre d'élèves et les sous-groupes. Une fois les groupes constitué, l'étape suivante est de communiquer ces groupes à l'ensemble de la classe au travers de Lilypad ou autres technologies portables qui s'allument selon la couleur de leur groupe.<br />
<br />
===Apports===<br />
* Cohésion et sentiment d'appartenance au groupe comme soutien à l'apprentissage<br />
* Expression d'un état émotionnel épistémique comme bénéfique à l'apprentissage<br />
<br />
===Présentation du projet===<br />
Suite aux premières itérations dans l'empathie et la définition du projet, nous avons identifié plusieurs points clés qui ont réorienté notre projet :<br />
* la création d'un réseau de cartes bluetooth contrôlées par Arduino s'est révélé trop ambitieux, suite au manque de projets existants ou d'expertise sur lesquels s'appuyer, <br />
* l'envie marquée de notre échantillon cible qui s'est dirigée sur l'aspect création de groupe plus que sur la connaissance des états affectifs.<br />
<br />
Nous avons donc revu le projet en le divisant en 3 niveaux de difficuté, afin de réaliser un prototype utilisable, puis de l'améliorer en fonction des retours et du temps à disposition.<br />
* '''Niveau 1 - Création de groupe aléatoire''' : intérêts : facilitation de la création des groupes (demande reçue d'un formateur : "parce que Zoom nous a bien aidé pour cela à distance, je veux la même chose en présence!")<br />
* '''Niveau 2 : Communication du groupe à l’apprenant''' : intérêts : gamification, sentiment d’appartenance, coopération, cohésion<br />
* '''Niveau 3 : Communication de son sentiment de compétence''' : intérêts : plus facile que d'exprimer ses émotions, et plus facile à gérer par l'enseignant.e, par exemple les gens qui ont compris avec celles-ceux qui n'ont pas compris<br />
<br />
Nous avons réalisé complètement le niveau 1, ainsi que prototypé et testé le niveau 2 avec des cables avant de pouvoir gérer par Bluetooth un Bluefruit spécifique dans un réseau comprenant plusieurs Bluefruits. Les solutions avec code et prototypes sont décrites dans la section suivante.<br />
<br />
== Solution ==<br />
<br />
===1er prototype===<br />
La première solution envisagée comporte deux objets : <br />
* Un '''émetteur''' : facile d’utilisation et agréable à porter, nous penchons pour la solution d’un bracelet contenant un micro circuit type Lilypad, Arduino Gemma ou Tinyduino. L’apprenant disposerait de 4 boutons-pressoirs pour 4 émotions majeures à transmettre (intérêt, confusion, frustration, incompréhension), symbolisés par des logos ou émoticônes. Les messages sont transmis par Bluetooth.<br />
* Un '''récepteur''' : Une jauge, comprenant une bande Neopixels, connectée à un Arduino Uno. Les LED symboliseraient deux dimensions fournies : la couleur pour le type d'émotion et le nombre pour la quantité d'étudiant.e.s ayant transmis l'information. L'Arduino pourrait gérer l'information, en émettant un son lors du dépassement d'un seuil prédéfini sur une émotion par exemple.<br />
<br />
====maquette====<br />
L'Arduino Uno lance une séquence de randomisation de couleur, en affiche une, puis les participant.e.s font de même sur leur CPX. Si les couleurs affichées "matchent", le groupe est constitué et on peut ainsi passer à la constitution aléatoire du groupe suivant. <br />
[[Fichier:2e Maquette projet STIC III Djamileh et Simon .jpg|néant|vignette|1103x1103px|Maquette du projet]] <br />
<br />
====code=====<br />
<u>Version 1.0 du code CPX :</u> <syntaxhighlight lang="javascript"><br />
input.buttonA.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 200<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(40)<br />
color2 += Math.randomRange(1, 3)<br />
light.setPhotonPenHue(color2)<br />
}<br />
light.photonFlip()<br />
})<br />
input.buttonsAB.onEvent(ButtonEvent.Click, function () {<br />
control.reset()<br />
})<br />
input.buttonB.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 300<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
color2 += 3<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(50)<br />
}<br />
})<br />
let tonalité = 0<br />
let durée = 0<br />
let color2 = 0<br />
light.setBrightness(158)<br />
music.setVolume(167)<br />
forever(function () {<br />
<br />
})<br />
</syntaxhighlight><br />
<br />
===2e prototype===<br />
<br />
====maquette====<br />
<br />
<br />
====code====<br />
La solution présentée ici s'occupe du niveau 1, soit la création de groupe aléatoire à l'aide d'un CPX Bluefruit.<br />
Elle a été codée en CircuitPython. Nous n'avons pas utilisé de code existant, et la première partie de dictionnaire a été finalisée grâce à l'aimable contribution de notre collègue Jérôme.<br />
<br />
<code><br />
# Groupify !<br />
# Un projet de S!m & Dja<br />
<br />
# code python pur pour la répartition dans les groupes<br />
import random<br />
<br />
# Librairie pour gérer la bande neopixel du bluefruit<br />
from adafruit_circuitplayground import cp<br />
<br />
participants = int(input("Combien y a de participants : "))<br />
groupe = int(input("Combien tu veux de groupes : "))<br />
<br />
liste_part = list(range(1, participants + 1))<br />
liste_groupe = list(range(1, groupe + 1))<br />
<br />
clé_tableau = str(participants) + "_" + str(groupe)<br />
# ajouter combinaisons pas possible --> genre un tour de roue lumineuse/un son pourri<br />
grille_repartition = {"10_5": [2, 2, 2, 2, 2], "10_4": [2, 2, 3, 3], "10_3": [3, 3, 4]}<br />
<br />
taille_groupe = grille_repartition[clé_tableau]<br />
<br />
dict_repartition = {}<br />
for i in range(0, len(taille_groupe)):<br />
dict_repartition[liste_groupe[i]] = []<br />
for j in range(0, taille_groupe[i]):<br />
etu = liste_part[random.randint(0, len(liste_part) - 1)]<br />
dict_repartition[liste_groupe[i]].append(etu)<br />
liste_part.remove(etu)<br />
print(dict_repartition)<br />
<br />
# Définition des groupes avec couleurs<br />
groupeTotal = dict_repartition.values()<br />
groupeList = list(groupeTotal)<br />
print(groupeList)<br />
<br />
# créer un test pour si existe pas --> ignorer / boucle sur la base de len(groupeList)<br />
groupe1 = groupeList[0]<br />
groupe2 = groupeList[1]<br />
groupe3 = groupeList[2]<br />
groupe4 = groupeList[3]<br />
groupe5 = groupeList[4]<br />
<br />
# Gestion des LEDs<br />
cp.pixels.brightness = 0.05<br />
<br />
groupe1_color = (0, 255, 0)<br />
groupe2_color = (255, 0, 255)<br />
groupe3_color = (255, 255, 0)<br />
groupe4_color = (0, 255, 255)<br />
groupe5_color = (255, 0, 0)<br />
<br />
# recherche des participants (LED) dans les groupes<br />
if 1 in groupe1:<br />
pix1 = groupe1_color<br />
elif 1 in groupe2:<br />
pix1 = groupe2_color<br />
elif 1 in groupe3:<br />
pix1 = groupe3_color<br />
elif 1 in groupe4:<br />
pix1 = groupe4_color<br />
elif 1 in groupe5:<br />
pix1 = groupe5_color<br />
<br />
if 2 in groupe1:<br />
pix2 = groupe1_color<br />
elif 2 in groupe2:<br />
pix2 = groupe2_color<br />
elif 2 in groupe3:<br />
pix2 = groupe3_color<br />
elif 2 in groupe4:<br />
pix2 = groupe4_color<br />
elif 2 in groupe5:<br />
pix2 = groupe5_color<br />
<br />
if 3 in groupe1:<br />
pix3 = groupe1_color<br />
elif 3 in groupe2:<br />
pix3 = groupe2_color<br />
elif 3 in groupe3:<br />
pix3 = groupe3_color<br />
elif 3 in groupe4:<br />
pix3 = groupe4_color<br />
elif 3 in groupe5:<br />
pix3 = groupe5_color<br />
<br />
if 4 in groupe1:<br />
pix4 = groupe1_color<br />
elif 4 in groupe2:<br />
pix4 = groupe2_color<br />
elif 4 in groupe3:<br />
pix4 = groupe3_color<br />
elif 4 in groupe4:<br />
pix4 = groupe4_color<br />
elif 4 in groupe5:<br />
pix4 = groupe5_color<br />
<br />
if 5 in groupe1:<br />
pix5 = groupe1_color<br />
elif 5 in groupe2:<br />
pix5 = groupe2_color<br />
elif 5 in groupe3:<br />
pix5 = groupe3_color<br />
elif 5 in groupe4:<br />
pix5 = groupe4_color<br />
elif 5 in groupe5:<br />
pix5 = groupe5_color<br />
<br />
if 6 in groupe1:<br />
pix6 = groupe1_color<br />
elif 6 in groupe2:<br />
pix6 = groupe2_color<br />
elif 6 in groupe3:<br />
pix6 = groupe3_color<br />
elif 6 in groupe4:<br />
pix6 = groupe4_color<br />
elif 6 in groupe5:<br />
pix6 = groupe5_color<br />
<br />
if 7 in groupe1:<br />
pix7 = groupe1_color<br />
elif 7 in groupe2:<br />
pix7 = groupe2_color<br />
elif 7 in groupe3:<br />
pix7 = groupe3_color<br />
elif 7 in groupe4:<br />
pix7 = groupe4_color<br />
elif 7 in groupe5:<br />
pix7 = groupe5_color<br />
<br />
if 8 in groupe1:<br />
pix8 = groupe1_color<br />
elif 8 in groupe2:<br />
pix8 = groupe2_color<br />
elif 8 in groupe3:<br />
pix8 = groupe3_color<br />
elif 8 in groupe4:<br />
pix8 = groupe4_color<br />
elif 8 in groupe5:<br />
pix8 = groupe5_color<br />
<br />
if 9 in groupe1:<br />
pix9 = groupe1_color<br />
elif 9 in groupe2:<br />
pix9 = groupe2_color<br />
elif 9 in groupe3:<br />
pix9 = groupe3_color<br />
elif 9 in groupe4:<br />
pix9 = groupe4_color<br />
elif 9 in groupe5:<br />
pix9 = groupe5_color<br />
<br />
if 10 in groupe1:<br />
pix10 = groupe1_color<br />
elif 10 in groupe2:<br />
pix10 = groupe2_color<br />
elif 10 in groupe3:<br />
pix10 = groupe3_color<br />
elif 10 in groupe4:<br />
pix10 = groupe4_color<br />
elif 10 in groupe5:<br />
pix10 = groupe5_color<br />
<br />
# Gestion de l'allumage de la bande neopixel<br />
while True:<br />
cp.pixels[0] = pix1<br />
cp.pixels[1] = pix2<br />
cp.pixels[2] = pix3<br />
cp.pixels[3] = pix4<br />
cp.pixels[4] = pix5<br />
cp.pixels[5] = pix6<br />
cp.pixels[6] = pix7<br />
cp.pixels[7] = pix8<br />
cp.pixels[8] = pix9<br />
cp.pixels[9] = pix10<br />
</code><br />
<br />
== Test(s) de la solution ==<br />
Documentation dans votre page projet avec un [[:en:Cognitive walkthrough|cognitive walkthrough]] ou similaire pour le testing + avec un test utilisateurs (3 personnes minimum) c'est à dire création d’un scénario (tâches à réaliser), passation et analyse des résultats. <br />
<br />
== Discussion ==<br />
Cette partie inclus deux sous parties : <br />
* Discussion du design (et si c'était à refaire ou à améliorer),<br />
* Discussion des résultats de vos tests utilisateurs<br />
<br />
== Licence, fichiers et documentation ==<br />
[[Fichier:By-nc.png|150px]] Cette œuvre est mise à disposition selon les termes de la [http://creativecommons.org/licenses/by-nc/4.0/ Licence Creative Commons Attribution - Pas d’Utilisation Commerciale 4.0 International].<br />
<br />
* Fichiers :<br />
Insérer ici vos fichiers ou les liens vers vos fichiers<br />
<br />
* Documentation : <br />
Insérer ici une petite documentation pour l'utilisation de l'objet si nécessaire<br />
<br />
== Bibliographie ==<br />
<br />
* Blair, C., Calkins, S., & Kopp, L. (2010). Self-regulation as the interface of emotional and cognitive development: Implications for education and academic achievement.</div>Djamileh Aminianhttps://edutechwiki.unige.ch/fmediawiki/index.php?title=STIC:STIC_III_(2020)/Forces_rouge,_rose,_vert,_jaune_ou_bleu_!&diff=153784STIC:STIC III (2020)/Forces rouge, rose, vert, jaune ou bleu !2021-06-14T20:15:56Z<p>Djamileh Aminian : /* Solution */</p>
<hr />
<div>{{bloc important|Projet réalisé par [[Utilisateur:Djamileh_Aminian|Djamileh]] & [[Utilisateur:Simon_Jöhr|Simon]]}}<br />
<br />
== Introduction ==<br />
Durant la dernière année, le passage forcé à la téléformation, soit la formation synchrone à distance, a eu comme effet positif de pousser certains spécialistes de l’éducation à revisiter leurs scénarios pédagogiques pour revenir aux fondamentaux : comment aider les élèves à apprendre ce qu’ils sont sensés apprendre et comment les accompagner au mieux dans leur apprentissage ? Souvent, les difficultés relevées lors des bilans des derniers mois de distantiel ont fait émerger des problèmes qui existaient déjà en présence, mais qui restaient latents ou ignorés.<br />
<br />
En ce sens, l’apprentissage est fortement influencé par les émotions par lesquelles passent les élèves au cours de la formation, et en particulier pendant les moments synchrones. Pourtant, il est très complexe de détecter, mesurer, ou même faire exprimer les étudiant-es sur leur ressenti.<br />
<br />
En donnant leurs cours en visioconférence, nombreux formateurs et formatrices ont exprimé leur frustration de ne pas réussir à évaluer l’état émotionnel et autres indices non verbaux de leurs participant.e.s, retours essentiels pour adapter une explication ou ajuster le rythme. Et cet effet est loin d’être limité à la distance : il est également bien présent dans une salle de classe où il reste complexe de capter en temps réel les émotions d’un étudiant, processus complexe et dynamique.<br />
<br />
Notre projet prend sa racine dans ce constat. Deux questions ont alors émergé : <br />
* comment mesurer l'état émotionnel d'un-e apprenant-e, <br />
* et surtout, pour quel usage ?<br />
<br />
Dans ce contexte, nous avons pensé un dispositif de partage des ressentis de la classe à destination de l'équipe enseignante, et une utilisation de cette donnée comme retour au groupe.<br />
<br />
== Problème ==<br />
<br />
Le but de ce projet est de proposer une solution ludique à la constitution de groupes en classe, que cela soit en présence, à distance ou de manière comodale. En utilisant un Arduino Uno ou des CPX, la phase de constitution de groupes sera ainsi rapide, aléatoire et "fun" !<br />
<br />
Le ''Problem Statement'' peut s’exprimer ainsi : « Comment peut-on aider les formateurs et formatrices à identifier rapidement les difficultés dans l’apprentissage et, le cas échéant, à réagir ? »<br />
<br />
== Cahier des charges == <br />
=== Contexte et public ===<br />
Le public cible est composé de formateurs et formatrices d’adultes, en entreprise ou en institut. Il pourrait également être élargi aux enseignante.s du scolaire, mais la conscientisation et l’expression d’une émotion sont suffisamment complexes pour limiter notre premier dispositif à des adultes, disposant, à priori, d’une compréhension plus fine de leur état émotionnel. De plus, l’asymétrie dans la relation est supposée moins forte dans un groupe d’adultes en formation que dans une classe avec un enseignant et des enfants ou adolescents.<br />
<br />
===Objectifs===<br />
Le but du dispositif est de :<br />
* permettre la communication d'un niveau émotionnel perçu par l'étudiant.e à l'enseignant.e<br />
* faire émerger un état général de la classe et les différences dans l'acquisition du contenu<br />
* de manière plus pragmatique, de créer des groupes sur la base des éléments communiqués<br />
<br />
===Besoins et contraintes===<br />
L'idée du projet a beaucoup évolué entre la phase d'identification des besoins et les constatations sur les possiblités offertes par la technologie et l'expertise à disposition. Nous détaillons ci-dessous les besoins et contraintes qui nous ont mené à la solution présentée plus bas.<br />
<br />
Partant au début d’une idée de jauge émotionnelle dynamique, donnant en tout temps l’état émotionnel d’un groupe de participants, nous avons rapidement détecté, en phase d'idéation avec plusieurs spécialistes en éducation, un aspect extrêmement anxiogène pour le formateur dont le groupe enverrait des signaux d’ennui ou de frustration, durant une explication. <br />
<br />
Afin de juguler cet effet, tout en conservant la possibilité de communiquer un message sur l’état, nous avons adapté le dispositif pour permettre aux étudiants de transmettre leur état à des moments spécifiques de la formation, intégrés dans le scénario pédagogique. L'émotion étant un élément sensible à conscientiser, exprimer et partager au sein d'un groupe, nous avons estimé plus judicieux de faire exprimer son niveau d'aisance face à un contenu qui vient d'être transmis. Ainsi, un-e enseignant-e scénarisera des moments d'auto-diagnostique des étudiant-es sur leur perception de compétence sur la thématique. Cette information peut être utilisée pour réaliser des groupes de travail : (1) les personnes qui ont compris peuvent être orientées sur un contenu plus avancé, en échange pendant que l'enseignant organiser une séance de question-réponse avec les personnes en difficulté ou (2) des groupes peuvent être créés pour intégrer des étudiant-es qui ont compris avec des étudiant-es qui ont besoin d'aide.<br />
<br />
Le dispositif est donc pensé comme un outil de sondage à certains moments du cours, pour évaluer les besoins du groupe, dans son ensemble. Il est souvent difficile de récolter des informations sincères lors d’évaluations à chaud, les étudiants réticents à communiquer publiquement leurs difficultés ou désintérêts pour le contenu. Par la technique de transmission, les étudiants pourraient communiquer leur émotion de manière anonyme, favorisant l'authenticité.<br />
<br />
De manière intéressante au fur et à mesure de l'avance du projet, il est ressorti des discussions avec un échantillon du public cible que l'aspect de notre projet qui les intéressaient étaient moins la communication des émotions, mais la création facilitée des groupes. En effet, les formateurs et formatrices ayant travaillé à distance durant la dernière année se sont habitués à disposer d'une fonction de création de groupe aléatoire, selon un nombre total de participant et un nombre de groupe visé. Cette fonction serait très utile également en présence, en utilisant une carte Arduino ou un CPX pour calculer une répartition des élèves par groupe, avec en entrée le nombre d'élèves et les sous-groupes. Une fois les groupes constitué, l'étape suivante est de communiquer ces groupes à l'ensemble de la classe au travers de Lilypad ou autres technologies portables qui s'allument selon la couleur de leur groupe.<br />
<br />
===Apports===<br />
* Cohésion et sentiment d'appartenance au groupe comme soutien à l'apprentissage<br />
* Expression d'un état émotionnel épistémique comme bénéfique à l'apprentissage<br />
<br />
===Présentation du projet===<br />
Suite aux premières itérations dans l'empathie et la définition du projet, nous avons identifié plusieurs points clés qui ont réorienté notre projet :<br />
* la création d'un réseau de cartes bluetooth contrôlées par Arduino s'est révélé trop ambitieux, suite au manque de projets existants ou d'expertise sur lesquels s'appuyer, <br />
* l'envie marquée de notre échantillon cible qui s'est dirigée sur l'aspect création de groupe plus que sur la connaissance des états affectifs.<br />
<br />
Nous avons donc revu le projet en le divisant en 3 niveaux de difficuté, afin de réaliser un prototype utilisable, puis de l'améliorer en fonction des retours et du temps à disposition.<br />
* '''Niveau 1 - Création de groupe aléatoire''' : intérêts : facilitation de la création des groupes (demande reçue d'un formateur : "parce que Zoom nous a bien aidé pour cela à distance, je veux la même chose en présence!")<br />
* '''Niveau 2 : Communication du groupe à l’apprenant''' : intérêts : gamification, sentiment d’appartenance, coopération, cohésion<br />
* '''Niveau 3 : Communication de son sentiment de compétence''' : intérêts : plus facile que d'exprimer ses émotions, et plus facile à gérer par l'enseignant.e, par exemple les gens qui ont compris avec celles-ceux qui n'ont pas compris<br />
<br />
Nous avons réalisé complètement le niveau 1, ainsi que prototypé et testé le niveau 2 avec des cables avant de pouvoir gérer par Bluetooth un Bluefruit spécifique dans un réseau comprenant plusieurs Bluefruits. Les solutions avec code et prototypes sont décrites dans la section suivante.<br />
<br />
== Solution ==<br />
<br />
<u>1er prototype :</u> <br />
La première solution envisagée comporte deux objets : <br />
* Un '''émetteur''' : facile d’utilisation et agréable à porter, nous penchons pour la solution d’un bracelet contenant un micro circuit type Lilypad, Arduino Gemma ou Tinyduino. L’apprenant disposerait de 4 boutons-pressoirs pour 4 émotions majeures à transmettre (intérêt, confusion, frustration, incompréhension), symbolisés par des logos ou émoticônes. Les messages sont transmis par Bluetooth.<br />
* Un '''récepteur''' : Une jauge, comprenant une bande Neopixels, connectée à un Arduino Uno. Les LED symboliseraient deux dimensions fournies : la couleur pour le type d'émotion et le nombre pour la quantité d'étudiant.e.s ayant transmis l'information. L'Arduino pourrait gérer l'information, en émettant un son lors du dépassement d'un seuil prédéfini sur une émotion par exemple.<br />
<br />
L'Arduino Uno lance une séquence de randomisation de couleur, en affiche une, puis les participant.e.s font de même sur leur CPX. Si les couleurs affichées "matchent", le groupe est constitué et on peut ainsi passer à la constitution aléatoire du groupe suivant. <br />
[[Fichier:2e Maquette projet STIC III Djamileh et Simon .jpg|néant|vignette|1103x1103px|Maquette du projet]] <br />
<br />
<u>Version 1.0 du code CPX :</u> <syntaxhighlight lang="javascript"><br />
input.buttonA.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 200<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(40)<br />
color2 += Math.randomRange(1, 3)<br />
light.setPhotonPenHue(color2)<br />
}<br />
light.photonFlip()<br />
})<br />
input.buttonsAB.onEvent(ButtonEvent.Click, function () {<br />
control.reset()<br />
})<br />
input.buttonB.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 300<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
color2 += 3<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(50)<br />
}<br />
})<br />
let tonalité = 0<br />
let durée = 0<br />
let color2 = 0<br />
light.setBrightness(158)<br />
music.setVolume(167)<br />
forever(function () {<br />
<br />
})<br />
</syntaxhighlight><br />
<br />
== Test(s) de la solution ==<br />
Documentation dans votre page projet avec un [[:en:Cognitive walkthrough|cognitive walkthrough]] ou similaire pour le testing + avec un test utilisateurs (3 personnes minimum) c'est à dire création d’un scénario (tâches à réaliser), passation et analyse des résultats. <br />
<br />
== Discussion ==<br />
Cette partie inclus deux sous parties : <br />
* Discussion du design (et si c'était à refaire ou à améliorer),<br />
* Discussion des résultats de vos tests utilisateurs<br />
<br />
== Licence, fichiers et documentation ==<br />
[[Fichier:By-nc.png|150px]] Cette œuvre est mise à disposition selon les termes de la [http://creativecommons.org/licenses/by-nc/4.0/ Licence Creative Commons Attribution - Pas d’Utilisation Commerciale 4.0 International].<br />
<br />
* Fichiers :<br />
Insérer ici vos fichiers ou les liens vers vos fichiers<br />
<br />
* Documentation : <br />
Insérer ici une petite documentation pour l'utilisation de l'objet si nécessaire<br />
<br />
== Bibliographie ==<br />
<br />
* Blair, C., Calkins, S., & Kopp, L. (2010). Self-regulation as the interface of emotional and cognitive development: Implications for education and academic achievement.</div>Djamileh Aminianhttps://edutechwiki.unige.ch/fmediawiki/index.php?title=STIC:STIC_III_(2020)/Forces_rouge,_rose,_vert,_jaune_ou_bleu_!&diff=153783STIC:STIC III (2020)/Forces rouge, rose, vert, jaune ou bleu !2021-06-14T20:15:28Z<p>Djamileh Aminian : /* Présentation du projet */</p>
<hr />
<div>{{bloc important|Projet réalisé par [[Utilisateur:Djamileh_Aminian|Djamileh]] & [[Utilisateur:Simon_Jöhr|Simon]]}}<br />
<br />
== Introduction ==<br />
Durant la dernière année, le passage forcé à la téléformation, soit la formation synchrone à distance, a eu comme effet positif de pousser certains spécialistes de l’éducation à revisiter leurs scénarios pédagogiques pour revenir aux fondamentaux : comment aider les élèves à apprendre ce qu’ils sont sensés apprendre et comment les accompagner au mieux dans leur apprentissage ? Souvent, les difficultés relevées lors des bilans des derniers mois de distantiel ont fait émerger des problèmes qui existaient déjà en présence, mais qui restaient latents ou ignorés.<br />
<br />
En ce sens, l’apprentissage est fortement influencé par les émotions par lesquelles passent les élèves au cours de la formation, et en particulier pendant les moments synchrones. Pourtant, il est très complexe de détecter, mesurer, ou même faire exprimer les étudiant-es sur leur ressenti.<br />
<br />
En donnant leurs cours en visioconférence, nombreux formateurs et formatrices ont exprimé leur frustration de ne pas réussir à évaluer l’état émotionnel et autres indices non verbaux de leurs participant.e.s, retours essentiels pour adapter une explication ou ajuster le rythme. Et cet effet est loin d’être limité à la distance : il est également bien présent dans une salle de classe où il reste complexe de capter en temps réel les émotions d’un étudiant, processus complexe et dynamique.<br />
<br />
Notre projet prend sa racine dans ce constat. Deux questions ont alors émergé : <br />
* comment mesurer l'état émotionnel d'un-e apprenant-e, <br />
* et surtout, pour quel usage ?<br />
<br />
Dans ce contexte, nous avons pensé un dispositif de partage des ressentis de la classe à destination de l'équipe enseignante, et une utilisation de cette donnée comme retour au groupe.<br />
<br />
== Problème ==<br />
<br />
Le but de ce projet est de proposer une solution ludique à la constitution de groupes en classe, que cela soit en présence, à distance ou de manière comodale. En utilisant un Arduino Uno ou des CPX, la phase de constitution de groupes sera ainsi rapide, aléatoire et "fun" !<br />
<br />
Le ''Problem Statement'' peut s’exprimer ainsi : « Comment peut-on aider les formateurs et formatrices à identifier rapidement les difficultés dans l’apprentissage et, le cas échéant, à réagir ? »<br />
<br />
== Cahier des charges == <br />
=== Contexte et public ===<br />
Le public cible est composé de formateurs et formatrices d’adultes, en entreprise ou en institut. Il pourrait également être élargi aux enseignante.s du scolaire, mais la conscientisation et l’expression d’une émotion sont suffisamment complexes pour limiter notre premier dispositif à des adultes, disposant, à priori, d’une compréhension plus fine de leur état émotionnel. De plus, l’asymétrie dans la relation est supposée moins forte dans un groupe d’adultes en formation que dans une classe avec un enseignant et des enfants ou adolescents.<br />
<br />
===Objectifs===<br />
Le but du dispositif est de :<br />
* permettre la communication d'un niveau émotionnel perçu par l'étudiant.e à l'enseignant.e<br />
* faire émerger un état général de la classe et les différences dans l'acquisition du contenu<br />
* de manière plus pragmatique, de créer des groupes sur la base des éléments communiqués<br />
<br />
===Besoins et contraintes===<br />
L'idée du projet a beaucoup évolué entre la phase d'identification des besoins et les constatations sur les possiblités offertes par la technologie et l'expertise à disposition. Nous détaillons ci-dessous les besoins et contraintes qui nous ont mené à la solution présentée plus bas.<br />
<br />
Partant au début d’une idée de jauge émotionnelle dynamique, donnant en tout temps l’état émotionnel d’un groupe de participants, nous avons rapidement détecté, en phase d'idéation avec plusieurs spécialistes en éducation, un aspect extrêmement anxiogène pour le formateur dont le groupe enverrait des signaux d’ennui ou de frustration, durant une explication. <br />
<br />
Afin de juguler cet effet, tout en conservant la possibilité de communiquer un message sur l’état, nous avons adapté le dispositif pour permettre aux étudiants de transmettre leur état à des moments spécifiques de la formation, intégrés dans le scénario pédagogique. L'émotion étant un élément sensible à conscientiser, exprimer et partager au sein d'un groupe, nous avons estimé plus judicieux de faire exprimer son niveau d'aisance face à un contenu qui vient d'être transmis. Ainsi, un-e enseignant-e scénarisera des moments d'auto-diagnostique des étudiant-es sur leur perception de compétence sur la thématique. Cette information peut être utilisée pour réaliser des groupes de travail : (1) les personnes qui ont compris peuvent être orientées sur un contenu plus avancé, en échange pendant que l'enseignant organiser une séance de question-réponse avec les personnes en difficulté ou (2) des groupes peuvent être créés pour intégrer des étudiant-es qui ont compris avec des étudiant-es qui ont besoin d'aide.<br />
<br />
Le dispositif est donc pensé comme un outil de sondage à certains moments du cours, pour évaluer les besoins du groupe, dans son ensemble. Il est souvent difficile de récolter des informations sincères lors d’évaluations à chaud, les étudiants réticents à communiquer publiquement leurs difficultés ou désintérêts pour le contenu. Par la technique de transmission, les étudiants pourraient communiquer leur émotion de manière anonyme, favorisant l'authenticité.<br />
<br />
De manière intéressante au fur et à mesure de l'avance du projet, il est ressorti des discussions avec un échantillon du public cible que l'aspect de notre projet qui les intéressaient étaient moins la communication des émotions, mais la création facilitée des groupes. En effet, les formateurs et formatrices ayant travaillé à distance durant la dernière année se sont habitués à disposer d'une fonction de création de groupe aléatoire, selon un nombre total de participant et un nombre de groupe visé. Cette fonction serait très utile également en présence, en utilisant une carte Arduino ou un CPX pour calculer une répartition des élèves par groupe, avec en entrée le nombre d'élèves et les sous-groupes. Une fois les groupes constitué, l'étape suivante est de communiquer ces groupes à l'ensemble de la classe au travers de Lilypad ou autres technologies portables qui s'allument selon la couleur de leur groupe.<br />
<br />
===Apports===<br />
* Cohésion et sentiment d'appartenance au groupe comme soutien à l'apprentissage<br />
* Expression d'un état émotionnel épistémique comme bénéfique à l'apprentissage<br />
<br />
===Présentation du projet===<br />
Suite aux premières itérations dans l'empathie et la définition du projet, nous avons identifié plusieurs points clés qui ont réorienté notre projet :<br />
* la création d'un réseau de cartes bluetooth contrôlées par Arduino s'est révélé trop ambitieux, suite au manque de projets existants ou d'expertise sur lesquels s'appuyer, <br />
* l'envie marquée de notre échantillon cible qui s'est dirigée sur l'aspect création de groupe plus que sur la connaissance des états affectifs.<br />
<br />
Nous avons donc revu le projet en le divisant en 3 niveaux de difficuté, afin de réaliser un prototype utilisable, puis de l'améliorer en fonction des retours et du temps à disposition.<br />
* '''Niveau 1 - Création de groupe aléatoire''' : intérêts : facilitation de la création des groupes (demande reçue d'un formateur : "parce que Zoom nous a bien aidé pour cela à distance, je veux la même chose en présence!")<br />
* '''Niveau 2 : Communication du groupe à l’apprenant''' : intérêts : gamification, sentiment d’appartenance, coopération, cohésion<br />
* '''Niveau 3 : Communication de son sentiment de compétence''' : intérêts : plus facile que d'exprimer ses émotions, et plus facile à gérer par l'enseignant.e, par exemple les gens qui ont compris avec celles-ceux qui n'ont pas compris<br />
<br />
Nous avons réalisé complètement le niveau 1, ainsi que prototypé et testé le niveau 2 avec des cables avant de pouvoir gérer par Bluetooth un Bluefruit spécifique dans un réseau comprenant plusieurs Bluefruits. Les solutions avec code et prototypes sont décrites dans la section suivante.<br />
<br />
== Solution ==<br />
<br />
<u>1er prototype :</u> <br />
La solution envisagée à ce stade comporte deux objets : <br />
* Un '''émetteur''' : facile d’utilisation et agréable à porter, nous penchons pour la solution d’un bracelet contenant un micro circuit type Lilypad, Arduino Gemma ou Tinyduino. L’apprenant disposerait de 4 boutons-pressoirs pour 4 émotions majeures à transmettre (intérêt, confusion, frustration, incompréhension), symbolisés par des logos ou émoticônes. Les messages sont transmis par Bluetooth.<br />
* Un '''récepteur''' : Une jauge, comprenant une bande Neopixels, connectée à un Arduino Uno. Les LED symboliseraient deux dimensions fournies : la couleur pour le type d'émotion et le nombre pour la quantité d'étudiant.e.s ayant transmis l'information. L'Arduino pourrait gérer l'information, en émettant un son lors du dépassement d'un seuil prédéfini sur une émotion par exemple.<br />
<br />
L'Arduino Uno lance une séquence de randomisation de couleur, en affiche une, puis les participant.e.s font de même sur leur CPX. Si les couleurs affichées "matchent", le groupe est constitué et on peut ainsi passer à la constitution aléatoire du groupe suivant. <br />
[[Fichier:2e Maquette projet STIC III Djamileh et Simon .jpg|néant|vignette|1103x1103px|Maquette du projet]] <br />
<br />
<u>Version 1.0 du code CPX :</u> <syntaxhighlight lang="javascript"><br />
input.buttonA.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 200<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(40)<br />
color2 += Math.randomRange(1, 3)<br />
light.setPhotonPenHue(color2)<br />
}<br />
light.photonFlip()<br />
})<br />
input.buttonsAB.onEvent(ButtonEvent.Click, function () {<br />
control.reset()<br />
})<br />
input.buttonB.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 300<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
color2 += 3<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(50)<br />
}<br />
})<br />
let tonalité = 0<br />
let durée = 0<br />
let color2 = 0<br />
light.setBrightness(158)<br />
music.setVolume(167)<br />
forever(function () {<br />
<br />
})<br />
</syntaxhighlight><br />
<br />
== Test(s) de la solution ==<br />
Documentation dans votre page projet avec un [[:en:Cognitive walkthrough|cognitive walkthrough]] ou similaire pour le testing + avec un test utilisateurs (3 personnes minimum) c'est à dire création d’un scénario (tâches à réaliser), passation et analyse des résultats. <br />
<br />
== Discussion ==<br />
Cette partie inclus deux sous parties : <br />
* Discussion du design (et si c'était à refaire ou à améliorer),<br />
* Discussion des résultats de vos tests utilisateurs<br />
<br />
== Licence, fichiers et documentation ==<br />
[[Fichier:By-nc.png|150px]] Cette œuvre est mise à disposition selon les termes de la [http://creativecommons.org/licenses/by-nc/4.0/ Licence Creative Commons Attribution - Pas d’Utilisation Commerciale 4.0 International].<br />
<br />
* Fichiers :<br />
Insérer ici vos fichiers ou les liens vers vos fichiers<br />
<br />
* Documentation : <br />
Insérer ici une petite documentation pour l'utilisation de l'objet si nécessaire<br />
<br />
== Bibliographie ==<br />
<br />
* Blair, C., Calkins, S., & Kopp, L. (2010). Self-regulation as the interface of emotional and cognitive development: Implications for education and academic achievement.</div>Djamileh Aminianhttps://edutechwiki.unige.ch/fmediawiki/index.php?title=STIC:STIC_III_(2020)/Forces_rouge,_rose,_vert,_jaune_ou_bleu_!&diff=153782STIC:STIC III (2020)/Forces rouge, rose, vert, jaune ou bleu !2021-06-14T20:09:18Z<p>Djamileh Aminian : /* Cahier des charges */</p>
<hr />
<div>{{bloc important|Projet réalisé par [[Utilisateur:Djamileh_Aminian|Djamileh]] & [[Utilisateur:Simon_Jöhr|Simon]]}}<br />
<br />
== Introduction ==<br />
Durant la dernière année, le passage forcé à la téléformation, soit la formation synchrone à distance, a eu comme effet positif de pousser certains spécialistes de l’éducation à revisiter leurs scénarios pédagogiques pour revenir aux fondamentaux : comment aider les élèves à apprendre ce qu’ils sont sensés apprendre et comment les accompagner au mieux dans leur apprentissage ? Souvent, les difficultés relevées lors des bilans des derniers mois de distantiel ont fait émerger des problèmes qui existaient déjà en présence, mais qui restaient latents ou ignorés.<br />
<br />
En ce sens, l’apprentissage est fortement influencé par les émotions par lesquelles passent les élèves au cours de la formation, et en particulier pendant les moments synchrones. Pourtant, il est très complexe de détecter, mesurer, ou même faire exprimer les étudiant-es sur leur ressenti.<br />
<br />
En donnant leurs cours en visioconférence, nombreux formateurs et formatrices ont exprimé leur frustration de ne pas réussir à évaluer l’état émotionnel et autres indices non verbaux de leurs participant.e.s, retours essentiels pour adapter une explication ou ajuster le rythme. Et cet effet est loin d’être limité à la distance : il est également bien présent dans une salle de classe où il reste complexe de capter en temps réel les émotions d’un étudiant, processus complexe et dynamique.<br />
<br />
Notre projet prend sa racine dans ce constat. Deux questions ont alors émergé : <br />
* comment mesurer l'état émotionnel d'un-e apprenant-e, <br />
* et surtout, pour quel usage ?<br />
<br />
Dans ce contexte, nous avons pensé un dispositif de partage des ressentis de la classe à destination de l'équipe enseignante, et une utilisation de cette donnée comme retour au groupe.<br />
<br />
== Problème ==<br />
<br />
Le but de ce projet est de proposer une solution ludique à la constitution de groupes en classe, que cela soit en présence, à distance ou de manière comodale. En utilisant un Arduino Uno ou des CPX, la phase de constitution de groupes sera ainsi rapide, aléatoire et "fun" !<br />
<br />
Le ''Problem Statement'' peut s’exprimer ainsi : « Comment peut-on aider les formateurs et formatrices à identifier rapidement les difficultés dans l’apprentissage et, le cas échéant, à réagir ? »<br />
<br />
== Cahier des charges == <br />
=== Contexte et public ===<br />
Le public cible est composé de formateurs et formatrices d’adultes, en entreprise ou en institut. Il pourrait également être élargi aux enseignante.s du scolaire, mais la conscientisation et l’expression d’une émotion sont suffisamment complexes pour limiter notre premier dispositif à des adultes, disposant, à priori, d’une compréhension plus fine de leur état émotionnel. De plus, l’asymétrie dans la relation est supposée moins forte dans un groupe d’adultes en formation que dans une classe avec un enseignant et des enfants ou adolescents.<br />
<br />
===Objectifs===<br />
Le but du dispositif est de :<br />
* permettre la communication d'un niveau émotionnel perçu par l'étudiant.e à l'enseignant.e<br />
* faire émerger un état général de la classe et les différences dans l'acquisition du contenu<br />
* de manière plus pragmatique, de créer des groupes sur la base des éléments communiqués<br />
<br />
===Besoins et contraintes===<br />
L'idée du projet a beaucoup évolué entre la phase d'identification des besoins et les constatations sur les possiblités offertes par la technologie et l'expertise à disposition. Nous détaillons ci-dessous les besoins et contraintes qui nous ont mené à la solution présentée plus bas.<br />
<br />
Partant au début d’une idée de jauge émotionnelle dynamique, donnant en tout temps l’état émotionnel d’un groupe de participants, nous avons rapidement détecté, en phase d'idéation avec plusieurs spécialistes en éducation, un aspect extrêmement anxiogène pour le formateur dont le groupe enverrait des signaux d’ennui ou de frustration, durant une explication. <br />
<br />
Afin de juguler cet effet, tout en conservant la possibilité de communiquer un message sur l’état, nous avons adapté le dispositif pour permettre aux étudiants de transmettre leur état à des moments spécifiques de la formation, intégrés dans le scénario pédagogique. L'émotion étant un élément sensible à conscientiser, exprimer et partager au sein d'un groupe, nous avons estimé plus judicieux de faire exprimer son niveau d'aisance face à un contenu qui vient d'être transmis. Ainsi, un-e enseignant-e scénarisera des moments d'auto-diagnostique des étudiant-es sur leur perception de compétence sur la thématique. Cette information peut être utilisée pour réaliser des groupes de travail : (1) les personnes qui ont compris peuvent être orientées sur un contenu plus avancé, en échange pendant que l'enseignant organiser une séance de question-réponse avec les personnes en difficulté ou (2) des groupes peuvent être créés pour intégrer des étudiant-es qui ont compris avec des étudiant-es qui ont besoin d'aide.<br />
<br />
Le dispositif est donc pensé comme un outil de sondage à certains moments du cours, pour évaluer les besoins du groupe, dans son ensemble. Il est souvent difficile de récolter des informations sincères lors d’évaluations à chaud, les étudiants réticents à communiquer publiquement leurs difficultés ou désintérêts pour le contenu. Par la technique de transmission, les étudiants pourraient communiquer leur émotion de manière anonyme, favorisant l'authenticité.<br />
<br />
De manière intéressante au fur et à mesure de l'avance du projet, il est ressorti des discussions avec un échantillon du public cible que l'aspect de notre projet qui les intéressaient étaient moins la communication des émotions, mais la création facilitée des groupes. En effet, les formateurs et formatrices ayant travaillé à distance durant la dernière année se sont habitués à disposer d'une fonction de création de groupe aléatoire, selon un nombre total de participant et un nombre de groupe visé. Cette fonction serait très utile également en présence, en utilisant une carte Arduino ou un CPX pour calculer une répartition des élèves par groupe, avec en entrée le nombre d'élèves et les sous-groupes. Une fois les groupes constitué, l'étape suivante est de communiquer ces groupes à l'ensemble de la classe au travers de Lilypad ou autres technologies portables qui s'allument selon la couleur de leur groupe.<br />
<br />
===Apports===<br />
* Cohésion et sentiment d'appartenance au groupe comme soutien à l'apprentissage<br />
* Expression d'un état émotionnel épistémique comme bénéfique à l'apprentissage<br />
<br />
===Présentation du projet===<br />
(qu'est ce que vous voulez construire ?)<br />
<br />
* Tout autre item pertinent pour votre projet<br />
<br />
== Solution ==<br />
<br />
<u>1er prototype :</u> <br />
La solution envisagée à ce stade comporte deux objets : <br />
* Un '''émetteur''' : facile d’utilisation et agréable à porter, nous penchons pour la solution d’un bracelet contenant un micro circuit type Lilypad, Arduino Gemma ou Tinyduino. L’apprenant disposerait de 4 boutons-pressoirs pour 4 émotions majeures à transmettre (intérêt, confusion, frustration, incompréhension), symbolisés par des logos ou émoticônes. Les messages sont transmis par Bluetooth.<br />
* Un '''récepteur''' : Une jauge, comprenant une bande Neopixels, connectée à un Arduino Uno. Les LED symboliseraient deux dimensions fournies : la couleur pour le type d'émotion et le nombre pour la quantité d'étudiant.e.s ayant transmis l'information. L'Arduino pourrait gérer l'information, en émettant un son lors du dépassement d'un seuil prédéfini sur une émotion par exemple.<br />
<br />
L'Arduino Uno lance une séquence de randomisation de couleur, en affiche une, puis les participant.e.s font de même sur leur CPX. Si les couleurs affichées "matchent", le groupe est constitué et on peut ainsi passer à la constitution aléatoire du groupe suivant. <br />
[[Fichier:2e Maquette projet STIC III Djamileh et Simon .jpg|néant|vignette|1103x1103px|Maquette du projet]] <br />
<br />
<u>Version 1.0 du code CPX :</u> <syntaxhighlight lang="javascript"><br />
input.buttonA.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 200<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(40)<br />
color2 += Math.randomRange(1, 3)<br />
light.setPhotonPenHue(color2)<br />
}<br />
light.photonFlip()<br />
})<br />
input.buttonsAB.onEvent(ButtonEvent.Click, function () {<br />
control.reset()<br />
})<br />
input.buttonB.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 300<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
color2 += 3<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(50)<br />
}<br />
})<br />
let tonalité = 0<br />
let durée = 0<br />
let color2 = 0<br />
light.setBrightness(158)<br />
music.setVolume(167)<br />
forever(function () {<br />
<br />
})<br />
</syntaxhighlight><br />
<br />
== Test(s) de la solution ==<br />
Documentation dans votre page projet avec un [[:en:Cognitive walkthrough|cognitive walkthrough]] ou similaire pour le testing + avec un test utilisateurs (3 personnes minimum) c'est à dire création d’un scénario (tâches à réaliser), passation et analyse des résultats. <br />
<br />
== Discussion ==<br />
Cette partie inclus deux sous parties : <br />
* Discussion du design (et si c'était à refaire ou à améliorer),<br />
* Discussion des résultats de vos tests utilisateurs<br />
<br />
== Licence, fichiers et documentation ==<br />
[[Fichier:By-nc.png|150px]] Cette œuvre est mise à disposition selon les termes de la [http://creativecommons.org/licenses/by-nc/4.0/ Licence Creative Commons Attribution - Pas d’Utilisation Commerciale 4.0 International].<br />
<br />
* Fichiers :<br />
Insérer ici vos fichiers ou les liens vers vos fichiers<br />
<br />
* Documentation : <br />
Insérer ici une petite documentation pour l'utilisation de l'objet si nécessaire<br />
<br />
== Bibliographie ==<br />
<br />
* Blair, C., Calkins, S., & Kopp, L. (2010). Self-regulation as the interface of emotional and cognitive development: Implications for education and academic achievement.</div>Djamileh Aminianhttps://edutechwiki.unige.ch/fmediawiki/index.php?title=STIC:STIC_III_(2020)/Forces_rouge,_rose,_vert,_jaune_ou_bleu_!&diff=153781STIC:STIC III (2020)/Forces rouge, rose, vert, jaune ou bleu !2021-06-14T19:55:17Z<p>Djamileh Aminian : /* Introduction */</p>
<hr />
<div>{{bloc important|Projet réalisé par [[Utilisateur:Djamileh_Aminian|Djamileh]] & [[Utilisateur:Simon_Jöhr|Simon]]}}<br />
<br />
== Introduction ==<br />
Durant la dernière année, le passage forcé à la téléformation, soit la formation synchrone à distance, a eu comme effet positif de pousser certains spécialistes de l’éducation à revisiter leurs scénarios pédagogiques pour revenir aux fondamentaux : comment aider les élèves à apprendre ce qu’ils sont sensés apprendre et comment les accompagner au mieux dans leur apprentissage ? Souvent, les difficultés relevées lors des bilans des derniers mois de distantiel ont fait émerger des problèmes qui existaient déjà en présence, mais qui restaient latents ou ignorés.<br />
<br />
En ce sens, l’apprentissage est fortement influencé par les émotions par lesquelles passent les élèves au cours de la formation, et en particulier pendant les moments synchrones. Pourtant, il est très complexe de détecter, mesurer, ou même faire exprimer les étudiant-es sur leur ressenti.<br />
<br />
En donnant leurs cours en visioconférence, nombreux formateurs et formatrices ont exprimé leur frustration de ne pas réussir à évaluer l’état émotionnel et autres indices non verbaux de leurs participant.e.s, retours essentiels pour adapter une explication ou ajuster le rythme. Et cet effet est loin d’être limité à la distance : il est également bien présent dans une salle de classe où il reste complexe de capter en temps réel les émotions d’un étudiant, processus complexe et dynamique.<br />
<br />
Notre projet prend sa racine dans ce constat. Deux questions ont alors émergé : <br />
* comment mesurer l'état émotionnel d'un-e apprenant-e, <br />
* et surtout, pour quel usage ?<br />
<br />
Dans ce contexte, nous avons pensé un dispositif de partage des ressentis de la classe à destination de l'équipe enseignante, et une utilisation de cette donnée comme retour au groupe.<br />
<br />
== Problème ==<br />
<br />
Le but de ce projet est de proposer une solution ludique à la constitution de groupes en classe, que cela soit en présence, à distance ou de manière comodale. En utilisant un Arduino Uno ou des CPX, la phase de constitution de groupes sera ainsi rapide, aléatoire et "fun" !<br />
<br />
Le ''Problem Statement'' peut s’exprimer ainsi : « Comment peut-on aider les formateurs et formatrices à identifier rapidement les difficultés dans l’apprentissage et, le cas échéant, à réagir ? »<br />
<br />
== Cahier des charges == <br />
=== Contexte et public ===<br />
Le public cible est composé de formateurs et formatrices d’adultes, en entreprise ou en institut. Il pourrait également être élargi aux enseignante.s du scolaire, mais la conscientisation et l’expression d’une émotion sont suffisamment complexes pour limiter notre premier dispositif à des adultes, disposant, à priori, d’une compréhension plus fine de leur état émotionnel. De plus, l’asymétrie dans la relation est supposée moins forte dans un groupe d’adultes en formation que dans une classe avec un enseignant et des enfants ou adolescents.<br />
<br />
===Objectifs===<br />
<br />
<br />
<br />
===Besoins et contraintes===<br />
de votre projet (matérielles, humaines, techniques ...)<br />
<br />
Partant au début d’une idée de jauge émotionnelle dynamique, donnant en tout temps l’état émotionnel d’un groupe de participants, nous avons rapidement détecté un aspect extrêmement anxiogène pour le formateur dont le groupe enverrait des signaux d’ennui ou de frustration, durant une explication. <br />
<br />
Afin de juguler cet effet, tout en conservant la possibilité de communiquer un message sur l’état, nous avons adapté le dispositif pour permettre aux étudiants de transmettre leur émotion à des moments spécifiques de la formation, intégrés dans le scénario pédagogique. <br />
<br />
Le dispositif est donc pensé comme un outil de sondage à certains moments du cours, pour évaluer les besoins du groupe, dans son ensemble. Il est souvent difficile de récolter des informations sincères lors d’évaluations à chaud, les étudiants réticents à communiquer publiquement leurs difficultés ou désintérêts pour le contenu. Par la technique de transmission, les étudiants pourraient communiquer leur émotion de manière anonyme, favorisant l'authenticité.<br />
<br />
Cette hypothèse est à tester lors des phases de test avec utilisateurs.<br />
<br />
<br />
<br />
Les itérations réalisées entre l'idéation et le design ont fait ressortir les points clés suivants :<br />
<br />
# L'émotion étant un élément sensible à conscientiser, exprimer et partager au sein d'un groupe, nous avons estimé plus judicieux de faire exprimer son niveau d'aisance face à un contenu qui vient d'être transmis. Ainsi, un-e enseignant-e scénarisera des moments d'auto-diagnostique des étudiant-es sur leur perception de compétence sur la thématique. Cette information peut être utilisée pour réaliser des groupes de travail : (1) les personnes qui ont compris peuvent être orientées sur un contenu plus avancé, en échange pendant que l'enseignant organiser une séance de question-réponse avec les personnes en difficulté ou (2) des groupes peuvent être créés pour intégrer des étudiant-es qui ont compris avec des étudiant-es qui ont besoin d'aide<br />
<br />
# Les formateurs et formatrices ayant travaillé à distance durant la dernière année se sont habitués à disposer d'une fonction de création de groupe aléatoire, selon un nombre total de participant et un nombre de groupe visé. Cette fonction serait très utile également en présence, en utilisant une carte Arduino ou un CPX pour calculer une répartition des élèves par groupe, avec en entrée le nombre d'élèves et les sous-groupes. L'étape suivante est de communiquer ces groupes à l'ensemble de la classe au travers de Lilypad ou autres technologies portables qui s'allument selon la couleur de leur groupe.<br />
<br />
<br />
===Apports===<br />
théoriques, artistiques etc. sur lesquels vous allez vous appuyer pour résoudre le problème<br />
<br />
===Présentation du projet===<br />
(qu'est ce que vous voulez construire ?)<br />
<br />
* Tout autre item pertinent pour votre projet<br />
<br />
== Solution ==<br />
<br />
<u>1er prototype :</u> <br />
La solution envisagée à ce stade comporte deux objets : <br />
* Un '''émetteur''' : facile d’utilisation et agréable à porter, nous penchons pour la solution d’un bracelet contenant un micro circuit type Lilypad, Arduino Gemma ou Tinyduino. L’apprenant disposerait de 4 boutons-pressoirs pour 4 émotions majeures à transmettre (intérêt, confusion, frustration, incompréhension), symbolisés par des logos ou émoticônes. Les messages sont transmis par Bluetooth.<br />
* Un '''récepteur''' : Une jauge, comprenant une bande Neopixels, connectée à un Arduino Uno. Les LED symboliseraient deux dimensions fournies : la couleur pour le type d'émotion et le nombre pour la quantité d'étudiant.e.s ayant transmis l'information. L'Arduino pourrait gérer l'information, en émettant un son lors du dépassement d'un seuil prédéfini sur une émotion par exemple.<br />
<br />
L'Arduino Uno lance une séquence de randomisation de couleur, en affiche une, puis les participant.e.s font de même sur leur CPX. Si les couleurs affichées "matchent", le groupe est constitué et on peut ainsi passer à la constitution aléatoire du groupe suivant. <br />
[[Fichier:2e Maquette projet STIC III Djamileh et Simon .jpg|néant|vignette|1103x1103px|Maquette du projet]] <br />
<br />
<u>Version 1.0 du code CPX :</u> <syntaxhighlight lang="javascript"><br />
input.buttonA.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 200<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(40)<br />
color2 += Math.randomRange(1, 3)<br />
light.setPhotonPenHue(color2)<br />
}<br />
light.photonFlip()<br />
})<br />
input.buttonsAB.onEvent(ButtonEvent.Click, function () {<br />
control.reset()<br />
})<br />
input.buttonB.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 300<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
color2 += 3<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(50)<br />
}<br />
})<br />
let tonalité = 0<br />
let durée = 0<br />
let color2 = 0<br />
light.setBrightness(158)<br />
music.setVolume(167)<br />
forever(function () {<br />
<br />
})<br />
</syntaxhighlight><br />
<br />
== Test(s) de la solution ==<br />
Documentation dans votre page projet avec un [[:en:Cognitive walkthrough|cognitive walkthrough]] ou similaire pour le testing + avec un test utilisateurs (3 personnes minimum) c'est à dire création d’un scénario (tâches à réaliser), passation et analyse des résultats. <br />
<br />
== Discussion ==<br />
Cette partie inclus deux sous parties : <br />
* Discussion du design (et si c'était à refaire ou à améliorer),<br />
* Discussion des résultats de vos tests utilisateurs<br />
<br />
== Licence, fichiers et documentation ==<br />
[[Fichier:By-nc.png|150px]] Cette œuvre est mise à disposition selon les termes de la [http://creativecommons.org/licenses/by-nc/4.0/ Licence Creative Commons Attribution - Pas d’Utilisation Commerciale 4.0 International].<br />
<br />
* Fichiers :<br />
Insérer ici vos fichiers ou les liens vers vos fichiers<br />
<br />
* Documentation : <br />
Insérer ici une petite documentation pour l'utilisation de l'objet si nécessaire<br />
<br />
== Bibliographie ==<br />
<br />
* Blair, C., Calkins, S., & Kopp, L. (2010). Self-regulation as the interface of emotional and cognitive development: Implications for education and academic achievement.</div>Djamileh Aminianhttps://edutechwiki.unige.ch/fmediawiki/index.php?title=STIC:STIC_III_(2020)/Forces_rouge,_rose,_vert,_jaune_ou_bleu_!&diff=153780STIC:STIC III (2020)/Forces rouge, rose, vert, jaune ou bleu !2021-06-14T19:51:48Z<p>Djamileh Aminian : /* Cahier des charges */</p>
<hr />
<div>{{bloc important|Projet réalisé par [[Utilisateur:Djamileh_Aminian|Djamileh]] & [[Utilisateur:Simon_Jöhr|Simon]]}}<br />
<br />
== Introduction ==<br />
Durant la dernière année, le passage forcé à la téléformation, soit la formation synchrone à distance, a eu comme effet positif de pousser certains spécialistes de l’éducation à revisiter leurs scénarios pédagogiques pour revenir aux fondamentaux : comment aider les élèves à apprendre ce qu’ils sont sensés apprendre et comment les accompagner au mieux dans leur apprentissage ? Souvent, les difficultés relevées lors des bilans des derniers mois de distantiel ont fait émerger des problèmes qui existaient déjà en présence, mais qui restaient latents ou ignorés.<br />
<br />
L’apprentissage est influencé par de nombreux paramètres, dont les émotions par lesquelles passent les élèves au cours de la formation, et en particulier pendant les moments synchrones. Pourtant, il est très complexe de détecter, mesurer, ou même faire exprimer les étudiant-es sur leur ressenti.<br />
<br />
En donnant leurs cours en visioconférence, nombreux formateurs et formatrices ont exprimé leur frustration à ne pas réussir à évaluer l’état émotionnel et autres indices non verbaux de leurs participant.e.s, retours essentiels pour adapter une explication ou ajuster le rythme. Et cet effet est loin d’être limité à la distance : il est également bien présent dans une salle de classe où il reste complexe de capter en temps réel les émotions d’un étudiant, processus complexe et dynamique.<br />
<br />
Notre projet prend sa racine dans ce constat. Deux questions ont alors émergé : <br />
* comment mesurer l'état émotionnel d'un-e apprenant-e, <br />
* et surtout, pour quel usage ?<br />
<br />
Dans ce contexte, nous avons pensé un dispositif de partage des ressentis de la classe à destination de l'équipe enseignante, et une utilisation de cette donnée comme retour au groupe.<br />
<br />
== Problème ==<br />
<br />
Le but de ce projet est de proposer une solution ludique à la constitution de groupes en classe, que cela soit en présence, à distance ou de manière comodale. En utilisant un Arduino Uno ou des CPX, la phase de constitution de groupes sera ainsi rapide, aléatoire et "fun" !<br />
<br />
Le ''Problem Statement'' peut s’exprimer ainsi : « Comment peut-on aider les formateurs et formatrices à identifier rapidement les difficultés dans l’apprentissage et, le cas échéant, à réagir ? »<br />
<br />
== Cahier des charges == <br />
=== Contexte et public ===<br />
Le public cible est composé de formateurs et formatrices d’adultes, en entreprise ou en institut. Il pourrait également être élargi aux enseignante.s du scolaire, mais la conscientisation et l’expression d’une émotion sont suffisamment complexes pour limiter notre premier dispositif à des adultes, disposant, à priori, d’une compréhension plus fine de leur état émotionnel. De plus, l’asymétrie dans la relation est supposée moins forte dans un groupe d’adultes en formation que dans une classe avec un enseignant et des enfants ou adolescents.<br />
<br />
===Objectifs===<br />
<br />
<br />
<br />
===Besoins et contraintes===<br />
de votre projet (matérielles, humaines, techniques ...)<br />
<br />
Partant au début d’une idée de jauge émotionnelle dynamique, donnant en tout temps l’état émotionnel d’un groupe de participants, nous avons rapidement détecté un aspect extrêmement anxiogène pour le formateur dont le groupe enverrait des signaux d’ennui ou de frustration, durant une explication. <br />
<br />
Afin de juguler cet effet, tout en conservant la possibilité de communiquer un message sur l’état, nous avons adapté le dispositif pour permettre aux étudiants de transmettre leur émotion à des moments spécifiques de la formation, intégrés dans le scénario pédagogique. <br />
<br />
Le dispositif est donc pensé comme un outil de sondage à certains moments du cours, pour évaluer les besoins du groupe, dans son ensemble. Il est souvent difficile de récolter des informations sincères lors d’évaluations à chaud, les étudiants réticents à communiquer publiquement leurs difficultés ou désintérêts pour le contenu. Par la technique de transmission, les étudiants pourraient communiquer leur émotion de manière anonyme, favorisant l'authenticité.<br />
<br />
Cette hypothèse est à tester lors des phases de test avec utilisateurs.<br />
<br />
<br />
<br />
Les itérations réalisées entre l'idéation et le design ont fait ressortir les points clés suivants :<br />
<br />
# L'émotion étant un élément sensible à conscientiser, exprimer et partager au sein d'un groupe, nous avons estimé plus judicieux de faire exprimer son niveau d'aisance face à un contenu qui vient d'être transmis. Ainsi, un-e enseignant-e scénarisera des moments d'auto-diagnostique des étudiant-es sur leur perception de compétence sur la thématique. Cette information peut être utilisée pour réaliser des groupes de travail : (1) les personnes qui ont compris peuvent être orientées sur un contenu plus avancé, en échange pendant que l'enseignant organiser une séance de question-réponse avec les personnes en difficulté ou (2) des groupes peuvent être créés pour intégrer des étudiant-es qui ont compris avec des étudiant-es qui ont besoin d'aide<br />
<br />
# Les formateurs et formatrices ayant travaillé à distance durant la dernière année se sont habitués à disposer d'une fonction de création de groupe aléatoire, selon un nombre total de participant et un nombre de groupe visé. Cette fonction serait très utile également en présence, en utilisant une carte Arduino ou un CPX pour calculer une répartition des élèves par groupe, avec en entrée le nombre d'élèves et les sous-groupes. L'étape suivante est de communiquer ces groupes à l'ensemble de la classe au travers de Lilypad ou autres technologies portables qui s'allument selon la couleur de leur groupe.<br />
<br />
<br />
===Apports===<br />
théoriques, artistiques etc. sur lesquels vous allez vous appuyer pour résoudre le problème<br />
<br />
===Présentation du projet===<br />
(qu'est ce que vous voulez construire ?)<br />
<br />
* Tout autre item pertinent pour votre projet<br />
<br />
== Solution ==<br />
<br />
<u>1er prototype :</u> <br />
La solution envisagée à ce stade comporte deux objets : <br />
* Un '''émetteur''' : facile d’utilisation et agréable à porter, nous penchons pour la solution d’un bracelet contenant un micro circuit type Lilypad, Arduino Gemma ou Tinyduino. L’apprenant disposerait de 4 boutons-pressoirs pour 4 émotions majeures à transmettre (intérêt, confusion, frustration, incompréhension), symbolisés par des logos ou émoticônes. Les messages sont transmis par Bluetooth.<br />
* Un '''récepteur''' : Une jauge, comprenant une bande Neopixels, connectée à un Arduino Uno. Les LED symboliseraient deux dimensions fournies : la couleur pour le type d'émotion et le nombre pour la quantité d'étudiant.e.s ayant transmis l'information. L'Arduino pourrait gérer l'information, en émettant un son lors du dépassement d'un seuil prédéfini sur une émotion par exemple.<br />
<br />
L'Arduino Uno lance une séquence de randomisation de couleur, en affiche une, puis les participant.e.s font de même sur leur CPX. Si les couleurs affichées "matchent", le groupe est constitué et on peut ainsi passer à la constitution aléatoire du groupe suivant. <br />
[[Fichier:2e Maquette projet STIC III Djamileh et Simon .jpg|néant|vignette|1103x1103px|Maquette du projet]] <br />
<br />
<u>Version 1.0 du code CPX :</u> <syntaxhighlight lang="javascript"><br />
input.buttonA.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 200<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(40)<br />
color2 += Math.randomRange(1, 3)<br />
light.setPhotonPenHue(color2)<br />
}<br />
light.photonFlip()<br />
})<br />
input.buttonsAB.onEvent(ButtonEvent.Click, function () {<br />
control.reset()<br />
})<br />
input.buttonB.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 300<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
color2 += 3<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(50)<br />
}<br />
})<br />
let tonalité = 0<br />
let durée = 0<br />
let color2 = 0<br />
light.setBrightness(158)<br />
music.setVolume(167)<br />
forever(function () {<br />
<br />
})<br />
</syntaxhighlight><br />
<br />
== Test(s) de la solution ==<br />
Documentation dans votre page projet avec un [[:en:Cognitive walkthrough|cognitive walkthrough]] ou similaire pour le testing + avec un test utilisateurs (3 personnes minimum) c'est à dire création d’un scénario (tâches à réaliser), passation et analyse des résultats. <br />
<br />
== Discussion ==<br />
Cette partie inclus deux sous parties : <br />
* Discussion du design (et si c'était à refaire ou à améliorer),<br />
* Discussion des résultats de vos tests utilisateurs<br />
<br />
== Licence, fichiers et documentation ==<br />
[[Fichier:By-nc.png|150px]] Cette œuvre est mise à disposition selon les termes de la [http://creativecommons.org/licenses/by-nc/4.0/ Licence Creative Commons Attribution - Pas d’Utilisation Commerciale 4.0 International].<br />
<br />
* Fichiers :<br />
Insérer ici vos fichiers ou les liens vers vos fichiers<br />
<br />
* Documentation : <br />
Insérer ici une petite documentation pour l'utilisation de l'objet si nécessaire<br />
<br />
== Bibliographie ==<br />
<br />
* Blair, C., Calkins, S., & Kopp, L. (2010). Self-regulation as the interface of emotional and cognitive development: Implications for education and academic achievement.</div>Djamileh Aminianhttps://edutechwiki.unige.ch/fmediawiki/index.php?title=STIC:STIC_III_(2020)/Forces_rouge,_rose,_vert,_jaune_ou_bleu_!&diff=153779STIC:STIC III (2020)/Forces rouge, rose, vert, jaune ou bleu !2021-06-14T19:51:09Z<p>Djamileh Aminian : </p>
<hr />
<div>{{bloc important|Projet réalisé par [[Utilisateur:Djamileh_Aminian|Djamileh]] & [[Utilisateur:Simon_Jöhr|Simon]]}}<br />
<br />
== Introduction ==<br />
Durant la dernière année, le passage forcé à la téléformation, soit la formation synchrone à distance, a eu comme effet positif de pousser certains spécialistes de l’éducation à revisiter leurs scénarios pédagogiques pour revenir aux fondamentaux : comment aider les élèves à apprendre ce qu’ils sont sensés apprendre et comment les accompagner au mieux dans leur apprentissage ? Souvent, les difficultés relevées lors des bilans des derniers mois de distantiel ont fait émerger des problèmes qui existaient déjà en présence, mais qui restaient latents ou ignorés.<br />
<br />
L’apprentissage est influencé par de nombreux paramètres, dont les émotions par lesquelles passent les élèves au cours de la formation, et en particulier pendant les moments synchrones. Pourtant, il est très complexe de détecter, mesurer, ou même faire exprimer les étudiant-es sur leur ressenti.<br />
<br />
En donnant leurs cours en visioconférence, nombreux formateurs et formatrices ont exprimé leur frustration à ne pas réussir à évaluer l’état émotionnel et autres indices non verbaux de leurs participant.e.s, retours essentiels pour adapter une explication ou ajuster le rythme. Et cet effet est loin d’être limité à la distance : il est également bien présent dans une salle de classe où il reste complexe de capter en temps réel les émotions d’un étudiant, processus complexe et dynamique.<br />
<br />
Notre projet prend sa racine dans ce constat. Deux questions ont alors émergé : <br />
* comment mesurer l'état émotionnel d'un-e apprenant-e, <br />
* et surtout, pour quel usage ?<br />
<br />
Dans ce contexte, nous avons pensé un dispositif de partage des ressentis de la classe à destination de l'équipe enseignante, et une utilisation de cette donnée comme retour au groupe.<br />
<br />
== Problème ==<br />
<br />
Le but de ce projet est de proposer une solution ludique à la constitution de groupes en classe, que cela soit en présence, à distance ou de manière comodale. En utilisant un Arduino Uno ou des CPX, la phase de constitution de groupes sera ainsi rapide, aléatoire et "fun" !<br />
<br />
Le ''Problem Statement'' peut s’exprimer ainsi : « Comment peut-on aider les formateurs et formatrices à identifier rapidement les difficultés dans l’apprentissage et, le cas échéant, à réagir ? »<br />
<br />
== Cahier des charges == <br />
=== Contexte et public ===<br />
Le public cible est composé de formateurs et formatrices d’adultes, en entreprise ou en institut. Il pourrait également être élargi aux enseignante.s du scolaire, mais la conscientisation et l’expression d’une émotion sont suffisamment complexes pour limiter notre premier dispositif à des adultes, disposant, à priori, d’une compréhension plus fine de leur état émotionnel. De plus, l’asymétrie dans la relation est supposée moins forte dans un groupe d’adultes en formation que dans une classe avec un enseignant et des enfants ou adolescents.<br />
<br />
===les objectifs===<br />
<br />
<br />
<br />
===les besoins et contraintes===<br />
de votre projet (matérielles, humaines, techniques ...)<br />
<br />
Partant au début d’une idée de jauge émotionnelle dynamique, donnant en tout temps l’état émotionnel d’un groupe de participants, nous avons rapidement détecté un aspect extrêmement anxiogène pour le formateur dont le groupe enverrait des signaux d’ennui ou de frustration, durant une explication. <br />
<br />
Afin de juguler cet effet, tout en conservant la possibilité de communiquer un message sur l’état, nous avons adapté le dispositif pour permettre aux étudiants de transmettre leur émotion à des moments spécifiques de la formation, intégrés dans le scénario pédagogique. <br />
<br />
Le dispositif est donc pensé comme un outil de sondage à certains moments du cours, pour évaluer les besoins du groupe, dans son ensemble. Il est souvent difficile de récolter des informations sincères lors d’évaluations à chaud, les étudiants réticents à communiquer publiquement leurs difficultés ou désintérêts pour le contenu. Par la technique de transmission, les étudiants pourraient communiquer leur émotion de manière anonyme, favorisant l'authenticité.<br />
<br />
Cette hypothèse est à tester lors des phases de test avec utilisateurs.<br />
<br />
<br />
<br />
Les itérations réalisées entre l'idéation et le design ont fait ressortir les points clés suivants :<br />
<br />
# L'émotion étant un élément sensible à conscientiser, exprimer et partager au sein d'un groupe, nous avons estimé plus judicieux de faire exprimer son niveau d'aisance face à un contenu qui vient d'être transmis. Ainsi, un-e enseignant-e scénarisera des moments d'auto-diagnostique des étudiant-es sur leur perception de compétence sur la thématique. Cette information peut être utilisée pour réaliser des groupes de travail : (1) les personnes qui ont compris peuvent être orientées sur un contenu plus avancé, en échange pendant que l'enseignant organiser une séance de question-réponse avec les personnes en difficulté ou (2) des groupes peuvent être créés pour intégrer des étudiant-es qui ont compris avec des étudiant-es qui ont besoin d'aide<br />
<br />
# Les formateurs et formatrices ayant travaillé à distance durant la dernière année se sont habitués à disposer d'une fonction de création de groupe aléatoire, selon un nombre total de participant et un nombre de groupe visé. Cette fonction serait très utile également en présence, en utilisant une carte Arduino ou un CPX pour calculer une répartition des élèves par groupe, avec en entrée le nombre d'élèves et les sous-groupes. L'étape suivante est de communiquer ces groupes à l'ensemble de la classe au travers de Lilypad ou autres technologies portables qui s'allument selon la couleur de leur groupe.<br />
<br />
<br />
===les apports===<br />
théoriques, artistiques etc. sur lesquels vous allez vous appuyer pour résoudre le problème<br />
<br />
===la présentation du projet===<br />
(qu'est ce que vous voulez construire ?)<br />
<br />
* Tout autre item pertinent pour votre projet<br />
<br />
== Solution ==<br />
<br />
<u>1er prototype :</u> <br />
La solution envisagée à ce stade comporte deux objets : <br />
* Un '''émetteur''' : facile d’utilisation et agréable à porter, nous penchons pour la solution d’un bracelet contenant un micro circuit type Lilypad, Arduino Gemma ou Tinyduino. L’apprenant disposerait de 4 boutons-pressoirs pour 4 émotions majeures à transmettre (intérêt, confusion, frustration, incompréhension), symbolisés par des logos ou émoticônes. Les messages sont transmis par Bluetooth.<br />
* Un '''récepteur''' : Une jauge, comprenant une bande Neopixels, connectée à un Arduino Uno. Les LED symboliseraient deux dimensions fournies : la couleur pour le type d'émotion et le nombre pour la quantité d'étudiant.e.s ayant transmis l'information. L'Arduino pourrait gérer l'information, en émettant un son lors du dépassement d'un seuil prédéfini sur une émotion par exemple.<br />
<br />
L'Arduino Uno lance une séquence de randomisation de couleur, en affiche une, puis les participant.e.s font de même sur leur CPX. Si les couleurs affichées "matchent", le groupe est constitué et on peut ainsi passer à la constitution aléatoire du groupe suivant. <br />
[[Fichier:2e Maquette projet STIC III Djamileh et Simon .jpg|néant|vignette|1103x1103px|Maquette du projet]] <br />
<br />
<u>Version 1.0 du code CPX :</u> <syntaxhighlight lang="javascript"><br />
input.buttonA.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 200<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(40)<br />
color2 += Math.randomRange(1, 3)<br />
light.setPhotonPenHue(color2)<br />
}<br />
light.photonFlip()<br />
})<br />
input.buttonsAB.onEvent(ButtonEvent.Click, function () {<br />
control.reset()<br />
})<br />
input.buttonB.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 300<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
color2 += 3<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(50)<br />
}<br />
})<br />
let tonalité = 0<br />
let durée = 0<br />
let color2 = 0<br />
light.setBrightness(158)<br />
music.setVolume(167)<br />
forever(function () {<br />
<br />
})<br />
</syntaxhighlight><br />
<br />
== Test(s) de la solution ==<br />
Documentation dans votre page projet avec un [[:en:Cognitive walkthrough|cognitive walkthrough]] ou similaire pour le testing + avec un test utilisateurs (3 personnes minimum) c'est à dire création d’un scénario (tâches à réaliser), passation et analyse des résultats. <br />
<br />
== Discussion ==<br />
Cette partie inclus deux sous parties : <br />
* Discussion du design (et si c'était à refaire ou à améliorer),<br />
* Discussion des résultats de vos tests utilisateurs<br />
<br />
== Licence, fichiers et documentation ==<br />
[[Fichier:By-nc.png|150px]] Cette œuvre est mise à disposition selon les termes de la [http://creativecommons.org/licenses/by-nc/4.0/ Licence Creative Commons Attribution - Pas d’Utilisation Commerciale 4.0 International].<br />
<br />
* Fichiers :<br />
Insérer ici vos fichiers ou les liens vers vos fichiers<br />
<br />
* Documentation : <br />
Insérer ici une petite documentation pour l'utilisation de l'objet si nécessaire<br />
<br />
== Bibliographie ==<br />
<br />
* Blair, C., Calkins, S., & Kopp, L. (2010). Self-regulation as the interface of emotional and cognitive development: Implications for education and academic achievement.</div>Djamileh Aminianhttps://edutechwiki.unige.ch/fmediawiki/index.php?title=STIC:STIC_III_(2020)/Forces_rouge,_rose,_vert,_jaune_ou_bleu_!&diff=153778STIC:STIC III (2020)/Forces rouge, rose, vert, jaune ou bleu !2021-06-14T19:50:25Z<p>Djamileh Aminian : </p>
<hr />
<div>{{bloc important|Projet réalisé par [[Utilisateur:Djamileh_Aminian|Djamileh]] & [[Utilisateur:Simon_Jöhr|Simon]]}}<br />
<br />
== Introduction ==<br />
Durant la dernière année, le passage forcé à la téléformation, soit la formation synchrone à distance, a eu comme effet positif de pousser certains spécialistes de l’éducation à revisiter leurs scénarios pédagogiques pour revenir aux fondamentaux : comment aider les élèves à apprendre ce qu’ils sont sensés apprendre et comment les accompagner au mieux dans leur apprentissage ? Souvent, les difficultés relevées lors des bilans des derniers mois de distantiel ont fait émerger des problèmes qui existaient déjà en présence, mais qui restaient latents ou ignorés.<br />
<br />
L’apprentissage est influencé par de nombreux paramètres, dont les émotions par lesquelles passent les élèves au cours de la formation, et en particulier pendant les moments synchrones. Pourtant, il est très complexe de détecter, mesurer, ou même faire exprimer les étudiant-es sur leur ressenti.<br />
<br />
En donnant leurs cours en visioconférence, nombreux formateurs et formatrices ont exprimé leur frustration à ne pas réussir à évaluer l’état émotionnel et autres indices non verbaux de leurs participant.e.s, retours essentiels pour adapter une explication ou ajuster le rythme. Et cet effet est loin d’être limité à la distance : il est également bien présent dans une salle de classe où il reste complexe de capter en temps réel les émotions d’un étudiant, processus complexe et dynamique.<br />
<br />
Notre projet prend sa racine dans ce constat. Deux questions ont alors émergé : <br />
* comment mesurer l'état émotionnel d'un-e apprenant-e, <br />
* et surtout, pour quel usage ?<br />
<br />
Dans ce contexte, nous avons pensé un dispositif de partage des ressentis de la classe à destination de l'équipe enseignante, et une utilisation de cette donnée comme retour au groupe.<br />
<br />
''Pour retrouver notre projet précédent, c'est par ici :'' '''[[STIC:STIC III (2020)/Grand projet: idées#Id.C3.A9e de projet Djamileh et Simon|idées de projet]]'''<br />
<br />
=== Contexte et public ===<br />
Le public cible est composé de formateurs et formatrices d’adultes, en entreprise ou en institut. Il pourrait également être élargi aux enseignante.s du scolaire, mais la conscientisation et l’expression d’une émotion sont suffisamment complexes pour limiter notre premier dispositif à des adultes, disposant, à priori, d’une compréhension plus fine de leur état émotionnel. De plus, l’asymétrie dans la relation est supposée moins forte dans un groupe d’adultes en formation que dans une classe avec un enseignant et des enfants ou adolescents.<br />
<br />
== Problème ==<br />
<br />
Le but de ce projet est de proposer une solution ludique à la constitution de groupes en classe, que cela soit en présence, à distance ou de manière comodale. En utilisant un Arduino Uno ou des CPX, la phase de constitution de groupes sera ainsi rapide, aléatoire et "fun" !<br />
<br />
Le ''Problem Statement'' peut s’exprimer ainsi : « Comment peut-on aider les formateurs et formatrices à identifier rapidement les difficultés dans l’apprentissage et, le cas échéant, à réagir ? »<br />
<br />
== Cahier des charges == <br />
===le contexte===<br />
<br />
<br />
<br />
<br />
<br />
===le public===<br />
<br />
<br />
===les objectifs===<br />
<br />
<br />
<br />
===les besoins et contraintes===<br />
de votre projet (matérielles, humaines, techniques ...)<br />
<br />
Partant au début d’une idée de jauge émotionnelle dynamique, donnant en tout temps l’état émotionnel d’un groupe de participants, nous avons rapidement détecté un aspect extrêmement anxiogène pour le formateur dont le groupe enverrait des signaux d’ennui ou de frustration, durant une explication. <br />
<br />
Afin de juguler cet effet, tout en conservant la possibilité de communiquer un message sur l’état, nous avons adapté le dispositif pour permettre aux étudiants de transmettre leur émotion à des moments spécifiques de la formation, intégrés dans le scénario pédagogique. <br />
<br />
Le dispositif est donc pensé comme un outil de sondage à certains moments du cours, pour évaluer les besoins du groupe, dans son ensemble. Il est souvent difficile de récolter des informations sincères lors d’évaluations à chaud, les étudiants réticents à communiquer publiquement leurs difficultés ou désintérêts pour le contenu. Par la technique de transmission, les étudiants pourraient communiquer leur émotion de manière anonyme, favorisant l'authenticité.<br />
<br />
Cette hypothèse est à tester lors des phases de test avec utilisateurs.<br />
<br />
<br />
<br />
Les itérations réalisées entre l'idéation et le design ont fait ressortir les points clés suivants :<br />
<br />
# L'émotion étant un élément sensible à conscientiser, exprimer et partager au sein d'un groupe, nous avons estimé plus judicieux de faire exprimer son niveau d'aisance face à un contenu qui vient d'être transmis. Ainsi, un-e enseignant-e scénarisera des moments d'auto-diagnostique des étudiant-es sur leur perception de compétence sur la thématique. Cette information peut être utilisée pour réaliser des groupes de travail : (1) les personnes qui ont compris peuvent être orientées sur un contenu plus avancé, en échange pendant que l'enseignant organiser une séance de question-réponse avec les personnes en difficulté ou (2) des groupes peuvent être créés pour intégrer des étudiant-es qui ont compris avec des étudiant-es qui ont besoin d'aide<br />
<br />
# Les formateurs et formatrices ayant travaillé à distance durant la dernière année se sont habitués à disposer d'une fonction de création de groupe aléatoire, selon un nombre total de participant et un nombre de groupe visé. Cette fonction serait très utile également en présence, en utilisant une carte Arduino ou un CPX pour calculer une répartition des élèves par groupe, avec en entrée le nombre d'élèves et les sous-groupes. L'étape suivante est de communiquer ces groupes à l'ensemble de la classe au travers de Lilypad ou autres technologies portables qui s'allument selon la couleur de leur groupe.<br />
<br />
<br />
===les apports===<br />
théoriques, artistiques etc. sur lesquels vous allez vous appuyer pour résoudre le problème<br />
<br />
===la présentation du projet===<br />
(qu'est ce que vous voulez construire ?)<br />
<br />
* Tout autre item pertinent pour votre projet<br />
<br />
== Solution ==<br />
<br />
<u>1er prototype :</u> <br />
La solution envisagée à ce stade comporte deux objets : <br />
* Un '''émetteur''' : facile d’utilisation et agréable à porter, nous penchons pour la solution d’un bracelet contenant un micro circuit type Lilypad, Arduino Gemma ou Tinyduino. L’apprenant disposerait de 4 boutons-pressoirs pour 4 émotions majeures à transmettre (intérêt, confusion, frustration, incompréhension), symbolisés par des logos ou émoticônes. Les messages sont transmis par Bluetooth.<br />
* Un '''récepteur''' : Une jauge, comprenant une bande Neopixels, connectée à un Arduino Uno. Les LED symboliseraient deux dimensions fournies : la couleur pour le type d'émotion et le nombre pour la quantité d'étudiant.e.s ayant transmis l'information. L'Arduino pourrait gérer l'information, en émettant un son lors du dépassement d'un seuil prédéfini sur une émotion par exemple.<br />
<br />
L'Arduino Uno lance une séquence de randomisation de couleur, en affiche une, puis les participant.e.s font de même sur leur CPX. Si les couleurs affichées "matchent", le groupe est constitué et on peut ainsi passer à la constitution aléatoire du groupe suivant. <br />
[[Fichier:2e Maquette projet STIC III Djamileh et Simon .jpg|néant|vignette|1103x1103px|Maquette du projet]] <br />
<br />
<u>Version 1.0 du code CPX :</u> <syntaxhighlight lang="javascript"><br />
input.buttonA.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 200<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(40)<br />
color2 += Math.randomRange(1, 3)<br />
light.setPhotonPenHue(color2)<br />
}<br />
light.photonFlip()<br />
})<br />
input.buttonsAB.onEvent(ButtonEvent.Click, function () {<br />
control.reset()<br />
})<br />
input.buttonB.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 300<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
color2 += 3<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(50)<br />
}<br />
})<br />
let tonalité = 0<br />
let durée = 0<br />
let color2 = 0<br />
light.setBrightness(158)<br />
music.setVolume(167)<br />
forever(function () {<br />
<br />
})<br />
</syntaxhighlight><br />
<br />
== Test(s) de la solution ==<br />
Documentation dans votre page projet avec un [[:en:Cognitive walkthrough|cognitive walkthrough]] ou similaire pour le testing + avec un test utilisateurs (3 personnes minimum) c'est à dire création d’un scénario (tâches à réaliser), passation et analyse des résultats. <br />
<br />
== Discussion ==<br />
Cette partie inclus deux sous parties : <br />
* Discussion du design (et si c'était à refaire ou à améliorer),<br />
* Discussion des résultats de vos tests utilisateurs<br />
<br />
== Licence, fichiers et documentation ==<br />
[[Fichier:By-nc.png|150px]] Cette œuvre est mise à disposition selon les termes de la [http://creativecommons.org/licenses/by-nc/4.0/ Licence Creative Commons Attribution - Pas d’Utilisation Commerciale 4.0 International].<br />
<br />
* Fichiers :<br />
Insérer ici vos fichiers ou les liens vers vos fichiers<br />
<br />
* Documentation : <br />
Insérer ici une petite documentation pour l'utilisation de l'objet si nécessaire<br />
<br />
== Bibliographie ==<br />
<br />
* Blair, C., Calkins, S., & Kopp, L. (2010). Self-regulation as the interface of emotional and cognitive development: Implications for education and academic achievement.</div>Djamileh Aminianhttps://edutechwiki.unige.ch/fmediawiki/index.php?title=STIC:STIC_III_(2020)/Forces_rouge,_rose,_vert,_jaune_ou_bleu_!&diff=153777STIC:STIC III (2020)/Forces rouge, rose, vert, jaune ou bleu !2021-06-14T19:47:23Z<p>Djamileh Aminian : </p>
<hr />
<div>{{bloc important|Projet réalisé par [[Utilisateur:Djamileh_Aminian|Djamileh]] & [[Utilisateur:Simon_Jöhr|Simon]]}}<br />
<br />
== Introduction ==<br />
Durant la dernière année, le passage forcé à la téléformation, soit la formation synchrone à distance, a eu comme effet positif de pousser certains spécialistes de l’éducation à revisiter leurs scénarios pédagogiques pour revenir aux fondamentaux : comment aider les élèves à apprendre ce qu’ils sont sensés apprendre et comment les accompagner au mieux dans leur apprentissage ? Souvent, les difficultés relevées lors des bilans des derniers mois de distantiel ont fait émerger des problèmes qui existaient déjà en présence, mais qui restaient latents ou ignorés.<br />
<br />
L’apprentissage est influencé par de nombreux paramètres, dont les émotions par lesquelles passent les élèves au cours de la formation, et en particulier pendant les moments synchrones. Pourtant, il est très complexe de détecter, mesurer, ou même faire exprimer les étudiant-es sur leur ressenti.<br />
<br />
En donnant leurs cours en visioconférence, nombreux formateurs et formatrices ont exprimé leur frustration à ne pas réussir à évaluer l’état émotionnel et autres indices non verbaux de leurs participant.e.s, retours essentiels pour adapter une explication ou ajuster le rythme. Et cet effet est loin d’être limité à la distance : il est également bien présent dans une salle de classe où il reste complexe de capter en temps réel les émotions d’un étudiant, processus complexe et dynamique.<br />
<br />
Notre projet prend sa racine dans ce constat. Deux questions ont alors émergé : <br />
* comment mesurer l'état émotionnel d'un-e apprenant-e, <br />
* et surtout, pour quel usage ?<br />
<br />
Dans ce contexte, nous avons pensé un dispositif de partage des ressentis de la classe à destination de l'équipe enseignante, et une utilisation de cette donnée comme retour au groupe.<br />
<br />
''Pour retrouver notre projet précédent, c'est par ici :'' '''[[STIC:STIC III (2020)/Grand projet: idées#Id.C3.A9e de projet Djamileh et Simon|idées de projet]]'''<br />
<br />
=== Contexte et public ===<br />
Le public cible est composé de formateurs et formatrices d’adultes, en entreprise ou en institut. Il pourrait également être élargi aux enseignante.s du scolaire, mais la conscientisation et l’expression d’une émotion sont suffisamment complexes pour limiter notre premier dispositif à des adultes, disposant, à priori, d’une compréhension plus fine de leur état émotionnel. De plus, l’asymétrie dans la relation est supposée moins forte dans un groupe d’adultes en formation que dans une classe avec un enseignant et des enfants ou adolescents.<br />
<br />
== Problème ==<br />
<br />
Le but de ce projet est de proposer une solution ludique à la constitution de groupes en classe, que cela soit en présence, à distance ou de manière comodale. En utilisant un Arduino Uno ou des CPX, la phase de constitution de groupes sera ainsi rapide, aléatoire et "fun" !<br />
<br />
Le ''Problem Statement'' peut s’exprimer ainsi : « Comment peut-on aider les formateurs et formatrices à identifier rapidement les difficultés dans l’apprentissage et, le cas échéant, à réagir ? »<br />
<br />
== Cahier des charges == <br />
===le contexte===<br />
<br />
<br />
<br />
Les itérations réalisées entre l'idéation et le design ont fait ressortir les points clés suivants :<br />
<br />
# L'émotion étant un élément sensible à conscientiser, exprimer et partager au sein d'un groupe, nous avons estimé plus judicieux de faire exprimer son niveau d'aisance face à un contenu qui vient d'être transmis. Ainsi, un-e enseignant-e scénarisera des moments d'auto-diagnostique des étudiant-es sur leur perception de compétence sur la thématique. Cette information peut être utilisée pour réaliser des groupes de travail : (1) les personnes qui ont compris peuvent être orientées sur un contenu plus avancé, en échange pendant que l'enseignant organiser une séance de question-réponse avec les personnes en difficulté ou (2) des groupes peuvent être créés pour intégrer des étudiant-es qui ont compris avec des étudiant-es qui ont besoin d'aide<br />
<br />
# Les formateurs et formatrices ayant travaillé à distance durant la dernière année se sont habitués à disposer d'une fonction de création de groupe aléatoire, selon un nombre total de participant et un nombre de groupe visé. Cette fonction serait très utile également en présence, en utilisant une carte Arduino ou un CPX pour calculer une répartition des élèves par groupe, avec en entrée le nombre d'élèves et les sous-groupes. L'étape suivante est de communiquer ces groupes à l'ensemble de la classe au travers de Lilypad ou autres technologies portables qui s'allument selon la couleur de leur groupe.<br />
<br />
===le public===<br />
<br />
<br />
===les objectifs===<br />
<br />
<br />
<br />
===les besoins et contraintes===<br />
de votre projet (matérielles, humaines, techniques ...)<br />
<br />
===les apports===<br />
théoriques, artistiques etc. sur lesquels vous allez vous appuyer pour résoudre le problème<br />
<br />
===la présentation du projet===<br />
(qu'est ce que vous voulez construire ?)<br />
<br />
* Tout autre item pertinent pour votre projet<br />
<br />
== Solution == <br />
<br />
<u>1er prototype :</u> <br />
<br />
L'Arduino Uno lance une séquence de randomisation de couleur, en affiche une, puis les participant.e.s font de même sur leur CPX. Si les couleurs affichées "matchent", le groupe est constitué et on peut ainsi passer à la constitution aléatoire du groupe suivant. <br />
[[Fichier:2e Maquette projet STIC III Djamileh et Simon .jpg|néant|vignette|1103x1103px|Maquette du projet]] <br />
<br />
<u>Version 1.0 du code CPX :</u> <syntaxhighlight lang="javascript"><br />
input.buttonA.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 200<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(40)<br />
color2 += Math.randomRange(1, 3)<br />
light.setPhotonPenHue(color2)<br />
}<br />
light.photonFlip()<br />
})<br />
input.buttonsAB.onEvent(ButtonEvent.Click, function () {<br />
control.reset()<br />
})<br />
input.buttonB.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 300<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
color2 += 3<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(50)<br />
}<br />
})<br />
let tonalité = 0<br />
let durée = 0<br />
let color2 = 0<br />
light.setBrightness(158)<br />
music.setVolume(167)<br />
forever(function () {<br />
<br />
})<br />
</syntaxhighlight><br />
<br />
== Test(s) de la solution ==<br />
Documentation dans votre page projet avec un [[:en:Cognitive walkthrough|cognitive walkthrough]] ou similaire pour le testing + avec un test utilisateurs (3 personnes minimum) c'est à dire création d’un scénario (tâches à réaliser), passation et analyse des résultats. <br />
<br />
== Discussion ==<br />
Cette partie inclus deux sous parties : <br />
* Discussion du design (et si c'était à refaire ou à améliorer),<br />
* Discussion des résultats de vos tests utilisateurs<br />
<br />
== Licence, fichiers et documentation ==<br />
[[Fichier:By-nc.png|150px]] Cette œuvre est mise à disposition selon les termes de la [http://creativecommons.org/licenses/by-nc/4.0/ Licence Creative Commons Attribution - Pas d’Utilisation Commerciale 4.0 International].<br />
<br />
* Fichiers :<br />
Insérer ici vos fichiers ou les liens vers vos fichiers<br />
<br />
* Documentation : <br />
Insérer ici une petite documentation pour l'utilisation de l'objet si nécessaire<br />
<br />
== Bibliographie ==<br />
<br />
* Blair, C., Calkins, S., & Kopp, L. (2010). Self-regulation as the interface of emotional and cognitive development: Implications for education and academic achievement.</div>Djamileh Aminianhttps://edutechwiki.unige.ch/fmediawiki/index.php?title=STIC:STIC_III_(2020)/Forces_rouge,_rose,_vert,_jaune_ou_bleu_!&diff=153776STIC:STIC III (2020)/Forces rouge, rose, vert, jaune ou bleu !2021-06-14T19:40:47Z<p>Djamileh Aminian : /* Cahier des charges */</p>
<hr />
<div>{{bloc important|Projet réalisé par [[Utilisateur:Djamileh_Aminian|Djamileh]] & [[Utilisateur:Simon_Jöhr|Simon]]}}<br />
<br />
== Introduction ==<br />
Durant la dernière année, le passage forcé à la téléformation, soit la formation synchrone à distance, a eu comme effet positif de pousser certains spécialistes de l’éducation à revisiter leurs scénarios pédagogiques pour revenir aux fondamentaux : comment aider les élèves à apprendre ce qu’ils sont sensés apprendre et comment les accompagner au mieux dans leur apprentissage ? Souvent, les difficultés relevées lors des bilans des derniers mois de distantiel ont fait émerger des problèmes qui existaient déjà en présence, mais qui restaient latents ou ignorés.<br />
<br />
L’apprentissage est influencé par de nombreux paramètres, dont les émotions par lesquelles passent les élèves au cours de la formation, et en particulier pendant les moments synchrones. Pourtant, il est très complexe de détecter, mesurer, ou même faire exprimer les étudiant-es sur leur ressenti.<br />
<br />
En donnant leurs cours en visioconférence, nombreux formateurs et formatrices ont exprimé leur frustration à ne pas réussir à évaluer l’état émotionnel et autres indices non verbaux de leurs participant.e.s, retours essentiels pour adapter une explication ou ajuster le rythme. Et cet effet est loin d’être limité à la distance : il est également bien présent dans une salle de classe où il reste complexe de capter en temps réel les émotions d’un étudiant, processus complexe et dynamique.<br />
<br />
Notre projet prend sa racine dans ce constat. Deux questions ont alors émergé : <br />
* comment mesurer l'état émotionnel d'un-e apprenant-e, <br />
* et surtout, pour quel usage ?<br />
<br />
Dans ce contexte, nous avons pensé un dispositif de partage des ressentis de la classe à destination de l'équipe enseignante, et une utilisation de cette donnée comme retour au groupe. Les itérations réalisées entre l'idéation et le design ont fait ressortir les points clés suivants :<br />
<br />
# L'émotion étant un élément sensible à conscientiser, exprimer et partager au sein d'un groupe, nous pensons plus judicieux de faire exprimer son niveau d'aisance face à un contenu qui vient d'être transmis. Ainsi, un-e enseignant-e scénarisera des moments d'auto-diagnostique des étudiant-es sur leur perception de compétence sur la thématique. Cette information peut être utilisée pour réaliser des groupes de travail : (1) les personnes qui ont compris peuvent être orientées sur un contenu plus avancé, en échange pendant que l'enseignant organiser une séance de question-réponse avec les personnes en difficulté ou (2) des groupes peuvent être créés pour intégrer des étudiant-es qui ont compris avec des étudiant-es qui ont besoin d'aide<br />
# Les formateurs et formatrices ayant travaillé à distance durant la dernière année se sont habitués à disposer d'une fonction de création de groupe aléatoire, selon un nombre total de participant et un nombre de groupe visé. Cette fonction serait très utile également en présence, en utilisant une carte Arduino ou un CPX pour calculer une répartition des élèves par groupe, avec en entrée le nombre d'élèves et les sous-groupes. L'étape suivante est de communiquer ces groupes à l'ensemble de la classe au travers de Lilypad ou autres technologies portables qui s'allument selon la couleur de leur groupe.<br />
<br />
''Pour retrouver notre projet précédent, c'est par ici :'' '''[[STIC:STIC III (2020)/Grand projet: idées#Id.C3.A9e de projet Djamileh et Simon|idées de projet]]'''<br />
<br />
=== Contexte et public ===<br />
Le public cible est composé de formateurs et formatrices d’adultes, en entreprise ou en institut. Il pourrait également être élargi aux enseignante.s du scolaire, mais l’asymétrie dans la relation est supposée moins forte dans un groupe d’adultes en formation que dans une classe avec un-e enseignant-e et des enfants ou adolescent-es.<br />
<br />
== Problème ==<br />
<br />
Le but de ce projet est de proposer une solution ludique à la constitution de groupes en classe, que cela soit en présence, à distance ou de manière comodale. En utilisant l'Arduino Uno et des CPX, la phase de constitution de groupes sera ainsi rapide, aléatoire et "fun" !<br />
<br />
Le ''Problem Statement'' peut s’exprimer ainsi : « Comment peut-on aider les formateurs et formatrices à identifier rapidement les difficultés dans l’apprentissage et dans le cas contraire à réagir ? »<br />
<br />
== Cahier des charges == <br />
===le contexte===<br />
<br />
===le public===<br />
<br />
<br />
===les objectifs===<br />
<br />
<br />
<br />
===les besoins et contraintes===<br />
de votre projet (matérielles, humaines, techniques ...)<br />
<br />
===les apports===<br />
théoriques, artistiques etc. sur lesquels vous allez vous appuyer pour résoudre le problème<br />
<br />
===la présentation du projet===<br />
(qu'est ce que vous voulez construire ?)<br />
<br />
* Tout autre item pertinent pour votre projet<br />
<br />
== Solution == <br />
<br />
<u>1er prototype :</u> <br />
<br />
L'Arduino Uno lance une séquence de randomisation de couleur, en affiche une, puis les participant.e.s font de même sur leur CPX. Si les couleurs affichées "matchent", le groupe est constitué et on peut ainsi passer à la constitution aléatoire du groupe suivant. <br />
[[Fichier:2e Maquette projet STIC III Djamileh et Simon .jpg|néant|vignette|1103x1103px|Maquette du projet]] <br />
<br />
<u>Version 1.0 du code CPX :</u> <syntaxhighlight lang="javascript"><br />
input.buttonA.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 200<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(40)<br />
color2 += Math.randomRange(1, 3)<br />
light.setPhotonPenHue(color2)<br />
}<br />
light.photonFlip()<br />
})<br />
input.buttonsAB.onEvent(ButtonEvent.Click, function () {<br />
control.reset()<br />
})<br />
input.buttonB.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 300<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
color2 += 3<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(50)<br />
}<br />
})<br />
let tonalité = 0<br />
let durée = 0<br />
let color2 = 0<br />
light.setBrightness(158)<br />
music.setVolume(167)<br />
forever(function () {<br />
<br />
})<br />
</syntaxhighlight><br />
<br />
== Test(s) de la solution ==<br />
Documentation dans votre page projet avec un [[:en:Cognitive walkthrough|cognitive walkthrough]] ou similaire pour le testing + avec un test utilisateurs (3 personnes minimum) c'est à dire création d’un scénario (tâches à réaliser), passation et analyse des résultats. <br />
<br />
== Discussion ==<br />
Cette partie inclus deux sous parties : <br />
* Discussion du design (et si c'était à refaire ou à améliorer),<br />
* Discussion des résultats de vos tests utilisateurs<br />
<br />
== Licence, fichiers et documentation ==<br />
[[Fichier:By-nc.png|150px]] Cette œuvre est mise à disposition selon les termes de la [http://creativecommons.org/licenses/by-nc/4.0/ Licence Creative Commons Attribution - Pas d’Utilisation Commerciale 4.0 International].<br />
<br />
* Fichiers :<br />
Insérer ici vos fichiers ou les liens vers vos fichiers<br />
<br />
* Documentation : <br />
Insérer ici une petite documentation pour l'utilisation de l'objet si nécessaire<br />
<br />
== Bibliographie ==<br />
<br />
* Blair, C., Calkins, S., & Kopp, L. (2010). Self-regulation as the interface of emotional and cognitive development: Implications for education and academic achievement.</div>Djamileh Aminianhttps://edutechwiki.unige.ch/fmediawiki/index.php?title=STIC:STIC_III_(2020)/Forces_rouge,_rose,_vert,_jaune_ou_bleu_!&diff=153635STIC:STIC III (2020)/Forces rouge, rose, vert, jaune ou bleu !2021-06-13T15:05:32Z<p>Djamileh Aminian : /* Bibliographie */</p>
<hr />
<div>{{bloc important|Projet réalisé par [[Utilisateur:Djamileh_Aminian|Djamileh]] & [[Utilisateur:Simon_Jöhr|Simon]]}}<br />
<br />
== Introduction ==<br />
Durant la dernière année, le passage forcé à la téléformation, soit la formation synchrone à distance, a eu comme effet positif de pousser certains spécialistes de l’éducation à revisiter leurs scénarios pédagogiques pour revenir aux fondamentaux : comment aider les élèves à apprendre ce qu’ils sont sensés apprendre et comment les accompagner au mieux dans leur apprentissage ? Souvent, les difficultés relevées lors des bilans des derniers mois de distantiel ont fait émerger des problèmes qui existaient déjà en présence, mais qui restaient latents ou ignorés.<br />
<br />
L’apprentissage est influencé par de nombreux paramètres, dont les émotions par lesquelles passent les élèves au cours de la formation, et en particulier pendant les moments synchrones. Pourtant, il est très complexe de détecter, mesurer, ou même faire exprimer les étudiant-es sur leur ressenti.<br />
<br />
En donnant leurs cours en visioconférence, nombreux formateurs et formatrices ont exprimé leur frustration à ne pas réussir à évaluer l’état émotionnel et autres indices non verbaux de leurs participant.e.s, retours essentiels pour adapter une explication ou ajuster le rythme. Et cet effet est loin d’être limité à la distance : il est également bien présent dans une salle de classe où il reste complexe de capter en temps réel les émotions d’un étudiant, processus complexe et dynamique.<br />
<br />
Notre projet prend sa racine dans ce constat. Deux questions ont alors émergé : <br />
* comment mesurer l'état émotionnel d'un-e apprenant-e, <br />
* et surtout, pour quel usage ?<br />
<br />
Dans ce contexte, nous avons pensé un dispositif de partage des ressentis de la classe à destination de l'équipe enseignante, et une utilisation de cette donnée comme retour au groupe. Les itérations réalisées entre l'idéation et le design ont fait ressortir les points clés suivants :<br />
<br />
# L'émotion étant un élément sensible à conscientiser, exprimer et partager au sein d'un groupe, nous pensons plus judicieux de faire exprimer son niveau d'aisance face à un contenu qui vient d'être transmis. Ainsi, un-e enseignant-e scénarisera des moments d'auto-diagnostique des étudiant-es sur leur perception de compétence sur la thématique. Cette information peut être utilisée pour réaliser des groupes de travail : (1) les personnes qui ont compris peuvent être orientées sur un contenu plus avancé, en échange pendant que l'enseignant organiser une séance de question-réponse avec les personnes en difficulté ou (2) des groupes peuvent être créés pour intégrer des étudiant-es qui ont compris avec des étudiant-es qui ont besoin d'aide<br />
# Les formateurs et formatrices ayant travaillé à distance durant la dernière année se sont habitués à disposer d'une fonction de création de groupe aléatoire, selon un nombre total de participant et un nombre de groupe visé. Cette fonction serait très utile également en présence, en utilisant une carte Arduino ou un CPX pour calculer une répartition des élèves par groupe, avec en entrée le nombre d'élèves et les sous-groupes. L'étape suivante est de communiquer ces groupes à l'ensemble de la classe au travers de Lilypad ou autres technologies portables qui s'allument selon la couleur de leur groupe.<br />
<br />
''Pour retrouver notre projet précédent, c'est par ici :'' '''[[STIC:STIC III (2020)/Grand projet: idées#Id.C3.A9e de projet Djamileh et Simon|idées de projet]]'''<br />
<br />
=== Contexte et public ===<br />
Le public cible est composé de formateurs et formatrices d’adultes, en entreprise ou en institut. Il pourrait également être élargi aux enseignante.s du scolaire, mais l’asymétrie dans la relation est supposée moins forte dans un groupe d’adultes en formation que dans une classe avec un-e enseignant-e et des enfants ou adolescent-es.<br />
<br />
== Problème ==<br />
<br />
Le but de ce projet est de proposer une solution ludique à la constitution de groupes en classe, que cela soit en présence, à distance ou de manière comodale. En utilisant l'Arduino Uno et des CPX, la phase de constitution de groupes sera ainsi rapide, aléatoire et "fun" !<br />
<br />
Le ''Problem Statement'' peut s’exprimer ainsi : « Comment peut-on aider les formateurs et formatrices à identifier rapidement les difficultés dans l’apprentissage et dans le cas contraire à réagir ? »<br />
<br />
== Cahier des charges == <br />
''En cours d'édition'' <br />
== Solution == <br />
<br />
<u>1er prototype :</u> <br />
<br />
L'Arduino Uno lance une séquence de randomisation de couleur, en affiche une, puis les participant.e.s font de même sur leur CPX. Si les couleurs affichées "matchent", le groupe est constitué et on peut ainsi passer à la constitution aléatoire du groupe suivant. <br />
[[Fichier:2e Maquette projet STIC III Djamileh et Simon .jpg|néant|vignette|1103x1103px|Maquette du projet]] <br />
<br />
<u>Version 1.0 du code CPX :</u> <syntaxhighlight lang="javascript"><br />
input.buttonA.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 200<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(40)<br />
color2 += Math.randomRange(1, 3)<br />
light.setPhotonPenHue(color2)<br />
}<br />
light.photonFlip()<br />
})<br />
input.buttonsAB.onEvent(ButtonEvent.Click, function () {<br />
control.reset()<br />
})<br />
input.buttonB.onEvent(ButtonEvent.Click, function () {<br />
light.setPhotonPenHue(color2)<br />
durée = 30<br />
tonalité = 300<br />
for (let i = 0; i < Math.randomRange(20, 100); i++) {<br />
color2 += 3<br />
light.photonForward(1)<br />
music.playTone(tonalité, durée)<br />
pause(50)<br />
}<br />
})<br />
let tonalité = 0<br />
let durée = 0<br />
let color2 = 0<br />
light.setBrightness(158)<br />
music.setVolume(167)<br />
forever(function () {<br />
<br />
})<br />
</syntaxhighlight><br />
<br />
== Test(s) de la solution ==<br />
Documentation dans votre page projet avec un [[:en:Cognitive walkthrough|cognitive walkthrough]] ou similaire pour le testing + avec un test utilisateurs (3 personnes minimum) c'est à dire création d’un scénario (tâches à réaliser), passation et analyse des résultats. <br />
<br />
== Discussion ==<br />
Cette partie inclus deux sous parties : <br />
* Discussion du design (et si c'était à refaire ou à améliorer),<br />
* Discussion des résultats de vos tests utilisateurs<br />
<br />
== Licence, fichiers et documentation ==<br />
[[Fichier:By-nc.png|150px]] Cette œuvre est mise à disposition selon les termes de la [http://creativecommons.org/licenses/by-nc/4.0/ Licence Creative Commons Attribution - Pas d’Utilisation Commerciale 4.0 International].<br />
<br />
* Fichiers :<br />
Insérer ici vos fichiers ou les liens vers vos fichiers<br />
<br />
* Documentation : <br />
Insérer ici une petite documentation pour l'utilisation de l'objet si nécessaire<br />
<br />
== Bibliographie ==<br />
<br />
* Blair, C., Calkins, S., & Kopp, L. (2010). Self-regulation as the interface of emotional and cognitive development: Implications for education and academic achievement.</div>Djamileh Aminian