본문 바로가기

하드웨어/아두이노

Nano33BLESensor 라이브러리

반응형
 

DaleGia/Nano33BLESensor

An Arduino library for the Nano 33 BLE Sense that leverages Mbed OS to automatically place sensor measurements in a ring buffer that can be integrated into programs in a simple manner. - DaleGia/Na...

github.com

 

DaleGia님이 제작하신 Arduino nano 33 ble sense의 센서 라이브러리

MbedOS를 활용하여 간단한 방식으로 센서 측정을 도와준다.

 

 

사용가능 센서

  • 3-axis Accelerometer
  • 3-axis Gyroscope
  • 3-axis Magnetic
  • RMS Microphone
  • Barometric Pressure
  • Temperature (with humidity)
  • Proximity
  • RGBC Colour
  • Gesture

 

센서의 매우 간단한 초기화와 서로 다른 센서간의 인터페이스를 제공해준다. 하지만 현재(2021년 4월기준) 이 라이브러리를 그대로 사용하기에는 여러 문제가 발생한다.

 

 

1.모호한 표현 제거

위 예제를 받고 업로드하면 다음과 같은 에러메시지를 확인할 수 있다.

-

nanoBLEsense_proximity:114:63: error: call of overloaded 'writeValue(char [20], int&)' is ambiguous'

-

이런 경우에는 함수 호출시 연산자를 바꿔줌으로 해결할 수 있다.

 

proximityBLE.writeValue(bleBuffer, writeLength);  // 에러발생
proximityBLE.writeValue(bleBuffer);               // OK

 

 

 

간단한 수정 후 예제를 업로드하고 시리얼 플로터를 실행시킨 모습이다.

 

2.버전 통일(혹은 컴파일 링크 수정)

나노33 Microphone을 사용하는 예제들은 특정 버전에서만 실행된다. All Sensor나 RMS예제를 실행시키면 다음과 같은 에러메시지를 확인할 수 있다.

-

/Nano33BLESensor/src/Nano33BLEMicrophoneRMS.cpp:105: undefined reference to `arm_rms_q15'

-

이럴때에는 다양한 해결방법이 있지만, 기본 아두이노IDE를 사용하는 경우 mbed의 버전을 변경하는 방법이 가장 간편하다.

 

 

 

 보드 매니저로 들어가 버전을 변경할때 주의할 점은, 'mbed'의 키워드가 들어가는 모든 패키지를 삭제한 후에 설치해줘야한다는 것이다. 보드매니저에 들어가 'mbed'로 검색하고 나면 하나의 패키지만 보일텐데, 이 패키지를 삭제해야 숨겨진 다른 mbed패키지를 확인할 수 있으니 mbed로 검색시 등장하는 설치된 보드가 하나도 안나올때까지 모든 패키지를 삭제후 재설치해줘야한다. 글쓴이는 '1.1.6 버전'으로 설정시 이 예제를 실행시킬 수 있었다.

 

 이런 문제가 생기는 이유가 Mbed가 신버전으로 업데이트하면서 특정 라이브러리를 제거했기 때문인데, 신버전 mbed라이브러리를 사용하면서 Nano33BLESensor 라이브러리를 사용하기 위해서는 제거된 라이브러리를 설치해주면 된다. 추가해야할 파일 (libarm_cortexM4l_math.a)은 아래 깃허브에서 다운로드받을 수 있다.

 

 

 

ARM-software/CMSIS_5

CMSIS Version 5 Development Repository. Contribute to ARM-software/CMSIS_5 development by creating an account on GitHub.

github.com

 

 

3.해결하지 못한 문제

 어쩌면 라이브러리의 문제가 아닌 보드 자체의 문제이기도 하지만, allsensor예제 실행시 아두이노가 오래 실행되지 못하고 죽어버린다. 보드가 불안정한데에는 여러가지 이유가 있는데, 아직도 제대로 문제해결을 못하고있다.

 

1. 제스처, 컬러, 근접도를 감지하는 APD9960 연속실행 문제

2. IMU센서와 온습도센서간의 문제

3.  APD9960과 ble칩간의 문제(1번 문제와 연계됨)

4. 이 외의 문제들..

 

 아두이노 나노33 ble sense보드는 정말 다양한 기능을 가지고 있지만, 이 기능을 다 활용하기에는 부족한 파워를 가지고 있는듯하다.. 파면 팔수록 해결해야할 문제들이 쌓이고 있어서 정말 많은 연구와 테스트가 필요할듯하다.

 

 

 

 

 

참고자료

https://github.com/DaleGia/Nano33BLESensor/issues/6

 

반응형

'하드웨어 > 아두이노' 카테고리의 다른 글

아두이노 33 BLE nano sense BLECharacteristic  (0) 2021.04.07