ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 라즈베리파이 부팅시 프로그램 자동 실행
    Autonomous Lawn Mower/Raspberry pi & STM32 2025. 5. 2. 10:03
    반응형

    2025년 8월 10일

    배터리 연결시 전력부족 문제인지 LED가 잠깐 깜박이다가 라즈베리파이가 다시 부팅. 이것을 연속하여 정상모드로 들어가지 않음. 

     

    2025년 6월 2일

    go 명령어에서 lawn mower motor가 안돌아가고, speed up을 해야 돌아감. time.sleep(10)으로 변경하니 잘 동작함

     

    2025년 5월 17일

    기존 코드로 부팅했을 경우 자주 HM-10 블루투스를 위한 시리얼 통신이 잘 동작하지 않는 것을 확인했다. 라즈베리파이 PIN26에 heartbeat용 LED를 추가해서 동작을 확인했다. 코드를 부팅시 autostart를 하면 LED는 잘 동작하는데 시리얼 통신은 자주 동작하지 않았다. 라즈베리파이를 초기화 하는 등 해봤지만 소용이 없었다.

    문제의 원인은 시리얼 포트가 부팅시 완전히 초기화되지 않는게 원인이었다. 약간의 딜레이를 해주어서 시리얼 포트를 초기화 시켜주어야 한다. 이 후 잘 동작한다. 이것 때문에 거의 2주를 날려먹었네. 

     

    import time

    time.sleep(5)  # Delay to allow serial hardware to initialize.

     

    myscript.service 파일은 로그 확인을 위해서 아래와 같이 변경되었다. 

    [Unit]
    Description=My Python Script
    After=network.target

    [Service]
    ExecStart=/usr/bin/python3 /home/pi/your_script.py &
    WorkingDirectory=/home/pi/
    StandardOutput=journal
    StandardError=journal
    Restart=always
    User=pi

    [Install]
    WantedBy=multi-user.target

     

     

     

     

    2025년 5월 2일

    우선 Command 창에서 프로그램 실행 여부를 확인한다. 

     

    아래와 같이 잘 동작함을 확인했다. python3 /home/pi/프로그램명.py

     

    실행 방법은 systemd Service를 사용하는 것이다. 

    Command 창에서 sudo nano /etc/systemd/system/myscript.service를 입력하고 아래 내용을 저장한다. 이 때 your_script.py는 나의 파이썬 파일이어야 한다. 

     

    [Unit]
    Description=My Python Script
    After=network.target

    [Service]
    ExecStart=/usr/bin/python3 /home/pi/your_script.py &
    WorkingDirectory=/home/pi/
    StandardOutput=inherit
    StandardError=inherit
    Restart=always
    User=pi

    [Install]
    WantedBy=multi-user.target

     

    이 후 아래 명령으로 서비스를 Enable하고 Start한다.

    sudo systemctl daemon-reexec
    sudo systemctl enable myscript.service
    sudo systemctl start myscript.service

     

    이 후 상태를 아래 명령어로 점검한다. 점검결과 잘 동작하고 있다. ctrl+c로 command 창으로 복귀한다. 

    sudo systemctl status myscript.service

     

    이 후 sudo reboot하면 부팅시 파일이 자동 실행된다. 

     

     

     

    아래 방법은 잘 안됨. 

    sudo crontab -e 입력

    마지막 줄에 @reboot python3 /home/pi/프로그램명.py & 입력 후 라즈베리파이 reboot하면 프로그램명.py가 자동 실행된다. 

     

     

    ※ 참고자료

    https://www.youtube.com/watch?v=Gl9HS7-H0mI

    반응형
Designed by Tistory.