IMA4 2018/2019 P32 : Différence entre versions
(→Choix techniques : matériel et logiciel) |
|||
(136 révisions intermédiaires par 3 utilisateurs non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
+ | <include nopre noesc src="/home/pedago/pimasc/include/video-RobeAugmentee-iframe.html" /> | ||
__TOC__ | __TOC__ | ||
<br style="clear: both;"/> | <br style="clear: both;"/> | ||
Ligne 13 : | Ligne 14 : | ||
==Description== | ==Description== | ||
− | + | ||
− | + | Robe augmentée est un projet qui à partir d'une robe ordinaire nous allons pouvoir créer une robe spectaculaire en lui donnant une tout autre dimension et un tout autre regard c'est à dire en y ajoutant du dynamisme, de la lumière et de l'interaction avec celui qui la porte. | |
+ | |||
+ | En effet , nous allons réaliser des animations lumineuses en fonction du rythme cardiaque pour avoir une robe resplendissante. | ||
+ | Pour réaliser cela , il faudra prévoir une carte électronique pour le microcôntroleur ,un capteur de fréquence cardiaque et des leds. | ||
+ | Même si nous on a choisi une robe, ce projet peut être adaptée à tout types de vêtements, de tissus et d'accessoires. | ||
==Objectifs== | ==Objectifs== | ||
+ | |||
+ | L'objectif principale est d'avoir une robe lumineuse en fonction du rythme cardiaque. Cela veut dire que selon une valeur du rythme cardiaque ,on doit pouvoir créer des animations lumineuse . La robe s'illumine normalement mais dès qu'un certain seuil de la fréquence cardiaque est dépassé la luminosité de la robe change également. | ||
Pour ce projet les défis seront de: | Pour ce projet les défis seront de: | ||
− | * | + | *Mettre en place les sources de lumière. |
− | * | + | *intégrer de l'animation à l'éclairage |
*Combiner l'ensemble vestimentaire et la technique apporter tout en gardant le côté esthétique. | *Combiner l'ensemble vestimentaire et la technique apporter tout en gardant le côté esthétique. | ||
Ligne 29 : | Ligne 36 : | ||
Il existe actuellement une grande tendance de vêtements lumineux. Les pièces vont s'allumer ou s'éteindre selon la commande. | Il existe actuellement une grande tendance de vêtements lumineux. Les pièces vont s'allumer ou s'éteindre selon la commande. | ||
− | Notre produit va nous permettre de joindre l'utile à l'agréable. On va apporter de l'animation à cette éclairage en y ajoutant des capteurs de rythme cardiaque | + | Notre produit va nous permettre de joindre l'utile à l'agréable. On va apporter de l'animation à cette éclairage en y ajoutant des capteurs de rythme cardiaque qui va faire varié la luminosité de ce vêtement. |
==Analyse du premier concurrent== | ==Analyse du premier concurrent== | ||
Ligne 101 : | Ligne 108 : | ||
==Cahier des charges== | ==Cahier des charges== | ||
− | 1. | + | 1. Conception et réalisation des cartes électroniques : Nous allons réaliser une carte sur laquelle on va mettre le microcntrôleur .Ce dernier constitue l'élément principal de notre projet. A partir du microcontrôleur nous allons pouvoir contrôler l'éclairage et lire également le signal issu du capteur de fréquence cardiaque. Nous allons fixer également dessus les leds, l'alimentation et le port USB qui servira à programmer le microcôntroleur. |
− | 2. | + | 2. Programmation du microcontrôleur: Pour garantir l'animation de la robe en fonction du rythme cardiaque nous allons devoir écrire un programme qui lit le signal issu du capteur ,organiser des fonctions d'animations des leds et commander leurs éclairages. |
− | 3. | + | 3. L'assemblage: Dans cette phase, nous allons fixer les leds aux fibres optique et assembler tous les éléments physiques de notre projet sur la robe. Il faut harmoniser l'ensemble tout en gardant le côté esthétique de la robe et obtenir ainsi une robe spectaculaire. |
− | |||
− | |||
==Choix techniques : matériel et logiciel== | ==Choix techniques : matériel et logiciel== | ||
Ligne 117 : | Ligne 122 : | ||
* 1 capteur de fréquence cardiaque [https://www.mouser.fr/ProductDetail/SparkFun/SEN-11574?qs=%2fha2pyFadujajXN5UxBZ3wj188rgoc2badthdTfKMOEFtmhnssM%2fyG3fGL2dhKKq] | * 1 capteur de fréquence cardiaque [https://www.mouser.fr/ProductDetail/SparkFun/SEN-11574?qs=%2fha2pyFadujajXN5UxBZ3wj188rgoc2badthdTfKMOEFtmhnssM%2fyG3fGL2dhKKq] | ||
* 1 rouleau de fibre optique striée [http://www.luxeum.fr/fibre-optique-striée-c2x18333091] | * 1 rouleau de fibre optique striée [http://www.luxeum.fr/fibre-optique-striée-c2x18333091] | ||
− | * des terminaisons de fibres optiques | + | * des terminaisons de fibres optiques[http://www.luxeum.fr/terminaison-deco-cristal-c2x18555837] |
* 4 pilotes de LEDS TLC5947 [https://fr.farnell.com/texas-instruments/tlc5947dap/ic-led-driver-linear-32-tssop/dp/1755259?st=tlc%205947] | * 4 pilotes de LEDS TLC5947 [https://fr.farnell.com/texas-instruments/tlc5947dap/ic-led-driver-linear-32-tssop/dp/1755259?st=tlc%205947] | ||
* 1 Microcontroleur ATmega 328p [https://fr.farnell.com/microchip/atmega328p-aur/mcu-8-bits-atmega-20mhz-tqfp-32/dp/2425124?st=atmega328p] | * 1 Microcontroleur ATmega 328p [https://fr.farnell.com/microchip/atmega328p-aur/mcu-8-bits-atmega-20mhz-tqfp-32/dp/2425124?st=atmega328p] | ||
* 1 oscillateur 16MHz [https://fr.farnell.com/txc/7a-16-000maaj-t/xtal-16-000mhz-18pf-smd-5-0x3/dp/1841946?st=un%20oscillateur%2016Mhz] | * 1 oscillateur 16MHz [https://fr.farnell.com/txc/7a-16-000maaj-t/xtal-16-000mhz-18pf-smd-5-0x3/dp/1841946?st=un%20oscillateur%2016Mhz] | ||
* 1 resistance de 10k ohm [https://fr.farnell.com/te-connectivity/cpf0201d7k87c1/resistance-7k87-0-5-50ppm-0201/dp/2117876] | * 1 resistance de 10k ohm [https://fr.farnell.com/te-connectivity/cpf0201d7k87c1/resistance-7k87-0-5-50ppm-0201/dp/2117876] | ||
− | * 1 resistance de 220 ohm[ | + | * 1 resistance de 220 ohm |
+ | * 2 condensateurs de 22 pF (mauvais format) [https://fr.farnell.com/yageo/ca0612jrnpo9bn220/cond-22pf-50v-5-c0g-np0-0612-cms/dp/156693?st=condensateur%20CMS%2022pF] | ||
* 1 Batterie [https://www.mouser.fr/ProductDetail/Ultralife/U9VLJPBK?qs=sGAEpiMZZMuXcNZ31nzYhVK%2fQG01KKrTI18v8GcEHEE%3d] | * 1 Batterie [https://www.mouser.fr/ProductDetail/Ultralife/U9VLJPBK?qs=sGAEpiMZZMuXcNZ31nzYhVK%2fQG01KKrTI18v8GcEHEE%3d] | ||
* Gaine thermorétractable pour fixer les fibres optiques aux leds [https://www.amazon.fr/Gaine-Thermor%C3%A9tractable-560-Tailles-Ratio/dp/B071D7LJ31/ref=sr_1_1?ie=UTF8&qid=1547726015&sr=8-1&keywords=gaine+thermo+retractable] | * Gaine thermorétractable pour fixer les fibres optiques aux leds [https://www.amazon.fr/Gaine-Thermor%C3%A9tractable-560-Tailles-Ratio/dp/B071D7LJ31/ref=sr_1_1?ie=UTF8&qid=1547726015&sr=8-1&keywords=gaine+thermo+retractable] | ||
Ligne 143 : | Ligne 149 : | ||
{| class="wikitable" | {| class="wikitable" | ||
− | !Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total | + | !Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Heures S11 !! Heures S12 !! Total |
|- | |- | ||
| Analyse du projet | | Analyse du projet | ||
− | | | + | | 4 |
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |4 | ||
+ | |- | ||
+ | | Choix du prototype | ||
+ | | | ||
+ | | 4 | ||
+ | |2 | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |4 | ||
+ | |- | ||
+ | | Schéma électronique | ||
+ | | | ||
+ | | | ||
+ | |2 | ||
+ | |4 | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |6 | ||
+ | |- | ||
+ | | Routage des Cartes | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |4 | ||
+ | |4 | ||
+ | |4 | ||
+ | |4 | ||
+ | |2 | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |16 | ||
+ | |- | ||
+ | | Etudes des fibres optiques | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |2 | ||
+ | |2 | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |4 | ||
+ | |- | ||
+ | | Soudure et test des cartes électronique | ||
+ | | | ||
| | | | ||
| | | | ||
Ligne 155 : | Ligne 241 : | ||
| | | | ||
| | | | ||
+ | |4 | ||
+ | |4 | ||
| | | | ||
| | | | ||
+ | |8 | ||
+ | |- | ||
+ | | Programmation | ||
+ | | | ||
+ | | | ||
| | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |4 | ||
+ | | | ||
+ | |4 | ||
+ | |- | ||
+ | | Assemblage sur la robe | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |4 | ||
+ | |4 | ||
|} | |} | ||
− | == | + | ==Semaine 1&2== |
− | Tout d'abord | + | Tout d'abord nous avons établie ce que sera le modèle de notre robe à la fin du projet. |
+ | Nous allons partir sur une robe à laquelle nous allons ajouter une carte électronique avec tous nos composants dessus. Les fibres optiques partiront de l'avant de la robe ensuite nous allons les faire contourner tout autour de la robe grâce aux propriétés de réfractions et de se mouvoir que possède la fibre optique. | ||
+ | |||
+ | [[Fichier:vbv.jpeg]] | ||
+ | |||
− | |||
− | Le grand challenge de notre projet consistant à fixer les fibre optiques aux leds, nous avons au cours de cette séance cherché le type de leds et de fibres optiques qui pourraient convenir à notre projet | + | Le grand challenge de notre projet consistant à fixer les fibre optiques aux leds, nous avons au cours de cette séance cherché le type de leds et de fibres optiques qui pourraient convenir à notre projet. Au départ on était parti sur des leds RGB cms ,mais cela s’avérer compliqué de trouver un moyen de les connecter aux fibres optiques. Nous nous sommes donc convenus sur des leds RGB traversantes où nous allions nous inspirer de la technique utilisée sur le tissu commandé chez Lumigram pour éclairer nos Leds. En effet cette technique consiste à grouper plusieurs fibres optiques en un nœud et de les diriger en face de la led pour recevoir et diffuser la lumière. Nous avons aussi corrigé la liste de matériels selon les recommandations de nos encadrants et ainsi la finalisé. |
#''' LEDs ''' | #''' LEDs ''' | ||
Les caractéristiques sont: | Les caractéristiques sont: | ||
− | Leds RGB à cathode commune | + | Ce sont des Leds RGB à cathode commune (Red, Green Blue). Nous avons choisi celle ci pour avoir un grand choix de couleur de la led mais aussi parce qu'elles ont une grande intensité lumineuse . A partir du rouge, du vert et du bleu , nous pouvons avoir huit combinaisons possibles de couleur. Elle possède également un angle de diffusion de 30°, ce qui nous convient pour notre projet , car ainsi le maximum de la lumière pourra être diffusé dans les fibres optiques. |
+ | |||
+ | [[Fichier:wu.jpeg | center | 400px]] | ||
Ligne 177 : | Ligne 302 : | ||
On a choisi les fibres optiques striée. c'est à dire avec des points lumineux tous les 2 cm le long de la fibre optique et possède un diamètre de 1mm. | On a choisi les fibres optiques striée. c'est à dire avec des points lumineux tous les 2 cm le long de la fibre optique et possède un diamètre de 1mm. | ||
Au bout de ces fibres nous allons ajouter des kits de terminaisons trouvés sur le site sur lequel on a commandé les fibres optique pour recueillir la lumière diffuse au bout des fibres. | Au bout de ces fibres nous allons ajouter des kits de terminaisons trouvés sur le site sur lequel on a commandé les fibres optique pour recueillir la lumière diffuse au bout des fibres. | ||
+ | |||
+ | [[Fichier:qw.jpeg | 300px]] | ||
+ | [[Fichier:op.jpeg | 300px]] | ||
==Semaine 3 == | ==Semaine 3 == | ||
Nous avons commencé à réaliser la carte PCB sur laquelle nous allons fixer les LEDs , les pilotes de LEDs , le microcontrôleur atmega 328p et le capteur de fréquence cardiaque. Nous utilisons Fritzing , un logiciel de conception de circuit imprimé gratuit et facile d'utilisation. | Nous avons commencé à réaliser la carte PCB sur laquelle nous allons fixer les LEDs , les pilotes de LEDs , le microcontrôleur atmega 328p et le capteur de fréquence cardiaque. Nous utilisons Fritzing , un logiciel de conception de circuit imprimé gratuit et facile d'utilisation. | ||
− | Nous avons décidé d'utiliser 32 Leds. Le pilote de leds TLC 5947 que nous utilisons contrôle 24 canaux en sorties. Comme nous disposons des LEDs RGB, donc on ne peut connecter sur chaque pilote que 8 Leds. On n'en déduit qu'on a donc besoin de 4 TLC 5947.Nous avons consulté la datasheet du TLC 5947 pour réaliser son | + | Nous avons décidé d'utiliser 32 Leds. Le pilote de leds TLC 5947 que nous utilisons contrôle 24 canaux en sorties. Comme nous disposons des LEDs RGB, donc on ne peut pas connecter sur chaque pilote que 8 Leds. On n'en déduit qu'on a donc besoin de 4 TLC 5947.Nous avons consulté la datasheet du TLC 5947 pour réaliser son schéma. De même nous avons consulté le schema de l'arduino UNO pour voir comment l'adapter à notre atmega 328p. |
+ | |||
+ | ==Semaine 4 & 5 == | ||
+ | |||
+ | La carte électronique est composée essentiellement de 4 parties principales: | ||
+ | |||
+ | * Partie microcôntroleur: | ||
+ | cette partie est constitué d'un atmega 328p.Mais avant de le rendre fonctionnel on a besoin d'autres composant pour le configurer. Parmis le elemets de configuration de l'atmega on a | ||
+ | un bus spi que l'on va utiliser dans un premier temps pour lancer un bootloader l'atmega328p avant de lui envoyer des instructions par liason serie.Cette communication passera par les interfaces SPI (MOSI, SCK ,MISO) que l'on retrouve aussi sur le microcôntroleur sur les port PB3,PB4,PB5. | ||
+ | |||
+ | Un ftdi qui va justement assurer la liaison serie entre port USB et l'atmega 328p et sur lequel nous allons programmer .La transmission et la reception des instructions entre le FTDI et l'atmega se fera sur leur port respectif TXD et RXD.On a ajouter des leds de test sur le microcontrôleur. | ||
+ | |||
+ | * Partie USB: | ||
+ | Elle est constitué d'un port USB et d'un FTDI pour programmer l'atmega 328p . En effet le code pour programmer l'interaction des lumières avec le capteur de fréquence cardiaque sera programmer dans l'atmega 328p après la soudure du composant sur la carte car il s'agit d'un composant cms donc il ne peut être programmer avant. | ||
+ | |||
+ | * la partie alimentation : | ||
+ | On a ensuite la partie d'alimentation constituer d'un regulateur de tension (78ADJ) pour reguler la tension de 9v à 5v afin d'eviter la surchauffe des composants .On y a ajouter des leds de tests , une led bleu pour tester si on une tension de 5v , une led verte pour tester la tension de 9v. On a également un switch (s10) qui servira pour le reset du microcôntoleur. | ||
+ | |||
+ | * La partie Leds: | ||
+ | Elle est constituée d'un pilotes de Leds TLC5947 et des Leds. Il pilote 24 leds mais comme nous on utilise des Leds RGB ,on ne pourra en mettre que huit. La transmission des informations se fait sur les port D4 D5 D6 des . | ||
+ | |||
+ | |||
+ | Le schématique du circuit principal : | ||
+ | [[Fichier:77.jpeg]] | ||
+ | |||
+ | Le breadboard: | ||
+ | [[Fichier:luu.jpeg]] | ||
+ | |||
+ | ==Semaine 6 == | ||
+ | |||
+ | On a établit le schéma d'implantation des PCB sur la robe pour savoir comment les router. On aura 5 morceaux de PCB: 1 morceau regroupant le FTDI et l'Atmega 328p, 4 morceaux constitués chacun d'un TLC 5947 et d'une rangée de 8 leds RGB alignés. Ces morceaux seront connectés entre eux avec des câbles en nappes pour avoir un meilleur rendu visuel. Ensuite au bout des nappes on va y coller des rubans de tissus pour former une ceinture que l'on attachera sous forme d'un noeud. | ||
+ | |||
+ | On a ensuite chercher le modèle de robe qui pourrait convenir à notre ceinture électronique. | ||
+ | |||
+ | Notre encadrant nous a demandé de réfléchir si on devait utiliser 3 piles de boutons à 3V ou une batterie à 9V. On a finalement décidé d'utiliser une batterie de 9v car elle aurait une durée plus longue que 3 piles de 3V en série. On mettra un sac en étui sur la ceinture pour mettre dedans la batterie. | ||
+ | |||
+ | [[Fichier:nn.jpeg]] | ||
+ | |||
+ | ==Semaine 7== | ||
+ | |||
+ | Nous avons testé les propriétés des fibres optiques sur les LEDS notamment leurs conductions et en même temps voir comment les assembler sur notre robe. On a groupé les fibres optiques en une grappe qu'on a lié sur la led à l'aide d'un scotch.On a remarqué qu'il y'en avait qui diffusaient bien la lumière et d'autres qui ne diffusaient pas. Pour remédier à cela nos encadrants nous ont conseillé de les poncer car cela permet une meilleur diffusion de la lumière à travers les fibres optiques. | ||
+ | La même technique de regrouper plusieurs fibres optiques sur une LED sera réutilisé sur notre Robe. | ||
+ | On a également continuer le routage de notre carte électronique en corrigeant les erreurs soulevés par notre encadrant sur notre PCB | ||
+ | |||
+ | [[Fichier:yy.jpeg]] | ||
+ | |||
+ | [[Fichier:ll.jpeg]] | ||
+ | |||
+ | [[Fichier:vv.jpeg]] [[Fichier:ttttt.jpeg]] | ||
+ | |||
+ | |||
+ | ==Semaine 8== | ||
+ | |||
+ | Cette semaine, nous avons déterminé notre PCB finale. Nous le divisons en 5 parties. | ||
+ | |||
+ | [[Fichier:lilu.jpeg]] | ||
+ | |||
+ | Nous avons receptionné la commande de 2 types de fibres optiques; | ||
+ | |||
+ | *Des fibres optiques plastiques de 1mm de diamètre striée par pas de 3cm. | ||
+ | *Des fibres optiques plastiques de 0.50mm de diamètre diffuseur avec des terminaisons décoratives. | ||
+ | |||
+ | Nous avons commencé par testé la 1ère catégories de fibres optiques. La luminosité tous les pas de 3cm n'était pas aussi forte qu'on l’espérait . On a remarqué que l'éclairage était beaucoup plus importante aux extrémités que tout le long de la fibre optique. Pour les connecter sur la Led on a utilisé une gaine thermorétractable de 5mm. On a du assembler 15 fibres optiques de 1mm chacune pour tenir dans la gaine. Elles sont courbées et pourraient alourdir la robe. | ||
+ | |||
+ | La 2ème catégories de fibres optiques sont beaucoup plus fines, moins courbées et donc par conséquent n'alourdirait pas la robe. Par contre pour les faire tenir dans une gaine de 5mm de diamètre,il faut une quantité assez importante de fibres optiques, mais l'effet avec les terminaisons décoratives diffuseurs était très esthétique . | ||
+ | |||
+ | Un problème lié à la connexion des fibres optiques et des leds s'est relevé. Pour répondre à cette problématique nous avons suggérer une solution que nous allons tester: | ||
+ | utiliser un décapeur thermique pour réduire le diamètre de la gaine d'un côté | ||
+ | |||
+ | ==Semaine 9== | ||
+ | Nous avons reçu nos cartes pcb et nous avons entamer la soudure des composants sur la carte. Nous avons commencer par souder la carte principale qui comporte le microcontrôleur , la prise USB , le FTDI, et la partie d'alimentation. Notre encadrant nous a aidé à souder l'atmega 328pb et le quartz qui étaient assez complexe à souder sur la carte. | ||
+ | Nous avons tout d'abord commencé à souder les composants directement lié à l'atmega328pb pour pouvoir le tester et s'assurer de son bon fonctionnement. Nous l'avons ensuite tester en le connectant à un autre arduino grâce à un connecteur que nous avons soudé sur la carte. On a eu quelque difficulté à le tester du fait qu' on a utilisé un atmega328pb alors que le système de configuration d'arduino reconnaît les microcontrôleurs du type atmega 328p. On a dû modifier le système arduino. On a lancé sur l'interface de développement intégré arduino un simple programme qui commande l'affichage d'une Led sur notre carte . La led s'est allumé donc notre l'atmega fonctionne bien. Nous avons ensuite soudé la partie qui va gérer l'alimentation des TLC et le port USB. | ||
+ | |||
+ | [[Fichier:444.jpeg]] | ||
+ | |||
+ | ==Semaine 10== | ||
+ | |||
+ | La semaine dernière, nous avons soudé la carte principale. Pour notre section LED, nous avons également 4 cartes à circuit imprimé à souder. Notre encadrant nous a aidé à souder la TLC, qui a 28 petites broches et est très difficile à souder. Le travail restant sauf la résistance du condensateur, le plus important étant de 8 leds. Il y a quatre broches sur chaque led, la plus longue est une anode, nous soudons toutes les LED correspondant à la carte de circuit imprimé. Après avoir soudé toutes les cartes, nous les connectons avec une sangle. Nous avons testé le tour de taille de la jupe et avons finalement décidé de ne prendre que 3 cartes de TLC, placées devant la jupe et sur les côtés gauche et droit. | ||
+ | |||
+ | [[Fichier:55555.jpeg]] [[Fichier:6666.jpeg]] | ||
+ | |||
+ | Dans le même temps, nous avons également démarré la partie Programmation cette semaine. Notre encadrant nous a fourni les fichiers pertinents, nous l'avons appris et avons essayé de programmer nos composants. | ||
+ | |||
+ | ==Semaine 11== | ||
+ | L'interaction des leds en fonction de la fréquence cardiaque nécessite de programmer le microcontrôleur à cet effet. Le programme a été réalisé en langage C et comprend 4 grandes fonctions. Voir en annexes toutes les fonctions. | ||
+ | |||
+ | *Fonctions analogues | ||
+ | |||
+ | Tout d'abord on commence par lire la valeur du signal issue du capteur de fréquence cardiaque . Ce dernier nous l'avons branché sur le port PD7 de l'atmega et on le porte tout en haut sur le doigt majeur. Pour pouvoir lire le signal issu du capteur on a utilisé les fonctions convertisseurs analogique numérique. | ||
+ | |||
+ | #include <avr/io.h> | ||
+ | #include<analog.h> | ||
+ | /** Fonctions pour le convertisseur analogique / numerique **/ | ||
+ | void ad_init(unsigned char channel) { | ||
+ | ADCSRA |= (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0); //Clock_ADC = Clock / 128 = 125 000 Hz | ||
+ | ADMUX |= (1<<REFS0) | (1<<ADLAR); //AVCC with external capacitor at AREF pin | ||
+ | ADMUX = (ADMUX&0xf0) | channel; //Channel = ADC0, ADC1,...,ADCN | ||
+ | ADCSRA |= (1<<ADEN); | ||
+ | } | ||
+ | unsigned int ad_sample(void) { | ||
+ | ADCSRA |= (1<<ADSC); //Start conversion | ||
+ | while(bit_is_set(ADCSRA, ADSC)); //Attend la fin de la conversion | ||
+ | return ADCH; //Retourne le registre 8 bits en virant les 2 de poids faible | ||
+ | } | ||
+ | |||
+ | *Fonctions serial et TLC5947 | ||
+ | |||
+ | Les fonctions serial permettent la communication par liaison série avec l'atmega328p. | ||
+ | Dans les fonctions TLC5947 , nous avons commencé par inclure la bibliothèque TLC5747.h , ensuite on a une fonction d'initialisation des pilotes de leds où nous configurons les 24 canaux en sorties. On a une fonctions set_LED_RGB qui allume les leds dans le bon ordre et une fonction set_LED_Drivers qui va demander aux autres leds d'ignorer un signal qui ne leur est pas destiné en restant éteinte. | ||
+ | |||
+ | |||
+ | *Fonction principale | ||
+ | |||
+ | Nous allons appeler toutes les fonctions précédemment décrites ci haut. Dans le tableau indirect nous avons mis l'ordre dans lequel les leds se suivent , le tableau d cycle contient les 8 combinaison de couleur possible que l'on peut faire avec du rouge, du vert et du bleu et le black correspond à l'état éteint. | ||
+ | |||
+ | |||
+ | int indirect[]={20,19,18,23,22,21,2,1,0,5,4,3,8,7,6,11,10,9,14,13,12,17,16,15}; | ||
+ | color LED_state[NB_LEDS]; | ||
+ | color cycle[]={{64,0,0},{0,64,0},{0,0,64},{64,64,0},{0,64,64},{64,0,64},{64,64,64}}; | ||
+ | color black={0,0,0}; | ||
+ | int pulse=0;//input signal | ||
+ | int pulse_hold=100;//determine which signal to count | ||
+ | |||
+ | Nous avons configuré un timer et autorisé des interruptions chaque seconde pour avoir en tout temps une valeur précise du capteur de fréquence cardiaque. Nous avons ensuite créer deux types d'animations selon que la valeur de la fréquence cardiaque soit inférieure ou supérieure à 100. | ||
+ | |||
+ | /*initialisation du timer*/ | ||
+ | void init_timer(void){ | ||
+ | TCCR1A =0x02; | ||
+ | TCCR1B =0x03; | ||
+ | OCR1AL =0x09; | ||
+ | OCR1AH =0x3D; | ||
+ | TIMSK1 =0x02; | ||
+ | } | ||
+ | |||
+ | /*interruption après une seconde*/ | ||
+ | ISR(TIMER1_COMPA_vect){ | ||
+ | ad_init(7); | ||
+ | pulse=ad_sample(); | ||
+ | } | ||
+ | |||
+ | |||
+ | En effet, si la fréquence est inférieure à 100 , les leds vont s'allumer une à une dans l'ordre , c'est à dire que quand une led est allumée, la led suivante s 'allume et la précédente s'éteint et ainsi de suite . Quand le tour de toutes les leds et fini, elles changent de couleur et refont le même tour. Le temps d'éclairage équivaut à la valeur du signal en millisecondes. | ||
+ | |||
+ | /*fonction à executer si la frequence cardiaque est inférieur à 100*/ | ||
+ | else{ | ||
+ | for(c=0;c<NB_COLORS;c++){ | ||
+ | if(pulse>pulse_hold) goto suite; | ||
+ | for(l=0;l<NB_LEDS;l++){ | ||
+ | for(i=0;i<NB_LEDS;i++) { | ||
+ | LED_state[i]=(i==l)?cycle[c]:black; | ||
+ | set_LED_RGB(LED_state,indirect,NB_LEDS); | ||
+ | _dyn_delay_ms(pulse); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | Lorsque la fréquence est supérieur à 100 nous allumons toutes les leds consécutivement et une fois toutes allumées , elles s'éteignent aussi consécutivement passe à une autre couleur. Le temps d'éclairage équivaut à la moitié de la valeur du signal en millisecondes. | ||
+ | |||
+ | if (pulse> pulse_hold){ | ||
+ | for(c=0;c<NB_COLORS;c++){ | ||
+ | if(pulse<pulse_hold) goto suite; | ||
+ | for(i=0;i<NB_LEDS;i++) { | ||
+ | LED_state[i]=cycle[c]; | ||
+ | set_LED_RGB(LED_state,indirect,NB_LEDS); | ||
+ | _dyn_delay_ms(pulse/2);} | ||
+ | |||
+ | |||
+ | |||
+ | for(i=0;i<NB_LEDS;i++) { | ||
+ | LED_state[i]=black; | ||
+ | set_LED_RGB(LED_state,indirect,NB_LEDS); | ||
+ | _dyn_delay_ms(pulse/2);} | ||
+ | } | ||
+ | |||
+ | ==Semaine 12== | ||
+ | |||
+ | Après avoir soudé toutes les cartes et implémenté les fonctions de lecture du capteur et de configuration de l'éclairage en fonction de la fréquence cardiaque, nous avons ensuite tout assembler sur la robe . Nous avons mesuré le tour de taille de la jupe et avons décidé d’utiliser seulement 3 carte des Leds. Ils sont placés à l'avant, à gauche et à droite de la jupe. Nous avons placé la carte principale derrière la robe . | ||
+ | Enfin, nous avons fixé les fibres optiques sur les leds au moyen des gaines rétro rétractables que nous avons adapter sur les dimension des leds et des fibres optiques. Nous avons aussi poncer les fibres optiques pour leurs apporter beaucoup plus d'éclat. | ||
+ | |||
+ | [[Fichier:nmn.jpeg]] | ||
=Documents Rendus= | =Documents Rendus= | ||
+ | |||
+ | [[Média:p32_rapport.pdf]] | ||
+ | |||
+ | [[Média:code_p32.zip]] | ||
+ | |||
+ | [[Média:schématique_p32.zip]] |
Version actuelle datée du 17 juin 2019 à 21:26
Sommaire
Présentation générale
Robe augmentée
Etudiants :Xuelu Yan & Brinda Muzakare
Encandrants :M. Xavier Redon ,M. Thomas Vantroys et M. Alexandre Boé
Description
Robe augmentée est un projet qui à partir d'une robe ordinaire nous allons pouvoir créer une robe spectaculaire en lui donnant une tout autre dimension et un tout autre regard c'est à dire en y ajoutant du dynamisme, de la lumière et de l'interaction avec celui qui la porte.
En effet , nous allons réaliser des animations lumineuses en fonction du rythme cardiaque pour avoir une robe resplendissante. Pour réaliser cela , il faudra prévoir une carte électronique pour le microcôntroleur ,un capteur de fréquence cardiaque et des leds. Même si nous on a choisi une robe, ce projet peut être adaptée à tout types de vêtements, de tissus et d'accessoires.
Objectifs
L'objectif principale est d'avoir une robe lumineuse en fonction du rythme cardiaque. Cela veut dire que selon une valeur du rythme cardiaque ,on doit pouvoir créer des animations lumineuse . La robe s'illumine normalement mais dès qu'un certain seuil de la fréquence cardiaque est dépassé la luminosité de la robe change également.
Pour ce projet les défis seront de:
- Mettre en place les sources de lumière.
- intégrer de l'animation à l'éclairage
- Combiner l'ensemble vestimentaire et la technique apporter tout en gardant le côté esthétique.
Analyse du projet
Positionnement par rapport à l'existant
Il existe actuellement une grande tendance de vêtements lumineux. Les pièces vont s'allumer ou s'éteindre selon la commande. Notre produit va nous permettre de joindre l'utile à l'agréable. On va apporter de l'animation à cette éclairage en y ajoutant des capteurs de rythme cardiaque qui va faire varié la luminosité de ce vêtement.
Analyse du premier concurrent
LUMIGRAM est un fabricant de produits textiles à base de tissus lumineux en fibres optiques. Le tissu lumineux est disponible dans une douzaine de couleurs.
le domaines d’applications sont:
- l’habillement
- décoration
- architecture intérieure
- spectacles (costumes, scène)
Technologies utilisés:
- Fibre optique
- LED
- Batterie rechargeable
Analyse du second concurrent
Brochier Technologies est une entreprise spécialisé dans les textiles lumineux servant avant tout à être vu pour des questions de sécurité, de publicité ou d'esthétique
Ils utilisent la technologie Lightex particulièrement adaptée pour les vêtements de sécurité. Dans le domaine de la santé ils ont mis au point une couverture lumineuse capable de traiter la jaunisse du nourrisson.
Caractéristiques électroniques:
- LEDs de puissances différentes.
- Pilotage électronique des diodes ( DMX, DALI, Bluetooth, WIFI, RF).
- Basse tension (5V, 12V, 24V ou secteur)
- Faible consommation électrique.
- Durée de vie : 50 000 à 100 000h.
http://www.brochiertechnologies.com/
Scénario d'usage du produit ou du concept envisagé
- Scénaro1: Julien est un auto-entrepreneur qui se souci du bien être de ses employés. Alors il décide de réaliser une petite expérience dans son entreprise qui consiste à vérifier dans quel état sont ses employés à leurs arrivés et comment ils sont à la fin de la journée .Pour cela, il décide de se procurer nos produits qui s'allume en fonction du rythme cardiaque. Julien conclut après une première expérience que la plupart de ses employés présentent une luminosité très palpitante en fin de travail.Alors, il décide de revoir son management et de proposer plus d'activité et d'espace détente pur améliorer les conditions de ses employés.
- Scénario2: Marie va bientôt se marier et comme toutes les mariées elle rêve d'un mariage unique et splendide. Pour apporter une touche spéciale à son mariage, elle décide de se procurer une de nos robes lumineuses pour son grand entrée.
Réponse à la question difficile
Sécurité & ergonomie
Notre projet portant sur le développement d'un produit directement en contact avec l'être humain un soin particulier doit être porté sur le fait que le produit dans toute sa technicité ne présente pas un danger pour le porteur mais aussi garder le côté esthétique et confort.
En effet, après calcul et réflexion nous allons utiliser une alimentation continu inférieure à 50V qui est le seuil potentiel de dangerosité pour l'homme. Néanmoins cela présente un dégagement de chaleur lié à l'effet joule , donc nous recommandons une utilisation temporaire du produit. Pour garder l'ergonomie de la robe nous allons limiter l'utilisation des câbles et réaliser une carte électronique sur laquelle sera souder tous nos composants et la diffusion de la lumière sera faite au moyen des fibres optiques.
Préparation du projet
Cahier des charges
1. Conception et réalisation des cartes électroniques : Nous allons réaliser une carte sur laquelle on va mettre le microcntrôleur .Ce dernier constitue l'élément principal de notre projet. A partir du microcontrôleur nous allons pouvoir contrôler l'éclairage et lire également le signal issu du capteur de fréquence cardiaque. Nous allons fixer également dessus les leds, l'alimentation et le port USB qui servira à programmer le microcôntroleur.
2. Programmation du microcontrôleur: Pour garantir l'animation de la robe en fonction du rythme cardiaque nous allons devoir écrire un programme qui lit le signal issu du capteur ,organiser des fonctions d'animations des leds et commander leurs éclairages.
3. L'assemblage: Dans cette phase, nous allons fixer les leds aux fibres optique et assembler tous les éléments physiques de notre projet sur la robe. Il faut harmoniser l'ensemble tout en gardant le côté esthétique de la robe et obtenir ainsi une robe spectaculaire.
Choix techniques : matériel et logiciel
- 50x LEDS [1]
- 1 capteur de fréquence cardiaque [2]
- 1 rouleau de fibre optique striée [3]
- des terminaisons de fibres optiques[4]
- 4 pilotes de LEDS TLC5947 [5]
- 1 Microcontroleur ATmega 328p [6]
- 1 oscillateur 16MHz [7]
- 1 resistance de 10k ohm [8]
- 1 resistance de 220 ohm
- 2 condensateurs de 22 pF (mauvais format) [9]
- 1 Batterie [10]
- Gaine thermorétractable pour fixer les fibres optiques aux leds [11]
- Un arduino UNO
Liste des tâches à effectuer
- Etude du fonctionnement du pilote de LEDS TLC5947
- Programmation de l'ATmega 328p avec l'arduino UNO
- Etude du capteur de fréquence cardiaque
- Réaliser la carte PCB pour lier tous les composants
- Tester la carte électronique
- Fixer la carte sur la robe
- Intégrer les fibres optiques sur les LEDS
Calendrier prévisionnel
Réalisation du Projet
Feuille d'heures
Tâche | Prélude | Heures S1 | Heures S2 | Heures S3 | Heures S4 | Heures S5 | Heures S6 | Heures S7 | Heures S8 | Heures S9 | Heures S10 | Heures S11 | Heures S12 | Total |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Analyse du projet | 4 | 4 | ||||||||||||
Choix du prototype | 4 | 2 | 4 | |||||||||||
Schéma électronique | 2 | 4 | 6 | |||||||||||
Routage des Cartes | 4 | 4 | 4 | 4 | 2 | 16 | ||||||||
Etudes des fibres optiques | 2 | 2 | 4 | |||||||||||
Soudure et test des cartes électronique | 4 | 4 | 8 | |||||||||||
Programmation | 4 | 4 | ||||||||||||
Assemblage sur la robe | 4 | 4 |
Semaine 1&2
Tout d'abord nous avons établie ce que sera le modèle de notre robe à la fin du projet. Nous allons partir sur une robe à laquelle nous allons ajouter une carte électronique avec tous nos composants dessus. Les fibres optiques partiront de l'avant de la robe ensuite nous allons les faire contourner tout autour de la robe grâce aux propriétés de réfractions et de se mouvoir que possède la fibre optique.
Le grand challenge de notre projet consistant à fixer les fibre optiques aux leds, nous avons au cours de cette séance cherché le type de leds et de fibres optiques qui pourraient convenir à notre projet. Au départ on était parti sur des leds RGB cms ,mais cela s’avérer compliqué de trouver un moyen de les connecter aux fibres optiques. Nous nous sommes donc convenus sur des leds RGB traversantes où nous allions nous inspirer de la technique utilisée sur le tissu commandé chez Lumigram pour éclairer nos Leds. En effet cette technique consiste à grouper plusieurs fibres optiques en un nœud et de les diriger en face de la led pour recevoir et diffuser la lumière. Nous avons aussi corrigé la liste de matériels selon les recommandations de nos encadrants et ainsi la finalisé.
- LEDs
Les caractéristiques sont:
Ce sont des Leds RGB à cathode commune (Red, Green Blue). Nous avons choisi celle ci pour avoir un grand choix de couleur de la led mais aussi parce qu'elles ont une grande intensité lumineuse . A partir du rouge, du vert et du bleu , nous pouvons avoir huit combinaisons possibles de couleur. Elle possède également un angle de diffusion de 30°, ce qui nous convient pour notre projet , car ainsi le maximum de la lumière pourra être diffusé dans les fibres optiques.
2. Les fibres optiques
On a choisi les fibres optiques striée. c'est à dire avec des points lumineux tous les 2 cm le long de la fibre optique et possède un diamètre de 1mm. Au bout de ces fibres nous allons ajouter des kits de terminaisons trouvés sur le site sur lequel on a commandé les fibres optique pour recueillir la lumière diffuse au bout des fibres.
Semaine 3
Nous avons commencé à réaliser la carte PCB sur laquelle nous allons fixer les LEDs , les pilotes de LEDs , le microcontrôleur atmega 328p et le capteur de fréquence cardiaque. Nous utilisons Fritzing , un logiciel de conception de circuit imprimé gratuit et facile d'utilisation. Nous avons décidé d'utiliser 32 Leds. Le pilote de leds TLC 5947 que nous utilisons contrôle 24 canaux en sorties. Comme nous disposons des LEDs RGB, donc on ne peut pas connecter sur chaque pilote que 8 Leds. On n'en déduit qu'on a donc besoin de 4 TLC 5947.Nous avons consulté la datasheet du TLC 5947 pour réaliser son schéma. De même nous avons consulté le schema de l'arduino UNO pour voir comment l'adapter à notre atmega 328p.
Semaine 4 & 5
La carte électronique est composée essentiellement de 4 parties principales:
- Partie microcôntroleur:
cette partie est constitué d'un atmega 328p.Mais avant de le rendre fonctionnel on a besoin d'autres composant pour le configurer. Parmis le elemets de configuration de l'atmega on a un bus spi que l'on va utiliser dans un premier temps pour lancer un bootloader l'atmega328p avant de lui envoyer des instructions par liason serie.Cette communication passera par les interfaces SPI (MOSI, SCK ,MISO) que l'on retrouve aussi sur le microcôntroleur sur les port PB3,PB4,PB5.
Un ftdi qui va justement assurer la liaison serie entre port USB et l'atmega 328p et sur lequel nous allons programmer .La transmission et la reception des instructions entre le FTDI et l'atmega se fera sur leur port respectif TXD et RXD.On a ajouter des leds de test sur le microcontrôleur.
- Partie USB:
Elle est constitué d'un port USB et d'un FTDI pour programmer l'atmega 328p . En effet le code pour programmer l'interaction des lumières avec le capteur de fréquence cardiaque sera programmer dans l'atmega 328p après la soudure du composant sur la carte car il s'agit d'un composant cms donc il ne peut être programmer avant.
- la partie alimentation :
On a ensuite la partie d'alimentation constituer d'un regulateur de tension (78ADJ) pour reguler la tension de 9v à 5v afin d'eviter la surchauffe des composants .On y a ajouter des leds de tests , une led bleu pour tester si on une tension de 5v , une led verte pour tester la tension de 9v. On a également un switch (s10) qui servira pour le reset du microcôntoleur.
- La partie Leds:
Elle est constituée d'un pilotes de Leds TLC5947 et des Leds. Il pilote 24 leds mais comme nous on utilise des Leds RGB ,on ne pourra en mettre que huit. La transmission des informations se fait sur les port D4 D5 D6 des .
Le schématique du circuit principal :
Le breadboard:
Semaine 6
On a établit le schéma d'implantation des PCB sur la robe pour savoir comment les router. On aura 5 morceaux de PCB: 1 morceau regroupant le FTDI et l'Atmega 328p, 4 morceaux constitués chacun d'un TLC 5947 et d'une rangée de 8 leds RGB alignés. Ces morceaux seront connectés entre eux avec des câbles en nappes pour avoir un meilleur rendu visuel. Ensuite au bout des nappes on va y coller des rubans de tissus pour former une ceinture que l'on attachera sous forme d'un noeud.
On a ensuite chercher le modèle de robe qui pourrait convenir à notre ceinture électronique.
Notre encadrant nous a demandé de réfléchir si on devait utiliser 3 piles de boutons à 3V ou une batterie à 9V. On a finalement décidé d'utiliser une batterie de 9v car elle aurait une durée plus longue que 3 piles de 3V en série. On mettra un sac en étui sur la ceinture pour mettre dedans la batterie.
Semaine 7
Nous avons testé les propriétés des fibres optiques sur les LEDS notamment leurs conductions et en même temps voir comment les assembler sur notre robe. On a groupé les fibres optiques en une grappe qu'on a lié sur la led à l'aide d'un scotch.On a remarqué qu'il y'en avait qui diffusaient bien la lumière et d'autres qui ne diffusaient pas. Pour remédier à cela nos encadrants nous ont conseillé de les poncer car cela permet une meilleur diffusion de la lumière à travers les fibres optiques. La même technique de regrouper plusieurs fibres optiques sur une LED sera réutilisé sur notre Robe. On a également continuer le routage de notre carte électronique en corrigeant les erreurs soulevés par notre encadrant sur notre PCB
Semaine 8
Cette semaine, nous avons déterminé notre PCB finale. Nous le divisons en 5 parties.
Nous avons receptionné la commande de 2 types de fibres optiques;
- Des fibres optiques plastiques de 1mm de diamètre striée par pas de 3cm.
- Des fibres optiques plastiques de 0.50mm de diamètre diffuseur avec des terminaisons décoratives.
Nous avons commencé par testé la 1ère catégories de fibres optiques. La luminosité tous les pas de 3cm n'était pas aussi forte qu'on l’espérait . On a remarqué que l'éclairage était beaucoup plus importante aux extrémités que tout le long de la fibre optique. Pour les connecter sur la Led on a utilisé une gaine thermorétractable de 5mm. On a du assembler 15 fibres optiques de 1mm chacune pour tenir dans la gaine. Elles sont courbées et pourraient alourdir la robe.
La 2ème catégories de fibres optiques sont beaucoup plus fines, moins courbées et donc par conséquent n'alourdirait pas la robe. Par contre pour les faire tenir dans une gaine de 5mm de diamètre,il faut une quantité assez importante de fibres optiques, mais l'effet avec les terminaisons décoratives diffuseurs était très esthétique .
Un problème lié à la connexion des fibres optiques et des leds s'est relevé. Pour répondre à cette problématique nous avons suggérer une solution que nous allons tester: utiliser un décapeur thermique pour réduire le diamètre de la gaine d'un côté
Semaine 9
Nous avons reçu nos cartes pcb et nous avons entamer la soudure des composants sur la carte. Nous avons commencer par souder la carte principale qui comporte le microcontrôleur , la prise USB , le FTDI, et la partie d'alimentation. Notre encadrant nous a aidé à souder l'atmega 328pb et le quartz qui étaient assez complexe à souder sur la carte. Nous avons tout d'abord commencé à souder les composants directement lié à l'atmega328pb pour pouvoir le tester et s'assurer de son bon fonctionnement. Nous l'avons ensuite tester en le connectant à un autre arduino grâce à un connecteur que nous avons soudé sur la carte. On a eu quelque difficulté à le tester du fait qu' on a utilisé un atmega328pb alors que le système de configuration d'arduino reconnaît les microcontrôleurs du type atmega 328p. On a dû modifier le système arduino. On a lancé sur l'interface de développement intégré arduino un simple programme qui commande l'affichage d'une Led sur notre carte . La led s'est allumé donc notre l'atmega fonctionne bien. Nous avons ensuite soudé la partie qui va gérer l'alimentation des TLC et le port USB.
Semaine 10
La semaine dernière, nous avons soudé la carte principale. Pour notre section LED, nous avons également 4 cartes à circuit imprimé à souder. Notre encadrant nous a aidé à souder la TLC, qui a 28 petites broches et est très difficile à souder. Le travail restant sauf la résistance du condensateur, le plus important étant de 8 leds. Il y a quatre broches sur chaque led, la plus longue est une anode, nous soudons toutes les LED correspondant à la carte de circuit imprimé. Après avoir soudé toutes les cartes, nous les connectons avec une sangle. Nous avons testé le tour de taille de la jupe et avons finalement décidé de ne prendre que 3 cartes de TLC, placées devant la jupe et sur les côtés gauche et droit.
Dans le même temps, nous avons également démarré la partie Programmation cette semaine. Notre encadrant nous a fourni les fichiers pertinents, nous l'avons appris et avons essayé de programmer nos composants.
Semaine 11
L'interaction des leds en fonction de la fréquence cardiaque nécessite de programmer le microcontrôleur à cet effet. Le programme a été réalisé en langage C et comprend 4 grandes fonctions. Voir en annexes toutes les fonctions.
- Fonctions analogues
Tout d'abord on commence par lire la valeur du signal issue du capteur de fréquence cardiaque . Ce dernier nous l'avons branché sur le port PD7 de l'atmega et on le porte tout en haut sur le doigt majeur. Pour pouvoir lire le signal issu du capteur on a utilisé les fonctions convertisseurs analogique numérique.
#include <avr/io.h> #include<analog.h> /** Fonctions pour le convertisseur analogique / numerique **/ void ad_init(unsigned char channel) { ADCSRA |= (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0); //Clock_ADC = Clock / 128 = 125 000 Hz ADMUX |= (1<<REFS0) | (1<<ADLAR); //AVCC with external capacitor at AREF pin ADMUX = (ADMUX&0xf0) | channel; //Channel = ADC0, ADC1,...,ADCN ADCSRA |= (1<<ADEN); } unsigned int ad_sample(void) { ADCSRA |= (1<<ADSC); //Start conversion while(bit_is_set(ADCSRA, ADSC)); //Attend la fin de la conversion return ADCH; //Retourne le registre 8 bits en virant les 2 de poids faible }
- Fonctions serial et TLC5947
Les fonctions serial permettent la communication par liaison série avec l'atmega328p. Dans les fonctions TLC5947 , nous avons commencé par inclure la bibliothèque TLC5747.h , ensuite on a une fonction d'initialisation des pilotes de leds où nous configurons les 24 canaux en sorties. On a une fonctions set_LED_RGB qui allume les leds dans le bon ordre et une fonction set_LED_Drivers qui va demander aux autres leds d'ignorer un signal qui ne leur est pas destiné en restant éteinte.
- Fonction principale
Nous allons appeler toutes les fonctions précédemment décrites ci haut. Dans le tableau indirect nous avons mis l'ordre dans lequel les leds se suivent , le tableau d cycle contient les 8 combinaison de couleur possible que l'on peut faire avec du rouge, du vert et du bleu et le black correspond à l'état éteint.
int indirect[]={20,19,18,23,22,21,2,1,0,5,4,3,8,7,6,11,10,9,14,13,12,17,16,15}; color LED_state[NB_LEDS]; color cycle[]={{64,0,0},{0,64,0},{0,0,64},{64,64,0},{0,64,64},{64,0,64},{64,64,64}}; color black={0,0,0}; int pulse=0;//input signal int pulse_hold=100;//determine which signal to count
Nous avons configuré un timer et autorisé des interruptions chaque seconde pour avoir en tout temps une valeur précise du capteur de fréquence cardiaque. Nous avons ensuite créer deux types d'animations selon que la valeur de la fréquence cardiaque soit inférieure ou supérieure à 100.
/*initialisation du timer*/ void init_timer(void){ TCCR1A =0x02; TCCR1B =0x03; OCR1AL =0x09; OCR1AH =0x3D; TIMSK1 =0x02; }
/*interruption après une seconde*/ ISR(TIMER1_COMPA_vect){ ad_init(7); pulse=ad_sample(); }
En effet, si la fréquence est inférieure à 100 , les leds vont s'allumer une à une dans l'ordre , c'est à dire que quand une led est allumée, la led suivante s 'allume et la précédente s'éteint et ainsi de suite . Quand le tour de toutes les leds et fini, elles changent de couleur et refont le même tour. Le temps d'éclairage équivaut à la valeur du signal en millisecondes.
/*fonction à executer si la frequence cardiaque est inférieur à 100*/ else{ for(c=0;c<NB_COLORS;c++){ if(pulse>pulse_hold) goto suite; for(l=0;l<NB_LEDS;l++){ for(i=0;i<NB_LEDS;i++) { LED_state[i]=(i==l)?cycle[c]:black; set_LED_RGB(LED_state,indirect,NB_LEDS); _dyn_delay_ms(pulse); } } } }
Lorsque la fréquence est supérieur à 100 nous allumons toutes les leds consécutivement et une fois toutes allumées , elles s'éteignent aussi consécutivement passe à une autre couleur. Le temps d'éclairage équivaut à la moitié de la valeur du signal en millisecondes.
if (pulse> pulse_hold){ for(c=0;c<NB_COLORS;c++){ if(pulse<pulse_hold) goto suite; for(i=0;i<NB_LEDS;i++) { LED_state[i]=cycle[c]; set_LED_RGB(LED_state,indirect,NB_LEDS); _dyn_delay_ms(pulse/2);}
for(i=0;i<NB_LEDS;i++) { LED_state[i]=black; set_LED_RGB(LED_state,indirect,NB_LEDS); _dyn_delay_ms(pulse/2);} }
Semaine 12
Après avoir soudé toutes les cartes et implémenté les fonctions de lecture du capteur et de configuration de l'éclairage en fonction de la fréquence cardiaque, nous avons ensuite tout assembler sur la robe . Nous avons mesuré le tour de taille de la jupe et avons décidé d’utiliser seulement 3 carte des Leds. Ils sont placés à l'avant, à gauche et à droite de la jupe. Nous avons placé la carte principale derrière la robe . Enfin, nous avons fixé les fibres optiques sur les leds au moyen des gaines rétro rétractables que nous avons adapter sur les dimension des leds et des fibres optiques. Nous avons aussi poncer les fibres optiques pour leurs apporter beaucoup plus d'éclat.