Outils d'utilisateurs

Outils du Site


projets:programmateur_d_atmega_et_d_attiny_a_base_d_arduino

Programmateur d'ATMega et d'ATTiny à base d'arduino

Réalisation d'une carte facilitant la programmation de différents microcontrôleurs ATMEL avec un Arduino.

Origines du projet

Quand on finalise un projet, pas question d'y laisser un Arduino bloqué à vie. À mon sens, l'Arduino est un outil génial, certes, mais un outil de prototypage et d'essais.

On peut facilement finaliser des projets de manière bien plus intelligente : remplacer l'Arduino tout entier par un simple microcontrôleur. Les avantages sont nombreux:

  • Bien moins cher ;
  • Beaucoup plus compact ;
  • Consommation électrique plus faible ;
  • Réelle adaptabilité aux besoins du projet

Le sketch ArduinoISP permet d'utiliser un arduino comme système de programmation. Il engendre un certain nombre de câblages, des LEDs témoins, un oscillateur externe… Tout cela prend un certain temps à brancher sur la breadboard, et quand on en grave souvent, on augmente le risque d'en cramer un par la patte d'une résistance baladeuse.

L'idée était donc de réaliser une carte simple permettant d'optimiser cette démarche.

Conception

Ce que la carte devait faire :

  • Graver des bootloaders ;
  • Uploader des sketchs ;
  • Programmer différents AVR : ATMega328, mais aussi ATTiny85 (ceux que j'utilise le plus souvent) ;
  • Empêcher la casse d'une patte d'un µC ;
  • Présenter les LEDs de statut conseillées par le sketch ArduinoISP (erreur, gravure…)
  • Fournir un résonateur externe ;
  • Permettre la liaison série directe entre l'UART de l'Arduino et un ATMega ;
  • Fournir un dispositif de test basique

Le système est assez simple : un bornier de connexion à l'Arduino, un socket ZIF, un bouton de reset, des leds de statut pour le sketch ArduinoISP, des jumpers pour configurer le mode d'opération de la carte, un reset, un résonateur.

Plans

Le PDF du schéma électrique est ici : schema.pdf

Réalisation

Pour ce genre de projet, une perfboard, un peu de patience, et une certaine minutie dans le maniement du fer à souder suffisent. En effet, réaliser un PCB pour un projet de cette simplicité aurait été une perte de temps, même si une évolution en shield arduino rendrait intéressante cette démarche dans un soucis de sérialisation.

Difficultés rencontrées

Si beaucoup de documentation existe sur la programmation d'AVR ATMEL à partir d'Arduino, il fut relativement complexe de qualifier l'interopérabilité et la nécessité de certains détails : condensateurs sur le reset pour éviter un brownout de la carte, capacité ou non d'uploader un sketch sans liaison série directe, utilisation des horloges internes au lieu de résonateurs externes, comportement des AVR quand une tension est appliquée à leurs bornes pendant la programmation…

Voici quelques conclusions en vrac :

  • On peut se passer de condo type 10µF entre le RESET et le GND d'un ATMega ;
  • Une fois le bootloader gravé, on peut uploader des sketchs en utilisant l'Arduino comme un ISP (donc pas besoin de liaison série) ;
  • Pas besoin de graver de bootloader de manière explicite sur un ATTiny ;
  • C'est vraiment plus stable d'utiliser un résonateur externe au lieu de l'oscillateur intégré des AVR;
  • Quand on fait tirer le RESET au GND, les pins d'un ATMega ou d'un ATTiny se mettent en état Hi-Z

Suites du projet

On pourrait transformer ce projet en shield pour Arduino, le rendant encore plus pratique et fiable. Toutefois, il ne permettrait plus de se plugger sur des modèles d’Arduino différents.

projets/programmateur_d_atmega_et_d_attiny_a_base_d_arduino.txt · Dernière modification: 2016/07/02 03:10 par leminaw