라즈베리파이가 일반 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™
,

두번째로 라즈베리파이를 주문하고 OS 설치 이후에 무선랜을 잡아야 하는데... 깜박하고 파이 주문시에 wifi 동글을 주문을 안했다. 급한대로 근데 집더하기 마트에 가서 wifi usb 동글을 찾아보니 딱 하나 있는게 TP-LINK WN725N 제품이었다.


전에 얼핏 아무거나 쓰면 안된다는 글을 본거 같아서 핸드폰으로 잠시 검색을 했더니.. 설치가능하다는 글이 보인다. 좋아 너로 결정했어...

룰루랄라 하고 가지고 들어와서 wifi 설정해야지 하는데... 왠걸... 인식 자체가 안된다. 

뭐지...? 하다가 또 폭풍 구글링...

많은 사람들이 뻘짓끝에 설치에 성공했다는 글들이 쭈욱 검색이 된다. 이런... 역시나 제품은 많은 사람들이 쓰는 제품을 썼어야 하는데... 참고로 가장 많이 사용하는 제품은 IPTIME mini100 인가를 많이 쓰는거 같다. 해당 칩셋을 공식 지원해서 많이 쓰는 듯하다.


암튼 쉽지 않은 길이 될거 같다는 생각을 하면서 보니 아주 친절하게... 단... 영어로 설치하는 법을 알려주는 페이지를 찾았다. 역시나 공식 포럼에 들어가 찾는게 제일 빠른 지름길인가보다.. 단 영어의 압박이 있지만....

https://www.raspberrypi.org/forums/viewtopic.php?p=462982


위 링크에 들어가 보면 다음과 같이 설명하고 있다.

Driver files available for the TP-LINK TL-WN725N V2 and similar wifi dongles using the 8188eu driver module for systems using the Raspbian image.

즉, TL-WN725N V2 외에도 8188eu 를 사용하는 wifi 동글에 대해서 사용할 수 있는 driver file이라는 것이다.

공식적으로 OS에 포팅되지 않았기 때문에 OS kernel을 업데이트 할때마다 재 설치를 해야 하는 불쌍사가 있지만 그래도 당장 쓸수 있게 해주는 것에 감사하면서 설치 방법을 확인했다.


우선 자신의 OS kernel version을 알아야 하므로 아래와 같이 명령어를 실행한다.

$ uname -a

Linux iGrinRCPI 3.18.11-v7+ #781 SMP PREEMPT Tue Apr 21 18:07:59 BST 2015 armv7l GNU/Linux

여기서 중요한 부분은 저 붉은 글씨 #781 이다. 또 내가 사용한 보드는 라즈베리파이2이기 때문에 v7 이라는 문구를 확인할 수 있다.

그럼 해당 버젼에 맞는 드라이버 파일을 다운 받아야 한다.

3.18.11-v7+ #780, #781 - 8188eu-v7-20150406.tar.gz

다른 PC에서 받아서 ftp 로 올려도 되고 아니면 아래 명령어를 가지고 라즈베리파이에서 직접 다운을 받을수 있다. (참고로,  yyzz 부분에 위에 파일의 날짜를 맞춰서 넣어줘야 한다.)

wget https://dl.dropboxusercontent.com/u/80256631/8188eu-v7-2015yyzz.tar.gz


해당파일을 다운 받아 아래 절차대로 수행하고 reboot을 해주고 나면 wlan0이 정상적으로 활성화 되는 것을 확인할 수 있다.

tar xzf 8188eu-v7-2015yyzz.tar.gz

./install.sh

wlan0을 통해 네트웍 연결하는 것은 여기저기서 쉽게 확인할 수 있으므로 찾아서 설정하면된다.



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™
,