ASRock BC-250 보드 RAZER CORE X CHROMA 에 설치하기 4

RAZER CORE X CHROMA 에 있는 12V 전원 을 사용하는 허브 보드를 설계중이다. 새로 설계되는 허브에는 4개의 USB 2.0 포트, 이더넷 포트를 통한 오디오 출력, 오디오 엠프 회로, 전원 감지 및 오디오 엠프 컨트롤을 위한 MCU 가 포함되어있다. 전원 소스는 12V 와 5VSB 를 사용하며, MCU 만 5VSB 를 사용하고 나머지 장치들은 12V 를 사용하도록 설계하였다. 보드 고정의 경우 RAZER CORE X CHROMA 에 장착 되어있던 PCIE 허브 카드의 브라켓을 그대로 사용할수 있도록 설계하였다. 핀 헤더를 통해 BC-250 의 USB 2.0 포트에 납땜하여 사용할 목적으로 설계 되었다. USB 2.0 포트 하나를 희생해서 사용한다. USB 허브 전원은 BC-250 에서 가져오지 않고 내부 전원 회로에서 컨버팅 된 5V3A 전원을 커런트 리미트로 제한하여 사용하도록 설계하였다. 그리고 이 보드에는 BC-250 전원이 꺼졌는지 감지하여 먼저 제작 하였던 PSU 컨트롤러로 신호를 보내주는 회로가 설계되어 지난번에 우려 했던 PSU 가 꺼지지 못하는 상황을 방지 할 수 있다.  오디오 엠프를 넣은 것은 개인적인 욕심인데 스피커를 내장하기 위함이다. 엠프를 넣지 않았다면 사이즈도 더 작아지고 설계도 많이 쉬웠을 것이다. 가장 큰 걸림돌은 USB 포트와 이더넷 포트의 위치를 바꿀 수 없다는 것 이다. 아직 수정해야 할 부분이 많아서 먼저 설계했던 브라켓이 오기 전까지는 설계를 확정 할 수 없다.

[Raspberry Pi] - rc카 만들기 #4 라즈베리 파이 부팅시 자동실행(Raspberry Pi Autostart)




 #4 라즈베리 파이 부팅시 자동실행


지난번까지 작성한 스크립트를 Raspberry Pi가 부팅하면서 알아서 실행하도록 해보겠다.
우선 Raspberry Pi가 켜질때 스크립트 혹은 데몬을 자동으로 실행 시키는 방법에는 여러가지가 있다.

우선 시작하기 전에 자신이 작성한 코드가 정상적으로 작동하는지 확인을 한다.


  • 데스크톱 화면이 나올때 실행하는 방법
프로그램 경로를 모르겠다면 whereis 나 which 명령어를 이용하면 알수있다.

sudo nano /etc/xdg/lxsession/LXDE-pi/autostart
@program root

    nano 편집기로 연후 경로를 포함해서 프로그램을 적어주면된다.
    @sudo /usr/local/bin/ds4drv
    @python /home/pi/rc.py &

    • rc.local을 편집해 부팅시 실행하는 방법
    sudo nano /etc/rc.local

      먼저 스크립트 상단에 다음과 같이 추가해준다.
      스크립트나 데몬 뒤에 " &" 를 붙이는 이유는 파이가 부팅중에 루프에 빠지는 것을 막기 위함이다.
      파이선 코드 맨위에 #!/usr/bin/env python 을 적어주면 명령어 앞에 python 없이 실행이 가능해진다.

      #!/usr/bin/env python
      call("sudo pgpio", shell=True)
      call("sudo ds4drv &", shell=True)
      #!/usr/bin/env python
      import time
      from subprocess import call
       
      print("ds4drv load")
      call("sudo /usr/local/bin/ds4drv &", shell=True)
      time.sleep(10)
      print("pigpiod load")
      call("lxterminal -e sudo /usr/bin/pigpiod", shell=True)
      time.sleep(2)
      call('lxterminal -e /usr/bin/python3 /home/pi/rc.py &', shell=True) # "&"background process
      print("online")
       
      cs


      • 스케줄러를 이용한 자동실행
      crontab -e
      @reboot /home/pi/rc.py &
      어떤 방법을 사용해도 좋다.
      작업을 마치면 재부팅을 하여 확인해본다.

      1) 프로그램 상에서 캘리브레이션(Calibration) 작업을 수행하도록 하였기 때문에 Raspberry Pi 에 전원을 넣기 전에 ESC의 전원을 먼저 넣어주어야한다. rc.local은 거의 마지막 단계에 실행 되기때문에 Raspberry Pi의 초록불이 점멸을 시작하기 전에만 켜주면된다.

      2) 부팅이 거의 완료 될 때 긴 비프음이 삐이익 하고 캘리브레이션(Calibration)이 되었음을 알려준다. (xrdp를 이용해 원격 접속이 가능한 시점과 비슷하다.)

      3) 듀얼쇼크(Dual Shock)를 페어링에 성공하면 바로 주행이 가능하다.





      Thx.


      Comments

      Popular posts from this blog

      [POE] - 패스 오브 엑자일 획득키 F 의 사용법 (Path of Exile)

      [AD보드] - 맥북 패널을 모니터로 만들기 ( LP154WP4-TLA1 )

      [Arduino] - HC-06를 이용해 PC 와 Arduino 블루투스 연결