Bluno - 아두이노 bluetooth 4.0(BLE) 보드

2018. 6. 25. 09:20

Arduino/Board

Bluno - an Arduino Bluetooth 4.0 (BLE) Board

BlunoDFRobot사에서 만든 아두이노 bluetooth 통합 보드입니다. 아두이노 우노(Uno)보드를 베이스로 하여 bluetooth 4.0(BLE)칩을 시리얼(Serial) 방식으로 연결하였고, 코드내에서 접근하는 것도 쉽습니다.

bluno 보드 때문에 DFRobot사를 알게되어 한동안 이 회사의 제품들을 꽤 많이 사들였습니다. 비교적 저렴한 가격에 품질이 좋은 제품들을 제공하기 때문이었는데, 제품에 비해 활용을 위한 Tutorial 제공 등은 부족한 편이어서 좀 어려움이 있습니다. 그래도, bluno 보드에 대한 문서는 제법 제공하고 있습니다.

패키지 및 보드 외형 소개

제품 포장은 간단합니다. 보드외에 다른 구성품은 없습니다. DFRobot사는 검정색 보드에 흰색 라벨을 주로 사용하며, 디지털 헤더소켓과 아날로그 그리고 전원 관련 소켓들을 다른 색상으로 구분하고 있습니다.

보드에 사용된 블루투스 칩은 TI사의 CC2540이며, 가운데 Boot 버튼은 칩 펌웨어 업데이트시에 사용됩니다. 사진상 보드 왼쪽 끝에 안테나가 보입니다.

보드위에 LED가 여섯 개나 있습니다. 우선, 오른쪽 위 두 개는 Uno 보드의 전원 지시등(ON)과 디지털 13번 핀에 연결된 LED(L)이고, 나머지는 CC2540 칩과 관련이 있습니다. RX, TX는 블루투스 칩과 컨트롤러 사이의 데이터 통신시 점등되고, 외부 장치와 연결되거나 페어링 상태에 따라 LNK, PAR LED가 점등됩니다.

보드 뒷 면입니다. 흰색으로 깔끔하게 마무리되어 있습니다.

제품 사양
  • On-board BLE chip: TI CC2540
  • Wireless Programming via BLE
  • Support Bluetooth HID
  • Support AT command to config the BLE
  • Transparent communication through Serial
  • Upgrade BLE firmware easily
  • DC Supply: USB Powered or External 7V~12V DC
  • Microcontroller: Atmega328
  • Bootloader: Arduino Uno
  • Compatible with the Arduino Uno pin mapping
  • Size: 60mm * 53mm(2.36"*2.08")
  • Weight: 30g
기본 테스트

다음으로 기본적인 테스트를 수행해 보겠습니다.

LED blink
/*
  Blink

  Turns an LED on for one second, then off for one second, repeatedly.

  Most Arduinos have an on-board LED you can control. On the UNO, MEGA and ZERO
  it is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN is set to
  the correct LED pin independent of which board is used.
  If you want to know what pin the on-board LED is connected to on your Arduino
  model, check the Technical Specs of your board at:
  https://www.arduino.cc/en/Main/Products

  modified 8 May 2014
  by Scott Fitzgerald
  modified 2 Sep 2016
  by Arturo Guadalupi
  modified 8 Sep 2016
  by Colby Newman

  This example code is in the public domain.

  http://www.arduino.cc/en/Tutorial/Blink
*/

// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
}

일반적으로 보드 테스트시에 많이 하는 온보드 LED(윗 쪽 사진에서 L이라 표시된)를 On 시키는 간단한 코드입니다. 아두이노 기본 예제이므로, 위와 같이 따라가시면 소스를 불러올 수 있습니다.

베이스가 Uno 보드이기 때문에 별도의 드라이버 설치가 필요없고, 그냥 Uno 보드처럼 사용하면 됩니다.

결과화면입니다. 사진이라 깜박이는 모습은 확인할 수 없지만, 제대로 작동되는 것을 확인했습니다. 참고로, 프로그램 업로드시 위 LED가 깜박이며 데이터가 전송중임을 표시하는데, 보드위의 RX, TX LED도 같이 깜박입니다. 이는, BLE 칩이 시리얼(UART)방식으로 연결되어 있기 때문인데, 이 때문에 프로그램 업로드시에 꼭, 블루투스 연결을 해제해야 합니다.

아이폰과의 데이터 송수신 테스트

다음으로, 블루투스 기능을 테스트하겠습니다. 아이폰과 간단한 문자들을 주고 받는 테스트인데, 먼저 보드쪽 소스부터 업로드 하겠습니다.

void setup() {
  Serial.begin(115200);  //initial the Serial
}
void loop() {
  if (Serial.available())  {
    Serial.write(Serial.read());//send what has been received
    Serial.println();   //print line feed character
  }
}

소스는 위와 같습니다. 위 링크로 가시면 소스 및 관련 정보들을 볼 수 있습니다. 소스가 무척 간단한데, 블루투스 칩(CC2540)이 시리얼 방식으로 연결되어 있기 때문에, 별도의 라이브러리 없이 일반적인 시리얼 통신처럼 데이터를 주고 받으면 됩니다.

void setup() {
  Serial.begin(115200);  //initial the Serial
}

소스를 간단히 살펴보겠습니다. 우선 시리얼 모니터를 사용할 때와 동일하게 위와 같이 setup() 함수내에서 115,200으로 Serial 통신을 시작합니다.

if (Serial.available())  {
    .......
  }

버퍼에 데이터가 있다면 즉, 시리얼 통신으로 수신된 데이터가 존재한다면 IF문 안쪽으로 들어가게 됩니다.

    Serial.write(Serial.read());//send what has been received
    Serial.println();   //print line feed character

IF문 안쪽으로 들어왔다면, 한 문자씩 읽어서(Serial.read()), 그 읽은 문자를 그대로 다시 전송(Serial.write())합니다. 따라서 송신측에선 보낸 문자가 에코(echo)되서 돌아옵니다.

이제, 아이폰에서 확인해보겠습니다. 우선, 아이폰 블루투스 설정에서 보면 아래와 같이 "Bluno"라는 기기명을 볼 수 있습니다. 연결할 앱을 직접 만드는 건 어려워서 터미널 앱을 하나 다운받아 테스트하겠습니다.

앱스토어에서 "Bluno"로 검색하면 몇가지 전용 앱이 나오는데, 그 중에 AT 커맨드 등 터미널 통신을 지원하는 "Bluno Terminal"이라는 앱입니다. Bluno에 맞게 제작되었기 때문에 해당 보드가 검색되면 자동으로 연결까지 해줍니다.

앱을 실행하면 위와 같이 자동으로 Bluno 보드를 찾아 연결해줍니다.

테스트로 "Hello, Bluno!"라는 문자열을 전송한 결과입니다. 현재 Bluno는 받은 문자를 그대로 다시 보내도록 프로그래밍되어 있고, 위 화면의 received 데이터를 통해 확인할 수 있습니다.

안드로이드와의 데이터 송수신 테스트

테스트는 갤럭시 넥서스 탭을 이용했습니다. PlayStore에서 Bluno로 검색하면 위와 같은 간단한 리모트앱을 찾을 수 있습니다.

위 화면과 같이 아이폰과 마찬가지로 동일한 결과를 볼 수 있습니다.

이것으로, Bluno에 대한 간단한 소개를 마치겠습니다. 펌웨어 업데이트 등 좀 더 자세한 정보는 아래 링크를 따라 가면 되는데, 몇 년전 내용이 업데이트 없이 그대로 제공되고 있고, 또 안드로이드 스튜디오나 스위프트 소스가 필요하신 분은 따로 찾아보셔야 합니다.


Comments