Archive

Posts Tagged ‘Arduino’

Electronique, magie noire, 8bits

juin 27, 2017 Laisser un commentaire

L’électronique a toujours été pour moi un domaine mystérieux. Bien sur, je l’ai étudiée un peu au lycée, avec le peu qui figurait au programme, les circuits RLC en mode alternatif, l’effet « ampli » des transistors, les alimentations à découpage. Bien sur, j’y suis un peu revenu – de loin – quand j’ai appris l’informatique et les circuits logiques. Bien sur, je connais les principes de base, U=RI, la loi des noeuds, Ampère et son bonhomme – sacré lui ! – , Lorentz, Laplace, les circuits équivalents, etc.

Pourtant, j’ai toujours été incapable de concevoir un circuit électronique un tant soit peu utile, et vu de moi, les circuits présentés dans les revues grand public tiennent plus de la magie noire que de l’ingénierie. Chacun son domaine, c’est comme ça.

Mon « truc », sans être un génie, c’est l’informatique, et notamment la programmation, les système, le « bas » niveau, et ça ne me défrise pas plus que ça de remettre sur pieds une vieille babasse tout juste bonne pour le recyclage ou le musée, uniquement pour que ça fonctionne. Malheureusement, les vieilles machines à un prix correct se font de plus en plus rares. En passant, je trouve ignoble de vendre plusieurs centaines d’euros un « huit bits », même en bon état, même dans sa boîte uniquement parce que c’est « vintage ».

La programmation ? Les machines grand public d’aujourd’hui sont tellement rapides et dotée en mémoire et en espace de stockage, que la programmation d’une application en serait devenue presque triviale sans toutes les couches intermédiaires – API, toolkit, etc, et même créer un système d’exploitation est abordable pour l’amateur obstiné.

J’ai commencé à programmer sur calculatrices – 22 pas de programme sur la TI 57, 220 sur la casio 7000G – puis sur micro en basic, pascal, C, assembleur dans 64 puis 512 kilo octets ! Ca c’était fun. Une idée, un besoin ? Hop, un brouillon, du code, de l’optimisation et ça roulait.

C’est la faible épaisseur des couches d’abstraction qui rendait tout cela possible. Aujourd’hui , le système est si complexe et prend tellement de place qu’il est parfois difficile de voir si un programme plante à cause d’un bug ou à cause d’une classe ou d’une API un peu tatillonne ou bancale.

Pour retrouver un peu cet esprit « micro » de l’informatique, j’ai acquis et revendu ou donné plusieurs « ordinosaures », mais par manque de place je n’en conserve que deux ou trois.

J’ai ensuite découvert presque par hasard un projet d’émulation d’une machine à base de Z80 tournant sous CPM. Cette émulation fonctionne sur … Un Arduino due. On en est là ! Une simple carte à quarante boulons est capable d’émuler une machine qui coûtait un bras au début des années quatre-vingt !

Custom serial card (front)

Le Due attend sagement dans sa boîte que je prenne le temps de m’en occuper. Je l’ai déjà dit, j’adore les cartes Arduino. La Uno avec son atméga a ma préférence, de même que les ATtiny85 pour leur simplicité et leur ouverture. Comme avec les ordinateurs des années 70 et 80, on a un accès plein et entier aux fonctionnalités du micro contrôleur, la différence étant la nécessité d’utiliser un ordinateur récent pour le programmer.
Grâce à l’ATtiny ou à son grand frère l’ATmega, il ne doit pas être bien difficile de créer une pico-machine simple, extensible, et programmable simplement, une espèce de huit bits au goût du jour. Les ressources sur Internet ne manquent pas.

L’ATtiny est limité en mémoire et en « pins » d’I/O, mais ça oblige à garder des buts simples et maitrisables. Je cherche à apprendre, et non à recréer un « Coco », un IIGS ou un Speccy, alors je vais procéder par étapes, un module après l’autre. Outre une carte « CPU » des plus simples, puisque basée sur un micro-contrôleur, un fond de panier, une alimentation, un peu de « glue » et quelques entrées/sorties devraient suffire pour commencer.

D’un autre côté, l’ATtiny sait « parler » I2C, tant en maitre qu’en esclave, ce qui ouvre pas mal d’opportunités, à commencer par une horloge RTC et une petite mémoire Flash de 32ko, ainsi qu’un petit écran oled, tous trois sortis de ma boîte à rabiots.

Creative Commons License

Catégories :Arduino Étiquettes :

Mon premier shield Arduino

mai 30, 2017 Laisser un commentaire

J’ai acheté ma premiere carte Arduino il y a … longtemps maintenant. Je l’utilise surtout pour des petits montages rapides et recyclables : voltmètre ou ohm-mètre basse résolution, bruiteurs, lucioles. L’AT-Mega est un peu surdimensionné alors qu’un « simple » ATtiny85 suffirait bien souvent, avec ses 8 petites pattes, à comparer aux 28 de son grand frère.

Vient alors le premier soucis : une carte arduino Uno permet de programmer son propre microcontrôleur, et d’y faire tourner une application. Un ATtiny85 sans moyen de le programmer, c’est un micro-presse-papier ou encore une agrafe high-tech.

Évidemment, les solutions existent :

  • boîtier de programmation du commerce
  • arduino comme programmateur à l’aide d’une plaque d’essais
  • arduino et shield de programmation pour ATtiny

La troisième solution a ma préférence, et des sites comme Make, Dangerous Prototypes, Hack-a-day, ou encore instructables donnent toutes les informations nécessaires.

Just do it !

Ok, juste faisons-le ! Y’a qu’à. En théorie, du moins.

En réalité, ça n’est pas allé sans mal.

Prototype #1 : le premier prototype fonctionnait quand il voulait, et l’ATtiny était reconnu… une fois sur trois ou quatre. Plutôt que de galérer plus longtemps, je suis passé au second prototype.

Prototype #2 : quelques corrections d’erreurs plus tard, ça ne fonctionnait toujours pas. J’ai ajouté les leds d’affichage après coup. Visuellement, la vérue est dégueu, mais au moins je suis certain que le shield est reconnu par l’arduino au vu de l’activité des leds . J’ai appris une bonne leçon à cette occasion :

Leçon #1 : un microcontrôleur DIL (ici un ATtiny85 avec ses 2 fois 4 pattes) s’installe sur un connecteur DIL. Un connecteur à base de barrette femelle sécable n’est pas prévu pour ça ! Obtenir un contact fiable dans ces conditions tient presque du miracle.

Après avoir adapté ledit connecteur DIL, ça se passe beaucoup mieux, même si l’ensemble ressemble très fortement à un bricolage fait sur un coin de table (c’est le cas).

Prototype #3 :  j’ai tout de suite intégré les trois leds d’état, une zone de tests, et deux boutons reset – un pour l’arduino vu que le sien était hors d’atteinte, l’autre pour l’ATtiny.

Leçon #2 : au plus simple, au mieux. Le fameux KISS. Euh, le fameux principe KISS, disais-je. Un shield, une fonction. Les deux boutons reset sont de trop, la barrette de tests itou.

Leçon #3 : utiliser des repères physiques pour connecter le shield sur l’arduino. J’ai voulu économiser un pin et une soudure, et ça m’a mis dedans : une masse connectée sur une alim, le reset du shield sur le 3.3V de l’arduino… bref, seules les leds fonctionnaient, et décaler les pins se faisait plus vite que de compter jusque trois. Pas de fumée, pas d’odeur de plastique fondu, je suis passé assez près.

Prototype #4 : Ce n’est pas que ça coûte cher, mais ça commence à y ressembler. On ressort le calepin et on recommence de zéro.

Le cahier des charges est simple :

  • tenir sur une carte de type stripboard (ou veroboard, suivant les fournisseurs) de  20 points de large (la largeur de la carte arduino) par 20 points de long, pour laisser un accès au bouton reset de l’arduino
  • utiliser un minimum de composants, et réduire le nombre de ponts/straps
  • la connexion à l’ATtiny, ou à la carte qui l’utilise, passe par une barrette sécable de 8 points. Je sais, c’est contraire à ce que j’ai écrit plus haut. J’y reviens bientôt.
  • permettre une utilisation en 5V comme en 3.3V
  • afficher le bon fonctionnement du bidule, via trois leds
  • simplifier la connectique
  • utiliser des repères physiques pour éliminer les erreur de connexion
  • connexion standard : Arduino 13, 12, 11 sur ATtiny 7, 6, 5 ; arduino 10 sur ATtiny 1 ; masse arduino sur masse ATtiny 4; Arduino 5V (ou 3.3V) sur ATtiny 8, arduino 9, 8, 7 chacun vers sa led précédée de sa résistance 330 Ohm, les leds dirigées vers la masse de l’arduino. Ah, oui, ne pas oublier le condo polarisé entre la masse et le reset de l’arduino. Je crois que c’est tout.

Le résultat final est presque conforme. En tout cas, c’est presque propre. Ne manque que l’étiquette sur la barrette centrale ainsi que celle sur le sélecteur de tension.

Côté soudures

shield_verso

Les ruptures de pistes ont été exécutées en tournant doucement un forêt pour métaux de diamètre 2.5mm. Pas besoin d’y aller comme un brutos, la couche métallique est très fine. Les soudures ont été faite au fil de diamètre 0.5mm. Je remercie au passage mon ophtalmo et mon opticien.

Côté composants

attiny_shield

Un strap (pont) aurait pu être évité, mais c’est très bien comme ça. Vu leur diamètre, les leds verte et rouge sont légèrement inclinées.

Repères physiques

Les pins analogiques de l’arduino (à droite) ne sont pas utilisés. Côté alimentation, l’alignement se fait sur le pin de droite (non utilisé et non routé sur le shield).

shield_reperes.jpg

Côté signaux, le pin 7 (à gauche) doit être plié d’une demi-piste pour respecter l’alignement côté arduino. Les pins 8 à 13 peuvent rester d’équerre.

shield_reperes_2.jpg

Petit bonus

Les prototypes 2, 3 et 4. Attention,  on peut rire, mais on ne se moque pas !

shield_prototypes.jpg

De haut en bas et de droite à gauche :

  • Prototype #2 avec son adaptateur DIL. Moche mais fonctionnel. Le tube plastique blanc empêche de déformer les leds ajoutées après coup lors des manipulations.
  • Prototype #3. Complètement buggé. Le mieux qu’on puisse en tirer est un feu tricolore et un bouton reset !
  • Prototype #4. Simple et presque clair. On touche bientôt au Zen.
  • Un proto d’adaptateur, maintenant sans utilité.
  • Un porte-clefs FOSDEM. C’est une monocarte à base d’ATtiny85. Peu pratique mais sympa.

Connecter un attiny sur le shield

La barrete du shield ne sert qu’à connecter la carte qui utilise l’ATtiny. Ce dernier est soit directement soudé, soit fixé sur un connecteur DIL.

Attention, pour simplifier le « routage », l’ordre des pins est inversé sur le connecteur du shield : le #1 est à droite, et le 8 à gauche.

Et maintenant ?

J’ai une petite poignée d’ATtiny85 d’avance, de quoi me fabriquer quelques amusements. Le prochain comprendra :

  • une alimentation par jack et USB
  • un affichage sur I2C
  • une horloge RTC sur I2C
  • quelques entrées sorties encore à décider (buzzer, microphone, boutons, …)

 

Creative Commons License

Catégories :Arduino Étiquettes :
%d blogueurs aiment cette page :