Raspberry Pi und Linux - Basiswissen - Teil 1

Chez AZ-Delivery, vous trouverez, outre des projets passionnants avec nos MicroControllers, également quelques sujets intéressants avec le Raspberry Pi. Il se peut que vous ayez déjà acquis de l'expérience avec le Raspberry Pi, ci-après appelé Pi, ou que vous soyez encore complètement inexpérimenté en la matière ?! Vous avez peut-être peur parce que vous ne connaissez pas Linux et que vous ne voulez pas vous tromper ?

Cette série de blogs a pour but de tirer un trait sur le Pi et Linux, dans ce cas Raspbian, et de vous expliquer un peu plus. Il ne s'agit pas d'aller trop loin, il existe des lectures spécialisées à ce sujet, mais de poser les bases pour que vous puissiez vous familiariser avec le Pi et réaliser de petits projets en Python.

Je vous présente le Raspberry Pi, en abrégé Pi

Vous n'avez probablement pas pu vous empêcher de tenir ou de voir un Raspberry Pi, ou Pi en abrégé, comme le montre la figure 1.

Figure 1: Raspberry Pi Modèle 3B

Figure 1: Raspberry Pi Modèle 3B

Le cœur du Pi est le SoC de Broadcom avec la puce Arm. SoC est l'abréviation de System-on-a-chip et décrit la construction d'une (micro)puce qui réunit toutes les fonctions nécessaires. Le premier Pi n'était pas vraiment le plus rapide avec une fréquence d'horloge de 700MHz, car avec le Raspberry Pi 4 Mod. B, on dispose déjà d'une fréquence d'horloge de 1,5 GHz. Cependant, on pouvait et on peut toujours overclocker le Pi, ce qui se répercute sur la durée de vie du Pi. Avec 256Mo ou 512Mo de RAM au départ, à partager avec le GPU intégré sur la puce SoC, le projet était très limité en termes de mémoire. À titre de comparaison, le Raspberry Pi 4 dispose désormais de 8 Go de RAM dans sa version la plus grande ! Une (micro)carte SD est utilisée comme espace de stockage pour le système d'exploitation, bien qu'il soit également possible, depuis le Pi 3, de démarrer le système d'exploitation via une mémoire USB. Selon le modèle, 2 ou 4 ports USB sont disponibles, ainsi qu'un réseau local et, le cas échéant, un réseau sans fil. L'une des caractéristiques les plus remarquables du Pi est la présence de 40 broches GPIO, qui permettent de connecter du matériel séparé, voir figure 2.

Figure 2: La GPIO du Raspberry Pi 3b

Figure 2 : Les GPIO du Raspberry Pi 3B

Pour rester bref sur les différents composants, il convient de décrire d'autres matériels que la barre GPIO, voir la figure 3 et le tableau 1.

Figure 3: Résumé des autres matériels intéressants

Figure 3 : Résumé d'autres matériels intéressants


Composant matériel informations
SoC-Chip Selon le modèle de Pi, avec plus ou moins de GHz. Outre le CPU, le GPU est également intégré dans la puce.
RAM. En fonction du modèle et de l'exécution, la RAM différents et ont une taille différente. Le PI actuel 4 peut afficher jusqu'à 8 Go de RAM
Ports USB
Sur le Pi3B, déjà avec 2xUSB3.0 et 2xUSB 2.0
Connexion Ethernet
Sur le Pi 3 B, 300MB/s maximum car il est géré par USB2.0
Prise jack Pour le son
Port de la caméra
Pour connecter une caméra Raspberry Pi compatible
Connexion HDMI
Selon le modèle de Pi avec un ou plusieurs ports HDMI, il faut vérifier ici s'il s'agit d'un port HDMI, Midi-HDMI ou Mini-HMID
Power-In
Via USB-Mini ou USB-C, varie selon le modèle de Pi
Port d'affichage Pour connecter un écran compatible

Tableau 1 : Description du matériel

Mais pourquoi est-ce important ? Selon votre tâche, il faut un Pi différent pour réaliser le projet. Ainsi, la solution NAS openmediavault est tout juste réalisable avec un Raspberry P 3 modèle B, un Raspberry Pi 4 avec 4 Go serait mieux, ou un simple serveur web avec un vieux Raspberry Pi 2. Mon MagicMirror privé avait déjà besoin d'un Raspberry Pi 3 Model B+, car le volume des données dépasserait les capacités d'un Raspberry Pi plus ancien. Vous voyez donc qu'il est important de connaître à l'avance la configuration minimale requise pour votre projet.

La maison idéale pour le Raspberry Pi

AZ-Delivery propose actuellement, au 10.2021, le Raspberry Pi 3 modèle B. Un boîtier, une alimentation électrique ou une carte SD ne sont pas inclus dans la livraison. Laisser traîner l'électronique, dont le Pi fait partie, n'est pas une bonne idée. C'est la raison pour laquelle le Pi doit toujours être placé dans un boîtier adapté, ce qui dépend bien sûr du type de projet. En tant que vrai maker, on peut aussi simplement imprimer soi-même un boîtier, mais il existe un grand choix chez différents revendeurs. Comme je travaille beaucoup avec le Pi dans le domaine des NAS, des serveurs web, des filtres DNS ou des serveurs d'impression 3D, j'aimerais bien sûr avoir un boîtier utile et de bonne qualité pour mes Pi. Sans vouloir faire de publicité, j'utilise dans la plupart des cas des boîtiers de geekworm.com et j'installe également les modules supplémentaires correspondants. Actuellement, j'ai trois boîtiers de geekworm et un de la société DeskPi. Ce dernier a l'avantage de me permettre d'accéder à tous les GPIO, ce qui n'est pas toujours le cas avec les boîtiers de geekworm. Des modifications, sous forme d'usinages inesthétiques sur le boîtier, détruiraient l'aspect visuel. C'est pourquoi il faut toujours veiller à choisir le bon boîtier, pour le projet qui convient.

Revenons sur les GPIO

J'ai déjà évoqué les GPIO précédemment, voir figure 2. Contrairement à un PC normal, l'ordinateur monocarte dispose de 40 connecteurs, appelés GPIO, pour commander des capteurs, des écrans ou des actionneurs. Vous êtes ainsi en mesure de développer des programmes qui interagissent avec le monde extérieur. Dans les versions précédentes, le Pi disposait de 28 GPIO, ce qui limitait aussi fortement certains projets. Il est important de savoir que si vous pouvez prélever 5V sur le Pi, les GPIO ne supportent pas plus de 3,3V. Les capteurs ou actionneurs qui renvoient 5V à la sortie ont impérativement besoin d'un convertisseur intermédiaire, sinon vous détruisez les GPIO ou pire encore, le Pi. Sur le principe, vous pouvez vous représenter les GPIO de la même manière que les broches d'une carte de développement ESP32 NodeMCU Module WLAN WiFi avec CP2102. La différence est que vous ne programmez pas un microcontrôleur, mais des programmes basés sur un système d'exploitation. Selon la version du Pi, vous devez vérifier exactement quelle broche est responsable de quoi, voir figure 4.

Figure 4: occupation GPIO pour Raspberry Pi 3 et 4

Figure 4 : Affectation des GPIO pour Raspberry Pi 3 et 4, https://www.raspberrypi.com/documentation/computers/os.html#gpio-and-the-40-pin-header

Je vous présente Raspbian ou Linux

C'est ici qu'intervient un sujet qui est probablement la raison la plus fréquente pour laquelle les gens évitent le Pi. Il s'agit du système d'exploitation Raspbian, souvent utilisé, voir figure 5, qui utilise debain comme base. Le nom Raspbian est la contraction de Raspberry Pi et de debian, bien qu'il existe désormais plus que ce seul système d'exploitation.

Figure 5: logo officiel Raspbian

Figure 5 : Logo officiel de Raspbian

Debian est ce que l'on appelle une distribution Linux et le mot Linux donne justement des sueurs froides à beaucoup de gens. La raison en est qu'à ses débuts, Linux était difficile à installer et à utiliser. Cette image est et a été également forgée par le fait que de nombreux films d'action montrent des hackers avec de nombreux moniteurs et de nombreux terminaux ouverts, sur lesquels des commandes illisibles pour le "commun des mortels" sont saisies et des sorties incompréhensibles sont renvoyées. La plupart du temps, on prétendait qu'il s'agissait d'un système d'exploitation compliqué, généralement Linux. Ce n'est pas aussi extrême que Hollywood veut nous le faire croire, mais Linux n'est pas Windows, qui, au 22.09.2021, représente près de 75% du marché mondial. Linux dispose d'une interface graphique en plus du simple terminal. Ce qui est génial, c'est que l'interface graphique et le terminal peuvent être utilisés en parallèle, de la même manière que vous pouvez utiliser la ligne de commande sous Windows.

Mais pourquoi la Raspberry Pi Foundation utilise-t-elle Linux, alors qu'il semble si compliqué et qu'il est si peu utilisé dans le monde, avec une part de marché d'à peine 2,3% ? Le mot-clé est OpenSource et le fait que Linux, en tant que système d'exploitation, est disponible gratuitement, à quelques exceptions près ! Pour obtenir une licence pour Windows ou MacOS, il faut payer, ce qui n'est pas le cas pour Linux. En outre, dans le cas de Raspbian, la configuration matérielle requise est minimale et peut également être utilisée pour les puces dites "Arm". Il convient également de noter que les superordinateurs et de nombreux grands serveurs de fournisseurs renommés fonctionnent tous sous Linux. Le problème des systèmes d'exploitation les plus courants est la configuration matérielle requise, qui exige entre-temps une architecture 64 bits pour le processeur. D'autres puces, comme par exemple la puce SoC du Raspberry Pi, ne sont pas ou que partiellement supportées.

Pour les débutants, il est intéressant d'utiliser la version actuelle de Raspbian, qui contient déjà tous les programmes courants. Lors de l'installation sur la carte SD ou du téléchargement de l'image, il faut faire attention à la version choisie (Lite ou Full). La première est une Raspbian sans bureau et il manque de nombreux programmes, la seconde est quasiment le package tout-en-un pour les débutants. Pour savoir comment installer Raspbian sur votre Pi, consultez l'E-Book correspondant d'AZ-Delivery. Entre-temps, la fondation Raspberry Pi a développé un outil plus simple, le Raspberry Pi Imager, qui existe pour tous les systèmes d'exploitation courants, voir figure 6.

Figure 6: Le Raspberry Pi Imager

Figure 6 : Raspberry Pi Imager

Si, comme moi, vous utilisez la plupart du temps le Pi uniquement via SSH, l'outil propose un menu spécial via la combinaison de touches Ctrl + Shift + X, voir illustration 7, dans lequel vous pouvez déjà modifier par exemple le nom d'hôte ou activer directement le SSH.

Figure 7: modification du système d'exploitation

Figure 7 : Modification de l'OS

La Raspberry Pi Foundation a également publié une vidéo à ce sujet.

Ainsi, vous vous épargnez déjà beaucoup de travail de configuration ultérieur pendant l'installation du système d'exploitation. D'autres systèmes d'exploitation comme OctoPrint ou RetroPi peuvent également être facilement sélectionnés via le Raspberry Pi Imager. En fait, il est également possible de télécharger une image sur Internet, comme Kali-Linux pour le Raspberry Pi. Essayez-le vous-même et vous verrez les avantages.

Le système de droits dans Linux

C'est là que les choses deviennent un peu plus théoriques et qu'elles risquent de prêter à confusion au début. Linux utilise, comme MacOS ou Windows, un système de droits, le système de droits de MacOS étant le plus proche de celui de Linux ou des systèmes UNIX. Comme dans tout système d'exploitation courant, il existe des utilisateurs et des groupes, Linux faisant la distinction entre les propriétaires et les autres utilisateurs. Chaque utilisateur peut être ajouté à un ou plusieurs groupes ou se voir attribuer des droits spéciaux.

Mais à ce stade, les choses deviennent nettement plus complexes avec Linux, qui pousse la gestion des droits à l'extrême. En règle générale, l'utilisateur de base ne peut faire que ce qu'il veut dans son répertoire de travail, appelé répertoire personnel. Les données peuvent être créées, modifiées ou supprimées comme bon lui semble. Il en va autrement des répertoires personnels d'autres utilisateurs et même d'autres répertoires dans Linux. Pour pouvoir y accéder, des droits correspondants doivent être attribués. Comme nous l'avons déjà écrit, Linux fait la distinction entre propriétaire, groupe et autres utilisateurs.

En fait, chacun de ces groupes de droits mentionnés ci-dessus peuvent lire les attributs, écriture et exécution attribués. Pour les dossiers et les fichiers de ces « droits » peuvent être accordées. N'êtes-vous pas le propriétaire ou l'accès au groupe et non pas comme d'autres fichiers utilisateur ou des dossiers, alors vous voient refuser l'accès aux dossiers ou fichiers. Je ne souhaite pas ici entrer dans les détails, car ce sujet pourrait à lui seul remplir des livres. Je renvoie volontiers à Wikipedia, qui a documenté le sujet de manière très simple et claire. J'ai probablement mis en colère les partisans de Windows, car Windows dispose d'un système de droits étendu, mais pour être honnête, on n'a généralement pas besoin de plus que les droits sur les fichiers UNIX.

L'interface Raspbian et un petit projet

Voyons maintenant le bureau de plus près, voir figure 8. Insérez la carte MicroSD dans le Pi, branchez l'alimentation, l'écran, ainsi que la souris et le clavier, et attendez que le Pi démarre. Comme dans de nombreuses distributions Linux, la barre des tâches se trouve en haut de l'écran. Vous avez un menu de démarrage sur le côté gauche et sur le côté droit des informations importantes, comme l'heure, le volume, Ethernet et d'autres widgets librement configurables que vous pouvez sélectionner.

Figure 8: La surface Raspbian

Figure 8 : L'interface Raspbian

Sur la capture d'écran, vous pouvez voir que j'affiche en plus la température du processeur et l'utilisation du processeur. Cela me donne personnellement un aperçu de la charge de travail actuelle du Raspberry Pi.

Le menu de démarrage, contrairement à celui de Windows, peut aussi vous sembler étrange, voir Figure 9.

Figure 9: menu Démarrer de Raspbian

Figure 9: menu Démarrer de Raspbian

Ici, on subdivise l'objectif auquel le programme est destiné. Sous Bureau, vous trouverez par exemple LibreOffice et sous Développement les deux interfaces de développement très convoitées Geany et Thonny Python IDE. Ce dernier est un environnement de développement pour Python, ce qui signifie que Python 2 et 3 sont installés par défaut sur Raspbian. Cette interface de programmation est également très bien adaptée à la programmation du Raspberry Pi Pico. Nous verrons dans le prochain article comment déterminer exactement quels programmes sont installés et comment installer ou supprimer des programmes ou des bibliothèques.

Dans la dernière section, un écran OLED de 0,96" doit afficher des informations sur le Pi. Par exemple, si l'on ne connaît pas l'adresse IP du Pi, on pourrait utiliser un scanner réseau, mais il serait plus intéressant d'afficher ces informations sur l'écran. C'est un super projet pour se familiariser avec le système d'exploitation et le connecteur GPIO.

Tout d'abord, si ce n'est pas déjà fait, il faut activer l'interface i2c sur le Pi, voir figure 10. Pour ce faire, naviguez dans le menu de démarrage jusqu'à Paramètres, puis Configuration Raspberry Pi.

Figure 10: Activation de l'interface I2C

Figure 10 : Activer l'interface i2c

Dans l'onglet Interface, activez I2C et redémarrez le Raspberry Pi. L'interface est ensuite disponible. Ensuite, installez les bibliothèques et les outils nécessaires, voir figure 11 et code 1.

Figure 11: Installation des programmes nécessaires

Figure 11 : Installer les programmes nécessaires

sudo apt-get install python-smbus i2c-tools

Code 1 : Installation des bibliothèques nécessaires

En théorie, ces paquets devraient déjà être disponibles, mais il vaut mieux les vérifier encore une fois, car selon l'ancienneté de Raspbian, les paquets peuvent manquer ou nécessiter une mise à jour. Pour que l'écran OLED de 0,96" puisse être piloté, il faut encore une bibliothèque de programmation correspondante et des exemples. Pour les exemples de scripts, clonez un dépôt adafruit correspondant via le terminal Git, voir code 2.

git clone https://github.com/adafruit/Adafruit_CircuitPython_SSD1306.git

Code 2 : Cloner le référentiel Git nécessaire

Ensuite, exécutez le code 3 pour télécharger et installer la bibliothèque adafruit-circuitpython-ssd1306 avec toutes les dépendances.

sudo pip3 install adafruit-circuitpython-ssd1306

Code 3 : Installer la bibliothèque Python nécessaire.

Il ne reste plus qu'à connecter l'écran OLED au Pi, ce qui est encore gérable avec quatre câbles, voir figure 12. Veillez à ce que l'écran nécessite 3,3V et que vous connectiez correctement les broches pour SDA et SCL sur le Raspberry Pi. Là encore, un coup d'œil aux spécifications vous aidera si vous n'êtes pas sûr.

Figure 12: Connecter l'écran à la PI

Figure 12 : Connecter l'écran au Pi

Pour tester si l'affichage et la bibliothèque fonctionnent maintenant, allez dans le répertoire "examples" du dépôt cloné précédemment Adafruit_CircuitPython_SSD1306 et exécutez l'exemple shapes.py. Pour ce faire, il est plus facile d'utiliser le code 4.

cd Adafruit_CircuitPython_SSD1306
cd examples
python3 ssd1306_pillow_demo.py

Code 4 : Utiliser l'exemple de code ssd1306_pillow_demo.py

Vous devriez maintenant lire à l'écran un message Bonjour le monde, voir figure 13.

Figure 13: Bonjour tout le monde de la demoscript

Figure 13 : Hello world du script de démonstration

Maintenant que les préparatifs sont terminés, j'aimerais utiliser une version modifiée de l'exemple "stats.py" pour mon affichage. Modifié dans le sens où, d'une part, j'utilise un disque dur de 750 Go comme support de démarrage pour mon Pi et, d'autre part, je souhaite obtenir d'autres informations, comme la température du processeur et les unités de RAM et de mémoire correctement affichées.

Pour ce faire, ouvrez le gestionnaire de fichiers et créez un nouveau dossier appelé RaspyStat, voir Figure 14.

Figure 14: Créer un nouveau dossier RaspyStat

Figure 14 : Créer un nouveau dossier RaspyStat

Dans ce nouveau dossier, créez maintenant un nouveau fichier nommé stats.py, voir Figure 15.

Figure 15: Créer un nouveau fichier stats.py

Figure 15 : Créer un nouveau fichier stats.py

Ouvrez ce fichier, avec par exemple Thonny Python IDE et insérez le code source modifié du code 5 :

 # SPDX-FileCopyrightText: 2017 Tony DiCola for Adafruit Industries
 # SPDX-FileCopyrightText: 2017 James DeVito for Adafruit Industries
 # SPDX-License-Identifier: MIT
 
 # This example is for use on (Linux) computers that are using CPython with
 # Adafruit Blinka to support CircuitPython libraries. CircuitPython does
 # not support PIL/pillow (python imaging library)!
 
 # Mod by: Joern Weise
 # Mod date: 20.10.2021
 # Some modifications to show wanted information on display
 
 import time
 import subprocess
 
 from board import SCLSDA
 import busio
 from PIL import ImageImageDrawImageFont
 import adafruit_ssd1306
 
 
 # Create the I2C interface.
 i2c = busio.I2C(SCLSDA)
 
 # Create the SSD1306 OLED class.
 # The first two parameters are the pixel width and pixel height. Change these
 # to the right size for your display!
 disp = adafruit_ssd1306.SSD1306_I2C(12832i2c)
 
 # Clear display.
 disp.fill(0)
 disp.show()
 
 # Create blank image for drawing.
 # Make sure to create image with mode '1' for 1-bit color.
 width = disp.width
 height = disp.height
 image = Image.new("1", (widthheight))
 
 # Get drawing object to draw on image.
 draw = ImageDraw.Draw(image)
 
 # Draw a black filled box to clear the image.
 draw.rectangle((00widthheight), outline=0fill=0)
 
 # Draw some shapes.
 # First define some constants to allow easy resizing of shapes.
 padding = -2
 top = padding
 bottom = height - padding
 # Move left to right keeping track of the current x position for drawing shapes.
 x = 0
 
 
 # Load default font.
 font = ImageFont.load_default()
 
 # Alternatively load a TTF font. Make sure the .ttf font file is in the
 # same directory as the python script!
 # Some other nice fonts to try: http://www.dafont.com/bitmap.php
 # font = ImageFont.truetype('/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf', 9)
 
 while True:
 
     # Draw a black filled box to clear the image.
     draw.rectangle((0,0,width,height), outline=0fill=0)
 
     # Shell scripts for system monitoring from here : https://unix.stackexchange.com/questions/119126/command-to-display-memory-usage-disk-usage-and-cpu-load
     cmd = "hostname -I | cut -d\' \' -f1"
 # cmd = "hostname -I |cut -f 2 -d ' '"
     IP = subprocess.check_output(cmdshell = True )
 # cmd = "top -bn1 | grep load | awk '{printf \"CPU: %.2f\", $(NF-2)}'"
 # CPU = subprocess.check_output(cmd, shell = True )
     cmd = "free -m -h| awk 'NR==2{printf \"Mem: %s / %s\", $3,$2}'"
     MemUsage = subprocess.check_output(cmdshell = True )
     MemUsage = str(MemUsage,'utf-8')
     MemUsage = MemUsage.replace("Mi","MB")
     MemUsage = MemUsage.replace("Gi","GB")
     cmd = "df -h | awk '$NF==\"/\"{printf \"Disk: %d/%dGB %s\", $3,$2,$5}'"
     Disk = subprocess.check_output(cmdshell = True )
     cmd = "vcgencmd measure_temp |cut -f 2 -d '='"
     temp = subprocess.check_output(cmdshell = True )
 
     # Write two lines of text.
 
     draw.text((xtop + 0),       "IP: " + str(IP,'utf-8'),  font=fontfill=255)
     draw.text((xtop + 8),     "Temp: " + str(temp,'utf-8'), font=fontfill=255)
     draw.text((xtop + 16),    MemUsage,  font=fontfill=255)
     draw.text((xtop + 25),    str(Disk,'utf-8'),  font=fontfill=255)
 
     # Display image.
     disp.image(image)
     disp.show()
     time.sleep(2)
Code 5 : Code modifié ssd1306_stats.py


Après l'exécution via le bouton de démarrage surligné en vert, l'écran devrait ressembler à la figure 16.

Figure 16: Affichage d'état sur l'écran OLED

Figure 16 : Affichage de l'état sur l'écran OLED

Comme la fonte ne me convenait pas, j'ai téléchargé le fichier PixelOperator.ttf via http://www.dafont.com et l'ai placé dans le même répertoire que mon code source. Dans la foulée, j'ai apporté les modifications suivantes au code, voir code 6, sinon le texte ne pouvait pas être lu.

  # SPDX-FileCopyrightText: 2017 Tony DiCola for Adafruit Industries
 # SPDX-FileCopyrightText: 2017 James DeVito for Adafruit Industries
 # SPDX-License-Identifier: MIT
 
 # This example is for use on (Linux) computers that are using CPython with
 # Adafruit Blinka to support CircuitPython libraries. CircuitPython does
 # not support PIL/pillow (python imaging library)!
 
 
 # Mod by: Joern Weise
 # Mod date: 20.10.2021
 # Some modifications to show wanted information on display
 # Use font ‚PixelOperator.ttf‘ for better reading
 
 import time
 import subprocess
 
 from board import SCLSDA
 import busio
 from PIL import ImageImageDrawImageFont
 import adafruit_ssd1306
 
 
 # Create the I2C interface.
 i2c = busio.I2C(SCLSDA)
 
 # Create the SSD1306 OLED class.
 # The first two parameters are the pixel width and pixel height. Change these
 # to the right size for your display!
 disp = adafruit_ssd1306.SSD1306_I2C(12864i2c)
 
 # Clear display.
 disp.fill(0)
 disp.show()
 
 # Create blank image for drawing.
 # Make sure to create image with mode '1' for 1-bit color.
 width = disp.width
 height = disp.height
 image = Image.new("1", (widthheight))
 
 # Get drawing object to draw on image.
 draw = ImageDraw.Draw(image)
 
 # Draw a black filled box to clear the image.
 draw.rectangle((00widthheight), outline=0fill=0)
 
 # Draw some shapes.
 # First define some constants to allow easy resizing of shapes.
 padding = -2
 top = padding
 bottom = height - padding
 # Move left to right keeping track of the current x position for drawing shapes.
 x = 0
 
 
 # Load default font.
 # font = ImageFont.load_default()
 
 # Alternatively load a TTF font. Make sure the .ttf font file is in the
 # same directory as the python script!
 # Some other nice fonts to try: http://www.dafont.com/bitmap.php
 font = ImageFont.truetype('PixelOperator.ttf',16)
 
 while True:
 
     # Draw a black filled box to clear the image.
     draw.rectangle((0,0,width,height), outline=0fill=0)
 
     # Shell scripts for system monitoring from here : https://unix.stackexchange.com/questions/119126/command-to-display-memory-usage-disk-usage-and-cpu-load
     cmd = "hostname -I | cut -d\' \' -f1"
     # cmd = "hostname -I |cut -f 2 -d ' '"
     IP = subprocess.check_output(cmdshell = True )
 # cmd = "top -bn1 | grep load | awk '{printf \"CPU: %.2f\", $(NF-2)}'"
 # CPU = subprocess.check_output(cmd, shell = True )
     cmd = "free -m -h| awk 'NR==2{printf \"Mem: %s / %s\", $3,$2}'"
     MemUsage = subprocess.check_output(cmdshell = True )
     MemUsage = str(MemUsage,'utf-8')
     MemUsage = MemUsage.replace("Mi","MB")
     MemUsage = MemUsage.replace("Gi","GB")
     cmd = "df -h | awk '$NF==\"/\"{printf \"Disk: %d/%dGB %s\", $3,$2,$5}'"
     Disk = subprocess.check_output(cmdshell = True )
     cmd = "vcgencmd measure_temp |cut -f 2 -d '='"
     temp = subprocess.check_output(cmdshell = True )
 
     # Write two lines of text.
 
     draw.text((xtop + 2),       "IP: " + str(IP,'utf-8'),  font=fontfill=255)
     draw.text((xtop + 18),     "Temp: " + str(temp,'utf-8'), font=fontfill=255)
     draw.text((xtop + 34),    MemUsage,  font=fontfill=255)
     draw.text((xtop + 50),    str(Disk,'utf-8'),  font=fontfill=255)
 
     # Display image.
     disp.image(image)
     disp.show()
     time.sleep(2)
 
 
Code 6 : Script stat modifié avec police de caractères

Figure 17: Nouvelle police dans le répertoire de l'écriture

Figure 17 : Nouvelle police dans le répertoire du script

Enfin, ce script doit être exécuté dès que le Pi est allumé et que Raspbian est démarré. Pour que cela marche, j'ouvre un terminal et je saisis le code 7.

sudo nano /etc/rc.local

Code 7 : Ouvrir rc.local

Ensuite, j'ajoute le code 8 à la fin, mais avant exit 0, et je ferme l'éditeur en utilisant le raccourci clavier Ctrl + X.

cd /home/pi/RaspyStat
sudo python3 stats.py &

Code 8 : Exécuter stats.py au démarrage

Si l'on vous demande si vous souhaitez "Enregistrer le tampon modifié", confirmez avec J ou Y, selon le réglage de la langue, voir figure 18.

Figure 18: Réglage rc.local Enregistrer

Figure 18 : Enregistrer la personnalisation rc.local

Pour tester si le script fonctionne, redémarrez le Raspberry Pi via le menu de démarrage. N'oubliez pas que les chemins d'accès peuvent différer de mes indications, adaptez donc les commandes en fonction de leur chemin d'accès et de leur nom de fichier. Vous pouvez constater que tout fonctionne correctement lorsque votre écran ressemble à la figure 19.

Figure 19: système Infos sur l'écran après le redémarrage

Figure 19 : Informations système sur l'écran après le redémarrage

Résumé

Vous avez ainsi appris beaucoup de choses avec moi sur le Raspberry Pi. Vous connaissez maintenant le contexte du Raspberry Pi, quel système d'exploitation est normalement utilisé et comment celui-ci est placé sur la carte MicroSD. En outre, vous connaissez maintenant un peu l'interface graphique de Raspbian et vous avez réalisé un projet simple à l'aide de Python3. Jusqu'ici, il y a eu beaucoup d'input et la courbe d'apprentissage a probablement été très raide. Comme pour la programmation de microcontrôleurs, il est nécessaire de se familiariser avec le sujet par des lectures supplémentaires ou des articles sur Internet. Dans la prochaine partie, je vous expliquerai encore une fois comment le système (de fichiers) est structuré, ce qu'il en est du mot "sudo", comment vous pouvez utiliser la ligne de commande avec des commandes importantes et comment vous pouvez sécuriser votre Raspberry Pi dans une certaine mesure. En même temps, j'aimerais conclure en présentant des projets passionnants que vous pourriez réaliser avec les instructions correspondantes et le temps nécessaire.

Vous trouverez les codes sources et d'autres projets pour AZ-Delivery de ma part, sous https://github.com/M3taKn1ght/Blog-Repo


Projets pour les débutantsTarte aux framboises

Laisser un commentaire

Tous les commentaires sont modérés avant d'être publiés

Messages de blogs recommandés

  1. Installez maintenant ESP32 via l'administrateur de la carte
  2. Lüftersteuerung Raspberry Pi
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1
  4. ESP32 - das Multitalent
  5. OTA-Over the Air-ESP Programmation par WiFi