ATELIER DIY #10 : Encre Conductrice [Concours]

Farnell_Conductive_Ink_Challenge

Le projet contenu dans cet article participe au Conductive ink Challenge organisé par Farnell / Element14

 

 

L’encre conductrice se trouve sous plusieurs formes, la plus commune est un stylo contenant une encre grise et épaisse qui sèche lentement, sur laquelle on peut « souder ». A l’origine cela permet de réparer les traces (les connexions entre les composants) sur des circuits endommagés, et théoriquement cela permet aussi de créer des circuits électroniques fonctionnels sur tous types de support.

Au multimètre, l’encre sèche ne semble pas offrir de résistance particulière, identique à celle d’un cable électrique. Sur une feuille de papier type imprimante, la résistance de l’encre à la torsion est faible, il semble difficile de faire un montage électronique de type « origami » avec cette encre.

Sur du carton un peu granuleux l’encre se comporte mieux mais est absorbé partiellement par le support, pour être sûr que le projet dure dans le temps il faut en mettre plusieurs couches ou pré-imprégner le carton avec un vernis ou une colle qui sèche rapidement, et permette d’assurer une accroche suffisante à l’encre.

Nous avons constaté une fragilité de l’encre à la friction, qui est probablement due aux particules de métal ou d’alliage qu’elle contient

Le Projet

cardboardProject-closeup

Matériel utilisé :  Stylo à encre conductrice : Circuitworks – CW2200MTP
L’ATMEGA328P-PU d’un Arduino UNO
Ecran LCD type Nokia 5110 (copie de chez DealExtreme)
Batterie LiPo 3,7 V 110 mAh
Carton recyclé
Super Glue

Librairies Arduino utilisés :  Keypad
Adafruit PCD8544

Le circuit se veut à l’origine entièrement réalisé en carton et encre conductrice, pour copier à l’identique ou presque un circuit imprimé.

Au final, pour des questions de fiabilité la partie Horloge de l’ATmega a du être pré-montée sur un morceau de plaque à essai, sinon l’ensemble était trop fragile.

Le carton est « vernis » à la Super Glue pour assurer une bonne tenue de l’encre. La Super Glue sert aussi d’isolant électrique sur la matrice de boutons, entre les lignes et colonnes.

Le circuit est double face. La partie ICSP est en dessous

Une LED  est connectée sur la pin 13, pour s’assurer de la réussite de l’envoi du code.
La programmation se fait via ICSP avec l’AVR ISP mkII de notre précédent atelier (on va prochainement apporter quelques précisions et conseils, issus de nos diverses expériences et tentatives, ce sera l’objet d’un nouvel article d’ici quelques semaines).

Le projet en lui-même est une sorte de diseuse de bonne aventure, qui délivre un message drôle ou grotesque, à la manière des Fortune Cookie duquel il s’inspire.

Nous l’appellerons donc le Fortune Cardboard. L’utilisateur pose sa main sur le quadrillage et quelques instants plus tard un message lui est délivré.
23 messages différents sont programmés.

A chaque touche de la matrice une valeur est assignée. Avant de délivrer le message, les 3 premières valeurs de touches déclenchées sont additionnés, auquel s’ajoute une valeur aléatoire pour éviter que le message ne se répète.

Une fois le message délivré, il reste affiché quelques secondes, puis le circuit redémarre automatiquement (Software Reset) et est prêt pour un nouvel essai.

Sur le plan technique, il détourne l’usage de la librairie Keypad et surtout l’exemple MultiKey qui permet de détecter l’appui sur plusieurs boutons. Cette librairie permet de gérer des matrices de boutons.
La gestion de la matrice est très précise, et nous avons découvert qu’il était possible de déclencher les boutons par un simple touché, à la manière d’un capteur capacitif, il n’est pas nécessaire d’apporter une forte pression pour que l’appui de touche soit détecté.
Nous l’avons utilisé pour avoir une grande quantité de possibilités, sans composants externes, et avec un côté aléatoire déterminé par la position de la main de l’utilisateur sur la matrice et la réaction du code à l’appui sur les touches. L’écran ne sert qu’à délivrer le message, aucune animation ou mise en forme graphique n’a été prévue.

L’idée du projet tourne autour des caractéristiques de l’encre conductrice, et de sa capacité à assurer le bon fonctionnement d’un circuit.

Le code du projet est disponible sur GitHub

Quelques précisions sur certaines commandes utilisées :

display.clearDisplay(); display.println(«  »); display.display();

Cette suite de commande permet de rafraichir l’affichage de l’écran. L’exemple fourni avec la librairie ne précise pas grand chose, et c’est après énormément d’essai que nous avons repéré que cette syntaxe permettait de contrôler l’écran correctement. Ce n’est pas forcément la meilleure mais tout fonctionne ainsi.

loopCount > 500; . . . loopCount++;

La variable loopCount est utilisée pour calculer un délai. C’est celui qui va permettre à l’utilisateur de lire le message affiché à l’écran pendant x secondes avant qu’il ne disparaisse au redémarrage. Le délai n’est pas de 500mS, car dans la boucle while() il y a un véritable délai fixé à 50mS. La boucle while() mets un peu moins de 1 mS auquel s’ajoute le délai de 50mS fixé à chaque fin de boucle, donc on peut estimer que le message reste affiché environ 25 secondes. Ce type de délai est utile car pendant que la variable s’incrémente le code continue de tourner et peut ainsi s’enrichir de nouvelles informations en temps réel. La précision reste cependant assez faible par rapport à un delay().

asm volatile ( » jmp 0″);

Software reset : Cette commande permet de réinitialiser l’Arduino. Sur le projet, il nous a paru plus simple de relancer l’Arduino avec cette commande plutôt que de devoir remettre à zéro les différentes variables, on économise quelques lignes de code.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *