2015.04.29 03:25

gpio의 helloworld 예제인 블링크를 wiringPi를 이용해 샘플을 실행해 봤다.


일단 wiringPi lib 설치부터... 아래와 같다. 


설치


1. git 설치

sudo apt-get install git-core


2. wiringPi 프로젝트 다운

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


3. build

clone한 위치에 wiringPi안에 들어가서 ./build 실행.

빌드가 이상없이 되었다면 "find / -name "gpio"를 실행해 보자. 

"/usr/local/bin"과 방금 빌드한 곳, 두 곳에 gpio를 발견할 수 있다.

빌드한 곳 gpio 폴더 안에서 ./gpio -v 한 결과와, 

gpio -v 한 결과가 다르다면 gpio 파일을 "/usr/local/bin"에 복사해주라. 

build하면 복사될 줄 알았는데 안된 듯. pi2라서 gpio old version에서 제대로 인식을 못해서 한참 원인을 찾다보니 이거였어.


4. raspberryPi의 핀 번호 및 역할 보기

gpio를 활용하면 보드에 핀 번호를 어떻게 보는지 쉽게 알 수 있다.

"gpio readall" 을 해보면 아래와 같은 결과를 볼 수 있다.     

보드에는 두 줄의 핀이 있는데 rapberryPi2는 위와 같은 순서로 구성되어 있다. 위 표 중앙에 Physical 부분이 보드의 핀 순서와 일치한다. (1,2번이 보드의 전원램프 쪽. 39,40이 usb가 위치한쪽)

Physical을 중심으로 양쪽의 컬럼명이 일치하는 것을 볼 수 있다. (노란색 라인을 참고할 것!)

각 컬럼의 정보는 다음과 같다. 

 BCM 

 Broadcom의 BCM2835 칩에서 사용하는 핀번호

 wPi 

 WiringPi 라이브러리의 핀번호

 Name 

 GPIO의 이름

 Mode 

 IN - 입력모드 ,  OUT - 출력모드

 V

 핀의 값. 1 - 전압이 High상태, 0 - Low상태

 Physical

 핀헤더의 번호

붉은색 라인 부분을 보자.

wiringPi의 blink 샘플을 보면 pin값을 0으로 사용한다. wiringPi에서 0은 wPi가 0인 것이며, 핀헤더 번호는 11번, 핀의 위치는 전원램프 쪽에서 6번째에 위치하다는 걸 알 수 있다. 

이제 샘플 코드를 보자. 


5. 샘플 코드

#include <wiringPi.h>

int main (void)

{

  int PIN = 0;

  wiringPiSetup () ;

  pinMode (PIN, OUTPUT) ;

  int max_count = 5;

  int cnt = 0;

  for (;;)

  {

    digitalWrite (PIN, HIGH) ;

    delay (500) ;

    digitalWrite (PIN,  LOW) ;

    delay (500) ;

    ++cnt;

    if(cnt>=max_count)

        break;

  }

  return 0 ;

}

기존의 샘플 코드에서 LED의 깜밖임이 5번 반복 후 종료하도록 수정했다. PIN변수는 wPi값을 의미한다. 


빌드는 아래와 같이 하면된다.

gcc -o blink blink.c -l:libwiringPi.so.2.25 -I/usr/local/include -L/usr/local/lib

어떤 샘플에서 lib 링크할 때 -lwiringPi 로 되어 있는데 libwiringPi.so 를 링크하겠다는 이야기다. 
새로 받아 빌드한 경우 버전명이 lib 끝에 붙는데 이를 정확히 사용하기 위해서는 위와 같이 입력하면 된다

6. 실행
./blink를 실행해보자. 아래와 같은 결과를 볼 수 있다.




저작자 표시 비영리 동일 조건 변경 허락
신고

'개발/경험 > RaspberryPi' 카테고리의 다른 글

버튼으로 LED, Sound 처리하기  (0) 2015.05.01
blink 샘플 실행  (0) 2015.04.29
기본적이지만 중요 정보 몇가지  (0) 2015.04.18
드디어 왔다!!  (0) 2015.04.17
2015.04.18 22:06

이 글은 개인적으로, 라즈베리파이를 활용한 첫번째 프로젝트이다. 


아내가 집 안쪽에서 라디오 안잡혀서 힘들다고 불평이었다. ipad에 라디오 어플을 설치해줘도 각 방송사마다 별도 어플을 설치해야 되서 힘들다고.. 


고민끝에 라파이로 라디오를 만들어주기로 했다. 


그래서 최근에 라파이를 구매했고, 오늘 라이브러리 설치해서 테스트까지는 했다. 


과정은 아래와 같다.

(* 아래 과정은 http://kocoafab.cc/tutorial/view/340 블로그의 내용을 참고해서 제작되었으며, 짧은 진행을 위해 불필요한 과정 생략, 내 환경과 틀린 부분을 수정하여 제작되었음을 알립니다.)


(* command의 모든 과정은 sudo 명령을 먼저 입력하고 진행하자. 혹은 귀찮다면 나처럼, sudo su를 입력해서 권환을 획득 후 진행해도 된다.) 


1. 일단 패키지 설치를 위해 apt-get 업데이트를 해보자.

   apt-get update

   apt-get upgrade


2. 사운드 드라이버가 설치되었는지 확인합니다. 



만약 설치가 안되었다면 아래 명령을 통해 설치를 해보시기 바랍니다. 

modprobe snd-bcm2835


3. 이제 라디오 방송을 듣기 위해 mplayer를 설치합니다.
우리나라의 라디오 방송은 대부분 Microsoft Media Server (mms , http://goo.gl/XPTGJv 참고)로 전송됩니다. 이를 플레이 할 수 있는 대표적인 플레이어 입니다. 

apt-get install mplayer

설치 후 mplayer config에서 오디오 출력장치에 대한 설정을 수정해야 합니다. 

ctrl+w 로  ao=pulse, alsa, sdl: aalib 부분을 찾아 주석을 처리해 주세요. 

4. 이제 들어봅시다.

아래와 같이 입력해서 라디오를 들어봅시다. 

mms 주소는 인터넷으로 검색해 보시면 많이 나옵니다. 



이상입니다. 


다음 과정은 아래와 같이 진행될 예정입니다. 진행에 문제가 발생할 수 있어, 아래 과정은 변경될 수 있습니다.


1. 라즈베리파이 설정 

2. 전용 플레이어 프로그램 구현

3. 여러 mms 주소를 입력해두고 채널을 전환하는 과정 구현

4. 외부 스위치를 통해 채널 전환하는 과정

5. 설치 구동 영상 


저작자 표시 비영리 동일 조건 변경 허락
신고


티스토리 툴바