Programmes à démarrage automatique sur le Raspberry Pi

Programmes a demarrage automatique sur le Raspberry Pi.pngv1541412148
Programmes a demarrage automatique sur le Raspberry Pi.pngv1541412148

Il existe plusieurs façons de démarrer automatiquement des programmes sur le Raspberry Pi au démarrage ou lorsque vous vous connectez. Il y a entre autres «cron», «init», Gnome Scheduler. Cependant, la dernière version de Raspbian en inclut une autre, appelée «systemd».

systemd

«Systemd» est en fait une suite d’applications utilisées pour gérer le système d’exploitation. La raison pour laquelle j’aime cela est que vous pouvez configurer un «service» (votre programme) que systemd gérera automatiquement pour vous. Ainsi, si, par exemple, votre programme plante, systemd peut le redémarrer. Cela est particulièrement utile si votre Raspberry Pi est utilisé pour surveiller quelque chose ou enregistrer les mesures qu’il prend et que vous ne voulez rien manquer, ou si vous utilisez un robot basé sur Raspberry Pi dans une compétition et que le plantage du programme de contrôle signifierait la perte points!

Installer

Dans cet exemple, nous allons exécuter un script python à chaque démarrage de votre Raspberry Pi. Ce script est simplement utilisé pour contrôler un robot qui n’a pas d’entrée d’écran ou de clavier, il est donc essentiel d’avoir le programme de contrôle démarrant lorsque le Raspberry Pi démarre. J’ai mis le script dans le répertoire personnel des utilisateurs «pi»:

/home/pi/DriveRobot.py

systemd utilise des fichiers de configuration, appelés fichiers ‘unit’, pour lui dire quoi faire. Créons-en un pour notre robot. Ouvrez une fenêtre de terminal et saisissez ce qui suit:

sudo nano /lib/systemd/system/driverobot.service

Tapez maintenant ceci:

[Unit]
Description=DriveRobot Service
After=multi-user.target

[Service]
Type = inactif

User=pi
ExecStart=/usr/bin/python3 /home/pi/DriveRobot.py

Restart=always
RestartSec=0

[Install]
WantedBy=multi-user.target

Ce fichier d’unité comprend trois sections:

  • le [Unit] La section contient deux valeurs:
    • Le nom du service (‘Description’)
    • Au démarrage, le service doit être démarré (‘After’). Dans ce cas, il sera exécuté une fois le processus systemd multi-utilisateurs terminé. c’est-à-dire au stade où les comptes d’utilisateurs sont disponibles pour le système. C’est avant que le Raspbian Desktop ne soit chargé, donc si vous avez votre Raspberry Pi démarrant en mode Desktop et que vous voulez que votre programme affiche une interface utilisateur sur le bureau, vous devrez changer cela en «graphical.target».
  • le [Service] La section configure ce qui va s’exécuter et que faire si votre programme plante ou se ferme.
    • L’option «Type» de «inactif» indique à systemd d’attendre que tous les autres services soient terminés. C’est ainsi que le démarrage n’est pas ralenti.
    • L’utilisateur définit l’utilisateur sous lequel le programme s’exécutera. Dans ce cas, l’utilisateur standard «pi».
    • ‘ExecStart’ est l’exécutable à démarrer. Dans ce cas, python3 exécutant le script DriveRobot.py. Notez que vous devez donner le chemin complet du programme que vous exécutez (python3) et du script.
    • «Redémarrer» réglé sur «toujours» indique à systemd de surveiller le processus qu’il a démarré, et s’il s’arrête, systemd le redémarrera.
    • ‘RestartSec’ indique à systemd d’attendre 0 seconde avant de redémarrer le programme s’il se termine.
  • La dernière section, [Install], a une directive «WantedBy». Cela indique que le service driverobot sera vaguement lié au service multi-utilisateurs – il sera exécuté une fois que le service multi-utilisateurs aura démarré avec succès.

Une fois enregistré, vous devez modifier les autorisations du fichier d’unité avec:

sudo chmod 644 /lib/systemd/system/driverobot.service

Ce qui le rendra lisible par tous, et seulement accessible en écriture par le propriétaire.

Configuration de systemd

Maintenant que vous avez créé le fichier d’unité, vous devez en informer systemd et l’activer pour que le service driverobot soit démarré à chaque démarrage du Raspberry Pi. Faites ceci avec:

sudo systemctl daemon-reload
sudo systemctl enable driverobot.service

Après quoi, vous pourrez redémarrer votre Raspberry Pi.

Vérification de l’état du service driverobot

Une fois que votre Raspberry Pi a terminé le redémarrage, votre script devrait maintenant être en cours d’exécution. Vous pouvez le vérifier avec la commande systemctl:

sudo systemctl status driverobot.service

Cela devrait renvoyer quelque chose comme ceci:

statut systemctl

Tester un «crash»

Il est utile de tester si systemd va gérer un crash de code. Pour simuler que vous devez «tuer» le processus python qui exécute votre script. Pour trouver l’identité du processus, exécutez ceci:

ps -ax | grep driverobot

Cela devrait renvoyer deux lignes – une pour le processus python3 et une pour le «grep» que vous venez d’exécuter. L’identité du processus (pid) est le premier numéro de la ligne.

Obtention de l'identité du processus (pid)

Pour arrêter votre code, exécutez ce qui suit:

kill -9 xxx

xxx est l’identité du processus que vous venez de trouver.

Vérifiez maintenant si votre code a été redémarré en exécutant à nouveau ceci:

ps -ax | grep driverobot

Vérification du redémarrage du service

Si systemd a fait son travail correctement, vous devriez voir un processus python3 toujours en cours d’exécution, mais cette fois avec une identité de processus différente.

Sommaire

Vous avez maintenant la possibilité d’exécuter votre code, ou n’importe quel programme, à chaque démarrage de votre Raspberry Pi, et de le faire fonctionner tout le temps!

  • Freenove Super Starter Kit for Raspberry Pi 5 4 B 3 B+ 400, 407-Page Detailed Tutorial, Python C Java Scratch Code, 164 Items, 73 Projects
    4 programming languages -> Python (compatible with 2&3), C, Java and Scratch. 407-page detailed tutorial (including basic electronics knowledge) -> The download link can be found on the product box. (No paper tutorial.) 164 items for 54 inte164 items for 73 interesting projects -> Each project has circuit diagrams and verified code with detailed explanations.resting projects -> Each project has a circuit diagram and tested code with detailed explanation. Compatible models -> Raspberry Pi 5 / 400 / 4B / 3B+ / 3B / 3A+ / 2B / 1B+ / 1A+ / Zero W / Zero. (NOT included in this kit.) Get support -> Our technical support team is always ready to answer your questions.
  • SunFounder Raspberry Pi Kit de démarrage Pico avec 40 projets tutoriels en Ligne, Code microphéthon C Piper, électronique d'apprentissage Unique et Programmation pour Raspberry Pi Arduino
    Kit de démarrage Raspberry Pi Pico : SunFounder Raspberry Pi Pico Basic Starter Kit est une boutique unique pour Raspberry Pi Arduino débutants et experts. Des tutoriels en ligne vous fournissent des instructions étape par étape, avec 283 articles et 40 projets Raspberry Pi Pico pré-soudé inclus : le Raspberry Pi Pico est une carte microcontrôleur puissante avec une technologie numérique flexible qui contient le RP2040 avec un processeur double cœur ARM Cortex-M0+ 【280+ Articles】En plus de Raspberry Pi Pico, il est livré avec différents composants tels que : écran LCD I2C, WS2812 RGB LED Strip, servo moteur et capteur de mouvement PIR, etc. Il y a des explications détaillées et des informations d'apprentissage à chaque composant 40 projets fournis : le kit pico contient 40 projets professionnels à différents degrés de complexité. Chaque leçon contient un schéma de câblage, une explication du principe de fonctionnement et un exemple de code 【3 langages de programmation】MicroPython (18 projets), un langage de programmation officiellement recommandé. C/C++ (13 projets), compatible avec Arduino IDE. Piper Make (9 projets), une version simplifiée de Scratch idéale pour les débutants
  • Argon ONE V3 M.2 NVME PCIE Boîtier pour Raspberry Pi 5
    Argon ONE V3 M.2 NVME Boîtier pour Raspberry Pi 5 avec prise en charge M.2 NVME Meilleure communication et gestion de l'énergie avec le Raspberry Pi 5 via une puce Raspberry Pi RP2040 qui contrôle les caractéristiques et les fonctions de l'Argon ONE V3, telles que la vitesse du ventilateur et l'état de la gestion de l'alimentation (par exemple le démarrage manuel ou le démarrage automatique après une panne de courant en plaçant simplement les broches du cavalier à l'intérieur du boîtier), de sorte que vous pouvez utiliser l'Argon ONE comme vous le souhaitez. Démarrez votre Raspberry Pi 5 à partir d'un lecteur NVME M.2 (lecteur non inclus) Dissipateur thermique intégré pour votre disque M.2 NVME Accès plus rapide à la mémoire en connectant les disques M.2 NVME via la fente PCIe du Raspberry Pi 5 Prise en charge M.2 NVME polyvalente, compatible avec tous les disques M.2 NVME avec clé M jusqu'à une taille de 2280 Meilleure gestion de la chaleur pour M.2 NVME avec dissipateur thermique en aluminium intégré pour le disque M.2 Transfert de données fiable et cohérent avec le câble FPC contrôlé par impédance fourni Meilleur refroidissement actif avec un ventilateur programmable de 30 mm avec fonction ventilateur qui a été repositionné dans le boîtier pour être plus silencieux Refroidissement passif amélioré grâce à un dissipateur thermique supplémentaire sur la puce de gestion de l'alimentation du Raspberry Pi 5 à côté du processeur, qui chauffent tous deux en cas d'utilisation intensive