Raspberry Pi / ATmega bridge : installation

Dans l’article précédent, nous avons cablé un ATmega directement aux GPIO du Raspberry Pi. Nous allons maintenant installer la partie logicielle nécessaire pour programmer le micro-contrôleur.
Pour rappel, notre ATmega328P sera ‘configuré’ pour une alimentation en 3.3V, sur son oscillateur interne à 8MHz, et une vitesse d’upload sur l’UART à 57600 baud.

Possibilité 1 – Script d’installation

Il y a pas mal d’étapes, j’ai mis tout cela sous forme de script sur GitHub. Voici donc la procédure (très) simplifiée :

cd /tmp
git clone https://github.com/CaptainStouf/raspberry_isp.git
cd raspberry_isp/
sudo chmod +x arduino_installer.sh
sudo ./arduino_installer.sh

Après un temps plus ou moins long (selon le nombre de mises à jour à faire), le script s’achève et vous pouvez rebooter pour activer le tout. Vous pourrez alors passer à l’article suivant : initialisation et programmation en SPI.

Possibilité 2 – Installation manuelle

Mise à jour du Raspberry

sudo apt-get -y update
sudo apt-get -y dist-upgrade

Installation de l’IDE Arduino classique

sudo apt-get -y install arduino

Nous récupérons et copions les deux fichiers de définitions Arduino, qui contiennent les informations sur notre programmeur et notre bootloader spéciaux. Vous devrez ajuster la définition du bootloader dans le fichier boards.txt si vous utilisez un ATmega en 5V et/ou un résonateur externe (comme l’Arduino Uno). Même chose si vous utilisez un autre modèle d’ATmega (ATmega8-16 par exemple).

wget https://raw.githubusercontent.com/CaptainStouf/raspberry_isp/master/boards.txt
wget https://raw.githubusercontent.com/CaptainStouf/raspberry_isp/master/programmers.txt
sudo cp boards.txt /usr/share/arduino/hardware/arduino 
sudo cp programmers.txt /usr/share/arduino/hardware/arduino

Installation de avrdude spécial R-Pi, utilisé dans le projet Gertboard (avrdude est le composant de l’IDE Arduino qui permet d’uploader des sketches dans l’ATmega)

cd /tmp
wget http://project-downloads.drogon.net/gertboard/avrdude_5.10-4_armhf.deb
sudo dpkg -i avrdude_5.10-4_armhf.deb
sudo chmod 4755 /usr/bin/avrdude

Nous installons le petit hack qui permet, lors d’un upload de sketch en UART, de forcer un reset de l’ATmega via un GPIO du Raspberry.
Il est possible de modifier le GPIO utilisé en éditant le fichier « autoreset ».

wget https://github.com/CaptainStouf/avrdude-rpi/archive/master.zip
sudo unzip master.zip
cd /tmp/avrdude-rpi-master/
sudo cp autoreset /usr/bin
sudo cp avrdude-autoreset /usr/bin
sudo mv /usr/bin/avrdude /usr/bin/avrdude-original
sudo ln -s /usr/bin/avrdude-autoreset /usr/bin/avrdude
sudo chmod 755 /usr/bin/avrdude-autoreset
sudo chmod 755 /usr/bin/autoreset

Nous avons besoin du port série du Rapberry Pi, mais par défaut dans Raspbian, il est occupé par une console. Nous allons donc désactiver cette console pour avoir accès au port série :

sudo nano /etc/inittab

Recherchez (CTRL+w) et commentez (rajoutez un #) la ligne suivante :
T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
Sauvegardez (CTRL+o) et quittez (CTRL+x)

Quand le Raspi démarre, il envoie toutes ses infos de démarrage sur le port série. Nous devons donc également désactiver cette fonctionnalité.

sudo nano /boot/cmdline.txt

Le contenu du fichier devrait ressembler à :
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
Supprimmez toutes les références à ttyAMA0 (c’est le nom du port série). Le fichier devrait maintenant ressembler à ceci :
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

Nous allons enfin créer deux ports série virtuels, ttyS8 et ttyS9, qui seront des liens dynamiques vers les ports physiques, afin que l’IDE Arduino puisse les utiliser.

sudo echo 'KERNEL=="ttyAMA0", SYMLINK+="ttyS8",GROUP="dialout",MODE:=0666' >> /etc/udev/rules.d/99-tty.rules
sudo echo 'KERNEL=="ttyACM0", SYMLINK+="ttyS9",GROUP="dialout",MODE:=0666' >> /etc/udev/rules.d/99-tty.rules

Il n’y a plus qu’à rebooter pour activer le tout.

La suite logicielle (de base) permettant d’exploiter notre ATmega est prête. Ouf ! Cependant, notre ATmega n’est pas encore prêt à communiquer avec le Raspberry Pi.

Dans l’article suivant, nous verrons donc comment initialiser et utiliser notre ATmega, en SPI…

A propos 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...

9 réflexions au sujet de « Raspberry Pi / ATmega bridge : installation »

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.