비글본 블랙 사용후기


1편(개봉기): http://wakalics.blogspot.kr/2013/10/beaglebone-black.html

2편(프로젝트 실패기): http://wakalics.blogspot.kr/2013/11/beaglebone-black-3d.html

3편(후기): http://wakalics.blogspot.kr/2013/12/beaglebone-black.html

 

 

한달여에 거친 비글본 블랙 체험단 활동이 끝이 났습니다.

사실, 한달 전에 이미 끝난 활동입니다만, 제가 하려던 프로젝트를 실패한 이후로 몇가지 시도를 더 해보느라 후기가 좀 많이 늦어졌습니다.

하지만, 안타깝게도 원래의 프로젝트를 완성시키지는 못했습니다.

 

 

 

 

 

 

비글본 블랙은 상당히 좋은 장치입니다.

 


I/O포트가 92개나 되어서(실제로 사용 가능한 포트는 67개 뿐이지만) 확장성이 굉장히 뛰어납니다. 저 말고 다른 체험단 분(http://pmice.tistory.com/248)은 이 I/O 프트를 활용해 CNC 라우터를 구동했습니다.

 


저는 3D 프린터를 구동할 때 USB를 이용해 시리얼 통신을 하려고 했습니다. 물론 직접 코드를 짜서 비글본 블랙이 자체적으로 g코드를 해석하여 스테핑모터를 직접 구동할 수도 있겠죠. 이렇게 하면 효율도 높겟지만 아직 저는 코딩을 잘 못해서 이미 나와있는 어플리케이션인 PrintRun(PronterFace)를 사용할 계획이었습니다.

 

 

 

 

 


메인보드가 노출되어 있어 조금 불안정해 보이긴 합니다.(모 라즈베리파이 유저는 메인보드 뒷면을 만지다 보면 파이가 혼자 재부팅되는 경우가 있었다고 보고하기도 있습니다. 비글본 블랙도 비슷한 구조인 이상 같은 현상이 일어날 것으로 보입니다.)

저렴한 가격이 모든 것을 용서하긴 하지만, 아무래도 비글본 블랙에 쓰인 것과 같은 고성능 mcu는 AVR같은 저사양 mcu에 비해 정전기에 약할 것으로 보입니다.

 

 


저는 이와 같은 부족한 점을 해결하기 위해 실리콘 코팅제를 사용했습니다. PCB에 뿌린 후 모두 경화된 이후에는 얇아서 잘 보이지 않지만, 데이터쉬트에는 절연성능이 높다 하니 웬만한 정전기에는 걱정이 없을 듯 합니다.

 

 

 

 


일단 기본적으로 이더넷 포트와 USB 2.0 포트 2개(풀사이즈 하나와 OTG 하나)를 지원합니다. 제 프로젝트에선 키보드와 마우스, 그리고 프린터를 연결해야 하다 보니 USB허브가 필요합니다.

 


라즈베리 파이와 달리 USB가 아닌 외장전원 포트로 전원을 공급받을 수 있는 점도 이점 중 하나입니다. (라즈베리 파이의 경우에는 GPIO의 핀에 직접 전원을 넣어주어야 합니다.) 이와 같이 외장 전원 포트를 지원하기에 USB포트를 OTG로 사용 가능합니다.

 

 

 

 

 


비글본 블랙은 micro-HDMI 포트, 그리고 외장 전원을 지원합니다. 전원 버튼과 리셋 버튼도 따로 있구요.

 

 

 

 

 


메인 CPU로는 TI의 AM335x 1GHz ARM® Cortex-A8 를 사용합니다. 메모리는 512MB DDR3 RAM이 장착되어 있습니다.

이외에도 2GB 8-bit eMMC on-board flash storage가 장착되어 기본적인 os를 설치할 수 있고, 이외에도  PRU 32-bit microcotrollers가 두 개 장착되어있어 I/O 포트를 관리합니다.

 

비글본 블랙을 사용해 본 결과, 정말 그 확장성이 무궁무진하다는 생각이 들었습니다.

아두이노의 경우, 성능 면에선 AVR에 비해 그다지 나을 곳이 없지만, AVR에 비해 매우 높은 편의성과 여러가지 호한 쉴드로 인해 현재 마이크로프로세서의 왕으로 군림하고 있습니다. 심지어, 오픈소스 3D 프린터의 제어보드도 아두이노를 메인 제어 기판으로 사용합니다. 대표적으로 RAMPS만 해도 아두이노 메가 2560에 올리는 쉴드의 형태입니다.

비글본 블랙은 확실히 아두이노에 비해 어렵고, 정보가 적습니다. 하지만, 비글본 블랙의 경우에는 처음 시작하는 사람이 사용법을 익히는 과정이 정말 쉽게 되어있습니다. 비글본 블랙이 이 점을 잘 살린다면, 아두이노처럼 널리 사용될 수 있을 것 같습니다.

 


본 제품은 ICbanQ에서 후원하고 ICbanQ 무상 체험단 10기 활동의 일환으로 체험 제품을 제공받아 작성되었습니다.

 


[출처] 비글본 블랙 사용후기 (오픈 H/W 마스보드&비글본블랙 사용자 Cafe) |작성자 Prometheus
 

 

[BeagleBone Black]비글본 블랙 + 3D 프린터? (부제: 프로젝트 실패기)


1편(개봉기): http://wakalics.blogspot.kr/2013/10/beaglebone-black.html

2편(프로젝트 실패기): http://wakalics.blogspot.kr/2013/11/beaglebone-black-3d.html

3편(후기):

 

 

 

안녕하세요?  한국과학영재학교 1학년에 재학중인 조정민입니다.

 

 


제가 다니는 학교는 전교생이 모두 기숙사를 사용해야 합니다.


그리고, 학생들이 밤 새도록 게임하는것을 막기 위해 밤 11시 20분에 노트북을 입고해야 하고, 다음날 오전 5시 30분에 노트북이 들어있는 책꽂이의 자물쇠가 풀립니다.

 

 


여기까지는 좋습니다만, 현재 저는 직접 만든 3D 프린터,  Prusa mendel을 운용중입니다.


아시다시피, 3D 프린터는 출력하는데 시간이 상당히 오래 걸립니다. 작은것은 괜찮지만, 큰 것은  출력하는데만 하룻밤을 훌쩍 넘기죠. 그렇기에 일반적인 3D 프린터 유저들은 밤에 출력을 걸어놓고 아침에 일어나서 확인합니다.

 

 


저의 문제는 여기서부터 시작됩니다. 3D 프린터를 구동하려면 컴퓨터가 필요한데, 밤에는 노트북을 입고해야 하기 때문에 밤새도록 3D 프린터를 구동할 수 없는 것입니다.

 

 


물론, SD카드에 G코드(3D 프린터를 움직이기 위한 명령어)파일을 넣고 출력하면 밤새도록 출력하는 것이 가능합니다만, 이 경우 노트북을 연결해 Z축 영점과 베드 수평을 잡아주고, SD카드의 파일을 출력하도록 G코드로 명령어를 넣어주어야 하므로 여간 귀찮은 것이 아닙니다.

 

 


여기서 잠시, 3D 프린터의 툴체인에 대해 말씀드리겠습니다 3D 모델로 3D 프린터를 구동시킬때는,

 

 


1. Slicer 을 이용해 3D 모델은 G code(3D 프린터용 명령어)로 전환한다.


2. G code를 Printer Host를 이용해 시리얼 통신으로 3D 프린터 제어보드에 전송한다.


3. 3D 프린터 제어보드의 펌웨어가 각 축(X,Y,Z)의 스텝모터를 구동시켜 출력한다.

 

 


의 과정을 따릅니다.

 

 


여기서, 밤새도록 걸리는 과정은 2번입니다.


또한, 많은 연산이 필요해 컴퓨터의 성능이 중요시되는 과정은 1번 뿐입니다.

 

 


그러면, 노트북으로 슬라이싱을 한 Gcode를 ARM 기반의 소형 컴퓨터를 이용해 Hosting한다면 어떨까요?

 

 


이 경우, Host 프로그램을 이용해 베드의 수평이나 노즐/베드 예열, Z축 염점 세팅이 가능하므로 노트북을 연결할 필요가 없고,


FTP서버를 구축하면 USB메모리 등을 이용해 G code를 이동시킬 필요 없이 서버에 업로드만 하면 됩니다.

 

 


이런 아이디어를 가지고, 라즈베리파이로 삽질을 시도하려던 중, ICbanQ의 체험단 모집 공지가 눈에 들어왔고, 위의 아이디어로 신청을 해 체험단에 선정되게 되었습니다.

 

 

 

 


본격적인 프로젝트 진행입니다.

비글본 블랙을 IO 보드로 쓸 때는 동봉된 케이블만으로도 충분하지만, 저는 비글본 블랙을 독립된 컴퓨터로 사용할 것이기에 모니터, 마우스, 키보드가 필요합니다.

 


키보드와 마우스는 어렵지 않게 구할 수 잇었고, 문제는 모니터입니다.

비글본 블랙은 HDMI Out만을 지원합니다.(라즈베리파이는 HDMI와 RCA를 지원합니다.)

하지만, HDMI를 지원하는 모니터는 상당히 고가입니다.

그렇기에 DVI젠더를 사용해야 합니다.

 


하지만, 이 경우에도 DVI를 지원하는 모니터가 필요합니다.

안타깝게도, 제게는 DVI를 지원하는 모니터가 없습니다.

 


집에 잇는 모니터는 상당히 오래되어 VGA만을 지원하구요, 심지어 제가 사는 곳은 학교 기숙사(부산)인데 집은 서울이라 이 모니터를 사용하기도 힘듧니다.

 


학교에서 모니터를 빌려보려고 했지만 DVI를 지원하는 모니터들은 최근에 구입한 것이라 빌려줄 수 없다는 답변을 들었습니다.

 


결국 남은 것인

1. 연구실에 있는 CRT 모니터(VGA Input 지원)

2. 교실마다 설치되어 잇는 빔프로젝터(VGA Input 지원)

 


뿐입니다.

 


결국, 비싼 돈을 지불하고 HDMI to VGA 젠더를 구입했습니다.

물론, Micro HDMI포트를 가지고 있는 비글본 블랙을 위해 Micro HDMI to HDMI 젠더도 구입했습니다.

 

 

 

 


며칠 후, ICBanQ에서 주문한 젠더 두 개가 도착했습니다.

 


VGA 젠더는 노트북에 연결해 사용해 본 결과 아주 잘 작동합니다.

 

 

 

 


그런데 아뿔싸! HDMI젠더가 Micro HDMI가 아닌 Mini HDMI 젠더입니다.

 

 

 

결국, 아까운 배송비 2,500원을 다시 내고 Micro HDMI 젠더를 주문했습니다.(제 리뷰가 늦어지게 된 주원인입니다.

 

 

 

 

 


이제, 이 녀석과 비글본 블랙, VGA 젠더를 연결해 사용할 차례입니다.

 

 

 

 

대략 이와 같이 연결됩니다.

 

 

 

 

그 다음은 모니터와의 연결입니다.

 

 

 

 


비글본 블랙에 전원을 인가하고 모니터의 VGA 케이블을 연결하였습니다. 하지만!

 

 

 

 

 

 

모니터에는 연결되지 않는다고 표시됩니다.

 


두번째 방안인 빔프로젝터에도 연결해 보았으나, 마찬가지로 입력 신호가 없다는 문구가 표기되었습니다.

반면, 노트북을 HDMI to VGA 젠더로 연결했을 때는 모니터와 빔프로젝터 모두에서 정상적으로 작동했습니다.

(모니터에서 신호없음이 뜬 이후로는 제정신이 아닌 상태로 삽질을 하는 바람에 사진이 남아있지 않습니다....)

 


이유를 찾아보니, HDMI와 DVI는 디지털 방식이지만 VGA는 아날로그 방식이라 HDMI to VGA는 내부에 신호를 바꿔주는 칩이 필요한데, 이 칩이 특정 운영체제와 호환되는 듯 합니다.

 


결국, "모니터가 없어서"라는 어이없는 이유로 프로젝트는 무기한 연기되었습니다;;;;

 


학교에 모니터를 요청해 놨으니, 이후에 DVI를 지원하는 모니터를 빌리게 된다면 그 때 다시 재개할 수 있을 것 같습니다.

 


후에, 다시 하게 된다면, 다시 올리도록 하겠습니다.

 

 

 

감사합니다.

 

 

 

본 제품은 ICbanQ에서 후원하고 ICbanQ 무상 체험단 10기 활동의 일환으로 체험 제품을 제공받아 작성되었습니다.

 


블로그 주소: wakalics.blogspot.com

 


[출처] [BeagleBone Black]비글본 블랙 + 3D 프린터? (부제: 프로젝트 실패기) (오픈 H/W 마스보드&비글본블랙 사용자 Cafe) |작성자 Prometheus
 

 

사용기 - 안전 운전 표시기를 만들자

 

처음 사용하는 제품이라 생소하여 환경설정하는데도 쉽지가 않다.
우선 목표는 차량용 안전 운전 표시기를 만들려고 하였다.

쉽게 말하자면 전광판을 표시장치 같은것이다.

1차 목표는 BBB에 linux를 심고 PC에서 cross compile해서 object를 넘겨서 동작 시키는 것이다.

BBB에 ubuntu 13.04를 심는 것 까지는 쉽게 자료를 찾을 수 있었다.

예제도 있었고 마침 BBB에 Angstrom이 깨져서 바로 ubuntu로 설치 해 넣고 minicom을 접속을 해서 사용하였다.

아래 캡쳐 그림에서 보면 Linux kernel 3.8.13-bone28 armV7l로 버젼이 나온다.

 

 

 

 
이상없이 잘 되고 있다. 다만 오래된 notePC를 사용하다 보니 속도가 좀 느려서 기다리는 동안 애가 탄다.

notePC에는 ubuntu 11.10를 설치 해서 사용하고 있다. 지원이 안되서 어쩔 수 없다.

환경은 eclipse 설치 했다. 컴파일러 버젼은

 


위 그림에서 보이는 바와 같다. gcc는 ubuntu linaro 4.6.1이고 cross compiler는 arm-linux-gbueabihf-gcc 4.8.2 20130624 이다.

더 찾아 봤는데 이정도면 최선인거 같다.

eclipse 환경설정과 toolchain은 검색을 참고 하시고 일단은 생략.

이것만 해도 시간이 빡빡하다. 일일이 검색해 보면서 하나씩 하다보면 시간이 너무 많이 걸린다. 첨 접하는 상태에서 한번에 하다보니 뭘하는 지 정신도 없다. 여유를 갖고 천천히 해야 기억에도 남고 내것이 될 터인데 그냥 쫒겨서 하니 남는게 별로 없다.

다시 몇번 해 보고 머리에 담아야 될거 같다. 2차 목표인 센서와 통신을 할 때 다시 해 봐야 겠다.

이제 소스 컴파일이다. 이것도 검색해 보니 누군가 해 놓은게 있다. 원하는 거다 GPIO를 mmap로 컨크롤 해 놓았다.

멋지다. 찾던거다. 나중에 Device로 등록하는 방법만 찾으면 완벽하게 원하던 게 될거 같다.

일단 PC버젼과 ARM버젼 두가지다 컴파일 해 보았다.

 

 

 

일단 project생성하고 소스 넣어서 환경설정 한다.
아래 HD44780은 다른 소스인데 한번 해 볼려고 받아서 넣어 놨다.

이것도 좀 있다가 해 봐야겠다. 잠시 보류....

 

 

project 컴파일후 같은 이름으로 덮어 씌워 버리기 전에 이름을 g[iotestARM으로 바꿔 놓았다.

file로 정보를 보니 ARM 버젼이 맞다. 근데 Linux 3.1.1로 나온다. 참고고

 


이건 gcc로 컴파일 후 file정보를 보니 Intel 80386버전이다. Linux는 2.6.15로 나온다.

잘 된거 같다.

이제 gpiotestARM을 BBB에 보내서 실행 시기는 된다.

간단하게 scp gpiotestARM ubuntu@xxx.xxx.xxx.xxx:/home/ubuntu 를 사용해서 보냈다.

용량이 작으니 금방 보내 진다. 나중에 용량이 커지면 ftp를 사용하는게 좋겠다.

출력은 동작 확인만 하면 되니 따로 LED를 달지 않고 기존에 달려 있는 걸 사용했다.

 

 

 


본 제품은 ICBANQ에서 후원하고 ICBANQ 무상 체험단 10기 활동의 일환으로 체험 제품을 제공받아 작성 되었습니다.

[출처] 사용기 - 안전 운전 표시기를 만들자 (오픈 H/W 마스보드&비글본블랙 사용자 Cafe) |작성자 동네얼신

 

[사용기] 실시간 공기질 모니터링 서버 만들기

 

 


http://cafe.naver.com/ohboard/146  
 

 


(*이 포스팅은 ICBANQ 10기 무상체험단에 선정되어 작성하는 비글본 블랙 개봉기입니다.)

비글본 블랙은 arm 프로세서를 달고 많은 GPIO를 제공하는 소형 컨트롤러 보드임과 동시에 OS가 구동되는 싱글보드 컴퓨터입니다. 지난 10월 ICBANQ 무상체험단을 통해 비글본 블랙을 제공받아 본 글에서는 다음과 같은 프로젝트를 비글본 블랙을 통해서 테스트 하고자 합니다.

 

 

 

 


모니터링 시스템 구성

간단한 센서 값을 아두이노로 받아 이를 비글본 블랙에서 저장하고 웹서버를 구동시켜 웹을 통해 데이터를 확인하는 테스트입니다. 이 테스트를 위해서 지금까지 준비해 온 작업들에 대해서는 이전의 글들을 참조하시면 됩니다.
•비글본 블랙 개봉기
•비글본 블랙: 우분투 설치
•비글본 블랙: nginx+php+mysql설치

위의 포스팅에서 지금까지 한 일은 우분투를 설치했고, 웹서버 구동을 위한 환경 설정을 비글본 블랙에 완료했습니다.

이제 본격적인 작업으로 먼저 먼지센서와 아두이노 연결작업을 합니다. 사용한 센서는 일반 공기청정기에 사용되는 ( 1마이크로미터 이상) 먼지 입자 개수를 측정할 수 있습니다. 아두이노에서 센서로부터 값을 받아서 시리얼로 30초마다 보내는 작업을 다음과 같이 코딩합니다. 코드는 아래 주석에서 참조했습니다.

 

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44
/*
 Interface to Shinyei Model PPD42NS Particle Sensor
 Program by Christopher Nafis
 Written April 2012
 
 http://www.seeedstudio.com/depot/grove-dust-sensor-p-1050.html
 http://www.sca-shinyei.com/pdf/PPD42NS.pdf
 
 JST Pin 1 (Black Wire)  => Arduino GND
 JST Pin 3 (Red wire)    => Arduino 5VDC
 JST Pin 4 (Yellow wire) => Arduino Digital Pin 8
 */
 
int pin = 8;
unsigned long duration;
unsigned long starttime;
unsigned long sampletime_ms = 30000;
unsigned long lowpulseoccupancy = 0;
float ratio = 0;
float concentration = 0;
 
void setup() {
  Serial.begin(9600);
  pinMode(8,INPUT);
  starttime = millis();
}
 
void loop() {
  duration = pulseIn(pin, LOW);
  lowpulseoccupancy = lowpulseoccupancy+duration;
 
  if ((millis()-starttime) > sampletime_ms)
  {
    ratio = lowpulseoccupancy/(sampletime_ms*10.0);  // Integer percentage 0=>100
    concentration = 1.1*pow(ratio,3)-3.8*pow(ratio,2)+520*ratio+0.62; // using spec sheet curve
    //Serial.print(lowpulseoccupancy);
    //Serial.print(",");
    //Serial.print(ratio);
    //Serial.print(",");
    Serial.println(concentration);
    lowpulseoccupancy = 0;
    starttime = millis();
  }
}

 

이 코드로 이제 아두이노에서는 먼지의 concentration값(측정된 먼지량)을 시리얼 통신으로 30초마다 계속 보내게 됩니다. 다음은 아두이노로부터 비글본 블랙이 이 값을 받아올 수 있도록 해야 합니다. 연결은 간단히 usb가지고 합니다. 먼저 비글본 블랙에 아두이노를 연결하기 전에 현재 연결된 디바이스를 다음과 같이 확인합니다.

 

 

 

 

비글본 블랙 디바이스 확인이제 아두이노와 비글본 블랙을 usb로 연결해 봅니다. 아래 사진은 센서와 아두이노 그리고 비글본 블랙이 연결된 모습입니다.

 

 

 

 

 

 

시스템 연결 사진 USB로 비글본 블랙과 아두이노가 연결되었다면 다시 비글본블랙에서 연결된 디바이스를 확인합니다.

USB 연결 후 확인

 

 

 

 

위와 다르게 ‘ttyACM0″가 추가된 것을 알 수 있습니다. 이 녀석으로 시리얼 연결을 하고 값을 받아오게 됩니다. 제대로 아두이노가 usb연결되었는지 확인하는 방법은 아래와 같이 lsusb를 통해서도 알 수 있습니다.

 

 

 

 

스크린샷 2013

이제 시리얼로 아두이노로부터 값을 받는 건 파이썬으로 간단히 코딩할 수 있습니다. 하지만 파이썬에서 시리얼로 데이터를 받아오려면 먼저 pyserial 라이브러리를 설치해야 합니다.

 

 

1

2
sudo apt-get install python-pip
sudo pip install pyserial

 

설치하고 나서 다음과 같이 일단 간단히 연결확인용 코드를 작성해 봅니다.

 

 

1

2

3

4

5

6

7
import serial
 


ser = serial.Serial('/dev/ttyACM0', 9600)
 
while 1 :
    dustVal = ser.readline()
    print dustVal,

 

그리고나서 실행해보면 다음과 같이 센서의 값이 비글본 블랙에 전송됨을 알 수 있습니다.

 

 

 

 

스크린샷 2013

여기까지 센서 연동을 확인했고 이제 센서로부터 받은 데이터를 db에 넣기 위한 준비를 합니다. 파이썬 커넥터를 다음과 같이 설치합니다. (pip로 설치하려 했으나 잘 안되었습니다.)

 

 

1
sudo apt-get install python2.7-mysqldb

 

phpmyadmin에서 test 디비에 다음과 같이 간단한 테이블을 생성합니다.

 

 

 

 

 

스크린샷 2013 테스트용 데이터를 몇 개 삽입하는 코드를 통해서 파이썬에서 정상적으로 디비로 데이터가 들어가는 지 확인해 봅니다.

 

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15
import MySQLdb
 
db = MySQLdb.connect("localhost", "test", "password", "test")
curs=db.cursor()
 
try:
    curs.execute("""INSERT INTO test1  values (default, 100, "test1")""")
    curs.execute("""INSERT INTO test1  values (default, 200, "test2")""")
    curs.execute("""INSERT INTO test1  values (default, 300, "test3")""")
    db.commit()
    print "End db commit"
 
except:
    print "Error: db commit"
    db.rollback()

 

실행 후 정상적으로 코드가 작동하면  데이터가 입력되었음을 확인할 수 있습니다.

 

 

 

 

여기까지면 다 왔습니다. 테스트 용으로 이제 간단히 먼지 센서 값을 db에 넣고 웹페이지에서 보여주기로 합니다.

시간이 많으면 데이터를 그래프로도 보여주고 할 수 있겠지만 일단은정말 간단히 그냥 값만 테이블로 뿌려주기로 합니다. 자 다음과 같이 정상적으로 값을 받아서 보여줍니다.

 

 

 

 

센서 모니터링 페이지

 

정리하자면, 지금까지 한 모든 작업이 비글본 블랙 위에서 이루어진 것입니다. 간단한 웹서버용으로는 충분히 그 진가를 발휘할 만 합니다. 아쉽게도 리소스를 줄이기 위해 arch리눅스를 올려보지는 못했지만 그래도 우분투 위에 nginx를 올려 간단하게 테스트 해 본것으로는 불편함이 없었습니다.

저는 전자 쪽 지식은 부족해서 다른 테스트는 해볼 수 없었지만 소형 컴퓨터로, 서버로서 비글본 블랙의 성능을 알아볼 수 있는 체험이었습니다.

[출처]  [사용기] 실시간 공기질 모니터링 서버 만들기 (오픈 H/W 마스보드&비글본블랙 사용자 Cafe) |작성자 jwj0831

 

미세먼지 측정기 제작!!

먼지센서, 아두이노 나노, 이더넷 묘듈 등을 이용해
미세먼지 측정기를 만든 사례를 소개시켜드립니다^^
ICbanQ에서도 쉽게 구할 수 있는 제품들을 통해
탄생한 미세먼지 측정기!!
함께 보실까요??


[사용기] 우분투 설치부터 LAMP 설치 및 워드프레스 설치 운용기

비글본블랙 보드를 만져본지 벌써 한달이 다되어 간다.
생각보다 활용도가 좋아 너무 만족하고 있다.

 


우선 개봉기에서는 간단하게 USB연결부터 드라이버설치, 그리고 스크립트 및 IDE cloud9를 이용한 개발방법까지 살펴봤었다.

다시 한번 빠뜨린부분이 없는지 확인하자. (LED 내용도 중요한데 빠져 있어 내용을 올린다.)

•USR0 is configured at boot to blink in a heartbeat pattern
•USR1 is configured at boot to light during microSD card accesses
•USR2 is configured at boot to light during CPU activity
•USR3 is configured at boot to light during eMMC accesses

 


이번에는 사용기에 대한 내용을 정리해보고자 한다.

내용은 아래와 같다.

 


---------------------------

1. 최신 Angstrom  리눅스 설치

2. eMMC에 우분투 설치

3. apache, mysql, php 설치

4. wordpress 설치 및 설정

5. 설치 후 운용

6. 마무리
---------------------------

 

1. 최신 Angstrom  리눅스 설치

제품 출시 후 지속적인 업데이트가 이뤄지고 있으며, 최신 상태를 유지하기 위해 업데이트를 진행해야 한다. (업데이트는 윈도우에서 진행하였다.)

 


 1-1. 이미지 다운로드

   - microSD에서 구동하기 원할 경우 다운로드

 

    BeagleBone (Runs on BeagleBone Black as well without flashing the eMMC)
•Angstrom Distribution (BeagleBone, BeagleBone Black - 4GB SD) 2013-06-20 - more info

   - eMMC에 넣어 구동하기 원할 경우 다운로드

    BeagleBone Black (eMMC flasher)
•Angstrom Distribution (BeagleBone Black - 2GB eMMC) 2013-06-20 - more info - bittorrent

 


 1-2. 압축해제

   - 7zip을 설치하여 압축을 해제하면 img파일을 얻을 수 있다.

 


 1-3. 이미지 설치 프로그램

   - win32-image-writer 프로그램을 이용하여 img파일을 타켓 드라이브에 설치한다.

 


 1-4. microSD로 eMMC에 설치

   - microSD를 삽입한 후 전원을 연결하면 자동으로 업데이트가 진행된다. (40~60분정도 걸린다. 참고 다른 일을 하자.)

   - 업데이트가 완료되면 4개의 LED가 켜져있게 된다. (이후 SD를 제거하고 재부팅하면 최신 내용으로 업데이트 된다.)

 


2.  eMMC에 우분투 설치

 2-1. 설치전 준비

   - micro HDMI 케이블과 키보드, 인터넷 케이블을 준비하여 연결한다.

 

 2-2. 우분투 이미지 파일 다운로드 (많은 분들이 기본으로 우분투를 설치하여 사용하기 때문에 자세한 설명은 생략한다.)

   - https://rcn-ee.net/deb/flasher/saucy/BBB-eMMC-flasher-ubuntu-13.10-2013-10-25.img.xz


   - win32-image-writer 프로그램을 이용하여 img파일을 타켓 드라이브에 설치한다.

   - microSD를 삽입한 후 전원을 연결하면 자동으로 업데이트가 진행된다.

 


3. apache, mysql, php 설치 (LAMP server (Linux Apache Mysql Php))

 3-1. 설치전 업데이트 진행

      sudo apt-get update

      sudo apt-get upgrade

  

 3-2. MySQL 설치

      sudo apt-get install mysql-server

 


 3-3. Apache 설치

     sudo apt-get install apache2

     sudo service apache2 start

 

 3-4. PHP 설치

     sudo apt-get install php5 libapache2-mod-php5 php5-mysql

     sudo apt-get install php5-gd (gd라이브러리가 필요한 경우)

 


4. wordpress 설치 및 설정

 4-1. 워드프레스 다운로드

    ubuntu@ubuntu-armhf:~$ wget -O wordpress.tar.gz http://wordpress.org/latest.tar.gz

    ubuntu@ubuntu-armhf:~$ tar -xvpzf wordpress.tar.gz

 

 4-2. 데이터베이스/유저 생성

    mysql -u root -p

    CREATE DATABASE wordpress;

    CREATE USER wordpressuser@localhost;

    SET PASSWORD FOR wordpressuser@localhost= PASSWORD("password");

    GRANT ALL PRIVILEGES ON wordpress.* TO wordpressuser@localhost IDENTIFIED BY 'password';

    FLUSH PRIVILEGES;

    exit

 

 4-3. 워드프레스 설정

    cp ~/wordpress/wp-config-sample.php ~/wordpress/wp-config.php

    sudo nano ~/wordpress/wp-config.php

 

 4-4. 워드프레스 파일 복사

    sudo rsync -avP ~/wordpress/ /var/www/

    cd /var/www/

    sudo chown www-data:www-data * -R

    sudo usermod -a -G www-data username

 


5. 설치 후 운용

   - 아래의 이미지로 설치 후 운영되고 있는 화면을 캡쳐했다.

 

 

 

 

6. 마무리

 - 비글본 블랙을 사용하면서 '참 물건이다.' 싶은 생각이 많이 들었다. (할 수 있는게 많아서다.)

    현재 회사에서 IR 관련해서 테스트를 진행하고 있는데, (IR 수신 모듈을 이용하여 리모콘(lirc 데몬 활용) 키 값을 얻어오는 프로젝트를 진행하고 있다.)

    쉽게 접근할 수 있어 든든한 마음이 들었다. 기회가 되면 해당 내용도 포스팅해서 올려 놓도록 하겠다.

    이런 테스트를 가능하게 해준 ICbanQ에게 무한의 감사를 드립니다.

 


본 제품은 ICbanQ에서 후원하고 ICbanQ 무상 체험단 10기 활동의 일환으로 체험 제품을 제공받아 작성되었습니다.

 

[출처] [사용기] 우분투 설치부터 LAMP 설치 및 워드프레스 설치 운용기 (오픈 H/W 마스보드&비글본블랙 사용자 Cafe) |작성자 아랏차차버럭

 

제어 보드로 사용해본 비글본블랙(BeagleBone Black) 사용후기.

 

 

 

 


필자는 소형  CNC 조각기 한대를 직접 제작하여 사용하고 있습니다. 현재는 컴퓨터를 제어기로 사용하기 때문에 제어전용 컴퓨터를 놓고 사용하고 있습니다. 얼마전 ICbanQ에서 저가형 소형 ARM 보드인 비글본블랙(Beaglebone Black) 체험단 모집을 했었습니다. 소형 ARM 보드를 활용하여 현재사용하고 있는 제어전용 컴퓨터를 대체해볼 생각으로  응모하여 선정 되었습니다. 이 내용을 주제로 체험단 활동기간인 한달동안 아래 4회차의 연재로 구성하여 진행해 보도록 하겠습니다.


•1회. 비글본블랙(BeagleBone Black)과의 첫만남. - 상품수령 개봉기 [발행일 : 2013.10.16]
•2회. 비글본블랙(BeagleBone Black)으로 움직여보는 스텝모터. [발행일 : 2013.10.23]
•3회. 비글본블랙(BeagleBone Black)과 CNC 조각기로 제작해본 PCB 기판. [발행일 : 2013.10.30]
•4회. 제어 보드로 사용해본 비글본블랙(BeagleBone Black)  사용후기. [발행일 : 2013.11.06]


 


 

 


4회. 제어 보드로 사용해본 비글본블랙(BeagleBone Black) 사용후기.

 

연재를 진행한지도 벌써 한달이라는 시간이 훌쩍 지났습니다. 그동안 진행했던 내용들을 살펴보면 '1회. 비글본 블랙과의 첫만남' 에서는 비글본블랙을 수령하여 부팅 해보면서 몇가지 사항들을 살펴 보았습니다. '2회. 비글본블랙 으로 움직여 보는 스텝모터'에서는 비글본블랙과 모터드라이버를 활용하여 스텝모터를 구동해보았으며 '3회. 비글본블랙과 cnc 조각기로 제어해본 pcb 기판'에서는 비글블랙을 필자의 CNC조각기의 제어기로 사용하여 PCB 동판을 조각해보았습니다. 이번 4회에서는 그간 수행했던 내용을 토대로 하여 비글본 블랙을 제어보드로 사용해본 소감을 말씀드리며 연재를 마무리 하도록 하겠습니다.

 


 

4-1. 제어에 적합한 하드웨어 환경

 

CNC조각기를 제어하기위해서는 다수의 모터를 제어해야하기 때문에 다수의 입출력 핀이 필요했습니다. 비글본 블랙은 23*2 헤더소켓이 양쪽 측면에 자리잡고있서 92개나 되는 확장핀 덕분에 I/O핀수에 따른 제한을 받지 않고 테스트를 진행할수 있었습니다.

 

 

비글본블랙의 하드웨어 사양

 

 

측면에 핀헤더로 나열된 많은수의 확장핀

 

 

Sitara AM3559 블록다이어그램

 

비글본블랙을 이용한 CNC조각기 제어를 진행하면서 자료를 살펴보던중 비글본 블랙에 사용된 메인칩인 TI사의 Sitara AM3559에는 PRU(Programmable Realtime Unit) 장치가 존재하고 있음을 알 수 있었습니다. 필자도  아직 이부분을 접해본적이 없어서 자세한것을 알수는 없었지면 이것을 이용하면 다양한 소프트 주변장치를 구성할수 있다는것과 GPIO에서 고속 , 실시간응답에 사용될수 있다는자료를 볼수 있었습니다. 또한 필자가 테스트시 사용한 LinuxCNC(구 EMC2)의 소스코드에 PRU 부분이 정의된것을 확인할수 있었습니다. 이러한 내용들로 미루어 보았을때 고품질의 신호출력으로 CNC조각기 제어가 가능할것이라는 생각이 들었습니다.

 

 


4-2. 편리한 개발 및 테스트 환경

 

'2회. 비글본블랙 으로 움직여 보는 스텝모터'를 진행할 당시에 처음에는 C언로 코딩해서 목적프로그램으로 빌드한후 테스트를 진행할 계획이었습니다. 비글본블랙을 부팅해서 내장된 웹페이지에서 설명을 읽어보던중에 Bonescript라는 뜻밖의 정보를담을 내용을 볼수 있었습니다. 자바스크립트 문법으로된 bonescript를 통하여 확장핀의 입출력 제어가 가능하다는 내용이었습니다.

 

 

예제를 입력창을 통한 BoneScript 테스트환경

 

필자는 테스트를 예제 페이지에 있는 코드치환을 통해 간단하게 출력테스트를 하였지만 더 자세히 확인해보니 비글본 블랙에 내장된 Cloud9 IDE 환경인것을 알수 있었습니다. 웹브라우저 통해 비글본블랙의 Cloud9 IDE 에디터에 접속하여 스크립트의 작성, 실행을 할수 있었습니다. 비글본블랙에서 지원해주는 Cloud9 IDE의 매우 직관적이고 편리한 개발 환경을 접해보고 놀라움을 금치않을수 없었습니다.

 

 

4-3. 다양한 비글본블랙활용 프로젝트

 

'3회. 비글본블랙과 cnc 조각기로 제어해본 pcb 기판'을 진행할때에는 실제로 필자의 CNC조각기를 제어해야 하므로 비글본블랙에서 실행되는 CNC 컨트롤 소프트웨어가 필요했었습니다. 이것은 비글본페이지의 프로젝트 메뉴를 통한 검색을 통하여 수행할수 있었습니다. 필자가 하려는것 외의 많은 프로젝트들이 진행되고 관련 소프트웨어 및 필요사항들이 포팅되어 있음을 알수 있었습니다.

 

 

비글보드 사이트에 게시된 비글본을사용한 프로젝트 목록

 

또한 수행중 문제를 만나 진행이 어려울 경우에는 관련 유저 포럼을 검색해보았더니 수많은 힌트들을 얻을수 있었습니다. 공개 프로젝트의경우 GIT등을 통하여 소스가 공개되고 있어으므로 해당부분의 이슈를얻어 문제를 해결할수 있었던 환경 덕분에 필자가 비글본블랙을 활용하여 진행 하고자 했던것을 무사히 수행할수 있었습니다.

 

 

연재를 마치며...

 

이번 체험단 수행을 계기로하여 비글본 블랙을 활용한 제어 활용 환경을 알아보고 LinuxCNC(구 EMC2)를 비글본블랙에 포팅을 하여 필자의 CNC조각기를 제어 해보았습니다. 주 1회차의 진행으로 한달간 4회의 분량으로 진행하다보니 포팅방법, 일어날수 있는문제, 트러블 슈팅등의 내용을 담지는 못한 아쉬움이 있었지만 처음 사용해보는 하드웨어에 시간이 허락하는 내에서 필요부분 포팅및 테스트를 수행해본 결과 비글본블랙이 제공해주는 환경은 매우 만족스러웠습니다. 비글본블랙에LinuxCNC(구 EMC2)의 포팅은  이미 MarchineKit명칭으로 진행 배포 되고 있으니 관심이 있으신분들 께서는 해당 프로젝트 페이지를 방문하시면 더욱 자세한 내용들이 제공되고 있으므로 어렵지 않게 수행을 하실수 있을실 것이라는 말씀을 남기며 이번 연재는 여기에서 마치도록 하도록 하겠습니다.

 

그동안 연재에 관심을 가져주신 독자여러분께 깊은 감사의 말씀 드립니다.

 

 

- 2013.11.06 물의날에 프미케 -

 

 

 


* 본 포스트는 필자가 운영중인 블로그(티스토리, 네이버) 에 전체 포스트를 동시게시합니다.

   - 티스토리 : 프미케의 낙서장(http://pmice.tistory.com)

   - 네이버블로그 : http://blog.naver.com/pmice

 


* 본 제품은 ICbanQ에서 후원하고 ICbanQ 무상 체험단 10기 활동의 일환으로 체험 제품을 제공받아 작성되었습니다.

 


 


[출처] 제어 보드로 사용해본 비글본블랙(BeagleBone Black) 사용후기. (오픈 H/W 마스보드&비글본블랙 사용자 Cafe) |작성자 프미케
 

C++을 이용한 GPIO제어

 

 

 
C++에서의 GPIO 제어
SimpleGPIO를 이용한 GPIO 제어
 
 

 


Created Date: 2013.11.05

Modified Date: 2013.11.05

revision 1

 


키워드 : beaglebone, C++, GPIO

 


1. GPIO의 제어


비글본 블랙의 두드러지는 특징으로 꼽자면 저는 상당히 많은 GPIO핀으로 꼽겠습니다.

GPIO를 리눅스 커널에서 제어하는 방법은 2716번 글에서 충전중인 후니님께서 자세히 설명해 주셨습니다.

http://cafe.naver.com/openrt/2786

저는 C++ 라이브러리를 이용하여 GPIO를 제어해 보겠습니다.

 


2. 라이브러리 받아오기

 

이번 강좌에서는 derek molloy님께서 작성하신 SimpleGPIO.h파일을 이용하겠습니다.

 

$ mkdir ~/GPIO_ws
$ cd ~/GPIO_ws
$ git clone git://github.com/derekmolloy/beaglebone

 


3. 예제 작성과 실행

간단한 예제로 GPIO_60핀을 이용해 LED제어를 해보겠습니다.

 

$ vi LEDonoff.cpp

 

#include "SimpleGPIO.h"
#include <unistd.h>

int main(){
  gpio_export(60);
  gpio_set_dir(60,OUTPUT_PIN);
  for(int i=0; i<5; i++){
    gpio_set_value(60,HIGH); 
    sleep(1);
    gpio_set_value(60,LOW);
    sleep(1);
  }
  gpio_unexport(60);
  return 0;
}

 

$ g++ -o LEDonoff LEDonoff.cpp SimpleGPIO.cpp
$ sudo -s
# ./LEDonoff

 

 

 

 

[참고자료]

 


[1] Derek Molloy Electronics http://derekmolloy.ie

 


* 본 제품은 ICbanQ에서 후원하고 ICbanQ 무상 체험단 10기 활동의 일환으로 체험 제품을 제공받아 작성되었습니다.

 


End.

 


written by FreeStar

 

 

 

이 저작물은 크리에이티브 커먼즈 저작자표시-비영리 3.0 Unported 라이선스에 따라 이용할 수 있습니다.

 


[출처] C++을 이용한 GPIO제어 (오픈 H/W 마스보드&비글본블랙 사용자 Cafe) |작성자 FreeStar

비글본블랙(BeagleBone Black)과 CNC 조각기로 제작해본 PCB 기판.


 

필자는 소형  CNC 조각기 한대를 직접 제작하여 사용하고 있습니다. 현재는 컴퓨터를 제어기로 사용하기 때문에 제어전용 컴퓨터를 놓고 사용하고 있습니다. 얼마전 ICbanQ에서 저가형 소형 ARM 보드인 비글본블랙(Beaglebone Black) 체험단 모집을 했었습니다. 소형 ARM 보드를 활용하여 현재사용하고 있는 제어전용 컴퓨터를 대체해볼 생각으로  응모하여 선정 되었습니다. 이 내용을 주제로 체험단 활동기간인 한달동안 아래 4회차의 연재로 구성하여 진행해 보도록 하겠습니다.


•1회. 비글본블랙(BeagleBone Black)과의 첫만남. - 상품수령 개봉기 [발행일 : 2013.10.16]
•2회. 비글본블랙(BeagleBone Black)으로 움직여보는 스텝모터. [발행일 : 2013.10.23]
•3회. 비글본블랙(BeagleBone Black)과 CNC 조각기로 제작해본 PCB 기판. [발행일 : 2013.10.30]
•4회. 제어 보드로 사용해본 비글본블랙(BeagleBone Black)  사용후기. [발행일 : 2013.11.06]


 


 

 


3회. 비글본블랙(BeagleBone Black)과 CNC 조각기로 제작해본 PCB 기판.

 

지난 2회. 비글본블랙(BeagkeBone Black)으로 움직여보는 스텝모터. 에서는 비글본블랙의 GPIO출력을 활용하여 스텝모터를 구동해 보았습니다. 이번 3회에서는 필자가 이번 연재에서 목적으로 하였던 CNC조각기를 실제로 제어하여 PCB 기판을 조각을 해보도록 하겠습니다.

 


 

3-1. 통역.

 

제어기가 모터를 움직이도록 신호를 발생해주기 위해서는 어떠한 명령이 담긴 코드가 필요합니다. 지난 2회에서 비글본블랙에 기본으로 지원되는 BoneScript 코드로 명령 내려 스텝모터를 구동해 보았습니다. CNC(Computerized Numerical Control) 기기에서 명령을내려주기 위해서는 G코드 및 M코드와 같은 NC코드가 사용됩니다. CNC제어기는 이것을 해석해 동작에 필요한 제어신호를 만들어주게 됩니다. 이것을 위해서 비글본블랙에 G코드 인터프리터가 내장된 CNC컨트롤러 프로그램을 설치해 보았습니다.

 

 

 

 

비글보드 홈페이지에서 CNC관련 프로젝트를 검색해보았습니다.

 

 

 

 

 

CNC컨트롤 프로그램을 설치한후 부팅상태를 USB2UART를 이용해 확인해 보았습니다.

 

 

 

 

 

설치후 부팅하여 확인해보았습니다. xenomai 와 linuxcnc가 보입니다.

 


 

CNC컨트롤러 프로그램은 리눅스기반인 Linuxcnc(구 Emc2)를 설치하였습니다. 또 리얼타임환경을 만들어주어야 하므로 Xenomai 커널도 포팅이 되어야합니다. 이것들을 직접 컴파일해서 포팅하려면 꽤많은 시간과 시행착오를 요구하는 작업입니다. 다행히도 비글보드 사이트의 진행 프로젝트를 검색해보았더니 이미 진행되는 프로젝트가 있어서 이미 포팅이 되어 있었습니다. 필자는 MachineKit 프로젝트의 소스를 이용하여 설치를 하였습니다. 설치후 UART로 확인해보니 정상적으로 설치된것을 확인할수 있었습니다.

 

 

3-2. CNC조각기와의 만남

 

필자가 DIY로 제작한 CNC조각기는 X,Y,Z 3개의 축을 사용하는 기기입니다. 이런 이유에서 구동에필요한 3개의 모터와 각각 모터드라이버를 사용하고 있습니다. 필자가 제작한 모터드라이버는 PWM과 DIR 입력을 입력 받도록 제작 되었습니다. 그렇기 때문에 제어보드에서 구동에 필요한 IO 핀은 6개가 됩니다. 그리고 스핀들에 2개를 사용해야 하므로 비글본블랙의 IO핀중 기본구동에 필요한 8개를 필자의 CNC 조각기와 연결을 하였습니다.

 

 

 

 

필자의 CNC 머신입니다. 이전 3d 프린터 헤드를 장착했다가 현재는 제거한상태입니다.

 

 

 

 

글루건으로 파워서플라이에 비글본블랙을 고정시킨 후에 CNC조각기와 연결해주었습니다.

 

기존에 연결했던 리미트 스위치및 기타센서도 있지만 여기서는 사용을 하지 않고 우선 구동에 필요한 핀 연결만으로 PCB 조각을 수행해 보았습니다.

 

 

3-3. PCB 조각을 해보자!

 

CNC조각기를 이용해서 무엇인가를 만들기 위해서는 데이터가 필요합니다. 여기에서는 PCB조각을 해볼것이기 때문에 PCB 패턴 정보를 담을 NC코드 데이터가 필요합니다. 필자가 이전에 작성해 두었던 PCB 패턴을 이글캐드의 pcb-gcode플러그인을 사용하여 NC코드로 출력해 PCB 패턴조각을 수행해보았습니다.

 

 

 

 


이글캐드의 pcb-gcode 플러그인을 사용하여 nc 코드를 출력하였습니다.

 


 

 

 

PCB 패턴 조각 영상 클립입니다.

 


 

 

 

패턴조각이 완료된 모습입니다.

 

비글본블랙에 설치된 LINUXCNC(구 EMC2)의 설정파일을 필자의 CNC조각기에 맞게 설정후 준비된 데이터로 PCB패턴을 조각해 보았습니다.

 

 

마치며...

 

비글본블랙은 많은수의 확장핀을 제공해주고있어서 필자의 CNC조각기와 연결할때 기존에 제작한것외로 별로의 부품 추가 없이 연결이 가능했습니다. CNC컨트롤러 소프트웨어 역시 비글본을 타켓보드로 하여 진행되는 프로젝트 덕분에 다른 ARM 보드를 이용해서 수행했을때보다는 훨씬 수훨했을 뿐만아니라 꽤 만족스러운 수준의 결과물도 얻을수 있었습니다.  이번 연재를 진행하며 확인한 내용들로 미루어볼떄 비글본블랙은 제어하드웨어로도 상당히 최적화된 보드라고 생각된다는 것을 말씀드리며 이번 3회를 마치겠습니다.

 

다음 4회에는 '제어보로 사용해본 비글본블랙'이라는 주제로 그간 진행하였던 내용을 토대로 종합하여 이야기하며 연재를 마무리 하도록 하겠습니다..

 

많은관심 부탁드리며 끝까지 읽어주셔서 감사합니다.

 

- 2013.10.30 물의날에 프미케 -

 

 

* 본 포스트는 필자가 운영중인 블로그(티스토리, 네이버) 에 전체 포스트를 동시게시합니다.

   - 티스토리 : 프미케의 낙서장(http://pmice.tistory.com)

   - 네이버블로그 : http://blog.naver.com/pmice

 


* 본 제품은 ICbanQ에서 후원하고 ICbanQ 무상 체험단 10기 활동의 일환으로 체험 제품을 제공받아 작성되었습니다.

 

[출처] 비글본블랙(BeagleBone Black)과 CNC 조각기로 제작해본 PCB 기판. (오픈 H/W 마스보드&비글본블랙 사용자 Cafe) |작성자 프미케
 

[BBB] SHT75센서 사용을 위한 비글본 블랙 우분투 커널 컴파일 (진행)


우선 제가 처음에 생각했던 것은 비글본 블랙(BeagleBone Black)에서 센시리온(Sensirion)사의 SHT-75(SHT75) 온습도 센서를 직접 연결하여 집안의 온습도 값을 측정해서 DB에 로깅하거나 웹을 통해 외부에서도 모니터링이 가능하도록 하는 시스템이었습니다.

 

제가 사용하려는 센서는 아래와 같은 모습입니다.

 

 

 

참고 : http://www.sensirion.com/en/products/humidity-temperature/humidity-sensor-sht75/

 

이 센서를 사용하게 된 이유는 아래 표와 같이 다른 센서에 비해 정확도 오차범위가 상당히 작기 때문에

비교적 정확한 온습도 측정이 가능하기 때문입니다.

 

 

 

 

 

 SHT75는 습도 +-1.8, 온토 +- 0.3의 오차범위를 가집니다.

 

우선 연결을 위한 핀 정보를 알아보기 위해 데이터시트를 살펴봤습니다.

 

 

 

 

데이터시트에는 위 그림과 같이 연결하도록 되어 있습니다.

Data와 Clock 핀을 마이컴과 연결하고, 나머지 두 개는 GND와 VDD에 연결합니다.

데이터라인에는 10Kohm 외부 풀업 저항을 연결하라고 되어 있습니다.

 

센서 핀은 센서를 정면으로 봤을 때 오른쪽부터 1, 2, 3, 4 였으며, 각 핀의 역할은 아래와 같습니다.

 

 

 

 

 

중간 두 라인이 전원이고, 양쪽 2라인이 통신용 회선 입니다.

 

센서를 보호하기 위해 전용 센서캡(SF-7)을 사용하였고, 케이블에 풀업저항을 연결해서 아래 그림과 같이 센서 모듈을 간소화했습니다.

 

 

 

 

SHT7X용 전용 센서캡(SF-7, http://icbanq.com/shop/product_detail.asp?prod_code=P000138869)에 센서를 납땜하고, 케이블을 연결한 모습.

 

 

 

 

 

 

SHT-75 센서의 모습입니다. (휴대폰 카메라로 촬영하여 영상이 깨끗하지 못한 점 양해바랍니다.)

 

 

 

 

 

붉은색 사각형 부분에 10kohm 풀업 저항을 VDD와 DATA라인 사이에 연결하였습니다.

 

 

 

 

완성된 센서 모듈을 비글본에 그림처럼 GPIO 포트에 연결합니다(정확히 장착된 사진 아님, 연결 예시).

영어에 약해 데이터시트를 완전히 읽어보지는 못했지만 TWI(I2C)통신으로 작동된다고 쓰여 있는 것 같아 I2C포트를 이용하기로 하였습니다.

 

먼저 비글본의 I2C 핀을 조사해 보니 아래와 같이 할당되어 있었습니다.

 

P9_18 : I2C1_SDA

P9_17 : I2C1_SCL

 

P9_19 : I2C2_SCL

P9_20 : I2C2_SDA

 

저 두 세트 중 하나를 사용하기로 하였습니다.

전원은 3.3볼트 핀에서 당겨오기로 했습니다. 그라운드는 그라운드핀에 연결하고요..

 

비글폰 핀 정보는 아래 그림과 같습니다.

P9의 17, 18번 핀이 I2C1포트 라고 하였는데 비글본블랙 홈페이지에서 가져 온 아래 이미지에는 해당핀을 그냥 GPIO4,5번 포트로 표시하고 있네요..

VDD 3.3V와 GND는 3번 1번 핀을 사용하기로 했습니다.

통신라인은 17,18 또는 19, 20 번을 사용하기로 했습니다.

 

 

 

 

 

관련 작업을 먼저 하신 분이 있는지 알아보기 위해 검색엔진에 검색을 해 보았으나 국내 검색엔진에는 자료가 전무하여 구글에 검색을 해 보았습니다.

 

검색 결과 동사의 SHT21 용 드라이버 모듈이 이미 리눅스 기본 커널에 포함되어 있다는 것을 알았습니다.

하지만 SHT75는 SHT21과는 명령어가 호환되지 않아 해당 드라이버를 사용할 수 없다는 것도 함께 쓰여 있었습니다. 대신 SHT15용 드라이버가 SHT75와 호환이 되고, 해당 드라이버의 소스는 커널소스와 함께 제공이 되지만 커널 컴파일 시 기본적으로 포함되어 컴파일되지는 않는다는 사실을 알게 되었습니다.

 

그래서 커널 컴파일을 하기로 하였습니다.

먼저 SD카드에 우분투 12,04버전을 설치하고 시작하였으나, 해당 내용은 이미 다른분들께서 잘 설명해주셨으므로 우분투가 먼저 설치되어 있다는 가정하에 설명 드립니다.

 

제가 설치에 참고한 URL은 다음과 같습니다.

Ubuntu On BeagleBone Black : http://circuitco.com/support/index.php?title=Ubuntu_On_BeagleBone_Black

 

SD카드에 우분투를 설치하고 나면 기본파티션이 2기가까지 밖에 인식을 못합니다.

이것을 전체 용량을 사용 가능하도록 확장해주어야 합니다.

참고 URL은 다음과 같습니다.

 

Expanding File System Partition On A microSD : http://circuitco.com/support/index.php?title=Expanding_File_System_Partition_On_A_microSD

 

위의 사이트를 통해 파티션 확장까지 하시고 나면 커널을 컴파일 할 수 있습니다.

 

참고로 SD카드는 8기가 이상을 사용하시길 바랍니다.

제가 최초 시도 때 4기가 SD카드를 사용하였는데, 커널 컴파일 실패하였습니다. 커널 소스 다운로드 및 컴파일에 소요되는 용량이 4기가가 넘을 가능성이 있습니다.

 

커널 컴파일에 참고한 글은 아래 URL에 있습니다.

http://cafe.naver.com/nixtek1/219

소스를 받고 컴파일 하는 과정을 스크립트로 처리해놓은게 있어서 간단하게 컴파일 할 수 있는 방법입니다.

다만 마지막 부분에 약간 모호한 부분이 있어, 저와 같은 문제가 발생하시는 분들에게 도움이 되고자 커널 컴파일의 전 과정을 다시 살펴봅니다.

그리고 소스에는 있지만 기본 컴파일에는 포함되지 않는 모듈을 선택하는 방법도 설명 드립니다.

 

우선 비글본에 ssh 터미널로 접속 합니다.

 

login as: ubuntu
ubuntu@192.168.1.240's password:
Welcome to Ubuntu 12.04.3 LTS (GNU/Linux 3.8.13-bone20 armv7l)

* Documentation:  https://help.ubuntu.com/
Last login: Wed Oct 23 21:25:12 2013 from 192.168.25.62


 

로그인을 하고 나면 위와 같이 버전이 표시됩니다.

현재 커널 버전은 3.8.13-bone20 입니다.

 

ubuntu@ubuntu-armhf:~$ sudo -i

 

sudo -i 명령으로 우분투 관리자 권한을 획득합니다.

github에서 설치 스크립트를 다운로드 합니다.

다운로드가 완료되면 실행권한을 주고 스크립트를 실행합니다.

 

ubuntu@ubuntu-armhf:~# wget -c https://raw.github.com/RobertCNelson/tools/master/pkgs/dtc.sh

ubuntu@ubuntu-armhf:~# chmod +x dtc.sh

ubuntu@ubuntu-armhf:~# ./dtc.sh

 

스크립트가 수행되면 /usr/local/bin/디렉토리에 dtc가 설치됩니다.

제대로 설치가 되었는지 확인해봅니다.

 

ubuntu@ubuntu-armhf:~# /usr/local/bin/dtc -v

Version : DTC 1.3.0-glea7e802

 

 

확인이 되었으면 git 저장소를 clone, checkout 합니다.


 

ubuntu@ubuntu-armhf:~$ git clone git://github.com/RobertCNelson/linux-dev.git

ubuntu@ubuntu-armhf:~$ cd linux-dev

root@ubuntu-armhf:~/linux-dev# git checkout origin/am33x-v3.8 -b tmp

Branch tmp set up to track remote branch am33x-v3.8 from origin.
Switched to a new branch 'tmp'

 

완료되면 커널 빌드 명령어를 실행합니다.


root@ubuntu-armhf:~/linux-dev# ./build_kernel.sh
+ Detected build host [Ubuntu 12.04.2 LTS]
+ host: [armv7l]
+ git HEAD commit: [008c78651f7b25da854f579cdb84e8fee075fcf5]
Debian/Ubuntu/Mint: missing dependencies, please install:
-----------------------------
sudo apt-get update
sudo apt-get install bc device-tree-compiler lzma lzop man-db u-boot-tools
-----------------------------
* Failed dependency check


이 단계에서 위와 같이 디팬던시 체크 메시지가 나타날 수도 있습니다.

화면에서 지시하는데로 apt-get을 update하시고, 관련 패키지를 먼저 설치하십시오.

경우에 따라 더 많거나 더 적은 패키지가 표시될 수 있습니다.

모두 설치해준 후 다시 빌드 커널 스크립트를 실행해줍니다.

 

root@ubuntu-armhf:~/linux-dev# ./build_kernel.sh
+ Detected build host [Ubuntu 12.04.2 LTS]
+ host: [armv7l]
+ git HEAD commit: [008c78651f7b25da854f579cdb84e8fee075fcf5]
-----------------------------
scripts/gcc: Using: gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-----------------------------
debug: CC=
-----------------------------
Error: git user.name/user.email not set:

For help please read:
https://help.github.com/articles/setting-your-username-in-git
https://help.github.com/articles/setting-your-email-in-git

For example, if your real name and email was: Billy Everteen & me@here.com
you would type the following into the terminal window to set it up:
-----------------------------
git config --global user.name "Billy Everyteen"
git config --global user.email "me@here.com"
-----------------------------

 

화면과 같이 또 에러가 납니다. git 유저네임과 이메일이 세팅되지 않았기 때문입니다.

예시와 같이 이름과 이메일을 셋팅합니다.


root@ubuntu-armhf:~/linux-dev# git config --global user.name "Billy Everyteen"
root@ubuntu-armhf:~/linux-dev# git config --global user.email "me@here.com"

 

세팅 후 다시 스크립트를 실행해주면 컴파일이 시작됩니다.

 

root@ubuntu-armhf:~/linux-dev# ./build_kernel.sh
+ Detected build host [Ubuntu 12.04.3 LTS]
+ host: [armv7l]
+ git HEAD commit: [008c78651f7b25da854f579cdb84e8fee075fcf5]
-----------------------------
scripts/gcc: Using: gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-----------------------------
debug: CC=
-----------------------------
scripts/git: LINUX_GIT not defined in system.sh
using default location: /root/linux-dev/ignore/linux-src/
-----------------------------
scripts/git: Debug: LINUX_GIT is setup as...
/root/linux-dev/ignore/linux-src
-----------------------------
[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
[remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
[branch "master"]
        remote = origin
        merge = refs/heads/master
-----------------------------
scripts/git: Updating LINUX_GIT tree via: git fetch
/root/linux-dev
Resolve operation not in progress, we are not resuming.
git tree is clean...
[v3.8.13-bone28 520ded2] empty cleanup commit
HEAD is now at 520ded2 empty cleanup commit
Checking out files: 100% (22794/22794), done.
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 1 commit.
Already up-to-date.
Deleted branch v3.8.13-bone28 (was 520ded2).
Checking out files: 100% (22704/22704), done.
Switched to a new branch 'v3.8.13-bone28'
v3.8.13
Starting patch.sh
dir: dma
Applying: Without MACH_ option Early printk (DEBUG_LL)
Applying: ARM: OMAP: Hack AM33xx clock data to allow JTAG use
..... (이하 생략)

 

한참 걸립니다. configuration 창이 뜰 때까지 무한 기다림이 시작됩니다.

뭔가 마구 화면에 뿌려지지만 전 무슨 말인지 모릅니다...

 

Kernel Configuration 창이 떴습니다.

여기서 커널과 함께 컴파일 할 모듈 드라이버를 선택해줍니다.

화면에서 'Device Drivers --->' 항목을 선택합니다.

 

 

 

 

 

제가 사용할 온습도 센서는 'Hardware Monitoring Support --->' 항목에 있습니다.

선택해서 들어갑니다.

 

 

 

 

 

 리스트를 쭉 내려오다 보면 'Sensiron humidity and temperature sensors. SHT15 and compat.'라는 항목이 있습니다. 제가 캡춰한 화면에는 이 항목 앞에 <M>이 표시되어 있는데, 초기 상태에는 이 부분이 선택되어 있지 않습니다. SHT21 항목만 선택이 되어 있습니다.

 

 

 

SHT15 항목을 선택하고 configuration을 빠져나오면 컴파일 과정이 진행됩니다.

 

 

 

 

 

시간이 다소 소요됩니다.

 

-----------------------------
Script Complete
eewiki.net: [user@localhost:~$ export kernel_version=3.8.13-bone28]
-----------------------------

화면과 같이 스크립트가 완료되었다는 메세지가 뜨면 컴파일이 완료된 것입니다.

장장 반나절이 넘게 걸리네요...

3.8.13-bone28 버전으로 업데이트 되었습니다.

 

자.. 그럼 컴파일된 커널 이미지로 부팅하기 위해 약간의 추가작업을 해 줘야 합니다.

deploy 디렉토리에 생성된 커널 이미지를 부트파티션으로 카피합니다.


root@ubuntu-armhf:~/linux-dev# export kernel_version=3.8.13-bone28
위의 스크립트 완료 메세지에 표시된 커널 버전을 입력해줍니다.

 

해당 파티션을 마운트합니다.

root@ubuntu-armhf:~/linux-dev# DISK=/dev/mmcblk0
root@ubuntu-armhf:~/linux-dev# mkdir /media/boot
root@ubuntu-armhf:~/linux-dev# mount ${DISK}p1 /media/boot/
root@ubuntu-armhf:~/linux-dev# mkdir /media/rootfs
root@ubuntu-armhf:~/linux-dev# mount ${DISK}p2 /media/rootfs/

 

커널 이미지를 카피합니다.
root@ubuntu-armhf:~# cp -v ./linux-dev/deploy/${kernel_version}.zImage /media/boot/zImage
`./linux-dev/deploy/3.8.13-bone28.zImage' -> `/media/boot/zImage'
cp: writing `/media/boot/zImage': No space left on device

부트 파티션 마운트 후 커널 이미지 카피 시도했으나 용량 부족으로 실패하였습니다.


용량을 확인해봤습니다.


root@ubuntu-armhf:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/mmcblk0p2   29G  3.1G   25G  12% /
devtmpfs        248M  4.0K  248M   1% /dev
none             50M  224K   50M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none            248M     0  248M   0% /run/shm
/dev/mmcblk0p1 1004K 1004K     0 100% /boot/uboot
/dev/mmcblk0p1 1004K 1004K     0 100% /media/boot
/dev/mmcblk0p2   29G  3.1G   25G  12% /media/rootfs

 

boot 파티션 사용량이 100%네요..


해당 디렉토리에서 어떤 파일이 용량을 많이 먹는건지 봤습니다.


root@ubuntu-armhf:~# cd boot
root@ubuntu-armhf:/boot# ls -al
total 5556
drwxr-xr-x  4 root root    4096 Jun  9 01:50 .
drwxr-xr-x 22 root root    4096 Oct 23 12:23 ..
-rw-r--r--  1 root root 2328220 May 29 10:56 System.map-3.8.13-bone20
-rw-r--r--  1 root root  107778 May 29 10:56 config-3.8.13-bone20
drwxr-xr-x  2 root root    4096 Jun  9 01:50 dtbs
drwxr-xr-x  2 root root   16384 Jan  1  1970 uboot
-rwxr-xr-x  1 root root 3218440 May 29 10:56 vmlinuz-3.8.13-bone20
lrwxrwxrwx  1 root root      21 Jun  9 01:50 zImage -> vmlinuz-3.8.13-bone20

 

이전 커널이미지와 시스템 맵이 제일 큰 용량을 차지하고 있었습니다.
일부만 삭제하려고 했으나 두 파일이 워낙 큰 용량을 차지하고 있어서,

부팅이 되지 않을 위험을 감수하고 해당 디렉토리의 모든 파일을 삭제하였습니다
uboot 디렉토리는 절대 삭제하면 안됩니다.


root@ubuntu-armhf:/boot# rm -rf System.map-3.8.13-bone20 config-3.8.13-bone20 dtbs/ vmlinuz-3.8.13-bone20 zImage
root@ubuntu-armhf:/boot# ls
uboot

부트 관련 파일을 boot 디렉토리로 카피합니다.

root@ubuntu-armhf:/boot# cd ~/linux-dev/deploy/
root@ubuntu-armhf:~/linux-dev/deploy# cp -v 3.8.13-bone28.zImage /boot/zImage
`3.8.13-bone28.zImage' -> `/boot/zImage'

root@ubuntu-armhf:~/linux-dev/deploy# ls /boot
uboot  zImage


환경설정 파일도 함께 카피합니다.
root@ubuntu-armhf:~/linux-dev/deploy# cp 3.8.13-bone28.config /boot/

root@ubuntu-armhf:~/linux-dev/deploy# ls /boot
3.8.13-bone28.config  uboot  zImage


dtbs 파일도 boot 디렉토리에 풀어줍니다.


root@ubuntu-armhf:~/linux-dev/deploy# mkdir -p /boot/dtbs/
root@ubuntu-armhf:~/linux-dev/deploy# tar xofv 3.8.13-bone28-dtbs.tar.gz -C /boot/dtbs/

root@ubuntu-armhf:~/linux-dev/deploy# ls /boot
3.8.13-bone28.config  dtbs  uboot  zImage


리부팅합니다.
root@ubuntu-armhf:~/linux-dev/deploy# reboot

정상적으로 부탕이 된다면 완료된 것입니다.

이제 드라이버 파일을 풀어 줄 차례입니다.


root@ubuntu-armhf:~# cd linux-dev/deploy/
root@ubuntu-armhf:~/linux-dev/deploy# ls
3.8.13-bone28-dtbs.tar.gz      3.8.13-bone28-modules.tar.gz  3.8.13-bone28.zImage
3.8.13-bone28-firmware.tar.gz  3.8.13-bone28.config          tmp

deploy 디렉토리에 있는 라이브러리 파일을 루트에 해제합니다.

root@ubuntu-armhf:~/linux-dev/deploy# tar xovf 3.8.13-bone28-modules.tar.gz -C /


 

해제 후 해당 라이브러리 디렉토리를 살펴보면 sht15.ko 파일이 존재하는 것을 확인할 수 있습니다.

root@ubuntu-armhf:~/linux-dev/deploy# ls /lib/modules/3.8.13-bone28/kernel/drivers/hwmon/
gpio-fan.ko  hih6130.ko  max197.ko  sht15.ko  sht21.ko  tmp102.ko


모듈을 로드 합니다.

루트권한을 얻은 상태에서 아래의 명령어를 실행합니다.

 

root@ubuntu-armhf:~# modprobe sht15


로드된 모듈의 정보를 확인합니다.

root@ubuntu-armhf:~# modinfo sht15
filename:       /lib/modules/3.8.13-bone28/kernel/drivers/hwmon/sht15.ko
description:    Sensirion SHT15 temperature and humidity sensor driver
license:        GPL
srcversion:     8F60F17748F23187A4CE01F
alias:          platform:sht75
alias:          platform:sht71
alias:          platform:sht15
alias:          platform:sht11
alias:          platform:sht10
depends:
intree:         Y
vermagic:       3.8.13-bone28 SMP mod_unload modversions ARMv7 p2v8


i2c_tools 패키지를 설치합니다.

root@ubuntu-armhf:/# apt-get install i2c-tools

 

i2c 모듈을 찾기 위해 아래 명령어를 입력합니다.

 

root@ubuntu-armhf:/# i2cdetect -r -y 0
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- UU -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- UU -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: UU -- -- -- -- -- -- --

 

root@ubuntu-armhf:/# i2cdetect -r -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- UU UU UU UU -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

그런데 검색이 되지 않습니다.

17,18번 포트를 이용해도, 19, 20번 포트를 이용해도 마찬가지 입니다.

 

root@ubuntu-armhf:~# echo sht15 0x40 > /sys/class/i2c-adapter/i2c-0/new_device
root@ubuntu-armhf:~# echo sht15 0x40 > /sys/class/i2c-adapter/i2c-1/new_device


아무런 반응이 없습니다 ㅠ.ㅠ

 

혹시 센서가 불량인가 싶어 센서를 아두이노에 붙여서 라이브러리 로드해서 테스트 해 보았습니다.

값이 정상적으로 나오는 것을 확인하였습니다.

 

센서에는 문제가 없으나 리눅스에서 인식을 못하므로, 다른 방법들을 찾아봐야 할 것 같습니다.

커널 드라이버를 사용하는 방법에 대해서도 더 알아봐야 할 것 같습니다.

 

여기저기 찾아보니 해당 센서가 I2C 표준 프로토콜을 사용하는 것이 아니라 I2C에서 변형된 독자적인 프로토콜을 사용한다는 글도 보이고 여러가지 문제점이 남아 있는 것 같습니다.

 

리눅스 초보, 하드웨어 초보가 프로젝트를 진행하려니 어려운 부분들이 많네요..

기간내에 프로젝트를 완수하지 못할지도 모르지만, 그래도 계속 방법을 찾아보고 진행 해 보겠습니다.

 

 

본 제품은 ICbanQ에서 후원하고 ICbanQ 무상 체험단 10기 활동의 일환으로 체험 제품을 제공 받아 작성되었습니다.
 
 
이 작성자의 게시글  구독하기
[출처] [BBB] SHT75센서 사용을 위한 비글본 블랙 우분투 커널 컴파일 (진행) (오픈 H/W 마스보드&비글본블랙 사용자 Cafe) |작성자 케이