Loading
 
 

SPOT : le guide de conception

Ce second article sur le dispositif Spot est donc destiné aux personnes souhaitant le réaliser.
Si vous n’avez pas d’expérience avec Arduino, et que vous ne souhaitez pas investir du temps à vous initier à cette plateforme, mais que la réalisation d’un Spot vous tente, je vais tenter de vous guider pas à pas.

Cela dit, chaque minute passée sur la plateforme Arduino (matériel et logiciel) constituant un investissement « rentable » en terme d’apprentissage, je ne peux que vous encourager à vous y intéresser de manière plus approfondie. A l’origine du projet Arduino, il y a effectivement cette volonté de rendre accessible l’électronique, la programmation, le design d’interaction aux artistes, designers, ou simples curieux. Avec une de ces cartes et des composants à quelques euros (Il existe aussi des kits de base contenant un ensemble de composants comme le « Sidekick Basic Kit » à 20€ que j’utilise pour mes ateliers d’initiation), vous pouvez rapidement réaliser plein de projets, plus ou moins utiles, c’est vrai…😅

Pour vous initier, il existe quantité de ressources de qualité, y compris en français :
www.mon-club-elec.fr/pmwiki_reference_arduino/pmwiki.php
https://openclassrooms.com/courses/programmez-vos-premiers-montages-avec-arduino
http://fr.flossmanuals.net/arduino/exemples-dusages

Rassemblez les composants suivants :

• Arduino Uno
• Module RFID MFRC522
• Grove MP3 Player Serial
• Carte MicroSD 2Go (ou SDHC 8Go) et éventuellement un adaptateur SD
• Deux leds et deux résistances 2200 Ω
• Un interrupteur à bascule
• Un potentiomètre de volume (J’utilise le Grove rotary angle sensor Ref : 101020017)
• Un commutateur à bascule pour le choix du mode (inverseur unipolaire TU1000)
• Une plaque de prototypage (une taille « mini » suffit)
• Une trentaine de câbles
• Un câble USB standard A – B, le même que pour une imprimante
• Quelques vis et entretoises qui serviront à fixer les composants à l’arrière du cadre. (j’utilise le « Basic Fastener Kit »)
• Un lot d’étiquettes NFC répondant à la norme ISO/IEC 14443 A/MIFARE (j’utilise des « ntag203 » à moins de 0,45€ l’unité.)

Composants Dispositif Spot Je donne plus de détails matériels, en particulier sur la connectique, un peu plus bas.

Note sur le matériel :

Partant du principe que je m’adresse en majorité à des professionnels travaillant dans une collectivité avec des contraintes d’achat différentes de celles des particuliers, les tarifs mentionnés sont ceux pratiqués par les distributeurs d’électroniques français. Pour la même raison, j’ai retiré les produits mal distribués en France. Dans ces conditions, le dispositif revient à une cinquantaine d’euros sans le cadre en bois.
Ces éléments matériels peuvent être remplacés par des équivalents mais qui nécessiteront parfois soudures et changement du code…
– Carte Arduino Uno :
La version la plus courante… D’un point de vue économique, ce n’est peut-être pas le choix le plus judicieux mais cela reste un bon compromis avec une communauté d’utilisateurs rassurante.
Pour introduire Arduino, disons qu’il s’agit d’un ordinateur de poche qui permet de relier l’informatique à l’électronique et donc d’ interagir avec le monde extérieur grâce à des ajouts matériels de type capteurs (détecteurs de pression, de son, de lumière, de mouvement, etc…) et actionneurs ( leds, moteurs, haut-parleurs, etc..) et même avec Internet. Cela en fait une plateforme flexible pour des tas de projets créatifs.
Grove MP3 Player Serial
Les shields* ou modules audio complet intégrant un système de stockage, une puce audio de qualité et des sorties casques/HP ne sont pas légions. Après avoir testé le « Music Maker » d’Adafruit (très complet mais onéreux surtout pour notre usage) et un très abordable(5€ !) mais fonctionnel « UART Control Serial MP3 », j’ai finalement opté pour une troisième solution qui présente l’avantage d’être dans le catalogue de la plupart des fournisseurs d’électroniques français. (cf. contraintes d’achat évoquées plus haut). Sa documentation est assez complète et surtout traduite en anglais : http://www.seeedstudio.com/wiki/Grove_–_Serial_MP3_Player Contrairement à ce qui est indiqué sur cette dernière, ce module supporte les cartes SDHC au moins jusque 8Go (pour information 2Go, correspond à plus de 10h d’enregistrement au format mp3 à 320 kbps…).
Ce module MP3 intègre une puce audio WT5001 qui, outre sa qualité étonnante, bénéficie aussi d’une documentation correcte. L’intégration éventuelle des fonctions classiques de lecture gérées par la puce (STOP, PAUSE, SUIVANT, PRECEDENT, Lecture en continue de plusieurs titres…) sera ainsi facilitée le cas échéant.
Attention, beaucoup de modules audio à quelques euros sont en réalité des modules ISD dédiés à l’enregistrement ou au déclenchement de courtes séquences comme celles que l’on trouve sur les cartes de vœux (=qualité médiocre !)
*Shield : cartes d’interfaces qui s’enfichent et s’empilent sur des cartes Arduino ou compatibles
– Module RFID MFRC522
Il s’agit en réalité d’un lecteur d’étiquettes NFC NXP Mifare. Je consacre une partie à ces étiquettes plus bas…

Connectique

Pour la connectique interne, prévoyez une trentaine de câbles mâles/mâles et quelques mâles/femelles pour constituer des rallonges (variable en fonction de votre implantation)
Ils sont généralement de type HE14 au pas de 2,54mm avec des cavaliers (jumper) rigides parfois appelés « Dupont ». Ces câbles sont très utiles car ils facilitent le prototypage rapide, sans soudure. Cependant, ces cavaliers rigides mesurent 1,5cm et sont moyennement flexibles : cela implique un boîtier disposant de 3cm d’épaisseur (la carte Uno mesure 1,2cm de haut). Pour cette raison, selon l’épaisseur de votre cadre/boîtier, préférez des « fils de liaisons à breadboard » avec des extrémités coudées, ou de simples fils électriques avec des pointes solides.
Les deux connecteurs 4 broches sont livrés avec les modules Grove correspondant (Lecteur MP3 et Potentiomètre Volume).
La platine à essai (appelée aussi breadboard ou Plaque de prototypage) peut être de taille «mini » car elle ne servira qu’à brancher les résistances des deux leds et à réaliser des rampes d’alimentation, l’arduino UNO ne disposant que d’une seule sortie 5V.

Pour la connectique externe, côté utilisateur, SPOT, dans sa version actuelle, est pourvu
• d’un commutateur deux positions, (en l’occurrence un inverseur unipolaire ON-ON TU1000*)
• d’un potentiomètre de volume de marque Grove,
• d’une entrée pour l’alimentation externe via un adaptateur secteur,
• d’un interrupteur général relié à la batterie (actuellement un boîtier coupleur de 6 piles AA 1,5v).
(*un interrupteur standard ferait l’affaire mais en fonction du type, il faudra peut-être adapter le code)

Ainsi, l’entrée USB (pour actualiser/programmer l’Arduino) n’est accessible qu’en enlevant la trappe arrière, de même pour l’accès à la carte SD du module MP3. Ce dernier point mériterait d’ailleurs d’être amélioré pour un accès plus aisé via éventuellement un système de serrure.
Pour ces deux dernières entrées (Alimentation et USB) vous pouvez directement placer l’Arduino contre une paroi et ménager les orifices correspondant ou utiliser des embases qui facilitent l’intégration et la fixation sur un boîtier. L’entrée casque jack 3,5mm est ainsi reportée sur le cadre via une embase appropriée, de même pour l’entrée d’alimentation externe. (5,5 x 2,1 mm)
A ce propos, les embases standards avec écrou de fixation sont trop courtes pour intégrer un cadre aussi épais, c’est aussi le cas du potentiomètre de volume et de l’interrupteur… Il faudra donc creuser l’intérieur du cadre (le MDF s’y prête assez bien) et éventuellement injecter de la colle afin de réaliser une connectique extérieure propre.
InterrupteurPotentiomètre Volume

Le module RFID doit être surélevé (j’utilise les entretoises en plastique du « Basic Fastener Kit ») de manière à le plaquer contre la paroi avant de Spot. Le dispositif fonctionne actuellement sans aucune soudure : seul le module RFID en aurait a priori besoin mais les contacts se réalisent correctement grâce justement à ces entretoises qui maintiennent le module. Pour autant, j’envisage prochainement de souder à ce module une barre de connecteurs coudés de type HE14 (d’ailleurs généralement livrée avec). Les leds sont maintenues par des chevilles elles-mêmes montées sur un système d’entretoises. Ainsi, même en appuyant dessus (c’est l’une des premières choses que l’on fait naturellement avant même de jouer avec le commutateur…), elles restent en place. Enfin, le commutateur de sélection de mode tient fermement grâce à ses trois pattes dépliées et dont les perçages, normalement prévus pour les câbles, accueillent des vis.
Module RFID sur entretoisesLed montée sur entretoise avec support (cheville)

Pour le boîtier, j’ai choisi un cadre en bois de 30 sur 40 cm acheté chez un célèbre fournisseur de mobilier scandinave mais à peu près n’importe quel cadre assez profond (3cm) pour contenir l’électronique convient.
La plaque avant (sur laquelle est collée la signalétique) est un carton mousse de 3mm d’épaisseur consolidé par un système d’entretoises (cf le « Basic Fastener Kit » ) et recouvert par un film transparent souple en PVC de type polyphane assez fin (0,4 mm) pour faciliter la découpe d’un cercle de 1cm nécessaire pour glisser le commutateur (Là aussi, la découpeuse vinyle permet une découpe précise).
La plaque arrière sur laquelle reposent les composants est fixée sur le cadre au moyen de coins de valise. Enfin, si vous envisagez une version horizontale, je vous conseille de prévoir des pieds en caoutchouc afin de stabiliser le dispositif (pareillement, il peut être judicieux de le lester).
Pieds en caoutchouc

Alimentation et autonomie

Sans entrer dans les détails, les cartes UNO ne sont pas optimisées pour des applications sur batterie notamment à cause du hardware consommateur, même au repos. Il y a des solutions logicielles qui mettent la carte au repos mais cela implique une action et un capteur (de lumière ou de mouvement lui même consommateur) pour la réveiller…😤
De plus, l’autonomie de Spot est perfectible. Sa source d’alimentation consiste actuellement en un bloc d’alimentation 6 piles AA (6×1.5v = 9V mais supérieur à une seule pile 9V). Prochainement, une batterie lithium polymer (li-poly) devrait remplacer les piles : http://faitmain.org/volume-2/batterie.html (merci à Jonathan Schemoul pour ce billet)
En attendant d’arriver à optimiser la consommation et, simplement lorsque les piles sont déchargées, un adaptateur secteur (Courant de sortie : 660mA / Tension de sortie : 9V / Jack 2,1mm) est aussi une alternative que j’utilise. (prévoir câble et embase en conséquence pour une intégration propre)

Les fichiers audio et la carte MicroSD

Ce projet nécessite le transfert de fichiers audio sur la carte microSD du module MP3.
Pour faciliter cette opération, vous pouvez utiliser un adaptateur MicroSD vers SD souvent livré avec la version MicroSD.
Nos OS effectuent un tri des fichiers avant de les présenter à l’utilisateur, par nom, taille… Les modules MP3 comme le Grove Serial (mais aussi certains baladeurs MP3) n’ont pas cette possibilité (sinon, ce serait trop simple…😬).
Le classement ne dépendra pas du nom des fichiers mais plutôt de l’ordre dans lequel ils ont été ajoutés… La commande « playSong(00, 01) » jouera ainsi le premier fichier ajouté sur la carte SD et ainsi de suite. Heureusement, il est possible d’utiliser un logiciel comme DriveSort qui permet de trier les tables de répertoire selon différents critères :
http://www.anerty.net/software/file/DriveSort/
Par ailleurs, il peut être intéressant de garder un nommage explicite avec identification de la piste par exemple « 0001_Titre» et « 1001_InfoTitre » pour le commentaire rattaché. Pour faciliter l’identification des pistes de commentaire, j’ajoute ainsi 1000 au nom de la piste musicale concernée. A la piste 0005 est associé le commentaire 1005. Ce nommage devrait aussi permettre de raccourcir le code dans la prochaine version…

Concernant les fichiers musicaux, Ziklibrenbib fournit une veille précieuse à compléter éventuellement en explorant Bandcamp, Soundcloud ou directement sur les netlabels, archives.org, etc… A ce sujet, je me permets de rappeler que « libre » ne signifie pas forcément gratuit : beaucoup d’artistes sous licence Creative commons vendent bien sûr leurs œuvres.

La partie « commentaire » implique évidemment une session d’enregistrement relativement chronophage et de disposer d’une personne voulant bien se prêter au jeu… Elaborer, en  lien avec des discothécaires, une base de commentaires commune pourrait faciliter cette étape (en cours de réflexion).

La technologie RFID/NFC et les étiquettes MIFARE

La Radio Identification, ou RFID (en anglais Radio Frequency Identification) est une technologie permettant d’identifier et caractériser un objet grâce à une étiquette émettant des ondes radio et est utilisée principalement dans le cadre du traçage de marchandises dans de nombreux secteurs.
Pour cette version de SPOT, j’ai utilisé des étiquettes « MIFARE » NTAG203 à moins de 45 centimes l’unité. Il existe des clones moins chers… mais préférez les puces officielles du fabricant NXP. Ces étiquettes Mifare sont de type NFC (Near Field Communication), une technologie sans contact à portée réduite (10 cm en théorie, 4 cm sur les plaquettes commerciales et finalement plutôt 1 cm en pratique ! ) popularisée par les Smartphones et dérivée du RFID à plus longue portée. Ces étiquettes passives puisent leur énergie à travers le signal électromagnétique du lecteur qui permet de les activer et ainsi émettre les informations. Leurs mémoires très réduites de 144 octets ne posent aucun soucis pour ce projet qui ne nécessite pas de transfert de données.
Etiquette Mifare NTAG213Puce Mifare sur boîtier CD

Schéma de montage

Ce schéma (créé avec Fritzing, un logiciel libre qui permet de dessiner un circuit de façon graphique), devrait vous aider à réaliser toutes les connexions matérielles. (Cliquez sur l’image puis sur le bouton « agrandir » en haut à droite)

Schéma de Spot Fritzing

Le programme SPOT

Téléchargez la dernière version du logiciel Arduino en fonction de votre système. Installez-la. Si vous rencontrez un problème à cette étape, reportez vous à la partie « installation » du guide « Floss ».

Importez la bibliothèque « rfid-master »
Ce projet a besoin d’une bibliothèque non standard, pour le module RFID, qu’il faudra donc télécharger, décompresser puis copier dans votre répertoire « /arduino/libraries/ ».
Il s’agit de la bibliothèque RFID pour le module MFRC522 de miguel balboa (licence domaine publique) : https://github.com/miguelbalboa/rfid. Une fois sur github, cliquez sur « Download zip » (en haut, à droite)
Remarque : Vous pouvez aussi importer une bibliothèque au format ZIP directement depuis le logiciel Arduino avec la commande « ADD Zip library » du menu « Croquis ».

Téléchargez le programme « SPOT.ino » en cliquant sur ce lien :
SPOT.ino
Etant novice en programmation, et pour en faciliter la compréhension, j’ai pris soin de commenter/traduire au maximum les lignes de code. Je m’efforcerai de tenir à jour ce lien : en effet le programme devrait évoluer. La prochaine étape consistera à rassembler les fonctions « playSong », qui identifient les étiquettes et lancent la lecture du titre correspondant, pour faciliter l’intégration des identifiants (UID).
En l’état, même si le dispositif fonctionne, je crains, en effet, que si un développeur passe par là, il se fasse mal aux côtes à la lecture de mon code ! A ce propos, je suis évidemment ouvert à vos suggestions !
La mémoire d’un microcontrôleur est fortement limitée : notre modèle Uno ne dispose que de 32Ko (mémoire Flash), un plafond rapidement atteint pour des projets nécessitant beaucoup de programmation. En attendant d’optimiser le code, Spot, dans cette version, ne peut ainsi gérer qu’environ 200 titres. Cela dit, il est aisé d’augmenter considérablement le stockage de votre Arduino avec une puce EEPROM I2C par exemple de 512 Ko (environ 2 € !) :
http://www.zem.fr/augmenter-le-stockage-de-votre-arduino-avec-leeprom-24lc512/

Ouvrez le programme SPOT.ino dans le logiciel Arduino, et, après avoir renseigné votre carte (Outils => type de carte => Arduino Genuino Uno) et éventuellement le port USB, téléversez-le sur votre carte.

Adaptez le code à vos étiquettes :
• Ouvrez le moniteur Série (Outils => Moniteur série)
Assurez-vous que la vitesse de transfert des informations (baudrate) du moniteur série est identique à celle spécifiée dans le programme soit dans notre cas, 9600.
• Placez vos étiquettes Mifare une par une sur le module RFID en décochant le défilement automatique du moniteur de manière à récupérer les identifiants UID complets.
• Adaptez le code en conséquence :
Il s’agit simplement de reporter le numéro d’identification de chaque étiquette.
Ce numéro est composé sur les étiquettes Mifare dernière génération de 7 octets (octets 0-6).
Pour raccourcir le code, il est possible, de ne retenir qu’un numéro ou deux dans la mesure où les étiquettes, vendues en rouleau, ont des identifiants qui se suivent. Par exemple, sur mon lot d’étiquettes, seul le sixième octet varie :
if (mfrc522.uid.uidByte[5]==0x06 && mfrc522.uid.uidByte[6] == 0x80) {
playSong(00, 04);
}
Autrement dit : si octet 5 = 06 ET octet 6 = 80 alors jouer le quatrième titre de la carte microSD.

La signalétique :

Elle est constituée de stickers autocollants réalisés avec une découpeuse vinyle.
J’utilise une Caméo de marque Silhouette mais il en existe d’autres.
Sticker réalisé avec un plotter caméo
Ci dessous, je donne les visuels du projet dans différents formats, y compris les versions vectorielles, afin de faciliter les modifications éventuelles.
SPOT_V1.ai
SPOT_V1.svg
SPOT_V1.studio3
SPOT_V11.png

Bon courage. N’hésitez pas si vous avez des questions et des remarques !

Cet article et les images sont sous licence CC BY-NC 2.0.

4 Commentaires

  1. Pingback : Do it yourself - jeancharpentier | Pearltrees

  2. Pingback : SPOT : le guide de conception | Bib-bib-bib You...

  3. par Marie sur 20 mars 2017  13 h 41 min Répondre

    Bonjour Jean,
    Je suis en train d'essayer d'adapter "Spot" (cela concernera des bouquins et non pas des CDs, et une seule piste sera possible par livre, un extrait du livre). Comme je n'ai jamais utilisé les mifare, je bloque à ce niveau. Impossible de comprendre comment lire les données que le moniteur donne, et donc je ne sais pas quoi encoder!

    Voici ce que j'obtiens:
    00Card UID: C0 67 1B 83
    Card SAK: 08
    PICC type: MIFARE 1KB
    Sector Block 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 AccessBits
    15 63 00 00 00 00 00 00 FF 07 80 69 FF FF FF FF FF FF [ 0 0 1 ]
    62 MIFARE_Read() failed: Timeout in communication.

    Il ne s'agit pas d'une puce mifare comme les vôtres (j'attends qu'elles arrivent par la poste...) mais du porte-clef fourni avec le module RFID (en attendant d'avoir mieux...)
    En tout cas, encore bravo pour ce chouette projet! J'espère pouvoir développer ma version pour ma bibliothèque.
    Bien à vous et merci d'avance,
    Marie

  4. par Jean sur 21 mars 2017  16 h 50 min Répondre

    Bonjour Marie,
    Vous y êtes presque ! Le porte-clés fourni avec correspond à une carte Mifare Classic qui dispose d'un numéro de série sur 4 octets (et non sur 7 comme les puces que j’ai utilisé dans le projet ci-dessus).
    L’identification (UID) est fournie à la première ligne : « C0 67 1B 83 » (pour respectivement les octets 0, 1, 2 et 3).
    En ne retenant que les deux premiers octets cela donnerait ce code :
    if (mfrc522.uid.uidByte[0]==0xC0 && mfrc522.uid.uidByte[1] == 0x67) {
    playSong(00, 01);
    }
    Autrement dit : si octet 0 = C0 ET octet 1 = 67 alors jouer le premier titre de la carte microSD. Bon courage. N’hésitez pas si vous rencontrez des problèmes !

Laisser un commentaire…

Votre email ne sera pas publié.