私の他のテイクでは何の結果も得られなかったので、私は次のことをしました: Arduino LenoardoがUSB経由でシャットダウンするオレンジパイPCボタンを使用してピン2に入力を取得します。Debian/Armbianのシャットダウンシステムへのシリアルコマンド
この完全な通信は、キーボード入力がうまくいかなかったため、シリアル経由で動作するはずです。
My Piは、Orange PiハードウェアのRetroPieのクローンであるRetrOrangePiを実行しています。 これをシャットダウンするには、メニューを使用するのではなく、代わりにハードウェアケースにマウントされたボタンを使用します。
このボタン(Arduinoの2番ピンに接続)を押すと、シリアルコマンド(byebyepi)がOrange Piに送信されます。このコマンドはpythonデーモンを実行します。
ほとんどすべてがうまくいきます。 Arduinoはピン2を接地するとシリアル信号を送信し、 はシリアルモニタでウィンドウをチェックします。 init.dサービスが実行されています。 モジュール(シリアル)が見つからなかったので、手動で実行したとき、pythonスクリプトに問題がありました。 。 私はpipをインストールし、pipで "pyserial"モジュールをインストールしました。 このモジュールが欠落しているというエラーを取り除いたのはどれですか。
私が手作業でpythonスクリプトを実行すると、arduinoはリスニングされます。 しかし、ピン2を接地すると何も起こりません。 ArduinoがLEDを点灯させ、 シャットダウンコマンドを送信したことを通知しますが、Piはシャットダウンしていません。 なぜかわかりません。私はinit.d/byebyepiでchmod 755もやった。
誰でもここで私を助けることができますか?親切にありがとう!
は私のArduinoのためのスケッチがこれです:
#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
}
}
私のpythonデーモンは、この使用しています:
import serial
import os
ser = serial.Serial('/dev/ttyACM0', 9600)
while 1 :
line = ser.readline()
if line == 'byebyepi':
os.system("sudo shutdown -h now")
をそして/etc/init.d/のスクリプトはこれです:
#! /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
あなたの質問に関連するタグをいくつか追加することができます(例: 'arduino'、' orange-pi'など)。もう少し注意を払うことができます。 – davedwards
@downshift done、ありがとうございます。 – Fleder