라즈베리파이가 일반 linux 머신과 활용도 측면에서 다른 가장 큰 이유는 GPIO 포트를 가지고 있는 것이라고 생각한다. 다른 여러 포트들도 가지고 있지만 나같은 초짜에겐 GPIO만큼 쉽게 컨트롤 할수 있는 것도 없는것 같다.

지난번엔 WEB과의 연동을 쉽게해주는 WebIOPi를 설치 했다면 이번엔 C언어에서 쉽게 사용할 수 있도록 library를 제공해주는 WiringPi를 설치해 보려고 한다.


다양한 설치 방법이 있을수 있겠지만 여기선 소스관리툴인 git을 이용해 다운을 받아서 설치한다.

먼저 git이 설치안되어 있다면 아래 명령어를 실행하여 git을 설치한다.

$ sudo apt-get install git-core


git-core가 설치가 완료가 되면 본격적으로 wiringPi 설치를 진행하면 된다.

소스를 가져오는 방법은 아래와 같이 입력하면 된다.

git clone git://git.drogon.net/wiringPi


그럼 위 명령어를 실행한 디렉토리에 wiringPi라는 디렉토리가 생성이되고 해당 디렉토리에 필요한 소스 등이 쫘악 다운로드가 된다.

pi@iGrinRCPI ~/wiringPi $ ls -al

total 68

drwxr-xr-x 9 pi pi 4096 Sep  1 01:33 .

drwxr-xr-x 6 pi pi 4096 Sep  1 01:33 ..

-rwxr-xr-x 1 pi pi 4753 Sep  1 01:33 build

-rw-r--r-- 1 pi pi 7651 Sep  1 01:33 COPYING.LESSER

drwxr-xr-x 3 pi pi 4096 Sep  1 01:33 debian

drwxr-xr-x 2 pi pi 4096 Sep  1 01:33 devLib

drwxr-xr-x 6 pi pi 4096 Sep  1 01:33 examples

drwxr-xr-x 8 pi pi 4096 Sep  1 01:33 .git

drwxr-xr-x 2 pi pi 4096 Sep  1 01:33 gpio

-rw-r--r-- 1 pi pi  686 Sep  1 01:33 INSTALL

-rw-r--r-- 1 pi pi  865 Sep  1 01:33 People

drwxr-xr-x 2 pi pi 4096 Sep  1 01:33 pins

-rw-r--r-- 1 pi pi  606 Sep  1 01:33 README.TXT

-rw-r--r-- 1 pi pi    5 Sep  1 01:33 VERSION

drwxr-xr-x 2 pi pi 4096 Sep  1 01:33 wiringPi


아직은 소스 형태기때문에 build 스크립트를 실행하여 build 및 install을 수행한다. 그럼 build 스크립트가 알아서 다 해준다. 이런 고마운 일이 ~~ 


완료가 되면 wiringPi가 잘 설치되어 있는지 확인한다.

$ gpio -v

$ gpio readall


참고로 라즈베리파이의 핀번호는 위에 출력된 Physical 부분과 동일하게 되어 있다. 그런데 처음 라즈베리파이를 보면 이게 어디가 위인지 아래인지 구분이 안된다. 라즈베리파이2 model B를 기준으로 보면 아래 사진의 좌측이 PinNo 1이다. 

참고로 Pin이 눌려서 옆의 pin과(특히 VCC pin들) 쇼트가 나지 않도록 항상 주의를 기울여 주는것이 좋다. 라즈베리파이의 IN 레벨 설계가 3.3V로 되어 있어서 잘못 입력을 주는 경우 파이가 못쓰게 될수도 있다고 한다. 저가형 보드이기때문에 보호회로 같은건 일절 없다고 보면된다. 

Posted by iGrin™
,

우리집 같은 경우는 유선 네트웍이 없다. 

그래서 가끔 라즈베리파이에서 무선 네트웍이 안되면 모니터에 키보드에 잔뜩 연결을 해야 한다.

그런 일이 발생하는 것을 방지하기 위해서 다음과 같이 라즈베리파이에 네트웍을 구성해서 사용한다.


1. wlan0 (wifi 설정)

   집의 무선 공유기와 연결을 하면서 port forwarding 설정을 위해 고정 IP를 할당.

   (공유기의 IP range가 10.0.1.xx 로 되어 있기때문에 아래와 같이 설정하였음. 공유기 설정에 따라 변경필요)


2. eth0 (이더넷 포트)

   노트북과 direct 케이블로 연결하여 직접 접속을 위해 고정 IP(10.10.10.10)를 할당.

   이때 노트북의 IP는 10.10.10.11/24(ex) 로 설정하여 L2 통신이 되도록 한다.


위와 같이 동작 해주기 위해 /etc/network/interface 설정을 다음과 같이 변경한다.

$ sudo vi /etc/network/interface

auto lo

iface lo inet loopback


auto eth0

iface eth0 inet static

address 10.10.10.10

netmask 255.255.255.0


auto wlan0

allow-hotplug wlan0

iface wlan0 inet manual

wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf

#iface default inet dhcp

iface default inet static

address 10.0.1.11

netmask 255.255.255.0

gateway 10.0.1.1 


$ sudo service networking restart


참고로 /etc/wpa_supplicant/wpa_supplicant.conf 파일에 무선공유기의 SSID / Password를 설정해주어야 한다. 

ssid 와 psk 부분의 " " 안의 값을 변경해 주면 된다.

$ sudo vi /etc/wpa_supplicant/wpa_supplicant.conf

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev

update_config=1


network={

ssid="공유기SSID"

psk="패스워드"

proto=RSN

key_mgmt=WPA-PSK

pairwise=CCMP

auth_alg=OPEN

}


이렇게 설정을 해주면 평소에는 wifi 로 접속하다가 무선이 문제가 될시에 노트북과 LAN cable을 직접 연결하면 10.10.10.10 으로 접속이 가능한 환경이 만들어진다. 


Posted by iGrin™
,

기존에 사용하던 라즈베리파이2 외에 RC카 제작을 위한 보드를 하나 더 구입을 했다.

이전 설치때는 윈도우 기반에서 OS를 설치했는데

이번에는 맥에서 설치하는 법을 찾아서 진행을 했다.


필요한 것은 SD카드에 OS를 올려주기 위한 installer , 그리고 OS 이미지 파일이다.

각각은 아래 link에서 다운 받으면 된다.


[OS 이미지]

https://www.raspberrypi.org/downloads/


[Installer For MAC]

https://github.com/RayViljoen/Raspberry-PI-SD-Installer-OS-X


이미지가 준비되었다면 이제 설치만 하면 된다.

Installer 가 들어있는 디렉토리에 OS이미지를 복사해준 뒤 아래 명령어를 실행해준다.

(여기서 날짜부분은 OS 이미지를 다운 받은 날짜에 따라 최신 버전으로 달라질수 있음)


$ sudo ./install 2015-05-05-raspbian-wheezy.img


실행시 주의할 점은 중간에 어느 disk에 OS를 설치할꺼냐고 물어보는데 그때 제대로 된 disk 를 선택하지 않으면 그 이후의 일은 책임질수 없으므로 잘 확인하고 선택하시길....

중간에 상태가 보여지질 않아서 답답하긴한데 그때는 Ctrl+T 를 누르면 얼마나 진행했는지 볼수 있다.

완료가 되면 All Done이라는 문구와 함께 프롬프트가 떨어진다.


여기까지 문제없이 되었다면 이제 SD 카드를 라즈베리파이에 연결한 후 booting 해주면 끝!


Posted by iGrin™
,

라즈베리파이2에서 WebIOPi를 사용하기 위해 설치를 했다.


처음 설치한 버젼은 WebIOPi-0.6.0... 이건 passwd 설정 부분에서 막혀서 더이상 진행이 안된다.

구글을 막 뒤져보던중에 보니 잉 0.7.0 버젼이 있네...

0.7.0 버젼으로 재설치를 하고 실행을 해보니 웹페이지 까지 정상적으로 보여진다.

앗싸 ~~ 


GPIO상태를 보려고 기본으로 설치된 GPIO.header를 실행해보니... 음... 왜 정보가 안보이지...

다시한번 구글링....

라즈베리파이2 버젼에서는 WebIOPi가 제대로 동작하지 않는단다... 젠장... 뭐지...

파이2가 나온지가 언제인데 설마 이미 경험한 사람들이 해결했겠지 하면서 다시 폭풍 구글링...

라즈베리파이 공식 포럼에서도 이 사람 저 사람 물어보고 있고 역시나 누군가 고쳐놓은 버젼이 있다.


아주 친절하게 patch 버젼으로 배포를 해주어서 쉽게 설치가 가능했다. 


[출처 : https://github.com/doublebind/raspi]

$ wget http://sourceforge.net/projects/webiopi/files/WebIOPi-0.7.1.tar.gz

$ tar xvzf WebIOPi-0.7.1.tar.gz
$ cd WebIOPi-0.7.1
$ wget https://raw.githubusercontent.com/doublebind/raspi/master/webiopi-pi2bplus.patch
$ patch -p1 -i webiopi-pi2bplus.patch
$ sudo ./setup.sh 

$ sudo /etc/init.d/webiopi start


패치 이후 실행해보니 정상적으로 port 상태가 보여진다.






Posted by iGrin™
,