소셜벅: 춤추는 새소식 알림 벌레 DIY

손안에 들어가는 소형 벌레 로봇을 모티브로 나온 작품들이 여럿 있습니다. 저도 이런류의 DIY를 좋아해서 따라하기도 하지만, 좀 더 새로운 걸 하나 만들어 보고 싶었습니다. 그래서 기존에 BLE(Bluetooth Low Energy, Bluetooth 4.0)로 진행하던 개인적인 프로젝트의 구현 내용들을 따와서 벌레로봇을 만들었습니다. 이름하여 소셜벅(Social Bug) 되겠습니다.

.

소셜벅 (Social Bug)

소셜벅은 내가 알람을 받고 싶은 앱을 미리 설정해 두면, 해당 앱의 알림(Notification) 메시지가 발생했을 때 춤을 춰서 알려주는 벌레로봇 입니다. 언뜻 만들기 복잡해 보일 수도 있는데, 생각보다는 부품이나 조립이 간단합니다. 사실 핵심 모듈은 블루투스 모듈 하나거든요.

BLE 블루투스 모듈(HM-10, HM-11)은 핸드폰, PC 같은 외부 기기와 연결되어 데이터를 주고 받기도 하지만 비컨으로도 활용할 수 있고, 연결된 장치에서 특정 데이터(AT command)를 보내 블루투스 모듈의 상태를 바꿀수도 있습니다. 이 기능을 활용해서 소셜벅을 만듭니다. 핸드폰에서 전용앱이 알림 메시지를 체크하고 사용자가 설정한 알림이 발견되면 페어링 된 블루투스 모듈에 특정 커맨드를 날립니다. 그러면 블루투스 모듈은 이 커맨드를 인식해서 연결된 소형 진동모터를 on/off 시켜 벌레가 춤추게 만듭니다. 물론 진동모터 대신 LED를 달아도 됩니다.

how_it_works

페북, 카톡같은 SNS 서비스의 알람 메시지를 좀 더 물리적이고 재밌는 형태로 확인하기 위해 만든 벌레라서 소셜벅입니다.

.

소셜벅 DIY 준비물

parts

  • BLE 모듈(HM-11 또는 HM-10) : HM-10 breakout 보드가 달린 모듈을 적극 추천합니다. HM-11이 사이즈가 더 작고 비슷한 기능을 지원하지만 개인적인 경험상 제대로 동작시키기 더 힘들었습니다. Breakout 보드가 달리지 않은 모듈의 경우 납땜이 굉장히 힘듭니다.
  • 점퍼선x2 : 더듬이 장식용. 철사 혹은 다른 재료 사용해도 무관
  • 저항x3 : 벌레 다리로 쓸거라 철사 3가닥 혹은 다른 재료 아무거나 써도 상관없음
  • 진동모터 : 가능한 소모전류가 작은 넘으로 선택해야 합니다. 처음에 사진에 있는 막대형 썼다가 전류를 많이 먹어서 초소형 동전형으로 대체했음
  • 트랜지스터 : 진동모터를 제어할 트랜지스터, KN3904 또는 적당한 걸로.
  • 몸통 지지판 : 전 메이커 마켓에서 구매했던 헬로긱스의 D-Bug 제품에 있던걸 사용했는데, 아무거나 쓰셔도 상관 없습니다.
  • 코인배터리 및 홀더 : CR2032 코인배터리와 전용 홀더를 사용했습니다만, 코인 배터리로는 계속 켜뒀을때 1~3일 밖에 못버텼습니다. 그래서 LiPo 배터리와 충전 모듈로 나중에 바꿨습니다. LiPo 배터리/충전모듈 사용을 추천합니다.
  • 기타 : 전선, 글루건, 인두기, 테이프(절연용), 양면 테이프 등등

여기에 추가로 FTDI(USB to UART) 모듈이 필요합니다. FTDI 모듈은 블루투스 모듈의 설정을 바꾸기 위해 사용되며, 제작이 진행되는 동안 블루투스에 전원을 공급해줍니다. 딱 한번만 사용하면 됩니다.

주의!!! : Android v4.3 이상의 BLE 가능한 폰 (아이폰은… 아직 앱 만들 준비가 안되어 있습니다;;;). 안드로이드에서는 v4.3 이상에서만 BLE를 지원합니다.

.

소셜벅 만드는 과정

BLE 모듈 중 가장 일반적으로 사용되는 모듈이 HM-10 입니다. 전 크기를 최대한 작게 만들기 위해 처음에 HM-11로 시도했는데 제대로 동작이 안되네요. 납땜도 힘들고… 모듈은 아래 사진에서 확인할 수 있습니다. 지름이 20mm 인 CR2025 코인배터리와 사이즈를 비교해보세요.

parts_bluetooth

그리고 소셜벅은 사이즈에 크게 제약을 받지 않으므로 위 사진처럼 모듈만 구매해서 쓸 필요가 없습니다. (이 경우는 납땜이 굉장히 어렵습니다.) 가급적 아래 사진처럼 Breakout 보드가 달린 모듈을 사용하세요.

hm10_uart_linnes

1. BLE 모듈의 모드 설정 :

일반적으로 HM-10, HM-11 모듈을 구입하면 Mode-0 으로 설정되어 있습니다. Mode-0 에서는 폰(혹은 다른 장치)과 연결되지 않은 상태에서 모듈의 UART 포트를 통해 들어오는 특별한 문자열, AT command를 인식합니다. 이 AT command 를 통해 블루투스의 각종 설정을 바꾸고 동작을 제어할 수 있습니다. 그런데 Mode-0 에서는 폰과 페어링되면 AT command를 더 이상 인식하지 않습니다.

그래서 Mode-1 (PIO Collection Mode)으로 바꿔줘야 합니다. Mode-1 에서는 폰과 페어링 된 뒤에도 폰에서 AT command 에 해당하는 문자열을 보내면 인식 하거든요. 그리고 Mode-1에서는 자동으로 특정 핀의 on-off (5V-0V, 여기서는 버튼 on-off 상태) 상태를 체크해서 연결된 폰으로 전송해줍니다. 즉 Mode-1으로 바꾸면 AT 커맨드를 통해 LED 상태를 바꾸고, 버튼의 입력 상태를 받아볼 수 있게 됩니다.

Mode-1 으로 바꾸기 위해서는 앞서 말했듯이 UART 핀을 통해 AT command를 넣어줘야 합니다. 이런 작업을 위해서는 FTDI (USB to UART) 모듈을 이용해서 PC에 붙인 후 PC에서 전용앱을 이용할 수 있습니다. 일단 아래와 같이 HM-10 모듈을 FTDI 모듈에 연결해줍니다. 반드시 VCC 핀을 FTDI 모듈의 3.3V 핀에 연결해야 합니다. 혹은 FTDI 모듈을 3.3V 상태로 점퍼를 설정하고 VCC를 연결해줘야 합니다.

(주의!!!블루투스 모듈에 따라 Mode 동작방법이 틀린 경우가 있습니다. 그리고 모듈 좌우의 핀홀 배치도 틀릴 수 있습니다. 구매하기 전 꼼꼼히 Datasheet 를 확인하시는 것이 좋습니다. 제가 가진 HM-10 모듈의 경우는 아래 방법대로 구현시 잘 동작하는데 HM-11은 Mode-2로  설정해줘야 했습니다.)

아래 사진은 HM-10 모듈의 연결 방법

uart_setup

아래 사진은 HM-11 모듈의 연결 방법

hm11_uart_linnes

Breakout 보드가 달린 경우 VCC, GND, TX, RX 핀을 케이블로 연결만 해주면 됩니다.

hm10_uart_linnes

연결을 마쳤으면 FTDI 모듈을 PC에 연결합니다. 그리고 아래 링크의 왼편 메뉴에서 PC ComAssistant 링크를 클릭해서 프로그램을 다운로드 받아 설치합니다.

http://www.jnhuamao.cn/index_en.asp?ID=1

프로그램을 실행해서 아래와 같은 순서로 AT Command를 보낼 수 있습니다.

HMComAssistant

아래 AT command 를 통해 모드를 바꿔줍니다. 정상적으로 모드가 바뀌면 OK+MODE1 응답을 보내줍니다.

AT+MODE1

이거 하나 하자고 그 복잡한 과정을 거친 겁니다 -_-;;

일단 이 과정이 끝나면 UART 통신용 2개의 선(TX, RX)은 필요가 없습니다만.. 여러가지 설정 변경이 필요할 수도 있으므로 최종 테스트를 마칠 때 까진 남겨두시길 권장합니다. VCC, GND 라인은 남겨둬서 블루투스 모듈에 전원을 공급하도록 합니다. VCC, GND 라인은 나중에 배터리로 연결하면 됩니다.

주의!! : 제가 구매한 HM-11 모듈은 MODE1 에서 작동이 되지 않았습니다. MODE2 에서 원하는대로 동작 했습니다. 구매한 모듈에 따라 동작이 틀리니 datasheet를 잘 확인하세요.

2. 몸통 구조 만들기

먼저 3개 저항(혹은 다리용 철사)을 아래와 같이 배치해서 벌레 다리를 만듭니다. 전 홀에 납땜을 해줬는데 글루건이나 접착제로 고정해주시면 됩니다.

assembly_legs

코인 배터리 홀더를 벌레 몸통 아래쪽에 연결합니다. 구멍을 통해 반대쪽으로 +, – 연결부가 살짝 돌출되도록 되어 있습니다. 몸통을 직접 제작하신 분은 배터리 홀더 붙이기 전에 +, – 전선을 미리 빼둡니다.

assembly_batt

LiPo 배터리 사용하시는 분은 아래와 같이 충전모듈의 Batt+, Batt- 홀에 배터리를 연결해두세요. 그리고 OUT+, OUT- 라인을 뽑아둡니다. 납땜이 끝나면 몸통에 붙이면 됩니다. (가급적 배터리의 + 또는 – 라인에 스위치를 붙여 on/off 가 가능하도록 만드세요.)

assembly_batt_lipo

lipo_charger_conn

진동 모터를 달아줍니다. 진동모터의 +, – 라인은 연결하기 좋게 미리 연장해두세요.

assembly_vib_motor

까다로운 과정을 하나 거쳐야 합니다. 블루투스 모듈에서 진동모터를 제어할 라인과 전원 공급용 +, – 라인을 뽑아내야 합니다. HM-11 모듈은 아래와 같이 3 라인을 뽑아냅니다.

assembly_hm11_pinout

HM-10, 특히 Breakout 보드가 달린 블루투스 모듈은 아래와 같이 진동모터 제어용 라인을 하나만 납땜해서 뽑아내면 됩니다.

assembly_hm10_pinout

이제 선들을 연결해줍니다.

  • 블루투스 모듈에서 진동모터 제어용으로 뺀 라인을 트랜지스터 B(Base)에 연결
  • 배터리 + 라인을 트랜지스터 C(Collector)로 연결
  • 진동모터의 + 라인을 트랜지스터 E(Emitter)로 연결
  • 진동모터의 – 라인을 배터리 – 로
  • 블루투스 VCC, GND 라인을 배터리 +, – 로

circuit

조심스럽게 전선들을 연결하고 블루투스를 벌레 등에 태웁니다.

assembly_ble

밋밋하니까 더듬이를 연결하고 글루건으로 각 부위를 글루건으로 고정해줍니다.

assembly_done01

assembly_done02

이제 배터리를 끼워서 테스트를 해볼 준비가 모두 되었습니다.

.

3. 가장 실용적인 형태

개인적으로 테스트 해봤을 때 아래 부품들을 조립하는 것이 가장 효율적이었습니다.

  •  블루투스 모듈은 HM-10 모듈, breakout 보드 달린 걸로 : 이게 납땜하기도 편하고 동작도 잘됩니다.
  •  배터리 : 코인 배터리는 1~3일 정도만 버팁니다. LiPo 배터리-충전모듈 조합을 사용하는 것이 좋습니다.
  •  진동모터 : 진동모터가 크면 움직임이 많아지지만 배터리 소모량이 그만큼 많아집니다. 가급적 작고 소모전류 적은 넘으로 선택하세요.

이렇게 수정해서 다시 만든 최종 결과물입니다.

assembly_done03

.

앱 다운로드

전용 안드로이드 앱인 Blinky 를 다운로드 합니다. 안드로이드 v4.3 이상만 지원합니다. (아이폰은 죄송합니다. 구현할 준비가 되어있질 않아서…) 아래 링크 혹은 Google Play Store 에서 Blinky를 검색하세요.

Blinky 앱은 메시지, 필터, 매크로, 설정, logbox 탭으로 구성되어 있습니다.

  • 메시지 : notification 수집 권한을 얻었다면 현재 수집된 notification 메시지 들이 리스트로 보입니다. 아직 각각의 메시지들은 활성화 되지 않았습니다. 원하는 메시지를 클릭해서 뜨는 메뉴를 통해 특정 앱이 만드는 메시지를 활성화 할 수 있습니다. 이 과정을 거치면 자동으로 필터가 생성됩니다. 이제 새로운 notification이 등록되면 filter와 대조한 뒤 자동으로 활성화 할 것입니다. 만약 활성화 된 메시지가 하나라도 있다면 진동모터를 on 하기 위해 신호(AT command)를 Blinky 장치로 보내줍니다.
  • 필터 : 현재 등록된 필터들을 보여줍니다. 여기서 필터를 삭제하면 해당 메시지가 disable 되는 효과가 발생합니다.
  • 매크로 : Blinky 앱이 원래는 비슷하지만 다른 용도로 만든거라… 소셜벅에서는 사용하지 않습니다.
  • 설정 : 몇 가지 유용한 설정들을 바꿉니다. 여기서 자신이 사용하는 블루투스 모듈을 선택할 수 있습니다. (HM-10, HM-11) ‘백그라운드로 실행’ 항목은 특히 유용합니다. 앱을 종료해도 계속 작업을 수행하거든요.
  • logbox : 폰과 Blinky 장치가 주고받은 메시지를 표시해줍니다.

아래 단계에 따라 Blinky 앱을 설정할 수 있습니다.

  1. Settings 탭 선택
  2. BLE 모듈 타입 선택
  3. ‘Run in background’ 옵션을 선택할 경우 앱 종료 후에도 Blinky 기능이 유지됩니다.
  4. 우측 상단의 ‘i’ 아이콘을 선택
  5. Blinky 앱이 notification 데이터를 수집할 수 있도록 권한 부여
  6. Message List 탭 선택
  7. Menu key – Refresh contents 선택
  8. Message List 에서 원하는 메시지 선택
  9. ‘Enable this app’s message all’ 선택
  10. 이후부터 메시지를 생성한 앱의 모든 메시지가 활성화 됩니다.
  11. 우측 상단 ‘눈’ 모양 아이콘 선택
  12. 자신의 BLE 기기를 찾아서 페어링
  13. 지금부터 설정해 둔 앱의 notification 메시지가 생성되면 BLE 기기에서 특정 동작이 실행되도록 자동으로 신호를 보내줍니다.

.

동작 확인

자 이제 잘 동작하는지 확인해 봅니다!

.

마치며

이런 작은 장난감 저도 좋아하지만 아들 녀석도 좋아하네요.

completed01

좀 더 신경써서 만든 새 버전… 만들고 보니 모기를 닮은….

socialbug_new2

socialbug_new

참고자료 : 

You may also like...