Posts

Showing posts from January, 2017

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

Image
 #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( 1

[Raspberry Pi] - rc카 만들기 #3 ESC 제어

Image
#3 ESC 제어 E042A 40A ESC 전자변속기(ESC) RC기기들의 브러시리스(Brushless) 모터 혹은 브러시(Brushed) 모터를 작동 시키는 것에 있어 핵심적인 부품이다. 여기서 ESC는 키보드 위의 그 esc가 아니라 Electronic Speed Controller의 이니셜이다. RC카를 접해본 사람들이라면 ESC와 트렌스미터 간 캘리브레이션(Calibration)이 필요하다는 것을 알것이다. 전자변속기는 모터에 PWM(pulse width modulation)신호에 따라 출력을 하는데 동일한 시간축에서 펄스폭이 넓을수록 모터는 더 큰 출력을 얻게된다. 여기서 필요한 작업이 캘리브레이션이다. 캘리브레이션이란 쉽게 말해 ESC가 Raspberry Pi로 부터 받은 값에서 얼마 만큼의 출력을 내야할지 알려주는 것으로 ESC통해 모터를 제어하기 위해 필수적인 작업이다. ESC에는 기본적으로 모터에 연결되는 2선(브러시드) 혹은 3선(브러시리스), 전원 단자(사진 deans), 스위치, 컨트롤러 선을 포함한 BEC단자가 있다. 위 사진속 제품 가장 오른쪽에 검정(Ground), 적색(6V), 흰색(Signal) 단자가있다. BEC출력이 6V로 Raspberry Pi의 전원으로 사용하기에 안전하지 않다. SERVO가 4pin(적색) 6pin(갈색) 7pin(황색)을 사용중이다. ESC는 9pin(검정색) 11pin(흰색)을 사용할 것이다. 저번에는 lxterminal을 열서서 스크립트를 실행전에 pigpio daemon을 따로 실행해야했다.  아래 처럼 프로그램 상단에 추가해주면 따로 실행 할 필요가 없다. 사전에 실행하고 싶은 다른 데몬이나 스크립트가 있다면,  call("실행할 프로그램",shell=True) 이런식으로 추가해주면 된다. 경우에 따라선 프로그램의 경로까지 명시해주어야 할 수도 있

[Raspberry Pi] - rc카 만들기 #2 Servo Motor

Image
#2 서보모터의 제어 rc 카의 주행 방향을 책임지는 서보모터를 제어해 보도록 하겠다. 라즈베리에는 GPIO 핀이있는데 이 핀들은  납땜없이 라즈베리와 현실세계를 연결해준다. 이런 점이 아두이노와 라즈베리 파이의 매력 중 하나라고 할 수 있다. 서보모터에는 3선이 달려있는데 전원선과 신호선으로 구분된다. 서보모터의 경우 갈색(그라운드), 적색(전원), 황색(신호) 이다. 또는 검정색(그라운드), 적색(전원), 흰색(신호)으로 된 것도 있다. 여기서 사용할 서보모터는 일반적으로 4.5~6V 의 전원으로 작동된다. 서보모터를 제어하는 방법으로는 여러가지가 있다. PWM 제어 서보를 제어하기 위해선 PWM이 필요한데 RPi.GPIO 라이브러리에 포함되어 있다 터미널을 열고 RPi.GPIO 라이브러리를 설치한다. sudo apt-get install RPi.GPIO PWM 파이선 예제 ServoBlaster 제어 sudo apt-get install git git clone git://github.com/richardghirst/PiBits.git cd PiBits/ServoBlaster/user make servod sudo ./servod 서보블라스터를 실행하면 사용 방법이 나온다. 사용가능한 핀을 확인한뒤 서보모터를 라즈베리 파이에 연결해준다. 적색(전원) - 4pin(5V) 갈색(그라운드) - 6pin(Ground) 황색(신호) - 7pin(GPIO4) 이제 서보모터를 움직여 보자. 값은 50에서 250사이의 값을 입력해주면 된다. echo 0=150 > /dev/servoblaster 서보 블라스터 파이썬 예제 pigpio 제어 sudo pigpiod 아래 예제를 사용하면 서보블라스터와 동일 하게 작동하지만  값은 500us에서 2500us 이

[Raspberry Pi] - rc카 만들기 #1 Start

Image
집에 굴러다니는 Raspberry Pi를 이용해 RC카를 만들어 볼것이다. 준비물. PC, Raspberry Pi, Servo Motor, 27T Brushed Motor, ESC(Electric Speed Controller) 배터리, 그외 RC카 부품들 #1 개발 환경 구축 Raspberry Pi를 이용해 개발을 하기 위한 방법 에는 여러가지가 있다. 저는 매번 모니터를 연결하여 사용하는 것이 귀찮기 때문에 윈도우의 보조 프로그램인 "원격 데스크톱 연결" 을 이용 할 것 이다. 1) 라즈베리에 xrdp를 설치한다. sudo apt-get update && sudo apt-get upgrade sudo apt-get install tightvncserver sudo apt-get install xrdp 2) Raspberry Pi와 PC를 LAN 캐이블로 연결하고 비지에 불이들어오는지 확인한다.     연결 공유 옵션이 꺼져있는 경우도 있으니 아래와 같이 설정한다.     이제 터미널을 열어서 IP를 확인.     192.168.137.185 이것이 Raspberry Pi의 IP이다. 3) 원격 데스크톱 연결을 열고 IP를 적고 연결을 클릭한다.     본인이 설정한 username 과 password 를 입력한다.     초기값은 다음과 같다.     username : pi     password : raspberry Thx .