Macro-projet en janvier 2017

Porteur du projet : Delphine Kreis

Date : janvier 2017

Contexte : Macro-projet

Logiciels : Arduino (version 1.6.12), Processing (version 2.2.1)

Matériels : modules Arduino (liste de matériels plus bas)

Référez-vous à la table des matières, je l'ai au maximum détaillée afin que vous puissiez vous y retrouver.

1) Borne interactive

Pourquoi réaliser une borne interactive pour les FabLabs ?

Concevoir une borne interactive qui puisse lire le contenus des cartes RFID :

Reliée à un écran, cette borne affichera les coordonnées de l'adhérent ainsi que les formations suivies, ses compétences acquises, les savoirs recherchés, etc. Il s'agira donc d'une application numérique qui fera office de carnet de bord pour chaque adhérent. Cette borne est donc un outil de partage, de valorisation de compétences et de mise en relation. Et par conséquent, cette application permettra de réaliser une banque de données, avec un historique sur plusieurs années.

Fonctionnalités de l'application/site internet :

la borne permettra à l'adhérent-e d'accéder à son passeport sous la forme électronique ;

grâce à cette borne, l'adhérent-e pourra réserver directement sur place une plage horaire d'une machine, dans le cas où le FabLab exige des réservations sur machines ;

la borne permettra également à l'adhérent-e de s'inscrire à des formations machines, logiciels ou domaines de compétences ;

dans le cas où un-e adhérent-e souhaite acquérir une compétence particulière, l'adhérent-e aura la possibilité de communiquer auprès des autres adhérents la compétence à laquelle il-elle souhaite obtenir ;

par extension, on peut imaginer que si le nombre de demandeurs de cette même compétence excède un nombre suffisamment important (trois adhérents demandeurs par exemple), cette demande mettra en relation les demandeurs adhérents et pourront de ce fait s'organiser entre eux afin de trouver une personne compétente et adhérente au FabLab qui pourra leur proposer une formation sur cette compétence. Cet adhérent devient donc formateur ;

cette fonctionnalité implique la question de la rémunération. Semblable au système que souhaite appliquer le FabLab marseillais LFO, il sera possible de monétiser ses contributions : que cela soit de la documentation, réalisation de formation, etc..

Beaucoup d'autres scénarios peuvent être envisagés, donc cela implique d'autres fonctionnalités de l'application/site.

Remarque :

Il est important de développer la notion d'autonomie sur le lieu des FabLabs, car les Fab Managers sont souvent trop sollicités et ne peuvent apporter de l'aide à tout le monde. De ce fait, cette borne peut favoriser les rencontres et les échanges de savoirs entre adhérents présents sur place.

A réfléchir :

Celle-ci serait en open-source afin qu'elle puisse être réalisée par tous les FabLabs désireux, et que chacun puisse améliorer ou adapter l'application et la borne électronique en fonction des besoins de la structure.

Partenariats envisageables :

les FabLabs,

le pôle Art et Design du Lycée Diderot : car en effet, nous comprenons que cette borne peut être adaptée aussi bien pour les FabLabs que pour la future création du pôle artistique (DSAA+BTS+MANAA) du lycée Diderot. Par ailleurs, nous pouvons identifier la notion de karma, par la mise en relation et la mise à disposition dans un lieu précis. De ce fait, il est donc question de faire évoluer le karma à travers une fonction numérique du karma.

Comment réaliser la borne interactive ?

Le système RFID

Chaque membre aura sa carte d'adhérent qui sera constitué d'une carte RFID et d'un passeport papier. Pour cette partie, nous allons nous concentrer sur la carte RFID et sa communication avec une borne électronique interactive. Pour réaliser ceci, je me suis inspirée du tutoriel intitulé Système RFID de Julien Warin.

Matériels à avoir

Pour réaliser la borne interactive, nous allons utiliser des modules électroniques d'Arduino :

carte Arduino Uno GoTronic

lecteur de puces RFID référence RC522 GoTronic

cartes RFID GoTronic (selon votre besoin, vous pouvez également acheter des puces autocollantes, des badges, etc.. La RFID peut être sous différentes formes!)

jumpers (attention, en fonction du type de carte que vous allez acheter, vous aurez peut-être besoin d'avoir des jumpers femelle/mâle ou mâle/mâle. Ceci dépend des entrées/sorties numériques qui se trouvent à l'arrière de carte lecteur RFID) GoTronic

câble USB de type A vers une entrée USB de type B (pour alimenter la carte et communiquer avec l'ordinateur). Il s'agit du même type de câble pour les imprimantes. GoTronic

J'ai choisi de vous donner des liens du site GoTronic car celui-ci fournit en plus une fiche technique de qualité depuis leur site !

Montage et branchement

Avant de s'attaquer à la partie programmation, nous allons réaliser le montage de la carte Arduino avec le lecteur RFID, comme ceci :

Partie Arduino

Nous voilà donc préparer pour la programmation. Pour commencer, voici un programme permettant de connaître le nom de chacune de vos puces. Lorsque vous passez votre puce sur le lecteur, un ensemble de chiffres apparaît. C'est tout à fait normal. Ces chiffres sont importants pour la suite des choses.

//Ce programme permet de connaître le nom de chacune de vos puces RFID.
//Programme : Julien WARIN et Delphine KREIS, 2017.
//Traduction et adaptation : Delphine KREIS, 2017 <écrire à delphine-kreis@hotmail.fr>
//Librairies à télécharger si besoin
#include <MFRC522.h>
#include <SPI.h>
#include <RFID.h>
RFID monModuleRFID(10,9);
int UID[5];
void setup()
{
Serial.begin(9600);
SPI.begin();
monModuleRFID.init();
}
void loop()
{
if (monModuleRFID.isCard()) {
if (monModuleRFID.readCardSerial()) {
Serial.print("L'UID est: ");
for(int i=0;i<=4;i++)
{
UID[i]=monModuleRFID.serNum[i];
Serial.print(UID[i],DEC);
Serial.print(".");
}
Serial.println("");
}
monModuleRFID.halt();
}
delay(1);
}

Vous obtenez donc cet ensemble de chiffres. Pour démystifier ceux-ci, les deux premières valeurs correspondent au numéro de fabricant de la puce. Mais ceci est sans importance. Ce qui nous intéresse c'est la troisième valeur, c'est-à-dire, celle qui est présentée de la manière suivante : xxx.xxx.héhé.xx.xx . Bon ok, peut-être vous êtes tombé sur une autre représentation des valeurs (c-à-d que vous avez peut-être le même nombre de chiffres entre chaque point, cela varie entre unité, dizaine, centaine), mais ceci est sans importance, la valeur qui nous intéresse reste toujours la troisième, car celle-ci correspond au NOM de la puce !

Pour ma part, ma première puce s'appelle “xx.xx.23.xxx.xx” (23 donc!), la deuxième “xx.xx.114.xxx.xx” (114..) et la troisième “xx.xx.145.xxx.xx” (145 pour finir).

Maintenant, nous allons avoir besoin d'établir une connexion entre le langage Arduino et le langage Processing. En effet, ces deux entités n'ont pas le même langage totalement. Par conséquent, on aura besoin d'appeler notre puce, initialement appelée “23” sous Arduino, sous le nom de “A” dans Processing, et pour cela, nous allons donc utiliser le code suivant, tout en vous guidant des commentaires du code.

Avant cela, ne pas oublier de télécharger les librairies ci-dessous, qui seront à importer dans le dossier Arduino! Ces librairies vont permettre de faire fonctionner le lecteur RFID avec la carte Uno.

/*
Voici un programme permettant de renommer les puces sous des valeurs telles que les lettres 'A', 'B', 'C'. Ce besoin est né du fait que Arduino et Processing ont des différences dans leur langage.
Programme : Julien WARIN et Delphine KREIS, 2017.
//Programme écrit par Julien WARIN, 2017.
//Traduction et adaptation : Delphine KREIS, 2017 <écrire à delphine-kreis@hotmail.fr>
*/
//librairies à télécharger et/ou déjà disponible
#include <SoftwareSerial.h>
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN); //Instanciation MFRC522
#define PAGE_SIZE 64
// Variables de détection
int noCardSeuil = 1; //Seuil
int noCardCount = 0;
boolean cardState = false;
boolean lastCardState = false;
void setup() {
Serial.begin (9600);
SPI.begin(); //Le module MFRC522 utilise le protocole SPI
mfrc522.PCD_Init(); //Initialisation du module RFID
delay(1);
}
void loop() {
//Compteur : si c'est true (0 ou 1)
//Si c'est false : compteur continue
if (mfrc522.PICC_IsNewCardPresent()) {
noCardCount = 0;
}else{
noCardCount++;
}
//Etats : présent/pas présent
if (noCardCount <= noCardSeuil) cardState = true;
else cardState = false;
// Lecture/Stop
if (cardState != lastCardState) {
if (cardState) {
mfrc522.PICC_ReadCardSerial();
if(mfrc522.uid.uidByte[1] == 23){ //valeur à changer
//CHIFFRE 1 byte (valeur/num. hexadécimal de la puce rfid);
//Exemple num. hexa de la puce : xxx.x.23.xxx.xxx
Serial.print("A");
}
if(mfrc522.uid.uidByte[1] == 114){ //valeur à changer
//Exemple num. hexa de la puce : xxx.x.114.xxx.xx
Serial.print("B");
}
if(mfrc522.uid.uidByte[1] == 145){ //valeur à changer
//Exemple num. hexa de la puce : xxx.x.145.xxx.xxx
Serial.print("C");
}
}
}
lastCardState = cardState ;
}

Pour que ce code fonctionne, vérifiez bien que vous êtes sur le bon port USB et que vous avez bien sélectionner la bonne carte. Pour cela, cliquez sur :

outils > port > sélectionner votre port

outils > type de carte > arduino/genuino uno

Après avoir copier/coller ce code, vous cliquez sur “vérifier” afin de voir s'il y a des erreurs dans le code, puis cliquez sur “téléverser”. Afin, vous cliquez sur “moniteur série” tout en haut à droite. Vous pouvez maintenant poser votre puce sur la carte de lecture RFID, vous verrez alors le nouveau nom de votre sur votre écran (série de A, de B, de C, etc.).

Partie Processing

Avant de commencer, utilisez le code ci-dessous afin de savoir sur quel port êtes-vous connecté.

/*
Voici un programme permettant de connaître le nom du port série sur lequel votre carte est connectée.
Programme : Julien WARIN, 2017.
*/
//librairie, pour l'ajouter aller dans sketch>importer une librairie>serial
import processing.serial.*;
// The serial port
Serial myPort; //myPort = nom variable/attribut
// List all the available serial ports
printArray(Serial.list());//va afficher dans la barre d'information les ports valides

Pourquoi il est essentiel de savoir dans quel port notre carte Arduino est branchée ? Et bien tout simplement parce que Arduino va communiquer une information via ce port qui, une fois détectée par Processing, va enclencher l’ouverture du fichier. Ce qui permet cet exploit est la balise « serial.print » dans Arduino qui nous permet de communiquer avec Processing. En faite la lettre 'A' qui représente en ASCII (American Standard Code for Information Interchange ou en français Code américain normalisé pour l'échange d'information) la valeur 65, va permettre à Processing de lui dire « si tu reçois comme valeur 65 dans le port numéro X alors ouvre-moi le fichier … » mais pour que cet échange est lieu, il nous faut d’abord connaître le port, voilà pourquoi il est important de le savoir. Une fois que vous le savez, vous pouvez vous amuser à rendre un carré rouge au lieu de gris en utilisant les puces RFID ou faire tout autre chose. (explication claire de Julien WARIN. Je n'aurais pas fait mieux!)

Enfin, ci-dessous, voici le programme permettant de reconnaître le contenu de trois cartes RFID et qui, par la suite, vont déclencher l'ouverture d'un lien internet. Il vous ne vous reste plus qu’à copier/coller le programme, puis à appuyer sur le bouton « exécuter » et à placer votre puce RFID sur le lecteur pour admirer le résultat !

/*
Voici un programme permettant de reconnaître le contenu de trois cartes RFID et qui, par la suite, vont déclencher un événement.
Ces trois cartes RFID ont été nommées ans Processing de la manière suivante : 'A', 'B' et 'C'.
Chaque carte va permettre l'ouverture d'un lien internet :
A => le site Processing,
B => le site Youtube,
C => le moteur de recherches Google.
Ces cartes peuvent par ailleurs déclencher d'autres événements, telle que l'apparition d'images ou/et de vidéos, par exemple.
Programme initial : Julien WARIN, 2017.
Traduction et adaptation : Delphine KREIS, 2017 <écrire à delphine-kreis@hotmail.fr>
*/
import processing.serial.*; //Importer serial port
Serial myPort; //Créer un objet à partir de la classe Serial
int val; //Données reçues du port série
void setup(){
size(1280, 695); //Taille de la fenêtre d'ouverture
background(0); //Fond de la fenêtre une fois affichée = noir
String portName = Serial.list()[0]; //Permet de communiquer avec le port série "x". Pour ma part, c'est le port série "0" qui communique avec la carte. A vous de mettre le bon port série par la suite...
myPort = new Serial(this, portName, 9600); //La valeur 9600 correspond au débit de communication avec le port série d'une valeur/mesure de 9600 bauds. Cette valeur doit être identique sur Processing et Arduino, sinon, cela ne marcehra pas.
}
void draw(){
/*Cette partie permet d'attribuer à une puce RFID une action.
Dans le cas présent, l'action attribuée est d'ouvrir une page internet.
Pour cela, on appelle la puce RFID par sa valeur (ici, la puce appelée "A" dans Arduino est reconnue sous la valeur "65" dans Processing).
*/
if (myPort.available() > 0) { //Décision ; si des données sont disponibles/s'il y a une connexion avec le port série,
val = myPort.read(); //Alors, il faut lire et récupérer les informations de "val"
if (val == 65){ //Si la valeur est de '65', alors, ouvrir le lien internet
//La valeur '65' correspond, d'après le tableau d'équivalence ASCII, à la valeur 'A' dans Processing. Car dans Arduino, nous avons voulu renommer le nom de la puce 23 sous la valeur 'A', afin que les deux logiciels puissent se comprendre, du fait qu'ils ont un langage de programmation différent... (Nous l'avons vu précedemment, ne vous inquiètez pas, cette information n'est pas nouvelle).
link("http://processingjs.org"); //Ouvrir le lien internet Processing
delay(5000); //Fonction delay () permet de ralentir la succession des actions pendant un temps donné. Ici, le rafraîchissement se fait toutes les 5 secondes.
}
if (val == 'B'){ //Mais si vous n'avez pas très bien compris pour l'instant, vous voyez que la valeur 'B' écrite de cette manière peut également marcher. Souvenez-vous simplement que 66 = 'B' de ce fait.
link("http://youtube.fr"); //Ouvrir le lien internet Youtube
delay(5000); //Ralentissement des actions > toutes les 5 secondes, une action.
}
if (val == 67){ //Et du coup, idem : 67 = 'C'. Il s'agit simplement des valeurs équivalentes d'après le tableau ASCII. Keep cool ! :)
link("http://google.fr"); //Ouvrir le lien internet Google
delay(5000); //Ralentissement des actions > toutes les 5 secondes, une action.
}
}
}

Pour finir cette partie, je souhaite vous informer qu'il est possible d'ouvrir d'autres types de fichiers avec vos puces RFID, tels que des fichiers audio et vidéo. Cependant, cela demande à télécharger des librairies supplémentaires, à ne pas oublier ! Si cela vous intéresse, je vous invite à regarder le tutoriel de Julien WARIN.

Réalisation de l'application

Questionnement : aujourd'hui, je suis dans une phase de questionnement sur la manière dont je pourrais réaliser cette borne : est-ce que cela sera une application ou un site internet interactif ?

Concernant la question autour de la réalisation de sites internets : Renseignement auprès d'un graphiste multimédia, dont la majorité de son travail est la réalisation de sites internet, afin d'avoir des explications orales sur les différentes manières de créer des sites internet, sur la manière dont on doit choisir tel outil que untel par rapport aux fonctionnalités souhaités, les méthodes, le codes, etc...

Recherches théoriques à ce sujet :

Qu'est-ce qu'un interface utilisateur ?

Quelle architecture pour cette application ?

PDF à télécharger concernant l'architecture de l'application/site : application_architecture-et-utilisation_2016-01-25.pdf

Coder en HTML et PHP

A venir.

Ressources en programmation/développement

A venir...

La structure de la borne

A venir.

2) Dispositifs d'interaction et outils de communication interne

date : du lundi 16 au jeudi 19 janvier 2017

A la suite de la semaine de prototypage pour le macro-projet, je suis allée avec deux camarades de classe au FabLab de Lourmarin appelé La Fruitière Numérique afin de réaliser un ensemble de dispositifs de communication.

Réalisation de dispositifs de communication interne pour les FabLabs, à partir des technologies des FabLabs, pour qu'ils puissent eux-mêmes la réaliser dans leur lieu (voir la définition de RepRap).

Machines et outils : utilisation de la découpeuse laser, de l'imprimante 3D, de la fraiseuse numérique, de la découpeuse vinyle, de perceuses/viseuses et d'une scie japonaise.

Boîtes tampons :

Deux boîtes (dont une réalisée aujourd'hui), l'une comportant tous les différents tampons qui correspondent à des compétences, l'autre à des formations à suivre proposées par la FabLab. Ainsi, chaque adhérent détient une carte/passeport personnel dans lequel des tampons figureront afin d'identifier leurs connaissances, leurs compétences et leur autonomie sur les machines.

Travail de pictogrammes :

Passeport papier + carte RFID:

une carte RFID et son passeport papier, afin de voir qui sont les adhérents, quels sont leurs compétences, sont-ils autonomes sur telle et telle machine, savoir depuis quand sont-ils membres, etc

Panneau d'utilisation des machines

Le panneau d'utilisation des machines permet de savoir une fois arrivé-e sur le lieu s'il y a des personnes sur telle machine, quantifier le nombre de personnes souhaitant utiliser les machines durant la journée, mais aussi, et surtout, favoriser les rencontrer et les interactions entres adhérents. En effet, les adhérents doivent déposer leur carte d'adhérent/passeport sur ce panneau à leur arrivée. De ce fait, les personnes peuvent savoir quels sont les personnes déjà sur ce lieu, et peuvent aller à leur rencontre, en raison d'une recherche de compétence, questions, partage de projets, etc.

Calendrier modulaire

Le calendrier modulable permet de voir quels sont les formations et les événements à venir durant les 6 prochaines semaines.

Signalétique modulaire

Espace d'échanges et de conversations

Des remarques ? Des suggestions ? je vous écoute ;-)

Chers lecteurs, veuillez vous identifier de la manière suivante : nom / date / adresse mail. Je vous remercie !