Chevino, toute la puissance de l’Atmega 328p !

Elles sont faciles à utiliser les cartes Arduino (TM), mais il y a toutefois un souci. Elles sont plutôt chères pour ce que c’est d’où des copies plus ou moins officielles qui se développent et fleurissent chez tout bon marchant. Et tout ça pour quoi ? Juste un circuit imprimé avec les composants qui vont bien !

Il est très simple de fabriquer soi-même une copie maison de ces cartes, si l’on fait attention à quelque détail. Le montage minimal pour utiliser un circuit comme l’Atmega 328p (le même que les arduino Uno) est disponible, et reproduit ci-après. En gros il suffit de brancher les sources de tensions avec un condensateur de découplage, le reset avec une résistance pull-up et un quartz à la bonne fréquence. Toutes les autres broches ne sont que des entrées/sorties !

atmega328
Un micrcontôleur Atmel Atmega 328P

Il suffit de connecter ces pattes sur l'atmega 328p pour fonctionner normalement. Tout le reste sert à communiquer.
Il suffit de connecter ces pattes sur l’atmega 328p pour fonctionner normalement : reset au niveau logique haut, un condensateur assez gros près du circuit et un oscilateur à quartz. Tout le reste sert à communiquer avec des périphériques

Parlons-en de la fréquence du quartz, sur les cartes de marques et pour des raisons historiques, celui-ci est limité à 16MHz alors que le circuit utilisé peut monter bien plus haut. Les puristes en profiteront pour utiliser des circuits oscillateurs plus complexes (et plus chers, cela va de soit, mais un bête quartz à 20 MHz et deux condensateurs de 22 pF en céramique sont bien suffisants (sauf si on touche à main nue le circuit auquel cas, on risque de provoquer un reset mais cela n’arrivera jamais puisque l’on aura imprimé de jolie boîte en 3D pour tous les projets possibles et imaginables.

 

Bon revenons-en aux fait : le schéma précédent est reproduit dans un petit logiciel (KiCad, tout ce qu’il y a de plus libre et disponible sur votre système d’exploitation préféré), permettant de réaliser la carte électronique finale : on prendra garde à sortir du microcontrôleur les mêmes E/S que sur la carte Uno (et de préférence avec les mêmes labels pour faciliter le développement), un connecteur ICSP 10 pins (parce que ça l’air standard, même si le 6 pins se retrouve souvent sur les cartes, les programmateurs en vente libre ont 10 pins), ainsi que diverses pin additionnelles (comme la pin DTR qui est reliée au signal reset par un filtre passe haut permettant de programmer la carte avec un simple convertisseur usb/série).  On ne se posera pas beaucoup de questions sur les empreintes de composants à utiliser (DIP 28 pour le microcontrôleur, les empreintes des condensateurs et du quartz seront à ajuster en fonction des disponibilités en magasin (ou à la maison, ou bien chez eBay). Ainsi après s’être bien cassé la tête pour faire rentrer le dit montage sur un carré de 5 cm par 5 cm, on pourra passer la commande par exemple chez Itead.

Schéma du circuit imprimé qui est envoyé au fabricant (chinois mais pas cher)
Schéma du circuit imprimé qui est envoyé au fabricant (chinois mais pas cher)

Et voilà le résultat 3 semaines plus tard : 10 belles cartes prêtes à assembler. Je n’ai choisi que des composants traversants (comme on bon vieux temps) permettant de simplifier la soudure au détriment du temps passé à couper les pattes des résistances. Ci dessous une belle photo de famille :

 

photo de famille
Photo de famille des Chevinos assemblés. Il y a plusieurs révisions de la carte, la première ayant eu quelques bugs, mais c’est la version 2 que je décris ici.

Les microcontrôleurs sont des Atmega 328p (32kiO de flash et 8kiO de RAM), qui fonctionnent avec un quartz à 20MHz, il n’est donc pas possible d’utiliser directement le bootloader arduino mais on trouve par endroit sur internet (lien à venir) des versions adaptées ce qui enlève le besoin d’en développer un nouveau.

On peut flasher un bootloader optiboot à 20MHz avec la bonne configurations des fuses, pour n’avoir besoin que d’un convertisseur usb/série pour la programmation. N’importe quel programmateur pour AVR fonctionne pour cette première étape, même une carte arduino programmée avec le programme ArduinoISP disponible dans les exemples (un article à venir là dessus).

Pour la suite du programme on a besoin d’un convertisseur usb/série (niveaux TTL). J’ai pris le CP2104, d’abord parce que c’est pas cher, et d’autre part parce qu’ils ne sont pas encore assez populaires pour être l’objet de copies (à la différence des FTDI ou des PL2303),  ce qui donne des devices plutôt solides (à mon expérience) et qu’on peut acheter facilement par lot de 10. L’autre avantage c’est qu’il a un broche DTR qui va permettre de provoquer le reset de la carte par le programme de flash, et lancer le bootloader qui va charger le programme envoyé par l’ordinateur. Simple non ? On peut alors directement utiliser l’environnement de développement arduino moyennant l’ajout des lignes suivantes au fichier board.txt.

cp2104
Convertisseur USB vers TTL CP2104

On branche donc RX sur RX, TX sur TX, GND sur GND, 5V sur VCC, et DTR sur DTR. On choisit enfin ‘Chevino’ pour la carte. On peut faire blinker une led, ou tout autre chose….

 

Le bon fil au bon endroit. Attention pour les couleurs !
Le bon fil au bon endroit. Attention pour les couleurs !

 

L’étape d’après est de se débarrasser de l’IDE arduino qui connait en ce moment une vie assez mouvementée. Affaire à suivre.

 

 

Publié par

paul_f4hed

Bricoleur du samedi matin, programmeur du dimanche.

Une réflexion au sujet de « Chevino, toute la puissance de l’Atmega 328p ! »

Laisser un commentaire