Lampe T19-8
Dans le cadre de l’intersemestre Design et Fablab, des étudiants de l’IMT Atlantique ainsi que des étudiants de l’École Européenne Supérieure d’Art de Bretagne (EESAB) ont été mis au défi de réaliser différents objets afin de revitaliser et mettre en valeur le patio situé au centre de vie de l’établissement de l’IMT Atlantique. Notre groupe, constitué de Matheus Bueno, Gabriel Canivet, Amélie Jouet et Guillaume Lebeau, a choisi de réaliser la lampe que nous avons nommé T19–8.

Matériel utilisé :
Fonctionnement :
– Arduino Uno
– Module RTC DS1307 alimenté par une pile CR1225
– Capteur de bruit « Sound Sensor »
– Un anneau de 12 néopixels, ainsi que 4 néopixels seuls
Corps de l’objet :
– 3 plaques de contreplaqué peuplier 30x45cm
– 8 aimants
Nous souhaitions que notre lampe présente un certain degré de changement durant la journée, d’éveiller une curiosité et un intérêt chez l’observateur. Des changements plus rapides, rappelant la respiration, animent et donnent vie à la scène, accueillant les visiteurs par une ambiance chaleureuse. Le corps de l’objet a été conçu par découpe laser et assemblé sans fixations particulières et est constitué de cinq modules séparés, pouvant se regrouper à l’aide d’aimants afin de former un tout. Le motif des objets, rappelle à la fois la forme organique des encéphalogrammes, mais aussi une onde s’aplatissant dans l’eau. La séparation en cinq modules, permet de démultiplier l’objet et d’occuper l’espace en lui donnant vie.
Notre lampe réagit aussi selon son environnement. Son intensité lumineuse va varier selon le bruit ambiant dans la pièce, s’affirmant plus le bruit est élevé. Ce changement subtil donne une capacité adaptative à la lampe.
Fonctionnement :
Le contrôle de la lampe est réalisé via Arduino. L’heure actuelle est récupérée à l’aide du module RTC qui est alors convertie en une couleur RGB par moyenne pondérée entre les deux couleurs de références enregistrées dans le programme. Le capteur de bruit « Sound Sensor » va lire le son ambiant afin de changer la luminosité moyenne de la lampe selon le bruit maximum enregistré. Une légère variation de luminosité va ensuite être ajouté sur les trois sources de lumières (centrale, modules intermédiaires et modules extérieurs). Ces petites variations sont indépendantes des la lampe et permettent trois types de variations : des ‘respirations’ synchronisées, un motif de vague se transmettant à travers les modules, et des variations indépendantes à des vitesse différentes.
Notre lampe T19–8 change donc avec le temps, le son ambiant donc avec les humains l’entourant. Les initiale de ces trois concepts forment le mot TSH, et en remplaçant les deux dernières lettre par leur position dans l’alphabet, T19–8.
Lien vers le code : intersemestre_T19_8
Feucenflamme
Projet d’intersemestre : Feucenflamme
Equipe
- Camille HABER, Étudiante en 3eme année de Design à EESAB
- Doriane LGDR, Étudiante en 3eme année de Design à EESAB
- Ivan-Clare NGONG, Étudiante en master 1 à IMT Atlantique
- Nathalie TA, Étudiante en 2eme année à IMT Atlantique
Contexte
Ce projet a été réalisé dans le cadre de l’intersemestre « Défi au fablab » qui avait pour thème cette année : « Economie de lumière : quand le numérique rencontre le design ». Le but de ce projet était de réaliser des points lumineux pour le centre-vie de l’IMT Atlantique (campus Brest).
Ainsi, pour ce défi, nous avons réalisé une structure imitant un feu de camp que nous avons placé dans le jardin du centre-vie. Ce feu de camp devait être en mouvement et lumineux afin d’imiter des flammes. De plus, notre feu était également en interaction avec le public car ce dernier pouvait l’allumer, l’éteindre ou le changer de couleur (rouge, orange et jaune) via notre application téléphone « Feucenflamme ».
Réalisation
a) Matériel :
- Un neopixel
- Un servo-moteur
- Une carte Arduino Uno
- Des fils de connexion
- Un téléphone muni du système Android
- Un émetteur/récepteur bluetooth : module HC-05 pour la connectivité
- Breadboard
b) Design
Notre feu est constitué de deux socles en forme d’étoile qui sont superposés (voir image ci-dessous). Ces deux socles sont séparés par un servo-moteur car nous avons décidé de mettre en mouvement de rotation le socle supérieur afin d’avoir un feu plus vivant et proche de la réalité.
Maquette en carton des deux socles superposés
Le socle du niveau inférieur a un trou en son centre afin de pouvoir positionner le moteur pour ne pas que le socle supérieur soit beaucoup plus haut que le socle inférieur. Le centre du socle supérieur a des petits trous afin de pouvoir passer les fils du neopixel qui est posé sur le socle supérieur.
Pour finir, la base de l’objet est un boitier dont le couvercle est le socle inférieur. Ce boitier nous permet de cacher tout le matériel électronique utilisé (fils, carte Arduino, le récepteur bluetooth et breadboard).
Nous avons choisi de faire les socles en forme d’étoile afin d’alléger notre objet, notamment pour le servo-moteur qui doit supporter le poids du socle supérieur. Dans les branches de l’étoile nous avons imbriqué nos planches de bois découpées en forme de flamme. Nous pouvons noter que les grandes flammes sont vides à l’intérieur, ce choix a permis d’alléger davantage notre structure.
Système d’encoche pour insérer nos flammes dans le socle. Les grandes flammes sont vides à l’intérieur contrairement aux petites qui sont pleines.
La position des flammes a été mise de telle sorte à ne pas bloquer le mouvement du socle supérieur. De plus, les différentes tailles de flammes ont été équiréparties entre chaque quart de socle afin d’avoir un socle équilibré.
Le neopixels sur le socle supérieur permet d’apporter de la lumière à notre feu. De plus, pour ajouter encore plus de lumière à notre feu nous avons mis des surfaces réfléchissantes à nos flammes pour qu’elles reflètent bien la lumière.
Pour faire le design et la réalisation de notre feu, nous avons utilisé illustrator, une découpeuse laser et du scotch double face.
Résultat final
c) Fonctionnement
- Application téléphone
Notre application pour Android (voir image ci-dessous), réalisée via MIT app inventor, permet de connecter le téléphone au bluetooth de notre feu et, une fois connecté, l’utilisateur peut faire les actions suivantes : allumer le feu, éteindre le feu et changer la couleur du feu.
De gauche à droite : page d’accueil de l’application, page pour se connecter et se déconnecter au bluetooth, page pour allumer, éteindre et changer la couleur du feu.
Les informations envoyées par l’application sont lues grâce au programme Arduino téléversé dans la carte.
- Le feu
Dès que le feu est allumé, le socle supérieur qui est collé au servo-moteur se met à tourner et fera des aller-retours en continu tant que le feu ne sera pas éteint. Les leds s’allument progressivement une à une puis certaines s’éteindront pendant que d’autres clignoteront et elles continueront ainsi tant qu’on ne lui dit pas le contraire. La couleur change dès que l’utilisateur le demande via l’application.
Prothèse végétale
Contexte
Dans le cadre d’une collaboration avec l’EESAB, école d’art et de design localisé à Brest, nous devions créer des objets qui revitaliserait et rendrait plus vivant le patio du centre vie de l’IMT.
Choix de cet objet:
L’idée initiale était d’utiliser des lumières, des ombres et des mouvements afin de répondre à cet objectif. Néanmoins, après une deuxième visite sur le site d’installation, nous avons remarqué que l’éclairage quotidien du lieu aux heures de fréquentation ne permettrait pas d’utiliser les ombres. Puis, après avoir étudié diverses possibilités, nous avons décidé de créer des feuilles en contreplaqué peuplier de la même forme que celles l’espèce monstera, en accord avec les plantes déjà présente dans le patio.
Réalisation:
Les plans des feuilles ont été réalisé en utilisant Illustrator, puis la découpe laser a donné la forme au bois. Le principal défi technique a été de donner le mouvement aux feuilles, étant donné les grandes dimensions de la feuille, environ 60 cm x 30 cm.
Deux solutions possibles ont été étudiées et prototypées. Une solution consistait à utiliser un petit moteur avec un poids couplé oscillant qui heurte la feuille et la fait vibrer. Pour cette solution, une carte prototype a été développée avec un driver de puissance pour piloter plusieurs moteurs, puisque l’intention était d’installer plus d’une feuille. La carte contenait un pont en H avec des transistor bipolaires. Néanmoins, pour avoir un mouvement visible avec les moteurs disponibles, il était nécessaire de se placer à la fréquence de résonance de la feuille.
La deuxième solution étudiée utilise des servomoteurs contrôlés en angle couplés à un système de poulie pour déplacer la feuille. Du fil de couture est attaché à une poulie à une extrémité et l’autre est attaché à la feuille. Lorsque le servomoteur tire sur le fil, la feuille est tiré vers le bas.
Cette solution a été développée avec une carte Arduino et des servomoteurs trouvés sur le TELEFAB. Après avoir évalué les résultats des tests pratiques des deux solutions par l’équipe de projet IMT Atlantique et EESAB, il a été conclu que la deuxième solution présentait un mouvement plus harmonique et esthétique. En effet, la fréquence de résonance de la feuille était trop haute, ce qui imposait un mouvement trop rapide. Par conséquent, la deuxième solution a été choisie.
Guide pour la réalisation de la partie technique:
Pour la mise en œuvre de la solution choisie sur les deux feuilles que nous possédions, les matériaux listés ci-dessous ont été utilisés:
- 2 kits Arduino Uno avec alimentations
- 4 servomoteurs contrôlés par logiciel
- câbles
- bandes de néopixels composé d’au moins 10 néopixels
- Fil de couture pour connecter les servomoteurs à l’arduino
- Impression 3D de 4 poulie
- Colle à chaud pour coller les matériaux (pistocolle)
Partie mécanique
Une fois le matériel à disposition, collez les néopixels sur le support, juste en-dessous de la feuille. Accrocher du fil de couture sur les parties de la feuille que vous souhaitez faire mouvoir. Nouez les fils de la partie droite ensemble et collez l’extrémité à la poulie. Faîtes de même pour la partie gauche. la poulie se colle sur un plateau qui s’emboîte dans le servomoteur. Ceux-ci sont vendus avec les servomoteurs. Vous n’avez plus qu’à fixer les servomoteurs sur le support pour terminer cette partie.
Partie électronique
Voici maintenant les différentes pins à relier pour que le code ci-dessous fonctionne.
| pin contrôle des néopixels | pin 2 de l’arduino |
| pin contrôle d’un des servomoteurs | pin 6 de l’arduino |
| pin contrôle de l’autre | pin 7 de l’arduino |
Une fois ces branchements faits, il reste ensuite à relier les masses et l’alimentation de l’arduino aux masses et VCC des néopixels et des servomoteurs.
Partie informatique
Dans le code que vous trouverez à la fin de l’article , en modifiant l’angle max vous pouvez diminuer l’amplitude des mouvements. En augmentant les delay, vous pouvez rendre le mouvement plus lent.
Exposition
Voici quelques photos de l’exposition du mercredi
Code
Voici le code permettant de faire mouvoir les deux côtés de la feuille de manière symétrique (Note : si le fil est tiré par la partie droite de la poulie d’un côté et par la partie gauche de l’autre côté alors ce code fait mouvoir la feuille de manière antisymétrique):
#include <Adafruit_NeoPixel.h>
#include <Wire.h>
#include <Servo.h>
//number of neopixels
#define NUMPIXELS 20
int pinLamp = 2;
int pinServo = 6;
int pinServo2 = 7;
Servo controleServo;
Servo controleServo2;
int pos;
int tempsDescente = 1500;
int pas = 3
;
int angleMax = 180;
int temps = 600;
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, pinLamp, NEO_GRB + NEO_KHZ800);
int calculDelay = 1000/(angleMax/pas);
void setup() {
// put your setup code here, to run once:
controleServo.attach(pinServo);
controleServo2.attach(pinServo2);
controleServo.write(0);
controleServo2.write(0);
pixels.begin();
for(int i=0;i<NUMPIXELS;i++){
pixels.setPixelColor(i, pixels.Color(80,255,0));
}
pixels.show(); // This sends the updated pixel color to the hardware.
}
void loop() {
// put your main code here, to run repeatedly:
for (pos = 0; pos <= angleMax; pos += pas) {
// tell servo to go to position in variable 'pos'
controleServo.write(pos);
controleServo2.write(pos);
// waits 20ms for the servo to reach the position
delay(20);
}
for (pos = angleMax; pos >= 0; pos -= pas) {
controleServo.write(pos);
controleServo2.write(pos);
delay(20);
}
}
[\cpp]
Voici le code permettant de faire mouvoir les deux côtés de la feuille de manière antisymétrique(Note : voir note précédente, ce code peut faire mouvoir la feuille de manière symétrique):
#include <Adafruit_NeoPixel.h>
#include <Wire.h>
#include <Servo.h>
#define NUMPIXELS 10
int pinLamp = 2;
int pinServo = 6;
int pinServo2 = 7;
Servo controleServo;
Servo controleServo2;
int pos;
int tempsDescente = 1500;
int pas = 3;
int angleMax = 180;
int temps = 600;
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, pinLamp, NEO_GRB + NEO_KHZ800);
int calculDelay = 1000/(angleMax/pas);
void setup() {
// put your setup code here, to run once:
controleServo.attach(pinServo);
controleServo2.attach(pinServo2);
controleServo.write(0);
controleServo2.write(0);
pixels.begin();
for(int i=0;i<NUMPIXELS;i++){
pixels.setPixelColor(i, pixels.Color(80,255,0));
}
pixels.show(); // This sends the updated pixel color to the hardware.
}
void loop() {
// put your main code here, to run repeatedly:
for (pos = 0; pos <= angleMax; pos += pas) { // goes from 0 degrees to angleMax degrees
controleServo.write(pos);
controleServo2.write(angleMax-pos);
delay(20);
}
for (pos = angleMax; pos >= 0; pos -= pas) {
controleServo.write(pos);
controleServo2.write(angleMax-pos);
delay(20);
}
}
[\cpp]
Utilisation du mp3 player shield
La carte en question est le modèle sparkfun.com mp3 Player Shield 4-1-11. Elle permet de lire des fichier audios à partir d’une carte SD et a une prise jack pour un haut parleur classique.
Toutes les infos utiles sont sur ce site, avec un très bon tutoriel : https://learn.sparkfun.com/tutorials/mp3-player-shield-hookup
la carte est assez ancienne, et les librairies actuelles d’utilisation des fichiers lourds sur carte SD (libraries SdFat) n’est plus compatible. Retrouvez les librairies compatibles sur ce github : https://github.com/madsci1016/Sparkfun-MP3-Player-Shield-Arduino-Library/releases/tag/1.02.02 (mettre les dossier des librairies SdFat et SFEMP3Shield dans /home/fablab/sketchbook/librairies/)
(merci à ce forum pour l’aide : https://forum.arduino.cc/index.php?topic=517154.0)
Il est 8h00, la vie s’éveille
Projet Intersemestre
Nom du projet : Il est 8h00, la vie s’éveille .
Date : Du 22 au 31 janvier
Equipe projet :
- ANIN Arthus : cycle ingénieur 2ème année de à IMT Atlantique
- BRIAND Thibaut : cycle ingénieur 1ère année de à IMT Atlantique
- BADOUAL Oriane : Étudiante en 3eme année de Design à EESAB
- LE GOFF Nina : Étudiante en 3eme année de Design à EESAB
- METONY Wendy : Étudiante en 3eme année de Design à EESAB
Encadrants :
-
- KEROUEDAN Sylvie
- MASSON Julien
1. Contexte
L’IMT Atlantique abrite un espace appelé centre vie, lieu de rassemblement du personnel éducatif (enseignant, élèves) pour des occasions diverses(échange, lieu de travail, de détente). Ce cadre abrite également un petit jardin qui manque de lumière suffisante les soirs compte tenu d’une grande ouverture vitrée qui longe ce lieu.
Dans le cadre des inter semestres, une collaboration entre étudiants de l’IMT Atlantique et de l’Ecole Européenne Supérieure d’Art de Brest (EESAB) nous a amené à réaliser un projet pour redonner un nouveau souffle au jardin du centre vie.
2. Notre solution
Notre projet se base sur la trame des troncs de palmiers. L’objectif est d’interagir avec le public via une application qui contrôle le changement de couleur et d’intensité des lumières. Le public pourra ainsi installer une ambiance à son goût. Ces troncs lumineux sont des indicateurs du changement d’heure par un signal visuel et non sonore.
3. Réalisation
Hardware : le matériel
- Carte arduino Uno
- Un émetteur/récepteur bluetooth : module HC-05 pour la connectivité
- RTC DS1307 pour gérer l’heure
- 5 neopixels
- des fils de connexions
- 5 troncs d’arbres de différentes tailles faits en bois
- Un téléphone muni d’un système android
Software
- Notre application a été réalisée avec le logiciel gratuit en ligne MIT App Inventor 2 compatible avec le système android. Vous avez accès à notre application simple d’utilisation et ergonomique à cet lien : https://drive.google.com/open?id=1pv_5nOzewn7OibB0hHEhaC8WzzuiRAVh
Après ouverture de l’application, l’utilisateur se connecte au bluetooth. Une fois connecté, il choisi un arbre puis le commande (choix de la couleur du neopixel et de la luminosité, l’éteindre si c’est allumé).
- Le traitement de l’information envoyée par l’application est assuré par un programme écrit en C par le logiciel arduino et téléversé dans la carte arduino.
capture de l’application
4. Design
L’inspiration est venue du graphisme relevé sur les troncs de palmier, nous avons voulu retranscrire cela par un sentiments de légèreté et de module.
Nous avons commencé par modéliser des formes sur 3DSMAX ensuite on les a passé sur 123D Make et on les a travaillé de façon à obtenir le nombre de tranches(ou slices) qui nous convenait, tout deux des logiciels de modélisation AUTODESK
Ensuite le graphisme est né des relevés photographique de matières végétales présentes sur le lieu. Nous lui avons donné du caractères et des lignes contemporaines que l’on a gravé et ce travail a été conçu à la pyrogravure, découpe laser du Fab lab, sur des planches de peuplier de 5mm. Puis imbriqué tel un puzzle, un montage très simple et harmonieux laissant passer la lumiere prévu à ce luminaire.
5. Résultats
6. Coût du projet
| Quantité | Prix (unitaire) en euros | |
| Carte arduino Uno | 1 | 2,76 |
| RTC DS1307 | 1 | 10,74 |
| Bluetooth HC-05 | 1 | 2,42 |
| Neopixels 12 leds | 5 | 8,60 |
| Breadboard | 1 | 1,39 |
| Total | 60,31 |
7. Fichiers utiles
Lien vers le programme .aia de l’application android :
https://drive.google.com/open?id=1zpxS6wvlx3yWOZG31MBj7-GqvZHjLfny
Lien vers le programme .apk de l’application android :
https://drive.google.com/open?id=1pv_5nOzewn7OibB0hHEhaC8WzzuiRAVh
Lien vers le programme arduino :
https://drive.google.com/open?id=1Eyngcppy3NboJPgeTZrq_Qa4Czcq1Wym
Bois souple
Voici quelques expérimentations pour rendre le bois souple.
A l’aide de différents motifs découpés à la découpeuse laser, répétés plus ou moins de fois sur une surface, nous pouvons donner une certaine souplesse au bois: c’est ce qu’on appelle la technique du lattice hinge (traduction française: charnière en treillis). Cette technique est inspirée du kerfing (de l’anglais kerf qui signifie entailles/traits de scie).
» Le kerfing est une technique à l’origine pratiquée par les luthiers pour cintrer le bois à froid. Il s’agit de réaliser des rainures dans le sens perpendiculaire au bois, pour l’affiner localement et lui prêter une plus grande souplesse. «
Pour l’instant nous avons réalisé ces essais sur deux types de bois : du medium 3mm et du contreplaqué peuplier 3 mm. Nous nous sommes aperçu que certain motifs fonction mieux sur le medium que sur le contreplaqué, et inversement. Les échantillons sont tous présents au fablab. Nous allons poursuivre les tests sur du pmma et sur d’autres épaisseurs.
Réalisation d’une maison à serrures type Montessori
En surfant sur le net, j’ai trouvé des jouets pour bébés utilisant des vraies serrures qui m’ont semblé bien plus pertinents que les jouets tout en plastique. On les trouve communément sous le terme de maison à serrures Montessori.
J’avais bien envie d’en réaliser une par moi-même. Après avoir parcouru le Web, j’ai décidé de partir sur un format « tableau à serrures » plutôt que maison, et j’ai choisi le thème de la grange pour pouvoir mettre derrière chaque porte une photo d’un animal de la ferme (que j’ai récupéré d’un livre cartonné pour enfant).
J’ai fait un dessin sous inskape et voici ce que cela donne :
Planche 1 : dessin de l’avant
Planche 2 : Arrière
Je l’ai mis aux dimensions de la découpe laser que je vais utiliser à savoir environ 45 cm de haut et 30 cm de large. Je vais utiliser du contreplaqué de peuplier de 5mm d’épaisseur et il y aura une face avant et une face arrière ce qui me permet d’utiliser des vis pour fixer les charnières et les différentes serrures et d’avoir un tableau plus solide.
Premier essai :
Je fais le premier essai avec la planche arrière car c’est le dessin le plus simple. Pour la découpe laser, en noir elle grave et en rouge elle découpe, mais il faut choisir les bons paramètres Puissance vs Vitesse. Je profite des tests faits par ma collègue Solène Geffroy lors de l’élaboration d’un gabarit de découpe.
Pour la coupe, je mets P=90 et V=2
Pour avoir l’effet « grange en bois » je me dis qu’il faut une gravure assez forte et je mets 60 pour la puissance et 20 pour la vitesse sur la couleur noire. Il s’avère que c’était un mauvais choix : la gravure est super longue et trop profonde. J’obtiens quand même une première mouture de mon projet.
Pour l’avant je vais faire autrement :
Couleur noire : P=20 et V=90, c’est un peu léger en gravure mais ça va vite (si je recommence je mettrais plutôt P=40 et V=40 pour avoir un peu plus de profondeur creusée dans le bois)
Quelques images de la découpe laser
J’obtiens 2 parties face avant et arrière, mais pour pouvoir mettre les serrures diverses, il me faut un peu de profondeur, je prends du médium MDF 10mm que je découpe également à la découpe laser (celle à laquelle j’ai accès demande plusieurs passes pour réussir la découpe et avec une petite meuleuse dremel j’enlève les zones très noircies par la laser)
Peinture, fixation arrière + médium + devant puis positionnement charnières et des différentes serrures :
- verrou à poussoir (en bas à droite)
- serrure à clef (en bas à gauche)
- entrebâilleur de porte (au milieu à gauche)
- crochet à levier (au milieu à droite)
- crochet contrevent (en haut)
Après la peinture (indiquée rouge sur le pot) je trouve que c’est un peu trop rose fluo, j’atténue ce fluo en mettant une couleur différente pour chaque porte.
Derrière chacune des portes il y a un animal de la ferme découpé dans un vieux livre pour enfant.
Il ne reste plus qu’à mettre les portes, les serrures (je rajoute un contrefort derrière les portes pour assurer le vissage). Quelques photos des différentes étapes.
Et voici la grange au final
Il ne reste plus qu’à espérer que le petit Maël qui va recevoir cette maison s’amusera beaucoup à découvrir et à s’approprier les différents mécanismes.
Développement d’une lampe à messages et envoi de texto en Light Fidelity (LIFI)
Développement d’une lampe à messages et envoi de texto en Light Fidelity (LIFI) par Adrien Clotteau, Serigne Diouf et Stanislas Evain.
Le Wi-Fi, protocole de communication sans fil propagé par ondes radio, peut être complété par le Li-Fi. Ce dernier utilise la lumière comme support de propagation en utilisant des LED de puissance, modulées à très hautes fréquences.
Le but de ce projet est de réaliser un démonstrateur de télégraphe optique automatique utilisant le principe du LIFI. Notre objectif est de transmettre un message SMS d’un téléphone à un autre via un système constitué d’un émetteur et d’un récepteur qui communiquent par voie optique. Nous avons ajouté cette fonctionnalité à un objet existant, une lampe torche, tout en conservant sa fonction première.
Une application Android capable de gérer l’émission et la réception des messages fait le lien avec notre télégraphe via Bluetooth (elle joue le rôle d’interface homme machine). Dans chaque lampe, une carte Arduino met en forme le message à l’émission et module la lumière. Le même Arduino fait le travail inverse à la réception (démodulation et mise en forme) sur le principe de l’alternat. La performance du lien optique repose sur le choix d’un couple émetteur/récepteur qui offre la meilleure fiabilité : des diodes de forte puissances infrarouge (IR) à l’émission et un détecteur optimisé pour l’IR à la réception.
L’émetteur du prototype est composé de 8 LED visibles ne servant qu’à la fonction éclairage de la lampe torche et de 3 LED IR reliées à une carte Arduino, pour la transmission. L’utilisateur rentre une séquence de caractères via l’application Android. Le message est envoyé à l’Arduino qui convertit le message sous forme binaire (en ASCII) et l’envoie sous la forme de signaux IR modulés. Un « 1 » correspond à 400 µs en état HIGH et à 200 µs en LOW. Un « 0 » correspond à 200 µs HIGH et 400 µs LOW. Cette forme de modulation a été choisie pour profiter des performances du détecteur.
La partie réceptrice du prototype est composée d’un capteur IR qui détecte le signal optique émis et l’envoie vers la carte Arduino sous la forme d’un courant à deux niveaux. L’Arduino démodule le signal reçu, le convertit en bit puis en chaîne de caractère et envoie le message à l’Android en sortie par liaison Bluetooth.
La dernière partie du projet consiste en sa miniaturisation. Le circuit doit tenir dans une lampe torche. Les composant utilisés ont été sélectionnés pour être les plus petits possibles (par exemple, utilisation d’une carte bluno beetle pour l’Arduino et le module Bluetooth, utilisation de shields pour diminuer la taille du montage fonctionnel).
Programme Arduino des systèmes émetteurs et récepteurs
Code
}
}
//############################################# ENCODAGE ############################################################################################ void encodage(){
while(moduleBT.available()) // tant que le module Bluetooth est en train de recevoir des donnees,
{
delay(3); // attend qu’il finisse de tout recevoir
String caractere = String(moduleBT.read(), BIN); //transforme chaque caractère du message grace à son code ASCII en binaire
while (caractere.length()<8) // tant que le caractere codé en binaire ne fait pas 8 bits,
{caractere=String(0)+caractere;} // alors compléter avec des ‘0’ au début pour qu’il fasse 8 bits=un octet
Serial.println(caractere);
//############################################ EMISSION #############################################################################################
void emission(){
if (messageEncode.length() >0) // s’il y a un message binaire pret à envoyer sur le canal optique,
{
messageEncode = String(« 11111111 »)+messageEncode+String(« 0000 »);
Serial.println(messageEncode);
int smsLength=messageEncode.length();
int index=0;
while (index<smsLength){ // parcourir la chaine binaire
if(messageEncode[index] == ‘1’) //A chaque fois que je tombe sur un bit à ‘1’,
{digitalWrite(ledSortie, HIGH); // alors j’allume la lumière IR pendant 400 microsecondes
delayMicroseconds(400);
digitalWrite(ledSortie, LOW); // puis je l’éteins pendant 200 microsecondes
delayMicroseconds(200);
}
if (messageEncode[index] == ‘0’){//A chaque fois que je tombe sur un bit à ‘0’,
digitalWrite(ledSortie, HIGH);// alors j’allume la lumière IR pendant 200 microsecondes
delayMicroseconds(200);
digitalWrite(ledSortie, LOW);// puis je l’éteins pendant 400 microsecondes
delayMicroseconds(400);
}
index++ ;
}
//########################## DECODAGE avec la lecture des registres #######################################################
void decodage(){
unsigned char nbreCaractere=0;
byte messageDecode[141]; // buffer où je stocke le message provenant du canal optique une fois qu’il est décodé, il doit etre au max de 140 caracteres
if (PIND & B00001000){ //si mon capteur détecte un signal IR,
//Serial.print(« signal détecté pour la premiere fois »);
//unsigned char nbreCaractere=0; //compteur du nombre de bits décodés
Serial.println(« ToutAzéroRegistre »);
//unsigned long PrevLOW=800;
while (nbreCaractere<141){ // tant que le message n’excede pas 140 caracteres,
char caractere=0;
char indexCaractere=0;
//Serial.println(« new octet »);
while (indexCaractere<8){
if (PIND & B00001000){// s il y a un front montant,
unsigned long timeLOW=0; //temps au bout duquel on ne detecte pas de lumiere IR
unsigned long timeHIGH=0; //temps au bout duquel on detecte de la lumiere IR
if (PIND & B00001000){ //si on detecte,
while(PIND & B00001000){
timeHIGH++;
}//prendre un chronometre pour le temps d’allumage}if (!(PIND & B00001000)){ // si on ne detecte pas,
while (!(PIND & B00001000) && (timeLOW<3000) ){
timeLOW++;
}//prendre un chronometre pour le temps d’extinction
}
char BIT= (timeLOW<timeHIGH); //decider du bit décodé en fonction des temps d allumage et d’extinction
//Serial.print(byte(BIT));
caractere=(caractere<<1)+BIT; // ajouter le bit décodé a l octet
indexCaractere++; //passer au bit suivant
}
else{ //si on ne detecte pas un front montant, c’est à dire pas de bit en transmission dans la canal optique
indexCaractere=8; // alors arrete le decodage bit a bit (et sortir de la boucle)
//Serial.println(« je sors octet »);
}
}
//Serial.println(« je sors caractere »);
if (byte(caractere)>0){
messageDecode[nbreCaractere]=byte(caractere);
nbreCaractere++;}
else{nbreCaractere=141;}
//Serial.println(byte(nbreCaractere));
Serial.print(caractere);
}
Serial.println(« sortie finale »);
}
if ( byte(nbreCaractere)>0)
Serial.print(« sortie finale finale »);
}
Développement d’un robot pour apprendre à programmer
Par Alexandre GRANGIER, Maxime Mazouffre, Pierre Hamoir et Ahmed Kamoun
Contexte
Dans le cadre de la réforme des programmes d’enseignement en France, l’initiation à la programmation a pris plus d’importance et l’appréhension de la pensée scientifique et devenue un objectif de l’école. Ceci nécessite un certain matériel dédié.
En grande distribution, on trouve différents modèles de robots destinés à apprendre la pensée algorithmique aux enfants de différents niveaux tels que le Bee-Bot [1] le Cubetto [2] ou le Thymio [3].
Aussi sympathiques qu’ils soient, ces robots restent à coût élevé ce qui ne permet pas leur utilisation en classe. L’objectif du projet est donc de créer un prototype de robot évolutif en utilisant le matériel du Fablab de l’école qui soit à coût raisonnable et qui permet ensuite la fabrication de plusieurs robots qui seront utilisés à différents niveaux de l’enseignement.
Matériel utilisé
En plus du médium 3mm qui nous a servi à découper la structure du robot, nous avons utilisé le matériel suivant :
• 1 carte Arduino UNO
• 1 ARDUINO MOTOR SHIELD R3
• 2 moteurs
• 2 roues
• 6 boutons
• 1 bille à roulement libre
• 1 batterie rechargeable
• 2 LEDs
• Des fils de connexion
Conception du robot
Nous présentons dans cette partie la manière dont nous avons construit notre robot, et c’est ce qui sera transmis aux écoles souhaitant le construire elles-mêmes sous forme de mode d’emploi détaillé transmis sur une clé USB contenant par ailleurs les pièces à découper nécessaires au format .dxf pour pouvoir les concevoir à la découpeuse laser.
Une fois les pièces imprimées, l’assemblage du squelette est assez simple et intuitif. Dans un souci de clarté, nous avons donné un nom spécifique à chaque pièce, cela facilitant grandement la compréhension du mode d’emploi (voir figure 11).
Nous avons commencé par insérer les arches 1 et les arches 2 dans les fentes de la plateforme 2 prévues à cet effet, en faisant bien attention à alterner les arches 1 et les arches 2, et en commençant par mettre une arche 1 dans la fente la plus proche du trou rectangulaire qui accueillera plus tard la batterie (figure 12).
Nous avons ensuite passé le cercle central dans les fentes des arches en le passant par le dessus (figure 12).
Nous avons finalement ajouté la plateforme 3 pour verrouiller le tout (figure 13). Avant de coller le squelette à la plateforme 1, nous y avons ajouté les composants. Nous avons commencé par les roues pour lesquelles il suffisait d’utiliser les fentes de la plateforme 1 (figure15), puis la bille stabilisatrice donc la hauteur peut être ajustée (figure 16), et enfin la carte arduino et le shield que nous avons vissés (figure 17).
Pour terminer, nous avons fixé la batterie en la glissant dans le trou qui lui est destiné sur la plateforme 2, et nous avons fixé les boutons sur la plateforme 3 et les soudant directement aux fils les reliant à la carte arduino (figure 18). Nous avons finalement associé les deux parties que sont la plateforme principale (plateforme 1) et le squelette (plateformes 2 et 3 et arches) en les collant avec de la colle à bois (figure 19).
Figures 18 et 19
Modes de fonctionnement du robot
a)Transmission de commande
Dans un premier temps, le robot peut être utilisé avec des boutons. Pour cela, il a été nécessaire d’utiliser six différentes actions élémentaires pour pouvoir permettre une totale mobilité :
– Avant
– Arrière
– Rotation Droite
– Rotation Gauche
– Annuler
– Démarrer
Le SHIELD Arduino utilisé, le DK Electronics v1.0 (Figure 1), bloquant l’accès aux différents pins de la carte, il a fallu utiliser les ports analogiques (A0-A5) en mode tout ou rien pour pouvoir réaliser le montage.
Cependant, n’utilisant que deux moteurs, nous avons pu enlever du système un microcontrôleur (à droite sur la Figure 1) pour pouvoir libérer certains pins de commande afin d’ajouter des fonctionnalités au robot.
L’utilisation de l’utilisation d’un encodage pour la commande à effectuer posant problèmes nous avons opté pour une liste de longueur fixe, en effet une limitation de 10 mouvements était imposée par le format (long) des entiers en Arduino. Nous avons choisi de laisser jusqu’à 30 mouvements pour éviter d’utiliser trop de mémoire et de trop utiliser la batterie
Lorsque que le robot est construit, il faut effectuer des tests pour savoir quelles valeurs rentrer. Lors du projet Dec, nous avons utilisé le même matériel et nous avons constaté que dans la pratique, nous devions ajuster la fonction pour chaque voiture. Par exemple, si le moteur droite subit plus de frottements que le gauche, il faut augmente la vitesse de celui-ci.
b)Application
En plus de la possibilité de pilotage du robot grâce aux boutons, les enfants pourront aussi le piloter utilisant une application Android prévue pour cet usage (Figure 2). L’application présente les six boutons présents sur le robot et permet les mêmes fonctionnalités. Figure 2 : interface de l’application
L’application enregistre le choix de mouvements de l’utilisateur dans leur succession. L’envoi de l’information par Bluetooth ne se fait qu’au moment où l’utilisateur appuie sur le bouton Start. Le dernier bouton Reset est conçu pour réinitialiser le robot.
c)Ardublock
Afin de permettre à des classes plus élevé d’utiliser le robot, nous laissons la possibilité de brancher un câble USB directement sur la carte Arduino.
Ainsi ces élèves pourront coder directement le comportement qu’ils veulent que le robot adopte juste en programmant directement le comportement des moteurs, donnant une plus grande flexibilité aux mouvements possible du robot, et permettant l’intégration dans l’algorithme des boucles ou des tests
Un capteur infrarouge suiveur de ligne ou un capteur ultrason pourront être ajoutés dans le robot à la demande du client offrant de nouvelles fonctionnalités, pour aller plus loin dans l’apprentissage de la programmation.
La programmation étant assez compliqué pour des élèves de primaire, elle est faite au moyen d’Ardublock (Figure 3), une interface simplifié de programmation Arduino.
Un algorithme reprenant le code initial du fonctionnement du robot sera mis a disposition à titre d’exemple, pour introduire les élèves au fonctionnement d’Ardublock (les limitations du logiciel ne permettant pas de capture d’écran correcte, il n ‘apparaît pas dans cet article).
Sound Of Silence
La musique est un plaisir inaccessible aux personnes sourdes, néanmoins, ils peuvent la ressentir, la vivre, essentiellement à travers les basses fréquences qui vibrent dans leurs corps. Mais cela reste limité et ne permet pas aux sourds de ressentir toutes les nuances de la musique. Cette barrière crée un sentiment de frustration et de mise à l’écart, notamment lors des festivals de musique.
Le projet Sound Of Silence a pour but de remédier à cette limite et d’offrir la possibilité de vivre l’expérience musicale aux personnes sourdes. De plus, ce projet se place dans un cadre plus global, celui d’une recherche mondiale pour améliorer l’expérience sensorielle. Plusieurs produits qui transmettent la musique par voie tactile ont été lancés dans le marché, mais à des prix exorbitants, un facteur qui a motivé le groupe pour réaliser un prototype nouveau simple et accessible pour tous.
La problématique de ce projet est alors venue naturellement : comment transmettre dans un gilet les couleurs et nuances de la musique aux sourds, en exploitant les autres sens, qui souvent, s’avèrent plus développés ?
Le but étant de produire un vêtement confortable, discret et efficace, doté de composants électroniques capables de retranscrire les éléments du son qui définissent le caractère unique et remarquable de chaque musique, c’est-à-dire les intensités, les fréquences, les harmonies ou encore le rythme afin de permettre une expérience musicale comparable à une écoute « auditive ».
Le projet Sound Of Silence est le fruit d’une mise en commun de compétences en ingénieries et en design, en effet il fut réalisé par un groupe de six étudiants : quatre étudiants de l’IMT Atlantique Bretagne Pays de la Loire (IMTA) en première année formation ingénieur généraliste, et de deux étudiantes de l’EESAB en troisième année. De plus ce projet est réalisé sous l’encadrement de deux enseignants-chercheurs de l’IMTA qui ont accompagné le groupe d’étudiants tout au long des phases de recherche, de conception, de développement et de test du projet.
- Baddaje Dina (IMT Atlantique)
- Hizem Feyza (IMT Atlantique)
- Bourgeois Pierre (IMT Atlantique)
- Murat Gaspard (IMT Atlantique)
- Privé Lisa (EESAB)
- Le Boulaire Delphine (EESAB)
Le premier choix technique à effectuer concerne l’entrée de la musique. Pour se faire nous avons choisi de récupérer le son en temps réels grâce à un micro, ce moyen est adapté pour une utilisation du gilet lors de performances live. Il est aussi possible de brancher le gilet directement à une source musicale (smartphone ou autre) à l’aide d’une prise jack.
Le deuxième choix technique fut le moyen de retranscrire le son pour être transmis à l’utilisateur. Nous avons choisi d’utiliser des moteurs à vibrations pour une transmission tactile et des LEDs pour une transmission visuelle, le but étant de simuler deux sens différents afin de rapprocher au maximum le ressentis de la musique à l’utilisateur.


Pour pouvoir gérer les entrées et sorties de notre prototype et pour faire le traitement de son nécessaire nous avons utilisé une carte Raspberry pi 3. Mais comme ce micro ordinateur ne possède pas de carte son nous avons utilisé une carte son externe pour pouvoir enregistrer la musique.
Nous avons développé un programme python qui permet d’enregistrer le son pendant une durée T et le stocke dans une variable temporaire dans un premier temps. Ensuite ce programme effectue une transformé de Fourier grâce à la fonction fft du module scipy (bibliothèque Python). Nous obtenons ainsi le spectre du fragment musicale que l’en partage en quatre bandes de fréquences. Puis le programme effectue une moyenne sur chaque bandes, cette méthode permet d’approximer la transformée de Fourrier afin de ramener le signal en temporel. Les valeurs obtenues sont normalisées et ramenées entre 0 et 100 pour contrôler les moteurs et entre 0 et 255 pour contrôler les LEDs, dans ce cas chaque couleur correspond à une bande de fréquences.
Bibliothèques python utilisées :
- Enregistrement et traitement du son : Time, SciPy
- Gestion des moteurs : RPI.GPIO
- Gestion des LEDs : Adafruit neopixel
Côté design, nous avons choisi de réaliser le prototype en deux parties : Le premier bloc constitue le gilet qui contient tous les moteurs et les LEDs. Le deuxième bloc est composé d’une Rasberry, d’une Breadboard avec trois hacheurs, et de deux batteries. Ce bloc hardware est intégré dans un petit sac articulé avec des pièces de bois (découpé à la découpeuse laser) qui forme plusieurs étages: chaque étage contient un des éléments électroniques précédent. L’utilisateur du prototype placera sur son dos ce sac et pourra l’enlever à son gré. Ce choix a été fait pour éviter d’encombrer le gilet d’un côté, mais aussi par mesure de sécurité. En effet, tous les composants électroniques utilisés chauffent et ne doivent pas être en contact direct avec du tissu; de plus, cela permet de les isoler en partie des conditions extérieures et de l’humidité.
Ainsi, tous les fils de chaque partie convergent vers un connecteur 20 points HE10 femelle, l’utilisateur devra brancher le connecteur du gilet avec celui du sac pour utiliser le gilet. Le programme Python s’exécutera automatiquement après le branchement.
Nous avons effectué une recherche pour pouvoir identifier les parties du corps les plus sensibles à chaque type de fréquences et nous avons choisi de simuler le ventre avec les vibrations relatives aux basses fréquences, les omoplates avec les vibrations relatives aux hautes fréquences et le bas du dos avec les vibrations relatives aux moyennes fréquences.
Nous avons également choisi de mettre des couleurs particulières à chaque fréquence dominante, pour consolider les sensations de hautes fréquences avec des couleurs froides comme le bleu et le violet et les basses fréquences avec des couleurs plus chaudes comme le rouge et le jaune.
L’utilisateur devra brancher les deux connecteurs afin de lier les deux parties du prototype, alimenter la carte Raspberry, et brancher un micro ou une source musicale. Après quelque seconde (temps de démarrage d’un ordinateur) le programme sera lancer automatiquement et l’utilisateur pourra ressentir les moteurs et voir les LEDs.
Inventaire du matériel utilisé :
- Raspberry pi 3.
- Carte son Dust mini 09627.
- 10 minis moteurs à vibrations plats.
- 2 circuits intégrés L293D.
- 6 LEDs RGB neopixels.
- 1 circuit intégré 74AHCT125.
- 2 batteries 5V.
- Une Breadboard.
- Des fils.
- Une plaque de bois 7mm.
- Du tissu type Lycra.
- Deux sangles.
Finalement, ce prototype apporte une nouvelle solution pour ressentir la musique. Cette solution reste néanmoins à développer correctement avec du matériels plus performants et nous permet de croire au développement futur d’un gilet musicale accessible et utilisable par tous.







































