Archives par mot-clé : arduino

Week-end studieux

J’ai eu la bonne surprise, vendredi soir, de voir mes voisins frapper chez moi pour me remettre un colis arrivé en mon absence. A force de commander des petits machins en chine avec le port gratuit, qui mettent en quatre et huit semaines à arriver, j’en avais oublié qu’il existe aussi de « vrais » transporteurs, qui livrent en quarante-huit heure d’un point à l’autre du globe!

Je me suis donc attelé à la tâche, ardue (je m’en suis rendu compte par la suite!) de monter les derniers composants, et de programmer ces minuteurs.

Il aura fallu environ six heures. Trois heures pour faire fonctionner une carte Arduino comme un programmeur. Je vous le dis, vous gagnerez du temps si vous avez à le faire: quand vous utilisez une Arduino comme ISP (In-System Programer), il est conseillé de monter un condensateur entre la masse et la ligne reset de ladite Arduino. En fait de conseil, il est plutôt avisé, si je l’avais suivi immédiatement, j’aurais gagné trois heures!

Une fois le premier minuteur programmé, il aura fallu trois heures de plus pour voir se dessiner quelque chose à l’écran. Trois heures passées à relire plusieurs fois l’intégralité des programmes, à relire encore une fois les schémas de câblage pourtant maintes fois relus, pour finir par suivre à l’œil toutes les pistes sur la carte, et me rendre compte qu’une résistance et un condensateur ont été intervertis lors de la fabrication!

Ces deux problèmes réglés, j’ai enfin pu tester les différentes fonctions du minuteur, affiner les réglages, régler les menus, et tout fonctionne exactement comme prévu. Les temps se sauvegardent en mémoire, on peut les récupérer après avoir coupé le courant, la luminosité se règle bien (et c’est une bonne chose: dans une pièce sombre la luminosité maximum est vraiment trop puissante!).
La carte s’alimente sans problème à la fois via son port USB et sa régulation de tension, et — bien sûr! — le relais fonctionne, et permet de connecter ce qu’on veut y connecter! C’est quand même son but premier.

Considération annexe: c’est la première fois que je fais réaliser un circuit imprimé. Il a donc fallu choisir un fournisseur pour le réaliser, et assembler dessus les composants nécessaires. Je suis impressionné par la qualité de ce que j’ai reçu (mis à part la question des composants inversés, mais je comprends ce qui a causé cette erreur), on est très loin des fabrications chinoises typiques d’ebay.

Pour finir, une courte vidéo du fonctionnement : Essai du minuteur

Minuteur insoleuse. Du code, du code, du code.

Programmation en cours

En attendant, un prochain matin, d’avoir le plaisir de voir ma factrice frapper à ma fenêtre, j’ai avancé ces deux derniers jours sur le code du minuteur, qui est maintenant à peu près figé.

Les bibliothèques qui gèrent l’afficheur ont été réécrites, pour passer de la première version, faite avec les moyens du bord (un registre à décalage récupéré sur un décodeur TNT), à la version correspondant à la carte, qui utilise un circuit intégré dédié à ce genre d’afficheur, le MAX7219. J’en ai profité pour réaliser une bibliothèque complète qui dépasse le besoin propre au minuteur, histoire de pouvoir gérer aussi une matrice de 8×8 leds. Ca pourra toujours servir pour un autre projet.

Le programme du minuteur lui-même a aussi été revu et corrigé, d’abord pour s’adapter à cette nouvelle bibliothèque, ensuite pour intégrer diverses fonctionnalités utiles. Voici donc ce que minuteur fera:

  • Régler un temps. Oui, vraiment.
  • Lancer une insolation, la mettre en pause, et la stopper (automatiquement à son terme, ou volontairement plus tôt).
  • Afficher le temps précédemment réglé quand l’insolation est terminée. Ca peut paraitre évident, mais il serait dommage de vouloir se faciliter la vie avec un minuteur et devoir régler à nouveau un temps avant chaque insolation.

En plus de ces fonctions de base, de quoi se faciliter la vie avec un menu succinct permettant de:

  • Stocker un temps en mémoire qui sera conservé une fois l’insoleuse éteinte. Il est pour l’instant prévu seize emplacements mémoire parce que ça me semble couvrir largement le nombre de procédés utilisables, mais il reste de la place. Ce sera donc probablement bien plus.
  • Récupérer ces temps enregistré en mémoire.
  • Régler la luminosité de l’afficheur. Pas forcément utile mais puisque le circuit intégré dispose de cette fonction, ne nous fatiguons pas, préservons nos yeux, adaptons l’outil à l’environnement et pas l’inverse!
  • Enfin, activer ou désactiver la sonnerie qui peut retentir à la fin d’une insolation.

Ces deux réglages, l’intensité lumineuse de l’afficheur et l’activation de la sonnerie, sont également sauvegardés en mémoire. Ainsi c’est réglé une fois pour toutes, mais facilement accessible si besoin est.

A venir

Concernant la sonnerie, c’est un des points qui reste à régler: quel type de sonnerie, combien de temps dure-t-elle, faut-il pouvoir également paramétrer le temps pendant lequel elle sonne, sera-t-elle assez puissante? Autant de questions qui doivent murir encore un peu.

Il reste un autre détail à régler, c’est celui du réglage du temps. Comme tourner un bouton pendant des heures pour obtenir une exposition de vingt minutes en incrémentant seconde par seconde, c’est long (très long: mille deux cent secondes, soit une centaine de tours!), pour l’instant le problème est contourné en changeant les incréments de durée au fur et à mesure que le temps total augmente: en-dessous d’une minute, l’incrément est d’une seconde, puis cinq au-delà, puis dix au-delà de deux minutes, etc. Il est très possible que cela reste comme ça parce que ça fonctionne plutôt bien, mais je cherche à faire en sorte que la valeur d’incrémentation augmente naturellement lorsque l’on tourne le bouton plus d’un certain temps.

Et puis il reste un dernier détail: sans les prototypes sous la main, je n’ai rien pu tester d’autre que l’absence de problèmes syntaxiques dans le programme. Il reste à voir comment tout cela fonctionnera une fois les cartes en main!

D’ici-là, vous pouvez toujours me faire part de vos points de vue sur telle ou telle question, ou vous plonger dans la lecture des codes sources. Ils sont disponibles, utilisable et modifiables si vous voulez en faire un vous-mêmes, ou si vous avez besoin de gérer un bouton, un encodeur rotatif, un écran à sept segments ou si un minuteur paramétrable vous rendrait service dans vos créations…
Le code du minuteur
Les bibliothèques:
Afficheur sept segments
Bouton
Encodeur
Timer

Entrée dans l’aire numérique

Travail en cours…

Ces dernières semaines, il se trame quelque chose au labo. Bièvres bien sûr, qu’il fallait préparer (mais l’est-on jamais vraiment?), mais également quelque chose de neuf ici. Il s’agit d’un minuteur, certain d’entre vous en auront vu des nouvelles sur facebook. Un minuteur qui permette de contrôler finement l’exposition dans une insoleuse, afin d’obtenir une certaine répétabilité dans vos travaux de tirages, mais également le confort de ne pas avoir à garder dans la main un chronomètre sur lequel jeter un œil toutes les 20 secondes…

Caractéristiques

Les principales caractéristiques sont les suivantes:

  • Un module prêt à monter et à brancher dans une insoleuse de votre fabrication.
  • Un afficheur digital, par défaut rouge mais il est prévu de pouvoir utiliser d’autres couleurs: orange c’est reposant, bleu c’est à la mode mais je trouve que ça fatigue la yeux. Vert ça manque de lisibilité, jaune peut-être que c’est chouette?
  • Un bouton rotatif (techniquement, un encodeur) pour régler la durée d’exposition. Et cliquable, pour accéder à un menu sommaire.
  • Un bouton pour lancer l’exposition, la mettre en pause, et éventuellement l’interrompre.
  • Deux alimentations possibles: via un bornier, pour connecter directement à un transformateur 12V si vous utilisez des rubans de led, et via un port USB si vous utilisez des tubes ou des ampoules. Dans ce cas-là il faut prévoir un petit transformateur USB, du genre de ceux pour charger les téléphones.
  • La possibilité de sauvegarder des temps en mémoire.
  • Un bipeur pour prévenir quand c’est terminé.
  • Et puisque le système est développé sur la base de l’environnement Arduino, la possibilité de développer le système selon vos besoins: l’emplacement pour un deuxième bouton est prévu, ainsi que des brochages pour communiquer (SPI, liaison série, I2C).

Où cela mêne-t-il?

Un lot de 5 prototypes a été commandé ce matin, qui permettront de valider le circuit, de le tester en condition réelles, et éventuellement d’y apporter des modifications. Également bien sûr d’évaluer l’ensemble des choses à prendre en compte pour faire réaliser une carte électronique, ce qui est plutôt nouveau pour moi.
Cela permettra également d’évaluer précisément le temps que peut représenter la programmation de chaque carte, le temps qu’il faudra pour l’équiper avec les composants dont le montage m’incombera, ainsi que des tests pour en vérifier le bon fonctionnement.
Dans un deuxième temps, il est prévu de lancer en fabrication des lots plus conséquents, et de vous proposer cet outil-là! Pour un prix modique je l’espère. Le lot de prototypes permettra également d’affiner ce point-là.

A suivre, donc. J’espère que les délais de fabrication permettront que ce projet se concrétise rapidement.

Toute réaction est bienvenue!

Empreinte du minuteur
Empreinte du minuteur

Minuteur-F.Cu Minuteur