zu beenden, da meine andere Übernahme auf diese Ergebnisse keine Ergebnisse ergab, habe ich Folgendes getan: Ich habe einen Orange Pi PC, den ich herunterfahren möchte, sobald der Arduino Lenoardo über USB angeschlossen erhält eine Eingabe auf Pin 2 über eine Schaltfläche.serieller Befehl zu debian/armbian System
Diese gesamte Kommunikation sollte über die serielle Schnittstelle erfolgen, da Tastatureingaben nicht gut funktionieren.
Mein Pi läuft RetrOrangePi, ein Klon von RetroPie für die Orange Pi Hardware. Jetzt, wenn ich möchte, dass es heruntergefahren wird, möchte ich nicht das Menü, sondern eine Taste stattdessen auf dem Hardware-Fall montiert verwenden. Wenn dieser Knopf (verbunden mit Pin 2 auf dem Arduino) gedrückt wird, sendet er einen seriellen Befehl (byebyepi) an den Orange Pi, der einen Python-Daemon ausführt, der genau auf diese Linie wartet, um den Shutdown-Befehl zu senden.
Fast alles funktioniert gut. Der Arduino sendet das serielle Signal, wenn Pin 2 geerdet ist, über Windows mit dem seriellen Monitor überprüft. Der init.d-Dienst wird ausgeführt. Nur das Python-Skript hatte ein Problem, wenn ich es manuell ausgeführt habe, seit ein Modul (seriell) fehlte. Ich habe pip installiert und dann mit pip das "pyserial" Modul installiert. Das hat den Fehler beseitigt, dass dieses Modul fehlte.
Jetzt, wenn ich manuell das Python-Skript ausführen, hört das Arduino, , aber wenn ich Pin 2 erden, passiert nichts. Der Arduino schaltet die LED ein, , also signalisieren Sie, dass er den Befehl zum Herunterfahren gesendet hat, aber der Pi wird nicht heruntergefahren und ich habe keine Ahnung warum. Ich habe auch chmod 755 auf meinem init.d/byebyepi.
Kann mir hier jemand helfen? Dankesehr!
Die Skizze für mein Arduino ist dies:
#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
}
}
Mein Python-Dämon verwendet diese:
import serial
import os
ser = serial.Serial('/dev/ttyACM0', 9600)
while 1 :
line = ser.readline()
if line == 'byebyepi':
os.system("sudo shutdown -h now")
Und das /etc/init.d/ Skript ist dies:
#! /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
Sie könnten vielleicht einige mehr verwandte Tags zu Ihrer Frage hinzufügen (z. B. 'Arduino',' Orange-Pi', etc) und bekommen Sie etwas mehr Aufmerksamkeit – davedwards
@downshift getan, danke. – Fleder