YABBAS

Une manière enrichissante de découvrir le système Arduino

Le système Arduino est très répandu, et nombreux sont les utilisateurs qui découvrent l’informatique et l’électronique à travers cet environnement.

Rien de plus logique pour l’ACoLab que de proposer une initiation à l’Arduino, mais nous avons choisi la voie du DIY* pour proposer une expérience encore plus enrichissante.

Le format ouvert du système permet en effet de fabriquer sa propre platine d’expérimentation, ce qui apporte un gain a plusieurs niveaux :

  • découverte du processus de fabrication d’un circuit imprimé ‘prototype’
  • initiation à la soudure électronique (brasure à l’étain)
  • découverte de quelques composants lors de l’assemblage
  • plaisir de pouvoir dire “je l’ai fabriqué moi même”
  • coût au plus serré (bien que pour la programmation, un adaptateur soit requis ,mais celui ci sera mis à disposition par l’ACoLab)

Le matériel

Pour chaque kit de clone d’Arduino, il faut les composants suivants :

  • 1 x Platine de prototypage à bandes, de 18 bandes x 9 perçages ou plus
  • 1 x Microcontroleur ATMEL ATmega 328-PU au format DIP
  • 1 x Support DIP étroit (optionnel mais recommandé)
  • 1 x Quartz 16Mhz (note, un quartz de 20Mhz peut être employé, mais il faut alors modifier le logiciel)
  • 2 x condensateurs de 22pF pour l’excitation du Quartz
  • 1 x résistance de 10Kohms pour polariser la broche ‘reset’
  • 1 x condensateur de 100nF pour temporiser la fonction ‘reset’ au démarrage
  • 1 x condensateur de 100nF pour effectuer un filtrage de la borne ARef (optionnel)
  • 1 x régulateur de tension de type “*7805*” (Si l’alimentation est réalisée avec une pile 4.5V, le régulateur est optionnel)
  • 1 x condensateur de filtrage de 100µF 25V ou plus pour l’alimentation avant le régulateur
  • 1 x condensateur de filtrage de 100µF 6.3V ou plus pour l’alimentation après le régulateur
  • 1 x led et sa résistance talon pour indiquer la présence d’une alimentation (optionnel)
  • 1 x led et sa résistance talon pour la broche ‘D13’ (optionnel)

L’outillage de fabrication

Pour découper les platines la solution low-cost la plus répandue est de passer à plusieurs reprise sur une ligne de perçage avec un cutter ‘industriel’ pour créer une fragilité. En appuyant la carte le long de cette ligne sur le bord d’une table, on obtient une ‘fracture’ le long de la ligne de perçage.

Une autre solution consiste à utiliser une micro perceuse de type Dremel avec un disque à tronçonner, mais la largeur de coupe sacrifie une bande et s’ajoute l’usure de l’outil et la difficulté d’obtenir une coupe droite.

L’utilisation d’une scie à chantourner permet de réaliser une coupe propre, mais la qualité de coupe sera directement liée à la qualité de l’outil. Avec une scie à chantourner manuelle il est très difficile, pour ne pas dire impossible, de suivre une ligne de coupe droite. Avec une scie à chantourner électrique (vibrante), et avec une lame de bonne qualité, une coupe droite est en principe possible.

Pour effectuer la séparation de bandes, il faut interrompre la bande de cuivre, là encore plusieurs possibilités :

  • la micro perceuse, avec une fraise ou un disque à tronçonner
  • un cutter de bon gabarit
  • un foret d’environ 4mm, que l’on peut éventuellement affuter avec un angle très ouvert (140° ou plus)

Dans tout les cas, il est très important de vérifier que les pistes soit parfaitement interrompues après cette opération, car un copeau de cuivre peut créer un pont entre les pistes, ce qui peut engendrer un dysfonctionnement, voir la destruction de composants.

On utilisera également un fer à souder d’une puissance comprise entre 25w et 60w, avec de la brasure à l’étain de bonne qualité. De l’étain de diamètre compris entre 0.5 et 1.2mm convient.

Des petites pinces plates et des pince coupante, ou à défaut un coupe ongle compléteront le matériel requis.

L’outillage de programmation

Les micro contrôleur ATmega328 sont livrés vierges de tout programme. Pour que l’application de programmation Arduino puisse envoyer un programme, il est nécessaire d’injecter un Bootloader avec un programmateur spécifique. Cette opération sera réalisée à l’ACoLab avec un programmateur du type USBASP.

Par la suite, pour injecter un programme type Arduino dans les YABBAS, un simple adaptateur USB / série ‘TTL’ (c’est à dire en 5V) sera suffisant.

Atelier pratique

Une douzaine de YABBAS à la sauce ACoLab on été fabriqués
http://blog.acolab.org/2013/12/diy-arduino-cest-fait/

Plusieurs difficultés ont étées rencontrées, et différentes solutions ont étées trouvées, avec plus ou moins de bonheur

Types de connexions
Certains ont choisi des connecteurs femelles montés coté composants. Solution permettant comme sur l'Arduino originel d'utiliser des fils de liaison.
D'autres ont utilisé des 'headers' males à enficher dans des platines d'expérimentation. Le YABBAS prévoit d'avoir une largeur de 8 pas de 2.54mm ; selon la découpe choisi pour la platine, elle peut déborder d'une demi ou d'une piste complète, du coup une fois enfichée sur une platine d'expérimentaiton, il reste très peu de place autour.
Certains ont monté ET des connecteurs males, ET des connecteurs femelle profitant de la piste 'en plus' de chaque coté.

Lignes d'alimentation masse et VCC sous l'ATMEGA
Le fil disponnible était un peu trop gros, il a fallu en trouver du plus fin. Attention, il y a des 'pièges', le fil d'alimentation fait un pont entre deux pistes contigues pour la led rouge. Ceux qui ont raté ce point peuvent faire un pont coté piste pour rattraper le coup. Il est également difficile d'inserer deux fils dans le même perçage, même avec du fil fin. L'idéal est d'avoir un foret de 1mm pour agrandire un petit peu le perçage.

Positionnement du quartz
Au final, le boitier 'low profil' reste encombrant sur l'implantation très dense du YABBAS ! Ceux qui ont utilisé des header males l'on installé au dessus, et ça passe pas trop mal. Une autre solution est d'utiliser un support tulipe pour l'ATMEGA et d'installer le quartz en dessous du microcontroleur, mais ça passe plus que juste à cause des fils de masse et VCC qui passent déjà là.

Injection du bootloader
L'opération s'est déroulée avec l'IDE Arduino, en utilisant une interface USBasp. A la connection de l'interface, l'utilisateur ne dispose pas des droits complets sur l'interface et ça ne fonctionne pas. Il faut donc appliquer les droit RW sur le device, qui change à chaque fois que l'on retire puis insère le programmateur. (La méthode 'propre' consiste à créer une règle UDEV, mais ça ne fonctionnait pas)


Injection du bootloader avec un autre arduino (clone ou non). Rélalisé avec ATEMEGA328PU, quartz 16MHz et l'IDE Arduino 1:1.0.5 ( source et schema ).
1. prendre l'arduino déja bootloadé et y charger le sketche ArduinoISP (dans examples). Le déconecter du port USB une fois fini..
2. faire les connections entre l'*ArduinoISP* (celui que l'on vient de bootloader) et le Yabbas vierge en reliant respictivement les broches:
D10 (pin16 ATMEGA328P) > /RESET (pin1 ATMEGA328P) ;
D11 (pin17 ATMEGA328P) > D11 MISO(pin17 ATMEGA328P) ;
D12 (pin18 ATMEGA328P) > D12 MOSI(pin18 ATMEGA328P) ;
D13 (pin17 ATMEGA328P) > D13 MISO(pin17 ATMEGA328P) .

3. reconnecter l'*ArduinoISP* au port usb, changer le programateur en "Arduino as ISP", changer le type de carte cible en "Arduino NANO w/ ATmega328" (?? ne marche pas avec Arduino Pro MINI..).
4. Faire Outils/**Graver la séquence d'initilisation**. Attendre le message de fin (20s chez moi). Et voilou.

Injection d'un programme
Avec le programmateur USBasp, le code se charge et l'ATMEGA l'execute, mais l'injection par le port série ne fonctionne pas convenablement. Il semblerait que la fonction reset ne se fasse pas, ou alors le bootloader injecté ne reste pas assez longtemps en attente du nouveau programme.
Le YABBAS n'ayant pas de bouton physique 'reset', il faut le provoquer via le convertisseur USB/Serie, un FTDI232 dans notre cas, mais nous n'avons pas trouvé la bonne méthode lors de la session de l'atelier.
Depuis, les choses s'éclairsisse, en autre grace ces deux pages http://www.yuriystoys.com/2012/02/arduino-on-beadboard-uploading-your.html http://mchobby.be/wiki/index.php?title=ADF-BOARDUINO-UTILISER
De plus, le bootloader injecté n'est peut-être pas le plus adapté à l'utilisation avec un FTDI. La platine Arduino electroniquement la plus proche, et qui utilise un FTDI, et le Diecimila, l'injection du bootloader de ce type semble plus pertinente.
Enfin, pour provoquer le reset, les lignes RTS et/ou DTR sont à priori équivalente.

En complément, pour les plus bidouilleurs, il est possible d'utiliser le ftdi pour injecter en ICSP, grace à ce que l'on appelle le BitBang Mode, c'est une particularité du FTDI de pouvoir être 'piloté' pour utiliser ses broches autrement qu'en protocole série.
Démonstartion sur http://hackaday.com/2009/09/22/introduction-to-ftdi-bitbang-mode/
et surtout l'utilisation typique pour injecter un bootloader dans un ATmega (exemple sous Windoz) http://learn.adafruit.com/ftdi-friend/programming-the-arduino-bootloader (sous linux) http://doswa.com/2009/12/20/sparkfuns-ftdi-basic-breakout-as-an-avr-programmer.html

Il reste à faire les essais pour confirmer tout ça !

anotherYabbas-0.1.zip - un projet de Yabbas (KiCad) a valider (221,71 ko) Baptiste Pelouas, 03/02/2015 22:28

anotherYabbas-0.1.zip - le meme avec export du.brd (238,2 ko) Baptiste Pelouas, 03/02/2015 23:36

anotherYabbas-0.2.zip - version 0.2; quelques corrections majeur !! (321,554 ko) Baptiste Pelouas, 08/03/2015 10:03