비글본 블랙: 실내 공기질 모니터링 서버 만들기

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

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

모니터링 시스템 구성

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

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

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

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

비글본 블랙 디바이스 확인이제 아두이노와 비글본 블랙을 usb로 연결해 봅니다. 아래 사진은 센서와 아두이노 그리고 비글본 블랙이 연결된 모습입니다.시스템 연결 사진 USB로 비글본 블랙과 아두이노가 연결되었다면 다시 비글본블랙에서 연결된 디바이스를 확인합니다.

USB 연결 후 확인

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

스크린샷 2013-11-08 오후 3.22.04

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

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

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

스크린샷 2013-11-08 오후 3.18.47

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

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

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

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

스크린샷 2013-11-08 오후 3.30.31

스크린샷 2013-11-08 오후 3.31.19

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

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

센서 모니터링 페이지

 

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

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

  • Kwan Yeong Kim

    대박이네요. 와우!!!

  • Kwan Yeong Kim

    대박입니다. 와우!!!

    • Woojin Joe

      감사해요~ㅎㅎ 이래저래 만져보니 재미있네요~
      라즈베리파이로도 비슷한 구성으로 작업해 보려구요 ^^

  • Park

    와, 신기하네요!! 그런데 arduino를 안거치고 dust sensor와 라즈베리파이 혹은 비글본을 바로 연결하는 방법이 있나요?? 라즈베리파이와 비글본 둘 다 serial 포트가 있는 거 같은데 지식이 얕아서 잘 모르겠네요. 고수님 답변 기다리고 있겠습니다. 헤헤

    • Woojin Joe

      고수는 아니구요~ 저도 구글링의 도움을 받아가며 한 거에요 ^^
      라즈베리파이나 비글본 블랙 같은 보드에 자세히 보면 핀을 연결할 수 있는 부분이 있고 보통 GPIO라고 하는데요 이걸 가지고 LED나 모터, 그리고 제가 작업한 센서등을 아두이노 거치지 않고 직접 연결할 수는 있어요~

      다만 위의 센서가 내보내는 값을 측정하는 함수가 아두이노에서는 미리 라이브러리로 제공되는데, 라즈베리나 비글본은 그런게 없어서 직접 C나 파이썬으로 짜서 해야 한다는 번거로움이 있어서 저느 그냥 아두이노랑 연결했어요 ^^