Fête de la science 2017
Bonjour bonjour!
Comme chaque année partout en France du 7 au 15 octobre à lieu la fête de la science!
Comme chaque année Océanopolis coordonne cet événement pour le département du Finistère…
Et depuis 2 ans nous nous organisons avec l’UBO Open Factory et le département informatique de l’UBO pour proposer une animation sous le signe de la découverte de la robotique, de l’informatique et des machines de fabrication numérique :
LE FABULEUX LABORATOIRE!
Du 11 au 15 octobre nous serons donc à Brest, au Quartz (pour accueillir le public et leur présenter plein de petites choses très cool!
Nous accueillerons des scolaires le jeudi 11 et vendredi 12 octobre, de 9h à 16h.
(Environs 3500 enfants sur deux jours)
Le week-end c’est l’ouverture au grand public, de 10h à 18h.
Nous sommes entrain de préciser les choses ensemble mais ce qui est sûr c’est que nous allons avoir besoin de mains, de présences, de coolatitude et de bonne humeur durant l’événement… Alors si tu as l’une de ces qualités ou bien toutes ou bien aucune, mais tu souhaiterais quand même t’investir, tu es le-la bienvenu-e ! Tu n’as qu’à passer au Téléfab faire un petit coucou et nous donner tes disponibilités entre le 11 et 15 octobre.
Woilou!
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.
Construction d’imprimantes 3D : la carte électronique
Ce mardi, nous avons continué l’atelier de la semaine dernière. Nous n’arrivions pas à contrôler correctement l’imprimante A car certains moteurs fonctionnaient de manière inversée. Nous avons donc décidé de reflasher la carte pour changer les réglages.
La carte minitronics est compatible avec l’IDE Arduino. Le guide de construction indique le lien vers le dépôt Github qui contient le firmware (attention, nous avons la version 2.5 de la Foldarap). Il n’y a presque rien à changer, à part la fréquence de fonctionnement du port série dans un define. Par contre, il faut configurer l’IDE Arduino pour la carte Minitronics, en suivant les explications ici (à faire à la main, il y a un lien vers une version preconfigurée, mais on est forcé de s’inscrire).
Une fois la carte flashée, l’imprimante marche parfaitement. Malheureusement nous avons trop chauffé le filament qui s’est bloqué, il va donc falloir faire un peu de démontage pour nettoyer tout ça.
La suite dans 2 semaines
Exceptionnellement, aucun atelier n’est prévu la semaine prochaine. Le prochain atelier aura lieu mardi 7 février à 18h30. Et on fera marcher au moins une imprimante !
Atelier construction d’imprimantes 3D
Au Téléfab, on a récupéré deux imprimantes 3D Foldarap en cours de construction, venant des Fabriques du Ponant. On en a profité pour faire ce soir un atelier pour essayer de les faire marcher. Voici l’état des lieux
Imprimante A
Une première imprimante 3D est quasiment terminée. Tout est monté et assemblé, mais l’imprimante ne marche pas.
On a trouvé un soucis avec la carte : impossible de communiquer en utilisant Pronterface. Ça vaudrait le coût de tenter de reflasher la carte pour voir si elle peut ressusciter.
Après avoir remplacé la carte, tous les actionneurs semblent marcher. Mais certains axes sont inversés, et on dirait aussi que les end points sont lus à l’envers (activé quand ils le sont pas). Il va donc falloir vérifier les branchements et voir ce qu’on peut corriger en logiciel.
Imprimante B
La deuxième imprimante est bien moins avancée. Elle est en partie montée et des choses sont à démonter car elles ont été faites à l’envers.
On a aussi découvert que le support de la tête d’impression est cassé. On a donc lancé l’impression d’une nouvelle pièce. Ça nous a permis de retrouver les sources des pièces 3D (rechercher github dans le guide d’assemblage).
La suite mardi prochain
On continuera mardi prochain à partir de 18h30. Venez nous aider !
Robot Scribe
Dans le cadre de notre projet développement S2, nous devions concevoir un robot capable d’écrire des caractères avec un stylo, facile à utiliser et à moindre coût.
Nous avons pour cela décidé de construire un robot commandé par une application Android qui envoie par Bluetooth les caractères à écrire.
Notre robot est constitué d’un moteur et un train d’imprimante récupérés sur une vieille imprimante, 3 servomoteurs, une carte Arduino, une carte Ardumoto et des pièces pour relier le tout, imprimées à l’aide d’une imprimante 3D. Les pièces imprimées sont : les broches (qui constituent le bras du robot et qui servent à tenir le stylo) et la plate-forme pour relier le train d’imprimante et le bras. Le train d’imprimante va servir à translater le montage lorsqu’on a fini d’écrire un caractère. Deux des servomoteurs sont utilisés pour contrôler les broches qui tiennent le stylo et le troisième sert à soulever la plate-forme lorsque l’on veut déplacer le crayon sans écrire.
Le principe de notre robot consiste donc à envoyer des caractères en Bluetooth à partir de l’application et d’effectuer un traitement avec un code Arduino en fonction de la lettre reçue. À La réception d’un caractère, nous allons donc baisser le crayon, écrire le lettre reçue, lever le crayon et déplacer le dispositif avec le train d’imprimante pour écrire la prochaine lettre.
Cependant, les lettres écrites avec le robot sont très grandes car les servomoteurs ne sont pas assez précis donc on ne peut pas écrire des lettres de la taille de lettres manuscrites. Pour améliorer notre robot il faudrait donc utiliser des servomoteurs plus précis.
Code Arduino
#include <Servo.h>
#include <string.h>
Servo myservo1; //servo de gauche
Servo myservo2; //servo de droite
Servo myservo3; //servo qui soulève le crayon
#include <SoftwareSerial.h>
double pi = 3.141592654;
int bluetoothTx = 0; // on branche le TX du bluetooth à la broche 0 de l’arduino
int bluetoothRx = 1; // on branche le RX du bluetooth à la broche 1 de l’arduino
double distance = 9;
double angle_depart1 = 180;
double angle_depart2 = 90;
double l1 = 10;
double l2 = 12.5;
SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);
#define CW 0
#define CCW 1
#define MOTOR_A 0
// constantes utilisées par Ardumoto : ne pas les changer!
const byte PWMA = 3; // la broche 3 est utilisée pour la puissance du moteur du train d’imprimante
const byte DIRA = 12; // la broche 12 est utilisée pour la direction
void setup() {
Serial.begin(9600); // Begin the serial monitor at 9600bps
//Setup bluetooth
delay(100); // Short delay, wait for the Mate to send back CMD
bluetooth.begin(9600); // Start bluetooth serial at 9600
//Setup servo
myservo1.attach(5); // attaches the servo on pin 9 to the servo object
myservo2.attach(9);
myservo3.attach(2);
Serial.println(« initialisation »);
myservo1.write(0);
myservo2.write(0);
myservo3.write(0);
//Setup Ardumoto
setupArdumoto();
stopArdumoto();
}
void loop()
{
if (bluetooth.available()) // A la réception d’un caractère
{
char text = (char)bluetooth.read();
Serial.print(« text = « );Serial.println(text);
bluetooth.print(text);
myservo3.write(20);
ecrire(text);
myservo3.write(20);
myservo1.write(0);
myservo2.write(0);
driveArdumoto(CCW, 150); // On translate le moteur
delay(100); // pendant 100 ms
stopArdumoto(); // et on le stoppe
}
}
void ecrire(char lettre)
{
if (lettre == ‘a’){
aller_en(-5.5,7);
myservo3.write(0);
aller_en(0,15.5);
aller_en(5.5,7);
aller_en(2.5,11.5);
aller_en(-2.5,11.5);
}
if (lettre == ‘b’){
aller_en(5,7);
myservo3.write(0);
aller_en(5,17);
aller_en(-5,17);
aller_en(-5,12);
aller_en(5,12);
aller_en(-5,12);
aller_en(-5,7);
}
if (lettre == ‘c’){
aller_en(-5,7);
myservo3.write(0);
aller_en(5,7);
aller_en(5,17);
aller_en(-5,17);
}
if (lettre == ‘d’){
aller_en(5,7);
myservo3.write(0);
aller_en(5,17);
aller_en(-5,17);
aller_en(-5,7);
}
if (lettre == ‘e’) {
aller_en(-5,7);
myservo3.write(0);
aller_en(5,7);
aller_en(5,17);
aller_en(-5,17);
myservo3.write(20);
aller_en(5,12);
myservo3.write(0);
aller_en(-5,12);
}
if (lettre == ‘f’) {
aller_en(5,7);
myservo3.write(0);
aller_en(5,17);
aller_en(-5,17);
myservo3.write(20);
aller_en(5,12);
myservo3.write(0);
aller_en(-5,12);
}
if (lettre == ‘g’) {
aller_en(-5,17);
myservo3.write(0);
aller_en(5,17);
aller_en(5,7);
aller_en(-5,7);
aller_en(-5,12);
aller_en(0,12);
}
if (lettre == ‘h’) {
aller_en(-5,7);
myservo3.write(0);
aller_en(-5,17);
myservo3.write(20);
aller_en(-5,12);
myservo3.write(0);
aller_en(5,12);
myservo3.write(20);
aller_en(5,7);
myservo3.write(0);
}
if (lettre == ‘i’) {
aller_en(0,7);
myservo3.write(0);
aller_en(0,17);
}
if (lettre == ‘j’) {
aller_en(-5,7);
myservo3.write(0);
aller_en(0,7);
aller_en(0,17);
}
if (lettre == ‘k’) {
aller_en(5,7);
myservo3.write(0);
aller_en(5,17);
myservo3.write(20);
aller_en(5,12);
myservo3.write(0);
aller_en(-5,17);
myservo3.write(20);
aller_en(5,12);
myservo3.write(0);
aller_en(-5,7);
}
if (lettre == ‘l’) {
aller_en(-5,7);
myservo3.write(0);
aller_en(5,7);
aller_en(5,17);
}
if (lettre == ‘m’) {
aller_en(-5,7);
myservo3.write(0);
aller_en(-5,17);
aller_en(0,12);
aller_en(5,17);
aller_en(5,7);
}
if (lettre == ‘n’) {
aller_en(5,7);
myservo3.write(0);
aller_en(5,17);
aller_en(-5,7);
aller_en(-5,17);
}
if (lettre == ‘o’) {
aller_en(5,7);
myservo3.write(0);
aller_en(5,17);
aller_en(-5,17);
aller_en(-5,7);
}
if (lettre == ‘p’) {
aller_en(5,7);
myservo3.write(0);
aller_en(5,17);
aller_en(-5,17);
aller_en(-5,12);
aller_en(5,12);
}
if (lettre == ‘q’) {
aller_en(5,7);
myservo3.write(0);
aller_en(5,17);
aller_en(-5,17);
aller_en(-5,7);
myservo3.write(20);
aller_en(0,12);
myservo3.write(0);
aller_en(-10,2);
}
if (lettre == ‘r’) {
aller_en(5,7);
myservo3.write(0);
aller_en(5,17);
aller_en(-5,17);
aller_en(-5,12);
aller_en(5,12);
aller_en(5,7);
}
if (lettre == ‘s’) {
aller_en(5,7);
myservo3.write(0);
aller_en(-5,7);
aller_en(-5,12);
aller_en(5,12);
aller_en(5,17);
aller_en(-5,17);
}
if (lettre == ‘t’) {
aller_en(0,7);
myservo3.write(0);
aller_en(0,17);
myservo3.write(20);
aller_en(5,17);
myservo3.write(0);
aller_en(-5,17);
}
if (lettre == ‘u’) {
aller_en(5,17);
myservo3.write(0);
aller_en(5,7);
aller_en(-5,7);
aller_en(-5,17);
}
if (lettre == ‘v’) {
aller_en(5,17);
myservo3.write(0);
aller_en(0,7);
aller_en(-5,17);
}
if (lettre == ‘w’) {
aller_en(5,17);
myservo3.write(0);
aller_en(2.5,7);
aller_en(0,12);
aller_en(-2.5,7);
aller_en(-5,17);
}
if (lettre == ‘x’) {
aller_en(-5,7);
myservo3.write(0);
aller_en(5,17);
myservo3.write(20);
aller_en(-5,17);
myservo3.write(0);
aller_en(5,7);
}
if (lettre == ‘y’) {
aller_en(0,7);
myservo3.write(0);
aller_en(0,12);
aller_en(-5,17);
myservo3.write(20);
aller_en(0,12);
myservo3.write(0);
aller_en(5,17);
}
if (lettre == ‘z’) {
aller_en(-5,7);
myservo3.write(0);
aller_en(5,7);
aller_en(-5,17);
aller_en(5,17);
}
if (lettre == ‘0’) {
aller_en(5,7);
myservo3.write(0);
aller_en(5,17);
aller_en(-5,17);
aller_en(-5,7);
}
if (lettre == ‘1’) {
aller_en(0,7);
myservo3.write(0);
aller_en(0,17);
aller_en(-5,12);
}
if (lettre == ‘2’) {
aller_en(-5,7);
myservo3.write(0);
aller_en(5,7);
aller_en(-5,12);
aller_en(-5,17);
aller_en(5,17);
aller_en(5,12);
}
if (lettre == ‘3’) {
aller_en(5,7);
myservo3.write(0);
aller_en(-5,7);
aller_en(-5,12);
aller_en(5,12);
myservo3.write(20);
aller_en(-5,12);
myservo3.write(0);
aller_en(-5,17);
aller_en(5,17);
}
if (lettre == ‘4’) {
aller_en(0,7);
myservo3.write(0);
aller_en(0,17);
aller_en(5,12);
aller_en(-5,12);
}
if (lettre == ‘5’) {
aller_en(5,12);
myservo3.write(0);
aller_en(5,7);
aller_en(-5,7);
aller_en(-5,12);
aller_en(5,17);
aller_en(-5,17);
}
if (lettre == ‘6’) {
aller_en(-5,17);
myservo3.write(0);
aller_en(5,17);
aller_en(5,7);
aller_en(-5,7);
aller_en(-5,12);
aller_en(5,12);
}
if (lettre == ‘7’) {
aller_en(5,7);
myservo3.write(0);
aller_en(-5,17);
aller_en(5,17);
}
if (lettre == ‘8’) {
aller_en(-5,7);
myservo3.write(0);
aller_en(5,7);
aller_en(5,12);
aller_en(-5,12);
aller_en(-5,17);
aller_en(5,17);
aller_en(5,12);
aller_en(-5,12);
aller_en(-5,7);
}
if (lettre == ‘9’) {
aller_en(5,7);
myservo3.write(0);
aller_en(-5,7);
aller_en(-5,17);
aller_en(5,17);
aller_en(5,12);
aller_en(-5,12);
}
else{
Serial.println(« mauvais caractère »);
bluetooth.print(« mauvais caractère »);
}
}
double angle1(double alpha){
double resultat = angle_depart1 – alpha;
return resultat;
}
double angle2(double alpha){
double resultat = angle_depart2 – alpha;
return resultat;
}
void aller_en(double x,double y){
double gamma1 = (atan2(y,x+distance/2))*(180/pi);
double c1 = sqrt(y*y + (x+distance/2)*(x+distance/2));
double truc = (l1*l1 + c1*c1 – l2*l2)/(2*l1*c1);
double beta1 = (180/pi)*acos(truc);
double alpha1 = beta1 + gamma1;
double gamma2 = (atan2(y,x-distance/2))*(180/pi);
double c2 = sqrt(y*y + (x-distance/2)*(x-distance/2));
double beta2 = (acos((l1*l1 + c2*c2 – l2*l2)/(2*l1*c2)))*(180/pi);
double alpha2 = gamma2 – beta2;
Serial.print(« le servo de gauche va a « );Serial.print(alpha1);Serial.println( » degrés »);
myservo1.write(angle1(alpha1));
Serial.print(« le servo de droite va a « );Serial.print(alpha2);Serial.println( » degrés »);
myservo2.write(angle2(alpha2));
delay(1000);
}
// driveArdumoto drives ‘motor’ in ‘dir’ direction at ‘spd’ speed
void driveArdumoto(byte dir, byte spd)
{
digitalWrite(DIRA, dir);
analogWrite(PWMA, spd);
}
// stopArdumoto makes a motor stop
void stopArdumoto()
{
driveArdumoto(0, 0);
}
// setupArdumoto initialize all pins
void setupArdumoto()
{
// All pins should be setup as outputs:
pinMode(PWMA, OUTPUT);
pinMode(DIRA, OUTPUT);
// Initialize all pins as low:
digitalWrite(PWMA, LOW);
digitalWrite(DIRA, LOW);
}
Projet développement :Braille pour grimpeur
BEDETTI Corto
BLANCHARD Elisa
MASSOT Guillemette
Le but de notre projet développement est de faciliter la pratique de l’escalade pour les personnes déficientes visuelles. Afin de leur permettre d’avoir une première appréhension des prises pour une voie donnée, nous avons réalisé une maquette 3D représentant leur position et leurs formes.
Dans un premier temps, nous nous sommes intéressés aux moyens à mettre en œuvre pour acquérir les données sur les prises, c’est-à-dire leur position, leur couleur ainsi que leur forme. Nous avons réalisé des traitements sur l’image 2D grâce à un programme Python, afin de ne garder que les prises d’une même couleur.
- Mur d’escalade de Télécom Bretagne
- Image obtenue après traitement de la voir bleue
Pour que ce traitement soit plus précis, en évitant par exemple les erreurs dues aux traces laissées par d’anciennes prises ; nous avons rajouté une correction manuelle, pour ajouter ou supprimer des prises. Nous avons ainsi obtenu une image contenant uniquement les prises d’une même couleur, c’est-à-dire les prises formant une voie d’escalade.
La voie ainsi reconstruite, nous avons converti l’image en un fichier compatible avec l’imprimante 3D, et avons distingué les prises du fond en faisant varier l’épaisseur d’impression.
Enfin nous avons réalisé une interface permettant de reproduire automatiquement le même traitement en se basant sur une photo. Une fois la photo chargée dans l’interface, l’utilisateur sélectionne une prise. L’interface distingue ensuite automatiquement toutes les prises de cette couleur pour reconstituer la voie. L’interface est accompagnée d’une fiche d’explication donnant quelques conseils concernant l’acquisition des données, afin d’avoir un traitement optimal.
L’interface nous permet de récupérer les données RGB (triplet de couleur) d’un point sélectionné sur la prise. On définit ensuite un seuil de tolérance, ainsi on ne conserve que les pixels dont les données RGB appartiennent à l’intervalle [valeur initiale – seuil; valeur initiale + seuil]. On ajoute une bande sur l’image pour que les personnes déficientes visuelles puissent repérer le haut de la maquette.
L’interface manuelle permet d’ajouter ou de supprimer des prises. Le programme rajoute un carré respectivement de la couleur de la voie ou noir à l’endroit où l’on clique.
Lien pour les codes : https://github.com/GuillemetteMassot/Interface
Projet Ligne Bleue
Ce projet a été réalisé dans le cadre du projet développement, qui a eu lieu lors du second semestre.
Descriptif du projet :
En 1680, la ville de Brest a été fortifiée. Les remparts ont été entièrement démolis après-guerre, mais il est possible de deviner leurs formes en observant une carte de la ville. Gwenaëlle Magadur, artiste peintre plasticienne, propose donc à la ville de redessiner leurs formes et en juin 2000, une ligne bleue est tracée à même le sol. Notre projet consiste en la réalisation d’une application Android qui doit permettre à un utilisateur de visualiser du contenu visuel et textuel, une photographie et un poème par exemple. En lançant l’application, l’utilisateur se verra proposer une balade dans le vieux Brest.
Cadre de travail :
Nous avons choisi de travailler sur une carte de la ville de Brest sur laquelle nous avons modélisé la ligne bleue par un trait fin de la même couleur. En raison de l’intégration des services Google, nous avons décidé de travailler avec une carte GoogleMap. Afin de signaler la présence de contenu, des marqueurs interactifs ont été déposés le long de la ligne. Lorsque que l’utilisateur clique sur un marqueur, il sera redirigé vers le contenu correspondant.
Séquence d’utilisation :
Premièrement, l’utilisateur démarre l’application, il accède à la page d’accueil. Lorsqu’il clique sur Accéder à la carte, il arrive sur le layout de la 2ème figure, enfin il sélectionne un marqueur en cliquant dessus et accède au layout de la dernière activité, la SwipeActivity. Cette activité présente une photo statique en haut de l’écran et un texte scrollable en dessous : au glissement de doigt vertical, le texte défile sous l’image sans modifier celle-ci. Lors d’un glissement horizontal, les entités image et texte changent.
Stockage des données :
Nous stockons le contenu multimédia dans un serveur web et identifions les caractéristiques de ce contenu dans une base de données. Lorsque l’application Android souhaite accéder à un certain contenu multimédia, elle transfère donc au serveur web une clé. Cette clé est transmise à la base de données, qui identifie quelle image le serveur web doit envoyer au client Android.
Ce qui reste à améliorer :
Plusieurs évolutions restent envisageables. L’application pourrait guider l’utilisateur jusqu’à la ligne bleue, grâce à un itinéraire fourni par Google. Il serait également possible que les utilisateurs laissent leurs avis sur l’application ou déposent du contenu eux-mêmes, éventuellement validé par l’artiste avant d’être mis à la disposition de tous. Enfin, il pourrait être intéressant de créer une interface d’ajout de contenu pour l’artiste, afin de faciliter l’entrée de données qui se fait actuellement directement dans la base de données.
Communiquer par la lumière
Le Li-Fi est une technologie récente basée sur la lumière visible qui risque de connaître un véritable essor pendant les prochaines décennies. Notre projet a pour but de faire découvrir au grand public ce qu’est le Li-Fi.
Pour ce faire nous avons construit un prototype capable de transmettre de l’information grâce à la lumière. Ce système qui comprend un récepteur et un émetteur est capable de transmettre des messages textes.
L’émetteur est composé d’une LED alimentée par un ordinateur et reliée à une carte Arduino. L’utilisateur rentre une phrase qu’il veut transmettre sur l’ordinateur, le code implémenté sur la carte Arduino se charge de coder le message et de moduler l’amplitude du signal électrique reçu par la LED pour émettre ce code.
Le récepteur est composé de deux parties. Une partie composée d’une photorésistance, d’un résistor et d’un amplificateur est chargée de récupérer l’amplitude du signal lumineux ambiant. Ce système est relié à une carte Arduino qui peut extraire et traduire le message binaire contenu dans le signal lumineux.
La fréquence de fonctionnement de notre système est de deux Hertz. Ceci peut être vu comme un inconvénient du aux limitations introduites par la photorésistance. En réalité, il renforce l’aspect ludique de notre projet car l’utilisateur peut voir les alternances LED allumée/éteinte et comprend ainsi comment l’information est codée.code :
int led = 13;
int t=500;
char message[]= »SALUT COMMENT CA VA ?? »;
void setup() {
pinMode(led, OUTPUT);
}
void lireMessage(char lettre){
if(lettre==’A’){
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
}
if(lettre==’B’){
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
}
if(lettre==’C’){
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
}
if(lettre==’D’){
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
}
if(lettre==’E’){
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
}
if(lettre==’F’){
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
}
if(lettre==’G’){
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
}
if(lettre==’H’){
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
}
if(lettre==’I’){
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
}
if(lettre==’J’){
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
}
if(lettre==’K’){
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
}
if(lettre==’L’){
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
}
if(lettre==’M’){
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
}
if(lettre==’N’){
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
}
if(lettre==’O’){
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
}
if(lettre==’P’){
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
}
if(lettre==’Q’){
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
}
if(lettre==’R’){
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
}
if(lettre==’S’){
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
}
if(lettre==’T’){
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
}
if(lettre==’U’){
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
}
if(lettre==’V’){
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
}
if(lettre==’W’){
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
}
if(lettre==’X’){
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
}
if(lettre==’Y’){
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
}
if(lettre==’Z’){
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
}
if(lettre==’`’){
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
}
if(lettre==’,’){
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
}
if(lettre==’.’){
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
}
if(lettre==’ ‘){
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
}
if(lettre==’?’){
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
}
if(lettre==’!’){
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
}
if(lettre==’1′){
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
}
if(lettre==’2′){
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
}
if(lettre==’3′){
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
}
if(lettre==’4′){
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
}
if(lettre==’5′){
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
}
if(lettre==’6′){
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
}
if(lettre==’7′){
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
}
if(lettre==’8′){
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
}
if(lettre==’9′){
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
}
if(lettre==’0′){
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
digitalWrite(led, LOW);delay(t);
}
}
void loop() {
int i;
for(i=0 ; i< strlen(message); i++){
lireMessage(message[i]);
}
digitalWrite(led, LOW);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, HIGH);delay(t);
digitalWrite(led, LOW);delay(t);
//lireMessage(‘A’);
}
code récepteur :
Co-Opération
Description
Dans le cadre de l’intersemestre Fablab et Design avec L’EESAB, nous avions réaliser un prototype en groupe ( double binôme, l’un de Telecom Bretagne, l’autre de l’EESAB). Nous avons décidé de poursuivre ce projet pour le projet développement. Ce projet a pour thème le numérique à l’école.
Ce projet se divise en deux partie : La réalisation d’un jeu éducatif Co-Opération, et le développement d’ateliers éducatifs pour des enfants du cycle 3 ayant pour but de les initier à l’informatique et à l’électronique.
I-Co-Opération
But du Projet
Ce projet est une activité ludique et éducative pour apprendre les tables de multiplication. C’est un jeu qui se joue à deux, en coopération. Il se présente sous la forme de deux estrades recouvertes d’un tapis,ces dalles sont découpées en 9 cases et forment un pavé numérique d’un mètre carré, et d’une stèle comportant en son sein une carte arduino ainsi que deux afficheurs composées de LEDs adressables. Le but du jeu est de retrouver les facteurs d’un produit donné. En effet, l’écran affiche un nombre correspondant à un produit de deux chiffres, et les élèves doivent se concerter pour retrouver via leur tapis le nombre affiché (par exemple: 56 s’affiche à l’écran et l’un des enfants doit se mettre sur le 8, l’autre sur le 7). Pour cela, ils doivent se tenir debout sur les cases du pavé numériques adéquates.
Ces estrades sont sensibles à la pression appliquée sur les cases numérotées, permettant ainsi la détection d’une réponse de l’enfant. Une fois les deux enfants sur leur case, un délai d’une seconde s’écoule avant que la réponse ne soit validée ou infirmée.
Du point de vue esthétique développé par les étudiantes de l’EESAB, la recherche tourne autour de l’aspect graphique du tapis et de la stèle. Les formes vives et attractives sont importantes pour l’enfant. Aussi il est décidé que le mouvement de l’enfant est primordial dans le jeu. Ainsi il devient acteur de son apprentissage.
Solutions Techniques
Affichage
Dans notre système nous devons afficher le produit que les élèves doivent trouver, le score et indiquer si une réponse est bonne ou mauvaise. Pour cela nous avons utiliser des Néopixels. Ces LEDs adressables sont une bonne solution car on peut les mettre en série et les contrôler une à une ce qui permet d’utiliser très peu de pins de l’Arduino et de facilement afficher des chiffres. Le constructeur mettant à disposition une bibliothèque pour pouvoir facilement les contrôler. L’autre avantage de ces LEDs est qu’elles sont RGB, dans le cadre de notre projet cela nous permet de valider ou non la réponse d’un élève en changeant la couleur du produit. Il passera au orange pour une mauvaise réponse et au bleu pour une bonne réponse.
Les interrupteurs
Le second problème que nous avons rencontré est celui de gérer les 18 interrupteurs que sont les plaques numérotées sans pour autant surcharger l’Arduino, qui n’a pas assez d’entrées. Nous avons penser résoudre ce problème en utilisant dans un premier temps des registres à décalage. Ceux ci permettent de prendre des entrées en parallèles pour en faire une seule sortie en série. Ce dispositif n’utilise que 4 pins quelque soit le nombre d’entrées en parallèles. Grâce à ces registres, nous avons pu relier les 18 plaques à un seul Arduino, néanmoins plusieurs problèmes sont apparu lors de l’implémentation finale. Tout d’abord l’alimentation des trois registres à décalages était assez important et nous ne pouvions plus utiliser notre prototype en l’alimentant via le port USB d’un ordinateur. Ensuite il y avait un très grand nombre de fils entre les estrades et la stèle, 36 en tout, Cela rendait le prototype très confus, il était compliqué de brancher correctement les plaques à la stèle. Finalement cela ne fonctionnait pas surement à cause d’une erreur dans la soudure, confuse elle aussi à cause de tous les fils s’entremêlant.
Nous avons décider de trouver une nouvelle solution. Nous avons alors conçu un deux convertisseurs numériques analogiques simili R-2R grâce à des ponts de résistances. Ceux-ci se trouvent en sortie de chaque estrade et permettent de faire passer le nombre de fils entre les estrades et la stèle de 36 à 6. Cela rend aussi beaucoup plus facile le suivi de l’information, et réduit drastiquement la consommation de notre prototype. Le seul changement sur la carte Arduino est que l’on utiliser plus les pin numériques de celle-ci comme avec les registres à décalages mais les pins analogiques.
Les plaques de pression
Les plaques de pression envoient un signal jusqu’à la carte Arduino quand un des joueurs marchent dessus. Nous avions une contrainte supplémentaire des designers à propos de ces plaques, il fallait avoir possibilité de ranger l’estrade. Dans un premier temps nous voulions utiliser la déformation des plaques sous le poids du joueur grâce à des matériaux piézoélectriques mais nous avons finalement abandonner cette idée. Nous avons alors découpé de manière individuelle chaque plaque et fait un cadre de mousse, nous utilisons alors l’affaissement de la plaque et plus sa déformation. Pour transmettre le signal nous avons d’abord essayé avec un capteur de force, cela fonctionnait bien mais le prix de ce genre de capteur est trop élevé pour l’usage que l’on voulait en faire et nous nous somme rabattu sur du ruban adhésif aluminium. On pose de ce ruban conducteur en dessous de la plaque et sur un morceau de bois, on soude des fils sur ces bouts de ruban. Ainsi quand un joueur marchera sur une plaque les rubans conducteurs rentreront en contact fermant alors le circuit.
II-Ateliers éducatifs
Pour initier les enfants aux rudiment de l’électronique et de l’électronique nous avons développer des ateliers éducatifs, ces ateliers sont accompagné de fiches techniques pour que n’importe quel enseignant puisse les mettre en place. Enfin ces ateliers ont pour but final de concevoir une petite calculatrice.
Les ateliers
Nous ne disposons que de quatre séances d’une heure chacune avec les élèves de primaire. Cependant, nous avons divisé notre initiation à l’électronique et l’informatique en six ateliers plus une réalisation finale. Ainsi, la première séance est une séquence d’introduction au projet, et est également l’occasion de présenter son déroulement. Puis lors de la deuxième session, la classe est divisée en trois groupes, chaque groupe s’occupant d’un atelier découverte. Ensuite, durant la troisième séance, chacun de ces trois groupes travaille sur la conception d’une partie de la calculatrice.
Enfin, la dernière heure est consacrée à l’intégration des trois parties constituant la calculatrice pour obtenir un appareil fonctionnel. Pour ce faire, les élèves doivent, collectivement, travailler sur l’intégration des différentes parties, tout en expliquant aux personnes des différents groupes l’essentiel de ce qu’ils ont appris.
Encadrement des élèves
Les élèves de primaire sont divisés en trois groupes à chaque séance, chacun traitant un atelier. Pour chaque groupe, il y a au moins un encadrant, que ce soit un enseignant ou un membre du projet, pour accompagner les élèves dans leurs réflexions et les aider à tirer les notions que l’atelier leur permet d’acquérir.
A la fin de chaque séance, les élèves doivent faire une mise au point de leur apprentissage afin que l’ensemble du groupe bénéficie de l‘atelier.
Réalisation finale : la calculatrice
Après avoir pris connaissance des notions de base en électronique et en informatique, durant les deux premières séances, les élèves, divisés en groupe, doivent, durant la troisième séance, mettre en œuvre leurs acquis pour réaliser une partie de la calculatrice avec le matériel à leur disposition. Ils ont ainsi à opter pour une des différentes solutions possibles pour faire le travail demandé dans la partie qui les concerne. Plus concrètement, le premier groupe doit choisir les composants qu’il utilise pour construire le pavé numérique de la calculatrice, le deuxième groupe doit trouver un système de transmission de données commode et le troisième groupe a à implémenter un programme qui permet d’effectuer les opérations de base, c.à.d. l’addition, la soustraction, la multiplication et la division.
Tout au long de ce projet, les élèves sont amenés à justifier la pertinence de leurs choix auprès des encadrants.
Résumé des ateliers
Voici un résumé des différents ateliers, des activitées mises en places, des durées indicatives des ces ateliers et du support et matériel nécessaire pour faire ces ateliers.