depuis mon autre prise sur cela n'a donné aucun résultat, j'ai fait ce qui suit: J'ai un PC Orange Pi que je veux éteindre une fois que l'Arduino Lenoardo connecté à l'USB obtient une entrée sur la broche 2 via un bouton.commande série à debian/armbian pour arrêter le système
Toute cette communication devrait se faire via le port série, car les entrées du clavier ne fonctionnaient pas bien.
My Pi exécute RetrOrangePi, un clone de RetroPie pour le matériel Orange Pi. Maintenant, si je veux qu'il s'arrête, je ne veux pas utiliser le menu, mais plutôt un bouton, monté sur le boîtier. Lorsque ce bouton (connecté à la broche 2 sur l'Arduino) est pressé, il envoie une commande série (byebyepi) à l'Orange Pi, qui exécute un démon python qui écoute cette ligne pour envoyer la commande shutdown.
Presque tout fonctionne bien. L'Arduino envoie le signal série lorsque la broche 2 est mise à la terre, vérifiée sur les fenêtres avec le moniteur série. Le service init.d est en cours d'exécution. Seul le script python avait un problème, lorsque je l'ai exécuté manuellement, car un module (série) était manquant. J'ai installé pip et ensuite avec pip j'ai installé le module "pyserial". Qui s'est débarrassé de l'erreur que ce module manquait.
Maintenant, quand je lance manuellement le script python, l'arduino écoute, mais quand je mets à la terre la broche 2, rien ne se passe. L'Arduino allume la led, alors signalez qu'il a envoyé la commande d'arrêt, mais le Pi ne s'arrête pas et je ne sais pas pourquoi. J'ai aussi fait chmod 755 sur mon init.d/byebyepi.
Quelqu'un peut-il m'aider avec ça? Merci de bien vouloir!
Le croquis pour mon arduino est la suivante:
#define abutton 2
//Pin 2 is now called abutton
void setup() {
pinMode(abutton,INPUT_PULLUP);
Serial.begin(9600);
}
void loop() {
if (!digitalRead(abutton)){Serial.println("byebyepi");
//send byebyepi via serial when abutton is used
delay(5000);
//wait for 5 seconds
}
}
Mon démon python utilise ceci:
import serial
import os
ser = serial.Serial('/dev/ttyACM0', 9600)
while 1 :
line = ser.readline()
if line == 'byebyepi':
os.system("sudo shutdown -h now")
Et le script /etc/init.d/ est la suivante:
#! /bin/sh
# /etc/init.d/byebyepi
#
case "$1" in
start)
echo "Starting byebyepi.py"
# run application you want to start
python /home/pi/shutdown/byebyepi.py &
;;
stop)
# kill application you want to stop
;;
*)
echo "Usage: /home/pi/shutdown/byebyepi.py {start|stop}"
exit 1
;;
esac
exit 0
Vous pourriez peut-être ajouter plus de balises liées à votre question (par exemple 'arduino',' orange-pi', etc) et obtenir un peu plus d'attention – davedwards
@downshift fait, merci. – Fleder