Eteindre le raspberry à partir d'un script python

Bonjour à tous,

Je viens vers vous pour essayer d’avoir une réponse à mon problème ou bien une autre solution.
Mon projet : Dans le cadre d’un stage + job d’été, je suis chargé de réaliser un système de télémétrie sur un banc d’essai. Je dois donc faire plusieurs relevés à l’aides de capteurs ainsi que faire varier la vitesse de différents moteurs en parallèle.
Pour cela, j’ai opté pour un Raspberry pi 3b+ couplé avec un Arduino Uno R3. J’ai programmé l’Arduino pour récupérer les informations de plusieurs de mes capteurs. De plus, le raspberry récupère également d’autres informations provenant de d’autres capteurs. J’ai donc ensuite réalisé une connexion bidirectionnelle (USB) entre mes deux microcontrôleurs afin de récupérer les données de l’Arduino sur mon Raspberry. Le Raspberry se charge ensuite de trier ces informations dans différents tableurs à l’aide de fichier CSV.
Enfin, l’Arduino me permet de piloter les moteurs grâce à ses out pins PWM.

Mon problème : Je viens lire en « parallèle » (avec des threads) les informations provenant de l’Arduino et celles venant des capteurs branchés au Raspberry. Cependant, lorsque les capteurs de températures branchés au Raspberry me donnent une valeur trop élevée, j’aimerais que cela éteigne le Raspberry (Raspberry qui alimente l’Arduino). Seulement je ne trouve pas de sujet répondant à cette problématique.

PS : Mon Raspberry fonctionne sous Raspbian, je programme ensuite un script python. C’est donc à partir de ce script que j’aimerais pouvoir éteindre le raspberry.

Merci d’avance pour vos réponses :wink:

hello,

si par éteindre le raspberry tu entends faire un shutdown c’est possible à partir d’un script python en utilisant une fonction (https://www.delftstack.com/fr/howto/python/call-external-programs-python/)

par contre ça ne coupera pas ni l’alimentation du Rpi, ni le courant qui sort de 'l’usb et qui alimente ton arduino.

pour couper le courant il semble possible d’alimenter le Rpi par les port GPIO (Bien alimenter votre raspberry pi: le tuto – PM88) et donc là ça devient possible de couper le courant avec un composant externe (mosfet,relais ? ) qui pourrait être commander par l’arduino.

dans la théorie ça pourrait faire :
le Rpi détecte température trop élevée
il informe l’arduino qui commence à temporiser avant d’activer la coupure de l’alim du Rpi
il exécute le shutdown
a la fin de sa tempo ( et si le Rpi ne répond plus sur la liaison ) , l’arduino coupe l’alim

ds la pratique ça risque d’être moins simple … notamment pour trouver l’alim et le bon composant pour la couper.

il est aussi possible de gérer un relais directement sur le 220v de l’alim mais perso je suis pas partisan !
le 220v est dangereux en cas électrocution on risque un arrêt cardiaque ! pas cool !

1 « J'aime »

Je te remercie pour ta réponse. En effet, je souhaite faire un shutdown. Je me doutais que le Rpi allait continuer d’alimenter mon Arduino même éteint. J’ai tout de même souhaité essayer. Grâce à tes idées, j’ai trouvé le code suivant pour bien éteindre le raspberry lorsque la température est trop élevée :
image
Ce code fonctionne parfaitement pour éteindre mon Rpi. De plus, ceci fait que mon Rpi arrête d’alimenter l’Arduino. Par conséquent, cela répond totalement à ce que je souhaitais faire.

Encore merci pour les indications :slight_smile:

Désolé je croyais que comme le rpi4 ne coupe pas l’alim sur l’USB après le shutdown, le Rpi3+ le faisait pas non plus !

Merci, grâce à toi j’ai appris un truc :wink: