다른 하나의 결과는 아무런 결과도 가져 오지 않았기 때문에 다음을 수행했습니다. Arduino Lenoardo가 USB를 통해 연결되면 종료 할 오렌지 파이 PC가 있습니다. 버튼 2를 통해 입력을받습니다.debian/armbian에 대한 시스템 종료 명령
이 전체 통신은 키보드 입력이 제대로 작동하지 않으므로 직렬로 작동해야합니다.
My Pi는 Orange Pi 하드웨어 용 RetroPie의 복제본 RetrOrangePi를 실행 중입니다. 이제 종료하려면 메뉴 대신 하드웨어 케이스에 장착 된 단추를 사용하고 싶습니다.
이 버튼 (Arduino의 2 번 핀에 연결됨)을 누르면 직렬 명령 (byebyepi)이 Orange Pi로 보내집니다.이 명령은이 정확한 행에서 shutdown 명령을 수신하는 데 사용되는 python 데몬을 실행합니다.
거의 모든 것이 잘 작동합니다. Arduino는 핀 2가 접지 될 때 직렬 신호를 보내고, 은 직렬 모니터로 창에서 확인합니다. init.d 서비스가 실행 중입니다. 모듈 (직렬)이 없기 때문에 파이썬 스크립트에만 문제가있었습니다. 수동으로 실행했을 때 . pip를 설치 한 후 pip로 "pyserial"모듈을 설치했습니다. 이 모듈이 누락되었다는 오류를 없앴습니다.
이제 수동으로 파이썬 스크립트를 실행하면 arduino가 듣고 있습니다. 하지만 핀 2를 접지하면 아무 일도 일어나지 않습니다. Arduino가 led가 켜지면, 신호로 shutdown 명령을 보냈지 만, Pi는 을 종료하지 않고 이유를 모르겠습니다. 나는 또한 init.d/byebyepi에 chmod 755를했다.
누구나 나를 도와 줄 수 있습니까? 감사합니다!이
#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
}
}
내 파이썬 데몬이 사용 :
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, thank you. – Fleder