Raspberry Pi

Configuration SD et installation d'un Raspberry Pi

Introduction

Le Raspberry Pi est un nano-ordinateur monocarte à processeur ARM très adapté au "digital making". D'un coût très accessible à l'origine (~40 €) et supporté par une communauté Open-Source et de Makers, de nombreux projets ont vu le jour intégrant le Raspi. Par exemple, l'écran tactile de l'AMR Sherpa est piloté par un Raspi. À la fin de 2019, le total des ventes du Raspi atteint 30 millions d'unités. Les crises du Covid et des Semi-Conducteurs provoquent cependant une augmentation spectaculaire des tarifs (x3 à x4) ou alors des délais de livraison à 6 mois pour des tarifs "classiques" ...

Avis perso :

Préparation de la carte SD

Pour créer une carte SD bootable sur le Raspberry pi, il faut dans un premier temps formater la carte. Trois cas de figure peuvent se présenter

Formatage avancé de la carte SD

Avec l'outil Gestion de l'Ordinateur, dans Stockage - Gestion des disques, voit apparaître la partition de la carte SD (256 Mo en Fat 32 lisible par Windows) et (29,47 Go en EXT4, pas visible par Windows). Il faudra dans un premier temps supprimer ces partitions, créer un nouveau volume, et le formater.

Attention

Attention, si vous supprimez un volume/partition sur votre disque dur système, vous êtes bon pour réinstaller votre PC! Vérifier 2x avant de vous lancer !

Attention

Avant d'appuyer sur OUI, on vérifie !

Maintenant que les anciennes partitions de la carte SD sont supprimées, on peut créer un nouveau volume avec un clic droit, créer un nouveau volume :

Pour le formatage, choisir FAT32, pour le nom de Volume, j'ai choisi Raspi.

On vérifie que le formatage et le nom de volume est correctement associé (on est OK pour l'étape suivante)

Installation de l'OS

On télécharge sur le site Raspberry Pi Imager le logiciel Raspberry Pi Imager

Dans le choix de l'OS, j'ai choisi la version avec Desktop en 32 Bits. Il faut savoir que le Raspberry Pi 4 est compatible 64 Bits, mais certain logiciels comme CodeSys que nous utiliserons ne le sont pas à ce jour.

Pour le Choose Storage, vérifier qu'il s'agisse bien de la carte SD! Si vous formatez votre clé USB, vous perdrez les données. Cliquer sur la petite roue crantée pour parémétrer la configuration de l'OS.

On vérifie qu'on est bien sur la carte SD et l'on fait Write

Serveur DHCP et SSH

On met la carte SD dans le Raspberry Pi éteint, ensuite on l'alimente avec le câble USB-C. Le Raspberry Pi se connecte de base sur un serveur DHCP pour récupérer une adresse IP. L'idéal est de faire ce premier démarrage sur votre BOX. Il suffit alors de se connecter sur la box pour voir l'adresse IP qui a été affectée au port Ethernet (ici 192.168.1.15)

Il existe cependant deux autres solutions pour se passer de Box pour affecter une adresse IP au port Ethernet

Pour avoir accès au terminal Linux du Raspi depuis un PC portable et sans avoir à brancher un écran/clavier/souris, le plus rapide est de passer par une communication SSH. Un client SSH comme Putty est installé sur les postes de l'IUT:

On accepte la clé de cryptage (Accept) et l'on arrive sur le terminal Linux du Raspberry Pi depuis son PC portable. L'inconvénient, c'est qu'il ne s'agit d'une interface texte, moins conviviale qu'une interface graphique. Nous verrons dans un autre article comment se connecter sur l'interface graphique à distance avec Remote Desktop ou VNC

On peut lancer la commande de mise à jour des paquets de la distribution linux en faisant : sudo apt update

L'upgrade de la distribution se fait en faisant : sudo apt upgrade (Cliquer sur Y pour valider l'upgrade)

Votre Raspberry Pi est maintenant à jour, nous pouvons y déployer le Remote Desktop et le VNC pour simplifier sa programmation.

Bureau à distance / Remote Desktop

Un des outils de base installé sur Windows est le bureau à distance (Remote Desktop).

Installation d'XRDP sur le Raspi

Pour que le bureau à distance du Raspberry Pi soit disponible depuis Windows, il est nécessaire d'installer le paquet xrdp. Depuis un terminal sur le Raspberry Pi ou depuis une liaison SSH faire sudo apt install xrdp (Y pour valider l'installation)

et depuis la version BullsEye d'avril 2022 du Raspberry Pi, cela ne fonctionne plus correctement avec le user pi qui possède les droits admin sur la carte.

Bug xrdp

C'est un bug sur la distribution BullsEye et le contournement trouvé et de retirer certains groupes au user pi.

Classiquement, le user pi appartient aux groupes suivants :

Il faut retirer les groupes render et video du user pi pour que le bureau à distance fonctionne. Cela a pour conséquence d'introduire des effets de bords sur certains logiciels qui ne vont peut être plus fonctionner. Pour développer des scripts python, ou faire du CodeSys, cela n'a pas d'influence. Pour retirer les deux groupes :

   sudo gpasswd -d video pi
   sudo gpasswd -d render pi

Remote Desktop sur Windows

Nous pouvons maintenant utiliser l'outil de connexion de bureau à distance :

Et l'on accède à distance au bureau du Raspberry Pi:

Contrairement à la liaison SSH, on peut profiter de l'ergonomie offerte par l'interface graphique du Raspberry Pi. Les puristes se contenteront de la liaison SSH :wink:

VNC sur Raspberry Pi

Activation du serveur VNC sur le Raspi

Depuis un terminal ou une liaison SSH:

Il faut dans un premier activer le serveur VNC sur le Raspberry Pi

On peut régler la résolution du serveur VNC dans Display Option -> Set resolution for headless use

Lorsque l'on valide les modifications, un reboot du Raspi se fait automatiquement.

Client VNC Windows

Le client VNC le plus facile à mettre en oeuvre est VNC Viewer Client RealVNC VNC Viewer

On place l'adresse IP du Raspberry PI et l'on appuie sur Entrée. (Ne pas cliquer sur Ouvrir une session)

On renseigne :

On arrive sur le bureau, il faut à nouveau se loger avec le bon mdp (3.14)

Conclusion

Dans le développement en embarqué, il y a l'école :

Pour les bureaux distants :

GPIO & Python sur Pi 4

GPIO & Python sur Pi 4

GPIO signifie General Purpose Input Output. Les broches GPIO du Raspberry Pi peuvent se configurer soit en entrée, soit en sortie. Certaines broches sont associées à des fonctions de type PWM, I²C, SPI, Serial, 1 wire, etc. Comparé à un microcontrôleur MicroChip, l'utilisateur ne rentrera pas dans les détails de configuration de registre bas-niveau (TRIS, LAT, PORT...) le driver s'occupe de cela. Le programmeur pourra se concentrer sur l'applicatif avec des fonctions de haut niveau pour piloter les GPIO.

Attention

Les GPIO du Raspberry Pi sont compatibles avec des niveaux de tension 0-3.3V. Appliquer du 5V sur ces GPIO va les détruire. N'oubliez pas que le prix des Raspberry ont augmenté de manière importante depuis 2021 et que les délais de livraison sont de 6 mois.

Ci-dessous, une image plus détaillée des fonctions des broches du Raspberry Pi4

Dans un premier temps, nous allons configurer une des GPIO en Output pour faire clignoter une Led. Pour brancher la Led, il nous faut le signal de la GPIO:

Validation GPIO avec Raspi-Config

Il est nécessaire que les sorties GPIO soit activées au niveau de la configuration du Raspberry Pi. Depuis un terminal ou une liaison SSH, lancer la commande :

sudo raspi-config

Dans Interface Options -> Activer I8 Remote GPIO

Programmation depuis VNC

On peut utiliser Geany comme éditeur de texte pour écrire le script Python.

Ci-dessous, un exemple de code pour faire clignoter une Led branchée sur GPIO5:

#!/usr/bin/env python3
# -*- coding:utf-8 -*-

import RPi.GPIO as GPIO
from time import sleep

GPIO.setmode(GPIO.BCM)
led = 5
GPIO.setup(led,GPIO.OUT)    

print('It BLINKs')
print('Ctrl+C to quit')

try:
    while True:
        GPIO.output(led,1)  # envoie 3.3V au port
        sleep(1)
        GPIO.output(led,0)  # envoie 0V au port
        sleep(1)
except KeyboardInterrupt:
    print('End of')
except Exception as e:
    print('Exception occured' + str(e))
finally:
    GPIO.cleanup()          # init des ports GPIO
    

Pour rendre le script python exécutable, on remarque sur les deux premières lignes

Un script Python n'est pas un fichier compilé, le SHA-BANG précise l'interpréteur (python3) qui va permettre d'exécuter le script.

Pour rendre le script exécutable, on utilise la commande:

chmod + x script.py

Ensuite, on peut exécuter le script en faisant ./script.py

./script.py

Limites de la lib RPI.GPIO

La librairie RPI.GPIO est simple à utiliser et permet rapidement de piloter une sortie TOR ou de lire l'état d'une entrée TOR, par contre, les contraintes temporelles ne sont pas maîtrisées, càd par exemple, lorsque le code met la sortie à 1, l'action réelle de mise à 1 peut prendre un temps variable non maîtrisé.