MindPeace – Solution Technique

Envoyé par le 6 Jan 2020

Auteurs:  GHANDI Sanaa- LAFEUILLADE Timothée- Ilona MALLEIN-GERIN

 

Plan:

I-Contexte

II-Présentation de la solution technique de manière synthétique

III-Présentation de la solution de manière détaillée

IV-Lien vers le code

V-Protocole de communication

VI-Justification des choix techniques

VII-Perspectives

VIII-Sources

 

 

I-Contexte

 

Dans le cadre de notre projet TAF COOC, nous étions amenés à réaliser un objet permettant d’optimiser l’apprentissage des enfants atteints de troubles d’attention. Ces derniers sont souvent sujets à des crises de panique et ont une faible capacité de concentration, ce qui les freine dans leur éducation. Nous avons ainsi conçu un objet communicant qui a pour fonction de rassurer ces enfants et de raviver ponctuellement leur attention, lorsqu’ils doivent effectuer une tâche par exemple.

Nous avons réalisé un prototype de cet objet qui grâce à une LED et un écran LCD affiche des messages et diffuse des lumières douces. Nous avons aussi développé une application permettant aux parents de choisir les couleurs et les messages à afficher sur l’objet. Grâce à cela, l’objet est personnalisable pour chaque enfant.

 

II-Présentation de la solution technique de manière synthétique

 

1) L’objet

L’objet a la forme d’une boule. D’un côté, l’objet représente une tête d’ours. Du tissu doux est collé sur toute cette moitié de l’objet. De l’autre côté, la place est laissée pour l’écran qui peut afficher des messages. Le chapeau, fait d’un matériau translucide, s’illumine grâce à une LED Neopixel.

Fig1: Face arrière de l’objet: ours (à gauche),  Face devant de l’objet contenant l’écran (à droite)

 Fig2: La face avant de l’objet est personnalisable

 

 

2) L’application

Sur l’écran d’accueil, il faut d’abord se connecter en BlueTooth à l’objet. Le menu propose ensuite deux actions possibles : choisir les couleurs du chapeau et programmer un message.

Pour le chapeau, l’utilisateur choisit 3 couleurs qui vont défiler en continu sur l’objet. Il sélectionne les couleurs sur la roue des couleurs. Pour les messages, seuls les messages de 32 caractères sont compatibles avec l’écran. L’utilisateur rentre le message directement dans le champs de saisie et clique sur valider.

Fig3: L’application: fonctionnalité de changement de couleur

Fig4: Le chapeau s’illumine par les couleurs choisies

Fig5: Fonctionnalité d’envoi de message, affichage du message sur l’écran LCD

Voici une vidéo du fonctionnement (qui est pas mal! )

 

 

III-Présentation de la solution de manière détaillée

 

1)Diagramme d’architecture matérielle/logicielle

 

Fig6: Diagramme d’architecture matérielle et logicielle

 

Liste du matériel

– Une carte Arduino UNO Rev3

– Un afficheur LCD 2×16 I2C

– Une LED Neopixel Unique

– Un mini haut-parleur dynamique 2W

– Un module BlueTooth HC-05

– Des câbles

 

2)Matériel utilisé et montage électronique

 

a-Carte Arduino UNO [4]

Fig7: Carte Arduino Uno

 

b-Afficheur LCD 2×16 I2C [3]

 

Fig8: Afficheur LCD

ll se compose de deux parties: un écran LCD “classique” et au dos un module d’interface I2C.

La communication avec une carte Arduino se fait avec le protocole I2C (voir internet pour plus de détails) sur deux lignes dénommées SCL et SDA. Il faut ajouter les lignes d’alimentation Vcc et GND.

Pour le câblage:

on relie le VCC au 5V et le GND au GND de l’Arduino

le SDA sur A4

le SCL sur A5

Fig9: Cablâge du LCD

Bibliothèques installées: 

LiquidCrystal_I2C

Fonctions utilisées: 

  lcd.init();                      // initialise le lcd

  lcd.backlight();

  lcd.print(« Hello, MindPeace! »);  // Affiche le message sur le LCD.

 

c-LED Neopixel Unique

 

Fig10: Neopixel

 

Pour le câblage:

On relie le 5V au VCC

Le GND au GND 

Et le in au Pin  5

Fig11: Cablâge du Neopixel

 

Bibliothèques installées: 

Adafruit_NeoPixel

Fonctions utilisées: 

  Adafruit_NeoPixel strip = Adafruit_NeoPixel(24, PIN, NEO_GRB + NEO_KHZ800);

// Pour définir qu’on utilise bien l’ordre GRB et non pas RGB, et pour dire qu’on travaille à 800KHz

  strip.begin(); // initialisation des neopixels

  strip.show();  // applique l’effet sur le neopixel ici il va s’éteindre

  strip.setPixelColor(0, strip.Color(0, 0, 255)); // on choisit la couleur qu’on veut afficher ici le     bleu , c’est un code GRB ( green,red, blue)

  strip.show(); // ici le neopixel s’allume en bleu

 

 

d-Mini Haut Parleur dynamique 2W [2]

 

Fig12: Haut-parleur

Pour le câblage:

On relie un pin au VCC et l’autre au pin 8 de l’arduino.

Fig13: Cablâge du Haut-parleur

Fonctions utilisées: 

tone(8, 293, 112.5); 

Ce qui veut dire émettre le son de fréquence 293 Hz pendant 112.5 ms sur le pin 8 

Autres possibilités: 

Programmer des musiques comme en utilisant le format midi puis en le convertissant en un code arduino sous forme de suite de commande tone. [6]

Ou d’utiliser une carte SD qui contient déjà des sons sous format .wav [7]

 

e-Module Bluetooth HC-05 [1]

 

Fig14: Cablâge du module Bluetooth

Le comportement utilisé est « maître/esclave ». Un esclave pourra parler avec un seul maître, mais un maître pourra dialoguer avec plusieurs esclaves. Son utilisation, se passe en plusieurs étapes :

Le maître se met en mode « reconnaissable »

L’esclave trouve le maître et demande à s’y connecter

Le maître accepte la connexion

Les périphériques sont alors appairés (ou associés)

La communication peut commencer [5]

Remarque:

Quand vous appareillez votre module Bluetooth sur votre téléphone le code que vous devez entrer est souvent 1234 

Pour le câblage: [1]

On relie le GND au GND, le 5V au VCC

Et nous avions relié le RX au pin 11 et le TX au pin 12

Bibliothèques installées: 

SoftwareSerial

Fonctions utilisées: 

SoftwareSerial bt(11, 10); // (RX, TX) (pin Tx BT, pin Rx BT) ( nous avons choisi d’appeler notre module bluetooth bt )

Serial.begin(9600); // Sur les PCs du fablab il faut choisir 9600 Bauds afin que les messages que vous imprimer puissent s’afficher 

bt.begin(9600);  // démarrage du bluetooth à 9600 bauds

while(bt.available() > 0) // vérifie qu’il y’a encore des données à lire reçues par bluetooth

l_char = bt.read() // lis le caractère reçu et le stock dans la variable l_char

 

3)Schéma de l’application

 

Fig15: Schéma du fonctionnement de l’application

 

 

IV-Lien vers le code

 

Vous trouverez le code arduino, le code MIT sur Github par ici

https://github.com/Ghandisanaa/MindPeace

 

V-Protocole de communication

 

Nous avions choisi pour l’envoi de nos propres messages une communication unidirectionnelle de l’application vers arduino via bluetooth car nous n’avions pas estimé nécessaire l’envoi d’acquittements ou autres messages de confirmations par le programme implémenté sur l’Arduino.

Nous n’avons pas prévu de correction d’erreurs ni de numérotation de messages pour détecter si un paquet a été perdu.

En effet, l’existence d’une latence due au Bluetooth faisait que le système n’arrivait plus à bien déchiffrer les messages reçus s’il reçoit plusieurs requêtes de suite dans le cas où l’utilisateur manipule trop vite l’application. Ce qui fait qu’il serait peut être intéressant de mettre en place un système d’acquittement et de numérotation des messages envoyés.

Nous avons par contre opté pour une classification des messages par types ( Texte, changement de couleur 1 ou 2 ou 3) afin de faciliter le traitement de ces requêtes par la carte arduino, ce qui fait que pour l’envoi des rappels nous avions mis au début de chaque message une lettre “T” et pour l’envoi du changement de lumière nous avons mis pour la première couleur la lettre “I”, pour la deuxième “J” et “K” pour la dernière. 

Le codage était en utf_8

La taille des différents messages envoyés était limitée:  15 bits pour les couleurs car nous avions utilisé un code RGB,  et 34 bits pour les messages textes (ou rappels) car nous étions limités par la taille de l’écran LCD utilisé qui ne pouvait afficher que 32 caractères.

Afin de pouvoir délimiter les différentes parties de chaque message nous avons opté pour de point-virgules afin de faciliter l’ unpacking du message 

La nature des messages était également toujours  connu au préalable des int ou des char et donc on convertissait les informations extraites si cela est nécessaire.

 

VI-Justification des choix techniques

 

Bluetooth

Nous avons choisi Bluetooth comme technologie de communication car celle-ci est relativement facile d’accès et d’utilisation. En effet, nous avions à disposition des modules Bluetooth compatibles avec Arduino et notre langage de programmation disposait de fonctions prédéfinies permettant la communication via la technologie Bluetooth.

Cependant, cette technologie de communication a une très faible portée qui n’est pas adapté à l’utilisation finale de notre objet. Dans un futur développement de notre objet, il faudrait changer de protocole de communication. Pour notre premier prototype ici présenté, utiliser le Bluetooth suffisait amplement.

 

Arduino uno

Nous avons choisi comme microcontrôleur une carte Arduino UNO car sa programmation est relativement simple et de nombreuses ressources sont présentes sur internet. Elle est de plus compatible avec un grand nombre de composants ce qui nous laissait une large marge de manœuvre dans le choix des autres composants. Enfin, chaque membre de notre équipe avait déjà travaillé avec Arduino, ce qui réduisait notre temps de formation. 

pourquoi uno voir c’est quoi la différence 

 

Afficheur LCD

Nous voulions au départ utiliser un écran LCD graphique couleur afin de pouvoir afficher des photos et des images. Toutefois suite à un problème de matériel, nous n’avons eu à disposition qu’un écran LCD permettant d’afficher du texte uniquement. Suite à un échange avec des clients potentiels nous avons établi que cet afficheur était amplement suffisant pour un premier prototype. De plus, la petite taille du message possible à afficher sur l’écran n’est pas un problème car cela convient mieux aux enfants ciblés, des messages trop grands pouvant les perturber ou les rebuter. 

 

Neopixel unique

Nous avons choisi d’utiliser une LED neopixel car celle-ci peut changer de couleur, ce qui permet d’avoir à la fois des lumières douces et vives afin d’attirer l’attention de l’enfant. De plus, ce composant est facile d’utilisation, possède une forte luminosité (une seule LED est nécessaire) et compatible avec arduino.

 

Imprimer en 3D 

Nous avons décidé d’imprimer l’objet avec une imprimante 3D pour ce premier prototype pour des raisons pratiques. Ce procédé est simple, rapide et disponible directement au fablab de notre école. Il est aussi compatible avec nos besoins puisque nous avons choisi de faire nous même le design.

Le plastique imprimé est assez solide pour protéger tout le matériel électronique, et donc adapté à une utilisation par des enfants.

 

MIT App Inventor

Pour programmer l’application sur smartphone, nous avons utilisé le langage de programmation proposée par le MIT qui s’appelle App Inventor. Ce langage de programmation est assez limité dans ses possibilités, tant techniques qu’esthétiques. Nous avons toutefois choisi d’utiliser cela à cause de contraintes de temps. App Inventor était le seul langage de programmation d’application que les membres de notre groupe connaissaient. Au vu du temps qui était consacré à ce projet, nous n’avions pas le temps de nous former à d’autres langages. Nous nous sommes donc tournés vers App Inventor qui est facile d’utilisation et qui offre des possibilités suffisantes pour les besoins d’un prototype.

 

VII-Perspectives

 

Après la conception de ce premier prototype, notre objet est encore loin d’être terminé, et nous pourrions non seulement améliorer les fonctionnalités déjà existante, mais aussi en développer d’autres.

Afin d’améliorer les fonctionnalités existantes, nous pourrions :

  • Intégrer une batterie à l’intérieur de l’objet
  • Utiliser une autre technologie réseau, adaptée à la communication longue distance (de l’ordre du kilomètre) 
  • Implémenter des fonctionnalités temporelles, qui permettraient aux parents de programmer des rappels à l’avance 
  • Utiliser plusieurs neopixels et LED, avec la possibilité de programmer des motifs lumineux

De plus, afin d’améliorer notre objet, nous pourrions développer d’autres fonctionnalités :

  • Remplacer l’écran existant avec un écran couleur, qui pourraient afficher des photos et des pictogrammes en plus du texte
  • Développer la possibilité d’émettre des musiques, ou bien des messages vocaux pré-enregistrés
  • Utiliser un autre langage de programmation, afin d’avoir plus de liberté et de possibilité pour le développement de l’application mobile
  • Retravailler le design, avec en particulier la possibilité de faire un objet entièrement translucide
  • Faire une base de données permettant aux parents d’utiliser des musiques déjà existantes, ou d’en rajouter
  • Développer des fonctionnalités de localisation, comme un suivi GPS ou une aide pour faire des trajets habituels

 

VIII-Sources: 

 

[1]Arduino UNO Home Automation using Bluetooth HC05 module:

https://create.arduino.cc/projecthub/iot-enthusiast/arduino-uno-home-automation-using-bluetooth-hc05-module-12f2aa

consulté le 17/12/2019

 

[2]Brancher un haut-parleur à l’Arduino:

http://electroniqueamateur.blogspot.com/2015/07/brancher-un-haut-parleur-larduino.html

consulté le 17/12/2019

 

[3]Mise en oeuvre I2C vers LCD carte chinoise sur Arduino:

http://blog.f8asb.com/2014/03/01/mise-en-oeuvre-i2c-vers-lcd-carte-chinoise-sur-arduino/

consulté le 17/12/2019

 

[4]Arduino – Apprendre à développer pour créer des objets intelligents:

https://www.editions-eni.fr/open/mediabook.aspx?idR=8457f073dc836b48a324c65a97bdc71b

consulté le 17/12/2019

 

[5]Utiliser un module Bluetooth HC-05 avec Arduino: 

https://eskimon.fr/tuto-arduino-907-utiliser-un-module-bluetooth-hc-05-avec-arduino,

consulté le 17/12/2019

[6]HOW TO CONNECT SPEAKER TO ARDUINO | DIY | ARDUINO LESSONS:

https://www.youtube.com/watch?time_continue=1&v=MWwqIDTJSPY&feature=emb_title

consulté le 17/12/2019

 

[7]Audio Player using ARDUINO [sd card interface]:

https://www.youtube.com/watch?v=uSUZbLlRi1g&t=103s

consulté le 17/12/2019

Series Navigation<< Aide à l’apprentissage pour les enfants atteints de troubles déficit d’attention :Présentation des personas

Laisser une réponse

Votre adresse e-mail ne sera pas publiée.