라즈베리 파이 활용백서 리뷰

라즈베리 파이가 국내에 보급되면서 많은 이들의 관심을 끌고 있는 와중에 BJ퍼블릭에서 “라즈베리파이 활용백서”를 내놓았다. 개인적으로 라즈베리파이를 가지고 있기 때문에 이 책을 한번 읽어보고 싶었는데 기회가 닿아 실제로 읽어보고 책에 내용대로 따라해 볼 기회를 얻었다.

책의 구성은 6개의 챕터로 나누어진다. 1장에서는 기본적으로 라즈베리파이에 대한 간략한 소개와 함께 기본 환경설정에 대해서 다룬다. 글쓴이는 라즈베리파이를 사용할 때 초기에 네트워크 설정까지만 hdmi 케이블로 직접 모니터와 연결해서 작업하고 보통은 SSH로 라즈베리파이에 접속하여 커맨드라인환경에서 가지고 논다. 하지만 가정에서 미디어센터나 게임용으로도 관심 있는 분들을 위해 GUI로도 설정을 하는 방법들을 상세히 1장에서 다루고 있으므로 참조하면 좋을 것 같다.

라즈베리파이

2장은 본인이 주로 관심갖고 실제 구축한 웹서버와 관련된 내용이 나온다. 이 책을 보기 전까지는 데비안 계열의 라즈베리파이 공식 OS인 라즈비안 위에서 아파치와 mysql을 가지고 웹서버를 구성해서 센서와 연결작업으로 이것저것 테스트를 해보았다.

하지만, 이 책에서는 기본적으로 Arch Linux를 채택하고 nginx, PHP와 Maria DB등 최신의 그리고 새로운 기술들을 접목시켜서 구축하는 설명을 한다. 이 챕터의 내용은 꼼꼼히 다 따라해서 그런것도 있지만  고사양이 아닌 소형 싱글보드에 맞는 최적화된 구성의 웹서버 설치가이드를 제공하는 이 챕터가 다른 챕터의 내용보다 가장 마음에 들고, 유익했다.

웹서버를 기본 설치한 후에 워드프레스를 올리는 설명을 이어서 하는데, 개인적으로 워드프레스는 익숙하게 활용하고 있어 대신 PHP 코드이그나이터 프레임워크를 올려서 웹개발을 하고 있다. 성능은 혼자 가지고 개발하고 놀기에는 아주 만족스럽다. 다만 실제 2장의 내용들을 하나 하나 따라가다 보니 조금 변경된 부분들과 쉘 명령어에 오타가 조금 있어 이 부분에 대한 정정이 필요해 보인다. 다음판에서는 이 부분이 업데이트 되면 좋을 것 같다.

3장에서는 미디어센터용으로 기본으로 제공되는 XBMC에 대해서 설명한다. 간단한 설치 방법 후에 이어지는 내용 설명이 일일이 캡쳐화면으로 제공되어 상세한 반면 컴퓨터와 이런 환경에 익숙한 사람들에게는 다소 과도한 친절에 가까운 설명이긴 하다. 다만 가정에 미디어 센터용으로 아무것도 어떻게 할 줄 모르는 분들이 라즈베리 파이를 처음 접했을 때는 유용한 챕터가 될 것 같다.

4장은 네오지오 에뮬 설치 방법과 실제 네오지오 게임 구동을 안내한다. 직접 따라해 보지는 못했지만 역시나 상세한 설명과 가이드가 제공되니 현재 Arch로 올린 웹서버를 다시 라즈비안으로 바꿀 때 책을 꺼내서 따라해 볼 욕심이 생긴다.

이 책의 또다른 별미가 바로 5~6장이다. 5장은 제어기 활용이란 이름을 달고 있고 6장은 실전 프로젝트 샘플 20개를 제공한다. 라즈베리파이의 장점은 GPIO를 통해서 직접 다양한 하드웨어와의 통신과 연계가 가능하다는 점인데 이 부분에 대해서 상세하게 설명을 해주고 있다. 특별히 나같은 하드웨어와 전자 지식이 다소 부족한 사람에게 빵판에 어떤 부품을 어떻게 배치해야 하는지 위 그림과 유사한 배선도를 제공하고 각 프로젝트마다 친절하게 제공하고있어 따라하기가 무척이나 쉽다. 5~6장은 이 책에서 가장 빛을 발하는 부분이다.

다시 책의 전체 구성으로 돌아오면 이 책은 꼭 처움부터 따라 읽을 필요가 있는 책이 아니다. 자기가 관심 갖는 주제에 따라 때마다 골라보는 쿡북 형식이라 볼 수 있다. 더불어 책의 매챕터는 아래 그림과 같이 챕터의 말미에 친절하게 참고 사이트를 제공하고 있어 추가적인 정보를 확인할 수도 있다.

라즈베리파이-참고

사실 최근 웹상에 많은 정보들이 있기 때문에 어지간하면 구글링으로 모든 정보를 얻을 수 있지만 워낙 정보가 많아서 나에게 꼭 맞는 정보만 찾아서 잘 관리하는 것도 꽤 시간이 드는 일이다. 하지만 이 책은 라즈배리파이를 처음 시작하는 사람부터 어느정도 심도 깊은 프로젝트에 관심있는 중급자 모두에게 흥미로울 주제를 골고루 담고 있어 필요할 때마다 꺼내보는 재미를 가져다 준다.

라즈베리파이-리뷰

 

마지막으로 개인적으로 나는 라즈베리파이를 가지고 놀면서 가끔 잊거나 필요한 내용에 대해서 책 속에서 자주 찾아 볼 것 같은 부분을 북마크 해두면서 이 책을 대하고 있다. 라즈베리파이에 관심갖고 있는 다른 분들에게도 이 책이 좋은 길잡이가 되었으면 한다.

라즈베리파이 Arch Linux 고정ip 설정하기

저는 라즈베리파이를 웹서버로 사용할 예정이기에 가벼운 OS를 올리기 위해서 라즈베리파이의 기본 OS가 아닌 Arch Linux를 설치하기로 계획했습니다. 설치는 간단하지만 고정ip 설정에서 이틀정도 허비를 해서 방법을 공유합니다. OS 이미지 다운 및 설치는 산딸기마을 홈페이지를 참조하시면 쉽게 따라할 수 있습니다.

설치 후 우선 netctl 명령어를 통해서 고정ip 설정을 합니다. 특별한 경우가 아닌 이상 인터페이스는 eth0입니다. 혹시 의심스러우면 다음의 명령어 중 하나로 확인해 봅니다.

확인이 끝났으면 netctl에 example 폴더 안에 설정파일 template이 있으므로 이 파일을  netctl 폴더 밑으로 인터페이스 이름으로 복사합니다.

nano로 복사한 파일을 열어서 ip, gateway, dns등을 설정합니다.

파일의 대략적인 설정은 다음과 같습니다.

설정을 마치고 난 후 부팅시에 netctl이 작동하도록 만들기 위해서 다음과 같이 명령어를 칩니다.

설정을 마치면 다음 화면처럼 시스템데몬으로 netctl의 eth0 설정이 링크가 걸립니다.

netctl 설정

여기서 많이 해맸습니다. 이렇게 하면 다 끝인가 하고 부팅을 하거나 netctl start eth0을 해봐도 에러가 떴습니다. 문제는 기본으로 설정되어 있는 dhcpd서비스를 제거해야 하지 않아서 충돌이 난 것입니다. 다음 그림의 빨간 상자 안에 있는 파일을 제거해야 합니다.

networking

이 파일을 제거하고 부팅을 하면 정상적으로 고정 ip 설정이 완료됩니다.

라즈베리파이에 USB 마운트 하기

라즈베리파이에서 USB로 파일을 옮기려고 시도한다면 당연히 윈도우처럼 자동 마운트가 안 된다. 수동으로 하거나  fstab으로 작업을 해야 한다. 구글링으로 간단하게 방법을 찾았기 때문에 뻔한 내용이라 포스팅 안 할까 하다가 한글화(?) 및 리뷰용으로 그래도 남겨둔다. 참고는 다음 사이트에서 했다.

http://www.xappsoftware.com/wordpress/2013/10/28/how-to-mount-your-external-usb-drive-on-the-rasberry-pi-running-raspbian/

일단 내가 사용하는 USB 파일 시스템이 NTFS이라 이걸 지원할 수 있는 모듈을 아래와 같이 깔아야 한다. (Fat32는 기본으로 지원한다고 한다.)

설치 후에 작업은 일반적으로 리눅스에서 파일시스템 잡아서 마운트 하는 것과 동일하다. USB를 꽂았다면 fdsik로 확인할 수 있다. 아래 명령어는 fdisk로 파일시스템을 확인해서  USB가 꽂혀 있을 드라이브명을 “sda” 로 검색하는 것이다.

usb가 안 꽂혀 있으면 당연히 아무런 결과가 나오지 않고 꽂으면 결과가 나오게 된다.

usb fdisk 확인

USB 드라이브를 정상적으로 인식했으므로 이제 USB를 마운트 시킬 폴더를 생성하고 권한을 사용자에게 준다. 나는 mnt 밑에 usb_16gb 폴더를 생성했다.

다 끝났다. 이제 마운트를 하면 끝이다.

마운트를 하기 전에는 폴더를 보면 아무런 하이라이트가 안 되어 있지만 마운트 후에는 폴더에 하이라이트가 되어있는 것을 확인할 수있다. 즉 제대로 USB 드라이브가 마운트 되었다는 뜻이다.

USB 드라이브 마운트 확인

사용을 마쳤으면 언마운트를 해야 한다. 윈도우처럼 함부러 빼면 좋지 않다. ㅠ

매번 마운트하기 귀찮으니 fstab에 등록하면 마운트 작업을 자동화할 수 있다. sudo 로 권한에러가 나면 루트로 바꿔서 작업하면 된다.

 

아두이노와 라즈베리파이 시리얼 통신하기

대학원 수업 프로젝트 아이디어로 위 슬라이드의 실내 먼지측정 시스템을 제안했습니다. 아이디어를 제안하면서 전부터 써보고 싶었던 아두이노와 라즈베리파이를 활용하겠다는 계획을 담았지요. 그 덕에 오늘 수업 재료비로 이 두녀석을 드디어 받았습니다. 하하핫!
2013-10-11 16.09.14

아두이노를 활용하는 것은 그리 어렵지 않고, 라즈베리파이도 리눅스 사용이 익숙하신 분들은 어렵지 않게 기본 셋팅을 각각의 공식 사이트에 들어가서 확인할 수 있답니다. 저도 구매한 microSD 카드에 라즈비안 OS 이미지를 심고 기본 셋팅(비번설정, 패키지 업데이트)을 먼저 했습니다.

드디어 본래 계획한 프로젝트대로 아두이노와 라즈베리파이의 간단한 연결테스트를 시작합니다. 참고는 거의 전적으로 이 블로그입니다.

http://blog.oscarliang.net/connect-raspberry-pi-and-arduino-usb-cable/

제가 한글로 적었다는 것과 몇가지 차이점 빼고는 동일합니다.

일단 아두이노에서는 다음과 같이 시리얼 연결을 하고 정해진 시간마다 “Hello Pi”라는 문자열을 날리는 코드를 다음과 같이 작성합니다.

C코드 같으면서도 딱 봐도 무슨 의미인지 들어오지요? 이래서 비전공자도 쉽게 아두이노를 가지고 놀 수 있다는 거지요 ^^ 자 이제 라즈베리파이 녀석에서는 파이썬으로 간단하게 시리얼 연결 코드를 작성합니다.

아주 간단한 코드이지요. 시리얼 설정과 함께 ser객체 생성 후 while 루프 안에서 계속 데이터를 받아서 출력하겠다는 것이지요. 이대로 따라하면 잘 될 것 같은데 위 코드를 실행하면 에러가 뜹니다. 왜냐하면 serial 모듈이 이 라즈베리 파이 안에 없기 때문이지요. 따라서 python의 pip를 활용해서 serial 모듈을 다운받아야 정상적으로 작동합니다.

요렇게 serial 모듈까지 설치하고나면 짜잔

2013-10-11 18.57.40

사진과 같이 모니터에 “Hello Pi”가 거침없이 찍혀 내려오는 모습을 보실 수 있습니다. 와우!~ 눈물이 날 뻔…. 아니 그 정도의 감동은 아니었지만 “Hello Pi”가 모니터에 찍힐 때 감동은 C를 처음 배울 때 “Hello World”와 비견될 정도의 감동이네요.

간간히 프로젝트를 진행하면서 아두이노와 라즈베리파이 관련 포스팅을 하겠습니다. 아! 그리고 라즈베리파이보다 스펙이 좀 더 좋은 비글본 블랙을 체험단으로 무상으로 곧 받게되어 비글본 블랙을 가지고도 포스팅을 올릴 예정입니다. ^^