Le Hat Grove PI

Avant de mettre sous tension le Raspberry PI, vérifiez que le Grove PI est correctement connecté au port GPIO.

Installation des pilotes sur la carte SD

Solution officielle

Remarque : Cette solution fonctionnait jusqu'en mai 2023 avec la version 10 de Raspberry PI OS (Buster).

Via la série de commandes suivante, on va installer les pilotes du Hat Grove PI sur la carte SD.

sudo apt-get --allow-releaseinfo-change update
cd ~
curl -kL dexterindustries.com/update_grovepi | bash -s -- --bypass-gui-installation
sudo reboot
	

Via la première commande, on autorise les changements d'état (de "stable" vers "oldstable" voir "oldoldstable") du système en fonction du changement d'état des dépots utilisés.

Via la seconde commande, on se positionne sur le home directory de l'utilisateur au cas où d'autres commandes auraient changer le répertoire courant.

Via la troisième commande, on télécharge le script bash de mise à jour et on l'exécute.

Remarque : on trouvera dès lors des exemples d'utilisation dans le répertoire "~/Dexter/GrovePi"

Enfin, via la quatrième commande, on redémarre le système d'exploitation pour prendre en compte les nouveaux drivers installés.

Remarque : Actuellement une erreur interrompt l'éxécution de la troisième commande. La bibliothèque Grove n'est donc pas installée pour python 3 et il est nécessaire d'installer une bibliothèque manquante pour que cela puisse fonctionner pour python 2 :

pip install python-periphery

	

Version alternative

Cette solution fonctionne pour l'utilisation de python 3 sur les version 10 (Buster) et version 11 (Bullseye) de Raspberry PI OS.

L'installation se fait via le script suivant :

#!/bin/bash 
sudo apt-get update
if grep -q ^10\. /etc/debian_version
then 
sudo apt-get install -y --no-install-recommends git \
	python3 python3-dev python3-setuptools python3-pip \
	python3-smbus python3-serial python3-rpi.gpio \
	python3-numpy python3-scipy swig libffi-dev \
	libncurses5 i2c-tools
sudo pip3 install python-periphery
elif grep -q ^11\. /etc/debian_version
then 
sudo apt-get install -y --no-install-recommends git \
	python3 python3-dev python3-setuptools python3-pip \
	python3-smbus python3-serial python3-rpi.gpio \
	python3-numpy python3-scipy swig libffi-dev \
	libncurses5 i2c-tools
sudo pip3 install python-periphery
else
exit 0
fi
mkdir Dexter
cd Dexter
sudo apt-get install -y --no-install-recommends build-essential \
	cmake flex bison libelf-dev libusb-dev libhidapi-dev libftdi1-dev \
	libreadline-dev libserialport-dev
git clone https://github.com/avrdudes/avrdude.git
cd avrdude
./build.sh
sudo cmake --build build_linux --target install
sudo sh -c "cat >>/usr/local/etc/avrdude.conf" <<EOF

programmer
id    = "gpio";
desc  = "Use the Linux sysfs interface to bitbang GPIO lines";
type  = "linuxgpio";
prog_modes             = PM_ISP;
connection_type        = linuxgpio;
reset = 8;
sck   = 11;
sdo  = 10;
sdi  = 9;
;

EOF
cd ..
git clone --recurse-submodules https://github.com/WiringPi/WiringPi-Python.git
cd WiringPi-Python
sudo python3 setup.py install
cd ..
git clone https://github.com/DexterInd/RFR_Tools.git
cd RFR_Tools/miscellaneous
cat <<EOF >setup.py
#!/usr/bin/env python
#
'''
## License
# https://www.dexterindustries.com
#
# Copyright (c) 2020 Dexter Industries
# Released under the MIT license (http://choosealicense.com/licenses/mit/).
# For more information see https://github.com/DexterInd/DI_Sensors/blob/master/LICENSE.md
'''

import setuptools
setuptools.setup(
        name="Dexter_AutoDetection_and_I2C_Mutex",
        version = "1.3.2",
        description="Dexter Industries Robot Autodetection and I2C Mutex Security",
        author="Dexter Industries",
        url="http://www.dexterindustries.com/GoPiGo/",
        py_modules=['auto_detect_robot', 'auto_detect_rpi', 'I2C_mutex', 'di_i2c', 'di_mutex'],
        install_requires=[],
)

EOF
sudo python3 setup.py install
cd ../..
git clone --branch master --single-branch https://github.com/DexterInd/GrovePi.git
cd GrovePi/Software/Python
cat <<EOF >requirements.txt

EOF
sudo python3 setup.py install
cd ../../..
cd ..
if i2cdetect -y 1
then
python3 Dexter/GrovePi/Software/Python/grove_firmware_version_check.py
else
if ! grep -q ^'dtparam=i2c_arm=on' /boot/config.txt
then
sudo raspi-config nonint do_i2c 0
fi
echo
echo 'reboot the Raspberry PI with the command "sudo reboot"'
echo
fi
	

Après téléchargement du script sur votre machine, il faut le transférer par scp (ou winscp) sur le raspberry en y mettant le droit d'exécution et l'exécuter via les commandes suivantes :

chmod +x install_grove_python3.sh
./install_grove_python3.sh
	

Après avoir activé l'utilisation des périphériques I2C sur raspberry PI, il vous demandera sans doute de redémarrer l'OS via sudo reboot.

Reset du Grove PI

A chaque fois que la led rouge du Grove PI s'allume, cela indique qu'il est en erreur et il convient dans un premier temps de réinitialiser le Grove PI par les commandes suivantes à exécuter en administrateur (root) en passant avant la commande sudo su :

avrdude -c gpio -p m328p
echo "8" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio8/direction
echo "1" > /sys/class/gpio/gpio8/value
echo "8" > /sys/class/gpio/unexport
	

Remarque : On sort du mode adminstrateur via la commande "exit" ou via la combinaison de touches CTRL et D.

Si cela ne suffit pas pour remettre en état le Grove PI, prévenir l'enseignant qui pourra vous demander de mettre à jour le Firmware du Grove PI via les six commandes suivantes à exécuter en administrateur (root) en passant avant la commande sudo su (si ce n'est pas déjà fait) :

cd ~/Dexter/GrovePi/Firmware
sudo ./firmware_update.sh
echo "8" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio8/direction
echo "1" > /sys/class/gpio/gpio8/value
echo "8" > /sys/class/gpio/unexport
	

Via la première commande, on change de répertoire courant pour celui contenant l'utilitaire de mise à jour du firmware.

Via la seconde commande, on exécute le script en élevant le niveau de privilège.

On peut ensuite remettre le répertoire courant sur le home directory via la commande cd ~ si on le souhaite.

Codage en python

Avant de commencer à écrire des programmes en python, pensez à créer un fichier .nanorc dans le home directory. Cela se fait via la commande suivante :

nano ~/.nanorc
	

Et comme vous l'avez déjà fait lors de la séance de TP sur le codage Python, vous y recopiez alors les lignes suivantes :

set autoindent
set tabstospaces
set tabsize 4