Agrégateur flux RSS
Ce projet a été réalisé dans de cadre d’une validation du mooc « La fabrication numérique ».
Après avoir suivi la formation en ligne, j’ai conçu un projet d’agrégateur RSS avec Arduino.
Jeremy Sfez
Présentation du projet
Le dispositif récupère les informations sur le flux RSS de « Googles news ». Après avoir parsé le flux (bibliothèque « TextFinder »), il affiche le premier titre sur un l’écran LCD 2×16. Quand l’utilisateur appui sur le bouton, le titre suivant est affiché.
N’ayant pas à ma disposition de carte ethernet, le téléchargement du flux RSS est fait par script python. Le programme communique directement avec le dispositif sur le port série grâce la bibliothèque « serial ».
Présentation du dispositif
Présentation de l’algorithme
Matériel utilisé
- 1 cartes Arduino Uno
- 1 écran LCD 2×16
- 1 breadboard
- 1 bouton
- 1 résistance de 560 Ohms
- potentiomètre de 10 kOhms (pour régler le contraste de l’écran)
- fils de connexions
Schéma du montage
Code Arduino
//Bibliothèques
#include <LiquidCrystal.h>
#include <TextFinder.h>
LiquidCrystal lcd(12, 11, 4, 5, 6, 7); //Variables pour ecran LCD TextFinder finder(Serial); //Variables pour parser le XML
char actualite[5][320];
int nbrArticlesRecu;
int nbrArticlesMax=5;
int t[] = {0, 0, 0, 0, 0};
int tmp = 0;
int numArticle = 0;
int cursor = 0;
int nbrAppelAffichage = 0;
//Variables pour le bouton const int buttonPin = 2; int buttonState = 0; int lastButtonState = 0;
void setup() {
// delay(2000);
Serial.begin(115200);
nbrArticlesRecu=0; //Initialisation parseur
nbrAppelAffichage=0;
pinMode(buttonPin, INPUT); //Initialise bouton comme input
//Initialise ecran LCD
lcd.begin(16, 2);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Download news...");
lcd.setCursor(0,1);
lcd.print("Launch file .py");
Serial.println("Debut du programme");
}
void loop(){
if(nbrArticlesRecu<nbrArticlesMax){ // Récupération du flux RSS google news
// Le XML est parcouru pour récupérer les titres des articles à une
if((t[nbrArticlesRecu]=finder.getString("<item><title>","</title>",actualite[nbrArticlesRecu],320))>0){
nbrArticlesRecu=nbrArticlesRecu+1;
}
delay(50);
}
else{
afficherMessage2(actualite[numArticle], t[numArticle], nbrAppelAffichage);
nbrAppelAffichage++;
delay(4000);
buttonState = digitalRead(buttonPin);
if (buttonState != lastButtonState) {
if (buttonState == HIGH) {
numArticle=(numArticle+1)%nbrArticlesMax;
nbrAppelAffichage=0;
Serial.println(" bouton ");
}
delay(50);
}
lastButtonState = buttonState;
}
}
void afficherMessage2(char* message, int taille, int numAppel){
int nombreEcran = (taille-1)/32 + 1;
// Serial.println(numAppel);
int choixEcran = numAppel%nombreEcran;
int pointeurMsg = choixEcran*32;
for(int i=0;i<16;i++){
lcd.setCursor(i,0);
if(pointeurMsg+i<taille) lcd.print(message[pointeurMsg+i]);
else lcd.print(" ");
lcd.setCursor(i,1);
if(pointeurMsg+16+i<taille) lcd.print(message[pointeurMsg+16+i]);
else lcd.print(" ");
}
}
Code Python
#!/usr/bin/python
import serial
import unicodedata
import urllib2
ser = serial.Serial(‘/dev/tty.usbmodem1411’, 115200);
# Recuperation du flux rss google news
data = urllib2.urlopen(« http://news.google.fr/?output=rss »).read();
# Overture d’un fichier tampon
f = open(‘Flux RSS.txt’, ‘r+’);
# Ecriture dans le fichier des donnes recu
f.write(data);
s1 = unicode(data,’utf-8′);
data = unicodedata.normalize(‘NFD’, s1).encode(‘ascii’, ‘ignore’);
data = data.replace(« ‘ », »‘ »);
ser.write(data);
Présentation du Fablab Ecodesign lab de Montreuil
L’écodesign fablab est un espace de 102m2 situé au dernier étage de l’usine verticale Mozinor. Ce lieu héberge un cinquantaine d’entreprises qui génèrent 3000 tonnes par an de déchets bois, plastiques et divers matériaux. Le fablab récupère ces matériaux et les machines obsolètes et les mets à disposition des adhérents.
L’écodesign fablab est un espace de travail ou les makers peuvent créer et échanger. Les adhérents sont architectes, designers, ébénistes et des makers amateurs.
On peut y réaliser du mobilier ou luminaires, réparer des objets, concevoir des projets, des maquettes ou des prototypes et mener des projets en équipes. Les mots d’ordre sont apprendre créer et partager.
Les adhérents sont accompagnés depuis la conception jusqu’à la réalisation.
On y trouve les machines suivantes :
- Imprimante 3D
- Découpeuse à fil chaud
- Fraiseuse numérique
- Machine à coudre professionnelle
- Poste C.A.O.
Et biens d’autres… (notamment pour travailler le bois).
Comme dans la plupart des fablab, ici le l’open source et le partage sont mis à l’honneur.
Merci a Philippe Schiesser, Président de l’Apedec (association de l’écodesign et de l’éco-conception), qui m’a ouvert les portes du fablab, et présenté l’espace de coworking.
Réparation du dispositif d’entrée de coulisseaux de grand-voile pour Neraki
article rédigé par Paul Friedel
Depuis une dizaine d’année le dispositif d’insertion des coulisseaux de guindant de grand-
voile dans la gorge du mât de Neraki (Feeling 326) était défectueux. D’origine dans ce mât Francespar (repris par Sparcraft), le matériau polymère avait un peu durci mais surtout les efforts imposés lorsque l’on prenait un ris sans sortir les coulisseaux se traduisaient dans une direction non prévue par le fabricant. Ces efforts ont conduit à une rupture de la cage dans laquelle se meut le levier d’insertion.
Dans les premières années, j’ai fait des réparations à base de tissu de verre polymérisé. J’ai tenté de reconstruire les parties disparues de la cage mais sans succès. Les fabricants de gréement contactés m’ont assuré que ces pièces n’existaient plus chez les fabricants.
En 2012 lors d’un démâtage, le désarmement de la voile a conduit à une rupture de la partie mobile au niveau de l’axe de rotation. Dès lors la pièce devenait radicalement inutilisable, aucune colle ne permettant de tenir les efforts imposés par cette rotation sous la pression de la mousse qui repousse la partie mobile en position alignée à la gorge de mât après introduction des coulisseaux. J’ai donc dû me passer de cette pièce pendant deux ans et gérer le maintien des coulisseaux dans le mât avec un Sandow.
Figure 1 : Cage d’origine dans son état actuel
Figure 2 : Partie mobile d’origine dans son état actuel, axe recollé.
En 2011 Télécom Bretagne s’est procurée une imprimante 3D d’entrée de gamme pour le fablab. Intéressé à tester les nouveaux moyens de production, j’ai donc pensé utile de tracer les plans des deux pièces du dispositif avant de les envoyer au Téléfab pour un test de fabrication.
Ceci m’a permis de découvrir les impressionnantes possibilités de l’outil gratuit Sketchup de Google pour les tracés 3D de pièces relativement précises et complexes. En revanche les essais effectués sur l’imprimante par Sylvie Kerouedan ont montré les limites de nos capacités. L’imprimante de l’école ne permettait pas de faire de parties en porte-à-faux. Par ailleurs le matériau d’impression n’avait très probablement ni la résistance mécanique ni la précision d’impression nécessaires pour une pièce de gréement (non soumis en temps
normal à des efforts importants néanmoins).
Figure 3 : Plan 3D sous Sketchup de la pièce : cage, mobile et assemblage des deux. Plan
établi sur un relèvement de mesures de la pièce dégradée et une extrapolation pour la partie
manquante.
Ce n’est qu’en découvrant le robot humanoïde imprimé en Chine sous commande de Mai Nguyen que j’ai pris conscience des possibilités réelles d’une impression 3D de qualité professionnelle. Ayant rencontré David Pliquet à la Cantine et surtout aux Fabriques du Ponant, il m’a semblé intéressant de chercher une solution en passant par un professionnel de l’impression 3D, la société E-Mage-In 3D créée par David Pliquet.
Pour un coût très raisonnable pour un prototype (à voir en production de série) la société E-Mage-In 3D a produit un premier exemplaire à base d’un polyméthyl métacrylate, Verowhite dont les caractéristiques sont données dans la fiche technique.
Figure 4 : premier prototype produit par E-Mage-In 3D sur plans personnels
Au premier essai de montage, force a été de constater que les cotes étaient trop serrées d’un demi millimètre en particulier pour la « pince » de la cage dans sa partie haute (à droite sur la figure ci-dessus). J’ai usiné la pièce pour faire disparaître le plateau supérieur en espérant qu’elle rentrerait dans le logement. Las, tout le plateau supérieur était dessiné un peu trop bas par rapport à la partie interne et en forçant pour insérer la pièce dans le logement prévu du mât, la paroi latérale a cassé comme du verre. Le mobile en revanche semble suffisamment compact pour tenir les efforts qui lui sont imposés pendant
l’introduction.
Très gentiment, David Pliquet a proposé de refaire une impression de cage avec un matériau plus résistant. J’ai repris le dessin en rehaussant le plateau de 0,3mm et en renforçant la pente pour tenir compte de la rotondité du mât. J’ai aussi amélioré le dessin qui laissait voir des « vides » par endroit (qui ne semblent pas gêner pour l’impression !). Davis Pliquet a refait une impression avec un matériau « plus chargé ». Le résultat est très intéressant : le matériau bien que plus rugueux en surface a une certaine élasticité que ne démontre pas le PMMA de départ. Moyennant quelques ajustements nécessaires : le double triangle arrondi (visible sur la Figure 4 en bas à gauche) est trop long de 0,7mm ; la partie haute du plateau (à droite) et le plan incliné du haut doivent encore avoir 0,1mm ou 0,2mm d’écartement supplémentaire et surtout arrondi pour la partie plan incliné ; enfin le jonc rajouté (non visible sur les photographies) pour caler la mousse encollée sur le fond de la cage est trop proéminente du fait que j’ai dessiné le renfort inférieur de la partie mobile en plein plutôt que deux jonc partant de l’axe et longeant les bords de la partie mobile.
J’ai pu faire tous ces petits ajustements avec mon outil Dremel sur place au ponton. Le résultat est une insertion parfaite de l’ensemble. Il faut forcer un peu pour insérer et la cage et le mobile au fond de la cage comme c’était le cas avant dans le système d’origine.
Reste à tester le fonctionnement du système, la facilité d’introduction des coulisseaux que je n’ai pas encore eu le temps de tester ainsi que l’usure avec le temps et les intempéries.
Mais la conclusion à de stade est que l’impression 3D permet de faire des pièces mécaniques résistantes et usinables. Je suis à ce stade, extrêmement satisfait de cet essai.
à suivre…
Projet 63 : L’éolienne Savonius
Résumé :
Pour pouvoir utiliser une éolienne sur le campus, il est d’abord indispensable de se procurer les droits administratifs nécessaires pour la pose d’un tel système et d’être vigilant aux contraintes qui nous sont imposées. Les matériaux de récupération nécessaires à la construction ont été collectés depuis de diverses sources : casse automobile, Emmaüs, LeBonCoin, port de commerce de Brest, “Guyot environnement”… La construction de l’éolienne est menée à terme et est capable de tourner à 2 tours/seconde et de délivrer une tension correcte. Cependant, il reste des voies d’amélioration, notamment en ce qui concerne la solidité du bâti et le système de réduction.
Liste des matériaux de récupération utilisés pour la construction :
– Roulement arrière de voiture
– Dispositif de rotation du tambour d’une machine à laver
– Un bidon bleu de 120L
– Deux pans de placard
– 4 tringles à rideaux
– Deux planches de bois
– Un moteur (fonctionnant en génératrice)
– Une poutre métallique
– Un set de vis
Pré-conception de l’éolienne :
Nous avons tout d’abord effectué une modélisation CAO de l’éolienne sous SolidWorks, qui a été le fil directeur de la conception de l’éolienne.
Étapes de la construction :
Dans un premier temps, nous avons fixé les pales de l’éolienne (les deux demi-bidons de 1m20 de hauteur) entre deux plaques de bois que l’on a usinées de manière circulaire. Cette pièce représente le corps des pales, la partie tournante de l’éolienne.
Ensuite, nous avons fixé le réceptacle du roulement du haut de l’éolienne sur la planche des pales. Le roulement du haut, appartenant au bâti, repose sur cette pièce. Il faut par la suite fixer le roulement du haut à la planche du bâti de l’éolienne.
Il nous a fallu ensuite concevoir le système de roulement du bas. Pour cela, nous avons superposé deux planches de bois circulaires à l’aide de portions de poutres de bois, pour des raisons d’architecture : les pales ne doivent pas entrer en contact avec le boîtier du moteur ! Sur la planche supérieure, nous avons fixé le réceptacle du roulement du bas.
Nous avons découpé le panneau en bois de protection, très robuste, pour soutenir l’éolienne. C’est au travers de cette planche que l’on a fixé le système de roulement de machine à laver, comportant aussi le système poulie-courroie.
Enfin, nous assemblons le tout et fixons les tringles à rideaux pour soutenir l’éolienne et solidariser le bâti. L’éolienne est sur pied !
Conclusion :
Après avoir effectué une étude préalable sur l’éolienne que nous allions construire, nous avons recherché les matériaux de récupération dont nous avions besoin pour l’édification de l’éolienne. Suite à cela, nous avons débuté la
construction l’éolienne en se basant sur sa version CAO. L’éolienne est fonctionnelle et est capable de délivrer une tension de 10V environ, pour une vitesse de rotation de 1 tour/seconde. Néanmoins, il reste des pistes d’améliorations qui pourraient être explorées dans le cadre d’un autre projet, notamment au niveau de la solidité du bâti, de la génératrice et du système de réduction. On peut aussi envisager la conception d’une application permettant de visualiser la vitesse de rotation de l’éolienne en temps réel, comme nous l’avions souhaité initialement, en espérant que notre travail suscitera le désir d’un autre groupe de projet de poursuivre et d’approfondir la conception totale de notre éolienne !
Projet 5 : Un système de surveillance à distance de la spiruline
Résumé :
Afin de faciliter la supervision de la culture de la spiruline, nous avons développé un système de capteurs mesurant la température, la luminosité et l’humidité de la serre ainsi que la température, la turbidité et le pH de l’eau des bassins de culture. Il permet de récupérer et de stocker ces mesures et de les afficher sur un écran grâce à un site web.
Objectifs :
Pour simplifier la surveillance de la culture nous nous proposons de :
-
Faciliter le remplissage du journal de bord pour le spirulinier.
-
Automatiser le relevé des mesures.
-
Permettre la supervision à distance de la culture.
-
Avoir un budget inférieur à 250 €.
Développement technique :
Comme on peut le voir sur le schéma de la figure 1, notre système est décomposable en quatre sous parties :
– Un regroupement de 5 capteurs lié à un premier Arduino afin de collecter les données environnementales ;
– Une communication sans fil via une liaison radio pour permettre une certaine mobilité des capteurs ;
– Une base de données qui stocke toutes les mesures réalisées par les capteurs depuis leur mise en service ;
– Un site web permettant la consultation et l’édition du journal de bord du spirulinier ainsi que la visualisation graphique de l’évolution des mesures au cours du temps.
|
Matériel |
|
– 2 Arduino UNO avec les câbles USB pour connecter avec l’ordinateur ; |
|
– Un sonde PH Smecatronix DF028 ; |
|
– Un sonde de température étanche DS18B20 ; |
|
– Un capteur lumière TSL2561 ; |
|
– Un capteur de température ( dans l’air ) et humidité RHT03(DHT22) ; |
|
– Un capteur de turbidité que nous avons fabriqué à l’aide d’une photorésistance, d’une résistance de 1,16KOhm et d’une LED; |
|
– Un transmetteur FS1000A ; |
|
– Un récepteur XY-FST ; |
|
– 3 résistances : 2 de 4.7kOhm. |
- Un système de 5 capteurs :
Un capteur de température et d’humidité. Sa référence est RHT03 (DHT22). Il existe de nombreux tutoriels sur internet qui nous permettent de bien apprendre à l’utiliser. Il est cependant nécessaire d’installer la bibliothèque DHT.
Un capteur de température étanche dont la référence est DS18B20.
Une sonde pour mesurer le pH de référence Smecatronix DF028.
Un capteur de luminosité TSL2561. Nous avons réussi comme précédemment à trouver des montages et des codes pour les faire fonctionner. Si nécessaire, il faut aussi installer la bibliothèque pour le capteur.
Enfin, nous avons associé tous les capteurs. Nous avons également rassemblé les différents codes pour faire fonctionner notre système sur l’Arduino.
Notre principal défi a été de créer par nous même un capteur de turbidité. La difficulté réside dans le fait que ce capteur n’existe pas pour le moment. Mme Ménard nous a montré comment elle évaluait la turbidité avec un disque de Secchi. Cette mesure n’est pas très précise, elle est faite pour évaluer en gros la turbidité. C’est pourquoi pour ce capteur nous avons décidé d’utiliser une photorésistance plutôt qu’un capteur de luminosité plus précis. Face à cette photorésistance nous avons fixé une LED qui s’allume à intervalle régulier quand la photorésistance prend des valeurs. La structure ainsi créé est étanchéifiée grâce à du film plastique. On la place alors dans le bassin. Plus l’eau est trouble plus elle absorbe la lumière donc plus la valeur renvoyée par la photorésistance. On peut ainsi estimer la turbidité de l’eau.
-
Une transmission radio :
Notre cliente souhaite une communication sans fil entre les capteurs collectant les résultats des mesures et le lieu où ceux-ci sont stockés puis analysés. Pour ce faire, nous avons opté pour l’utilisation d’une liaison radio. Nous travaillons avec les modules radio FS1000A/XY-FST RF, émetteur et récepteur, utilisant la fréquence 433 MHz (cf figure 6). Ceux-ci sont peu chers et facile d’utilisation.
Nous avons utilisé la librairie VirtualWire, disponible en téléchargement libre sur internet, où les fonctions prennent en compte cette faille et introduisent de la redondance dans leur code. Par précaution, nous avons introduit dans notre propre code une méthode semblable à celle du bit de parité. En effet, lorsque le transmetteur envoie des données, il envoie également leur somme. Le récepteur, quant à lui, reçoit les données, en fait la somme et compare celle-ci à la somme reçue (celle qui a été envoyé par l’émetteur). Si les sommes sont différentes, c’est qu’il y a probablement eu une erreur dans la transmission donc le récepteur refuse les données. Elles ne seront pas enregistrées dans la base de données. Cependant, cette méthode ne nous permet pas d’identifier l’erreur ni de la corriger. Elle peut donc être améliorée.
-
Une base de données persistante :
Pour récupérer les données reçues par l’Arduino et les mettre dans une base de données, nous avons utilisé le langage de programmation Python. En effet, son utilisation est simple et les ressources sont nombreuses sur internet pour nous aider à implémenter un code nous permettant de récupérer les informations sur l’ordinateur, de les afficher et de les placer dans une base de données MySQL . Notre base de données est composées de tuples (lignes) et d’attributs (colonnes) permettant d’enregistrer et de retrouver aisément l’information recherchée par l’utilisateur c’est-à-dire le spirulinier. On utilise phpMyAdmin pour visualiser rapidement l’état de notre base de données (Figure 2). Il nous permet également de la modifier sans avoir à écrire de requêtes SQL comme décrite précédemment. Ceci simplifie le processus. En outre, il possède un outil d’importation et d’exportation des tables qui nous permettra par la suite d’accéder à notre base de données sur Internet lorsque nous mettrons notre site en ligne.
Figure 2: Capture d’écran de notre base de données
-
Un site web :
Pour créer notre site web, nous utilisons le langage PHP. Cependant, le PHP ne permet pas de gérer le contenu de la page web autrement dit sa mise en page. On leur associe alors généralement le langage CSS pour combler cette lacune (Figure 3).
Nous avons besoin d’un site web dynamique qui doit afficher de nouvelles données toutes les heures. Les principaux outils que nous utilisons sont donc :
– le serveur web Apache ;
– le programme PHP qui permet au serveur web d’exécuter des pages PHP ;
– la navigateur qui affiche la page sous forme de fichier HTML.
Figure 3 : Capture d’écran de l’affichage du journal de bord sur notre site web
Perspective d’amélioration :
-
Intégrer d’autres capteurs au dispositif existant (couleur, niveau d’eau…).
-
Ajouter un Système d’alerte.
-
Créer une nouvelle fonction d’actions directes sur le milieu (régulation à distances des paramètres).
Fichier zip des codes utilisés :
Projet 11 – De bonnes vagues pour le surf
Ce projet a été réalisé dans le cadre d’un projet développement S2 2015 par Jordan Alcaraz, Thomas Abraham, Abdelakrim Bahouss, Alice Calliger sous la supervision de Sylvie Kerouedan et Fabio Tony Braz.
Résumé :
Ces dernières années, l’industrie du surf s’est associée à la technologie pour faciliter l’activité des surfeurs. C’est dans cette même logique que s’inscrit notre projet développement. Il consiste en la conception d’un objet permettant la visualisation de la hauteur et la fréquence des vagues selon les spots. L’objet est destiné aux surfeurs et doit ainsi leur facilité la recherche d’un spot optimal pour surfer.
Outils :
- une carte Intel Galileo
- un câble Ethernet
- un câble USB
- une imprimante 3D
- un ruban à LEDs
- une trentaine de LEDS RGB
- un cadre
- un miroir de la même taille que le cadre
- un film teinté
- un fer à souder, des fils, des planches de bois, des clous, une scie, de la colle
But :
Construire un objet qui permet de visualiser la hauteur et la fréquence des vagues selon le spot sélectionné par l’utilisateur en temps réel.
Contraintes du projet :
La principale contrainte a été d’utiliser une carte Intel Galileo.
Il fallait pouvoir brancher l’objet avec un câble Ethernet et répondre à des critères esthétiques et de fiabilité.
Principe technique :
Notre objet utilise une carte Intel Galileo pour récupérer les données relatives aux spots. Celle-ci se connecte à internet par câble Ethernet, récupère les données affichées sur une page Web codée en PHP, stocke et traite les données, permettant ainsi d’allumer les LEDs en fonction de la hauteur et la fréquence des vagues récupérées. Le choix du spot se fait à l’aide d’un bouton poussoir. L’actualisation des données se fait tous les 20 clignotements.
Un cadre contenant un miroir et un film teinté, un ruban à LEDs sur le pourtour et des LEDS sur un support en forme de vague imprimé à l’imprimante 3D permet de créer l’illusion d’une profondeur. En effet, selon la hauteur de vagues récupérées, on modifie la couleur des LEDs. De 0 à 2 m, les LEDs s’allument en vert, de 2m à 4m les LEDs sont bleus et au-dessus de 4m elles sont rouges. De plus, la fréquence des LEDs correspond à la fréquence des vagues récupérées sur le site internet. L’utilisateur peut choisir un spot sur 3 spots définis par le constructeur en cliquant sur le bouton poussoire, l’affichage du spot choisi est réalisé à l’aide de LEDs. En effet, la LEDs placée au-dessus du spot s’allume s’il est sélectionné.
Nous avons du utiliser des LEDs discretes RGB car le ruban à LEDs utilisé n’était pas compatible avec la carte Intel Galileo. De plus, la visualisation des vagues se fait à l’aide d’une échelle de couleurs et non d’une échelle d’intensité car les variations de cette dernière étaient peu visibles.
Améliorations possibles :
Notre projet possède néanmoins des pistes d’amélioration :
- laisser le choix à l’utilisateur entre une connexion Ethernet et Wifi
- permettre à l’utilisateur de visualiser les données d’un plus grand nombre de spots.
Maker-Faire Saint-Malo 2015 !
Les 11 et 12 avril dernier, les Fabriques du Ponant et le Telefab ont été présentes lors de la Mini Maker -Faire Saint-Malo 2015. Cet événement a été l’occasion pour la communauté des Makers de se (re)rencontrer et de (re)voir les projets des uns et des autres… Si le Telefab et les Fabriques ont pu exposer leurs projets, cela a aussi été l’opportunité de découvrir de nouvelles idées, de nouvelles méthodes, et surtout, de nouveaux makers !
Le programme de cette Maker-Faire est désormais figé dans le marbre d’Internet et est toujours disponible ici !
Parmi les nombreux projets vus et qui ont attiré l’attention, on retrouve… (suite…)
Les Fabriques du Ponant à la Maker-Faire Saint-Malo
En ce WE du 11-12 avril 2015, les Fabriques du Ponant, représentée par le Téléfab, les Petits Hackers et OpenPathView de la Maison du Libre, sont sur un évènement grand public à Saint-Malo, la Maker-Faire, un lieu d’exposition où plein de fablabs, makerspace, particuliers, entreprises viennent montrer des projets divers et variés.
Sur les stands brestois avec
Horacio de Citizen Data,
Benjamin et Arnaud pour OpenPath View,
Les Petits Hackers de la Maison du Libre et les outils App makers de Mozilla,
Pierre-Henri & Tristan et les globes à persistance rétinienne, Melvin et Loic et le teaser du projet Ty-Bee,
l’ambiance est au beau fixe et la bidouille est présente.
Samedi matin, un défi est lancé aux Petits Hackers : une interface pour dessiner en direct sur la sphère. C’est Tristan G. qui se lance dans l’écriture d’une interface en python et dimanche en début d’après-midi après l’intégration par Pierre-Henri de l’interface avec le logiciel de la sphère : ça marche !
Toutes les infos sur cette sphère à suivre bientôt sur le site du Téléfab.
Scanner 3D à taille humaine
Nous avons un nouveau projet (de plus) au Téléfab : construire un scanner 3D à taille humaine pour obtenir des modèles 3D de personnes ou d’objets de taille similaire. Contrairement à la plupart des scanners 3D, nous voulons que le notre puisse capturer un modèle en moins de 5 secondes, de manière à pouvoir rester immobile facilement.
Nous voulons aussi diminuer les coûts au maximum : nous nous sommes fixés un maximum de 1000 € de matériel, même si nous risquons de dépasser cette somme pour le premier prototype.
Ressources existantes
Pour la structure du scanner, nous nous inspirons du scanner Pi3DScan fait de 100 caméras et de 100 raspberry pi, mais nous voulons fortement diminuer les coûts (indiqués à 8450€ pour ce projet).
Pour la reconstruction logicielle, nous pensons nous servir du logiciel VisualSFM qui est libre, semble très puissant, mais n’est pas facile à prendre en main.
Originalité du projet
Pour diminuer les coûts, nous pensons acheter des webcams pas chères (on en trouve 100 à 350€, frais de ports express compris, sur AliExpress). Nous n’allons pas utiliser un ordinateur par caméra comme Pi3DScan, l’idéal serait d’arriver à connecter toutes les webcams sur le même PC. Ceci causera évidemment des problèmes de débit pour communiquer avec les caméras, mais nous espérons prendre les photos les unes après les autres dans un délai suffisamment court.
Avancement
L’objectif actuel est de présenter et d’utiliser le scanner pour l’Open Bidouille Camp de Brest les 23 et 24 mai.
25 mars 2015
Nous avons récupéré un ordinateur avec une carte graphique Nvidia pour faire des tests avec VisualSFM. Nous avons aussi commandé chez Conrad (malgré des prix bien trop élevés) 50 webcams, 12 hubs USB 4 ports non alimentés, 4 hubs USB 10 ports alimentés, et 16 rallonges USB. Ceci devrait nous permettre de construire 12 poteaux verticaux de 4 caméras et de tout connecter au PC.
Construction
Voici un petit point d’avancement sur la construction du scanner 3D à taille humaine. Nous avons reçu tout le matériel nécessaire, ce qui nous a permis de faire 2 choses :
- tester la capture de photos sur les 48 webcams depuis un seul PC : cette partie est encore en cours, j’en parlerai donc dans un futur article (spoiler : ça marche mais c’est un peu lent) ;
- construire la structure qui supporte les webcams : c’est de cette partie que je vais parler ici.
Objectifs
Il nous faut une structure solide, et simple à monter et démonter pour pouvoir la déplacer selon les évènements. Le coût doit être le plus réduit possible puisque le scanner complet doit rester en dessous de 1000€.
Nous sommes partis sur une structure circulaire, en supposant que la personne à scanner est à peu près contenue dans un cylindre de 70cm de diamètre. Nous avons pris une distance de 70cm entre les webcams et la personne pour avoir suffisamment de recul. Les caméras sont donc montées sur un cylindre de de 210cm de diamètre. Il y a 12 poteaux disposés autour de ce cylindre, et 4 caméras sur chaque poteau. Les poteaux font 2m10 pour permettre aux caméras du haut de voir au-dessus de la tête de la personne scannée.
Voici à quoi ça ressemble :
Réalisation mécanique
Le matériel que nous avons utilisé se trouve dans tous les magasins de bricolage :
- 20 tubes IRL (pour passer des fils électriques) diamètre 20mm pour les poteaux et les liens horizontaux en haut ;
- 30 clips pour IRL à visser pour les fixations ;
- 2 panneaux OSB3 de 9mm d’épaisseur de 2440x1220mm pour découper l’anneau qui sert de support ;
- 10 tasseaux de 2m de 20mmx30mm pour placer sour le socle et solidifier la fixation des poteaux ;
- 8 grandes équerres pour fixer les poteaux au support.
L’anneau de support est découpé à la scie sauteuse en quatre quarts, ce qui permettra de déplacer le scanner plus simplement. Les équerres sont fixées au support grâce à des vis qui se fixent dans des bouts de tasseaux sous le socle, car les panneaux OSB3 sont trop fragiles pour la fixation.
La fixation des poteaux se fait uniquement par des clips à visser. 3 clips sont vissés sur chaque équerre pour la fixation au support. Un clip est aussi vissé à l’extrémité de chaque bout de tube utilisé comme lien vertical. Ceci permet de monter ou démonter le scanner facilement, sans outils.
Nous avons ajouté deux bouts de tasseaux sous le support entre chaque poteau pour solidifier le panneau d’OSB. Sinon une personne montant sur la structure risquerait de la casser. Les bouts de tasseaux sont collés à la colle à bois sour le support.
Connexion des webcams
Les webcams sont simplement fixées grâce à la pince avec lesquelles elles ont été fournies. Elles sont orientées à la verticale car le sujet à capturer est plutôt vertical, et il y a 12 caméras pour capturer tout le tour du sujet, et seulement 4 pour la hauteur.
Les webcams sont des caméras USB bas de gamme capturant du 640×480 pixels. Ce genre de caméras se trouvent à 3€ en commandant en grande quantité directement en Chine.
Les 4 caméras d’un poteau sont connectées ensemble par un petit hub 4 ports non alimenté. Ensuite, les poteaux sont regroupés par 3 et connectées à un hub 10 ports avec une alimentation 4A. Cette alimentation est indispensable pour pouvoir faire fonctionner les 12 caméras. Tous les poteaux ne sont pas connectés sur le même hub pour ne pas surcharger l’alimentation. On se retrouve ainsi avec 4 ports USB, que l’on peut connecter directement au PC, ou chaîner sur l’un des hubs pour n’obtenir qu’une seule prise pour toutes les caméras. Des rallonges USB sont utilisées au niveau de chaque poteau car les fils des hubs sont trop courts.
À améliorer
Il existe différents points qui pourraient être améliorés :
- il aurait été préférable d’utiliser un support plus épais, pour pouvoir visser directement les équerres dedans, et éviter d’utiliser des tasseaux en dessous ;
- la fixation des webcams par leur pince n’est pas très fiable. Il sera peut-être préférable de refaire cette fixation.
Il y a aussi des choses qui restent à faire :
- la luminosité doit être maîtrisée pour obtenir de bonnes images. J’ai des rubans à LEDs blancs à fixer sur les poteaux ;
- la partie logicielle est commencée mais pas terminée, mais ça sera pour un prochain article.
Résultat actuel
Voici à quoi ressemble le scanner actuellement :
Les explications sont disponibles ici :
Aidez nous
Si vous avez des idées pour améliorer ou simplifier le projet, ou si vous voulez vous impliquer, contactez nous ! C’est le moment.
Bildung
Ce projet a été réalisé pendant la première semaine d’intersemestre 2015 au Téléfab par Louis Frehring, Fady George Remila, Alizée Gerard, Anas Ihrboula, Julie Kelberine et Jean-Baptiste Rebuffi.
Résumé
Bildung est un système permettant de produire de la musique à l’aide de la détection du mouvement et de la position des mains.
Matériel utilisé
- un capteur à ultrasons (http://www.seeedstudio.com/wiki/Ultra_Sonic_range_measurement_module#Resources)
- un breadboard
- une carte Arduino
- des fils
- le Leap Motion (https://www.leapmotion.com/)
- une boîte en bois pour contenir le tout
Le système est relié à un Mac sur lequel fonctionne le logiciel Max.
Le lien suivant renvoie vers les sept fichiers de son de base et vers les deux fichiers Max, correspondant à deux versions différentes de Bildung: la première étant orientée vers la modulation du son et la deuxième étant plus musicale (https://github.com/BildungBox/Fichiers-Max).
Carte Arduino et capteur à ultrasons
Bildung replié
Bildung déployé
Test de Bildung
Fonctionnement
L’utilisateur utilise ses mains pour produire de la musique. Une première main permet de déclencher la musique ou de l’arrêter selon qu’elle se trouve ou non devant le capteur d’ultrasons. La deuxième main permet de moduler cette musique. Ainsi, en décalant cette main vers la gauche, on produit un son plus aigu tandis qu’il sera plus grave si on déplace sa main vers la droite. On peut de même contrôler le volume en levant sa main ou en la descendant. La pureté fréquentielle du son est gérée en avançant plus ou moins sa main (modification du facteur de qualité).
Capture d’écran du logiciel Max
Interface de réglage des paramètres de Bildung
Interface destinée à l’utilisateur
Code Arduino du capteur ultrason
#include "Arduino.h"
class Ultrasonic
{
public:
Ultrasonic(int pin);
void DistanceMeasure(void);
long microsecondsToCentimeters(void);
long microsecondsToInches(void);
private:
int _pin;//pin number of Arduino that is connected with SIG pin of Ultrasonic Ranger.
long duration;// the Pulse time received;
};
Ultrasonic::Ultrasonic(int pin)
{
_pin = pin;
}
/*Begin the detection and get the pulse back signal*/
void Ultrasonic:istanceMeasure(void)
{
pinMode(_pin, OUTPUT);
digitalWrite(_pin, LOW);
delayMicroseconds(2);
digitalWrite(_pin, HIGH);
delayMicroseconds(5);
digitalWrite(_pin,LOW);
pinMode(_pin,INPUT);
duration = pulseIn(_pin,HIGH);
}
/*The measured distance from the range 0 to 400 Centimeters*/
long Ultrasonic::microsecondsToCentimeters(void)
{
return duration/29/2;
}
/*The measured distance from the range 0 to 157 Inches*/
long Ultrasonic::microsecondsToInches(void)
{
return duration/74/2;
}
Ultrasonic ultrasonic(7);
void setup()
{
Serial.begin(9600);
}
void loop()
{
long RangeInInches;
long RangeInCentimeters;
ultrasonic.DistanceMeasure();// get the current signal time;
RangeInInches = ultrasonic.microsecondsToInches();//convert the time to inches;
RangeInCentimeters = ultrasonic.microsecondsToCentimeters();//convert the time to centimeters
// Serial.println("The distance to obstacles in front is: ");
// Serial.print(RangeInInches);//0~157 inches
// Serial.println(" inch");
// Serial.print(RangeInCentimeters);//0~400cm
// Serial.println(" cm");
if(RangeInCentimeters <= 15 && RangeInCentimeters>=0 ){
Serial.println(1);
Serial.println("\r") ;
}
else {
Serial.println(0);
Serial.println("\r") ;
}
delay(100);
}
Améliorations possibles
Les valeurs des positions des doigts ou de la paume de la main renvoyées par Max ne sont pas très fiables, elles varient tout le temps, ce qui est assez restreignant lorsque l’on essaie d’assigner par exemple à un intervalle une fréquence donnée.
On pourrait rajouter des paramètres pour prendre en considération la capacité du Leap Motion à détecter le mouvement des doigts. Hélas, on se heurte là aussi à des problèmes de précision et de sensibilité.
Outre les défauts de conception et les imprécisions musicales, nous pouvons tenter d’améliorer notre maîtrise de cet instrument de musique assez particulier. Il est par exemple assez difficile de gérer à la fois l’activation et la désactivation de la musique grâce à une main et la modulation du son par l’autre main.










































