Rapberry Pi / Atmega bridge : présentation

Bonjour,
A travers une petite série d’articles, nous allons améliorer notre Raspberry Pi en lui ajoutant un micro-contrôleur : un ATmega328, le même que celui qui anime les Arduino UNO.
Nous aurons quasiment l’équivalent d’un Arduino Uno intégré à notre Pi, totalement reprogrammable via les GPIO, en UART et/ou en SPI.
L’IDE Arduino sera totalement utilisable sur le Pi, mais nous disposerons également d’outils en ligne de commande pour uploader nos sketches (à distance en SSH, par exemple).

Une petite précision, toutefois : notre ATmega sera cadencé à 8MHz/3.3v à la place des 16MHz/5v d’un UNO classique. Deux raisons : on économise au minimum un résonateur, et nous n’aurons pas besoin de convertisseur logique 3.35v (je rappelle que les GPIO d’un Pi sont sur une logique 3.3v et ceux d’un Arduino sont en 5v). En effet, un ATmega alimenté en 3.3v a des niveaux logiques en 3.3v également, ce qui sera parfait pour communiquer avec notre Pi.
Evidemment, la même méthode fonctionne aussi bien avec un ATmega en 5v/16MHz, mais il faudra faire quelques légers ajustements de code, et rajouter le nécessaire pour la conversion des niveaux logiques (un simple voltage divider suffira pour l’UART, mais c’est plus compliqué pour le SPI).

Au niveau de la programmation depuis le Pi, nous pourrons utiliser 2 méthodes :
– en SPI : permet de bootloader un ATmega et d’uploader du code, mais bloque un des deux uniques ports SPI du Raspberry. Cette méthode sera donc utilisée principalement la première fois, pour bootloader l’ATmega. Ensuite nous pourrons utiliser uniquement la seconde méthode :
– en UART : ne permet PAS de bootloader. Cependant, n’utilise que 3 pins sur le Raspberry, et ne bloque pas de SPI. Une fois l’ATmega bootloadé, nous pourrons utiliser uniquement cette méthode pour uploader nos sketches, et même déconnecter les liaisons SPI si on ne prévoit pas de « bootloader » d’autres ATmega par la suite (uploader des sketches reste cependant possible sans problème).

Ensuite, pour communiquer entre le Raspberry Pi et l’ATmega, nous aurons l’embarras du choix et du langage :
– SPI
– UART
– I2C
– Python
– Bash
– C, …

Cette série d’articles sera découpée en plusieurs parties :

– cablage façon breadboard des différents éléments
– installation des composants logiciels nécessaires
– conception et présentation d’un circuit imprimé sur cette base, étudié pour être modulable et extensible, avec néanmoins quelques améliorations…

Rendez-vous donc dans le premier article de la série : Rapberry Pi / Atmega bridge : branchements

About Captain Stouf

Spécialiste en systèmes informatiques, Développeur matériel et logiciel, Inventeur, Maker : électronique, Systems on Chip, micro-controlleurs, Internet of Things, Modélisation / Scan / Impression 3D, Imagerie…

2 thoughts on “Rapberry Pi / Atmega bridge : présentation

  1. Tony
    05/04/2015 at 8 h 22 min

    Salut, très beau projet. Par contre, je ne comprends pas pourquoi on n’utilise pas la sortie GPIO 5v de RPi au lieu du 3.3v.
    La MC atmega328 supporte le 5V si je ne me trompe pas, il est ensuite plus facile de l’alimenter via un chargeur de téléphone. (je suis hyper novice et encore au stade des études avant mes achats)

    1. 05/04/2015 at 8 h 42 min

      Salut,
      C’est expliqué au début de l’article (2ème paragraphe).
      Le Raspi est en logique 3.3V. Si on utilise l’ATmega en 5V, sa logique sera en 5V.
      Il faudra donc effectuer une conversion des niveaux logiques pour l’ensemble des communications entre le RPI et l’ATmega, cela complique le montage.

Laisser un commentaire