Avant de mettre sous tension le Raspberry PI, vérifiez que le Grove PI est correctement connecté au port GPIO.
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
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.
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.
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