November 24, 2020

디바이스마트 미디어:

디바이스마트 온라인 매거진 전자책(PDF)이 무료! -

2020-09-29

디바이스마트 자체제작 코딩키트 ‘코딩 도담도담’ 출시 -

2020-08-10

GGM AC모터 대량등록! -

2020-07-10

라즈베리파이3가 드디어 출시!!! (Now Raspberry Pi 3 is Coming!!) -

2016-02-29

MoonWalker Actuator 판매개시!! -

2015-08-27

디바이스마트 레이저가공, 밀링, 선반, 라우터 등 커스텀서비스 견적요청 방법 설명동영상 입니다. -

2015-06-09

디바이스마트와 인텔®이 함께하는 IoT 경진대회! -

2015-05-19

드디어 adafruit도 디바이스마트에서 쉽고 저렴하게 !! -

2015-03-25

[29호] Intel Edison Review -

2015-03-10

Pololu 공식 Distributor 디바이스마트, Pololu 상품 판매 개시!! -

2015-03-09

[칩센]블루투스 전 제품 10%가격할인!! -

2015-02-02

[Arduino]Uno(R3) 구입시 37종 센서키트 할인이벤트!! -

2015-02-02

[M.A.I]Ahram_ISP_V1.5 60개 한정수량 할인이벤트!! -

2015-02-02

[디웰전자] 전류센서 파격할인!! 50% 할인이벤트!! -

2015-02-02

[에스엔에스] 신상품 대량 입고기념 할인이벤트!! -

2015-02-02

[Uni-Trend] 인기상품 10종 할인이벤트!! -

2015-02-02

신학기 기념 니덱서보모터 할인이벤트!! -

2015-02-02

UDT와 유나이티드 콤프레샤 인기모델 15종 최대15% 할인!! -

2015-02-02

[OWON] 오실로스코프 VDS시리즈 최대12% 특별할인!! -

2015-02-02

보조배터리 최대 35% 할인이벤트!! -

2015-02-02

[60호]NANO 33 IoT보드를 활용한 블루투스 수평계 만들기

60 쇼케 블루투스 수평계 (1)

NANO 33 IoT보드를 활용한

블루투스 수평계 만들기

요즘 우리나라에서도 많은 분들이 캠핑카를 운용하고 있습니다. 캠핑카를 운용하다보면 필수적으로
수평을 맞추어야 하는 데 이 때 활용할 수 있는 블루투스 수평계를 만들어 보고자 합니다.

글 | 김진섭 naturaljs@hanmail.net

NANO 33 IoT 보드는 기본적으로 블루투스 기능과 가속도 센서를 내장하고 있기 때문에 별도의 회로 구성없이도 블루투스 수평계를 만들 수 있습니다.

1. 아두이노 IDE 설치하기

NANO 33 IoT보드가 블루투스 수평계로 동작하도록 하기 위해서는 적당한 소스코드를 보드에 업로드 해야합니다. 이를 위해서는 아두이노 IDE(통합개발환경)이 필요합니다.

아두이노 공식 홈페이지 : https://www.arduino.cc/
홈페이지에 접속하여 소프트웨어 다운로드 페이지로 들어갑니다.

60 쇼케 블루투스 수평계 (2)

다운로드 페이지를 보면 Arduino IDE버전의 옆에 다양한 다운로드가 표시되어 있습니다. 여기에서 설치 버전인 Installer와 무설치 버전인 ZIP파일용, 윈도우 10의 앱버전 맥, 리눅스용 개발 환경을 다운로드 받을 수 있습니다. 여기에서는 설치 버전인 Installer버전을 다운로드 합니다.

60 쇼케 블루투스 수평계 (3)

60 쇼케 블루투스 수평계 (4)
이제 설치 파일을 이용해서 설치해봅니다.
설치 파일을 실행하면 설치 화면이 나옵니다. 순서대로 I Aree ▶ Next ▶ Install 버튼을 눌러 설치해줍니다.

60 쇼케 블루투스 수평계 (5) 60 쇼케 블루투스 수평계 (6) 60 쇼케 블루투스 수평계 (7)

2. 소스코드 업로드하기
아두이노를 실행하면 다음과 같은 화면을 볼 수 있습니다.

60 쇼케 블루투스 수평계 (8)
이제 본격적인 시작입니다.
먼저 아두이노 NANO 33 IoT에 대한 설정을 해야 합니다. 그러나 기본 IDE에서는 아두이노 NANO 33 IoT보드를 찾을수 없기에 추가를 해주어야 합니다.
​아두이노 IDE에서 보드를 없는 보드를 추가할 때에는 보드 툴-보드의 상단의 ‘보드 매니저…’로 다양한 보드들을 검색하여 추가할 수 있습니다.

60 쇼케 블루투스 수평계 (9)
NANO 33 IoT를 추가할 때에는 검색창에 “NANO 33″이라고 검색하고 ‘Arduino SAMD Boards (32-bits ARM Cortex-M0+)’를 확인하고 설치합니다. 보드를 설치하고 다시 보드 옵션을 확인해보면 Arduino SAMD 하위에 Arduino NANO 33 IoT를 확인할 수 있습니다. NANO 33 IoT를 선택하여 보드를 설정해줍니다.

60 쇼케 블루투스 수평계 (10)

보드를 설정한 후에는 포트 설정이 필요합니다. 포트를 사용하기 위해서는 보드의 드라이버를 설치해야 하지만 Nano 33 IoT 보드의 드라이버는 연결시 기본적으로 설치가 됩니다.
드라이버 설치가 완료되면 장치 관리자에서 포트를 확인할 수 있습니다.
보드 인식이 확인되면 IDE에서 툴-포트의 옵션을 통해 아두이노를 설정해 주면 보드 설정은 완료됩니다.

60 쇼케 블루투스 수평계 (11)

블루투스 수평계를 만들기 위해 “LSM6DS3”이라는 6축센서와 블루투스 기능의 라이브러리를 얻어야합니다. 이를 위해 Arduino Software (IDE)에서 사용 가능한 라이브러리 관리자를 열어줍니다.

60 쇼케 블루투스 수평계 (12)

라이브러리 관리에서 “LSM6DS3”과 “ArduinoBLE”를 검색하여 설치 버튼을 눌러줍니다.

60 쇼케 블루투스 수평계 (13)

이제 다음 소스 파일을 보드에 업로드 하여 줍니다. (Caravan_check.ino)
다운로드 링크 : https://blog.naver.com/geniusus/221828233778

#include <ArduinoBLE.h >
#include <Arduino_LSM6DS3.h >

BLEService DeviceInformation(“180A”);
BLEFloatCharacteristic Weight(“2A98″, BLERead | BLENotify);
BLEShortCharacteristic WeightMeasurement(“2A9D”, BLERead | BLENotify);

float acc_x, acc_y, acc_z;
float acc_pitc, acc_roll;
short acc_pit, acc_rol;

long previousMillis = 0;

void setup() {
Serial.begin(9600);
if (!IMU.begin()) { //LSM6DS3센서 시작
Serial.println(“LSM6DS3센서 오류!”);
while (1);
}
if (!BLE.begin()) {
Serial.println(“starting BLE failed!”);
while (1);
}

// set advertised local name and service UUID:
BLE.setLocalName(“CaravanInfo”);
BLE.setAdvertisedService(DeviceInformation);
DeviceInformation.addCharacteristic(Weight);
DeviceInformation.addCharacteristic(WeightMeasurement);
BLE.addService(DeviceInformation);

Weight.writeValue(0);
WeightMeasurement.writeValue(0);

// start advertising
BLE.advertise();
Serial.println(“BLE LED Peripheral”);
}

void updateAngle() {
if (IMU.accelerationAvailable()) {
IMU.readAcceleration(acc_x, acc_y, acc_z);
//각도 계산(라디안을 각도로 180/PI = 57.27755)
acc_pitc = RAD_TO_DEG * atan(acc_x / sqrt(acc_y *acc_y + acc_z *acc_z));
acc_roll = RAD_TO_DEG * atan(acc_y / sqrt(acc_x *acc_x + acc_z *acc_z));

acc_pit = acc_pitc * 100;
acc_rol = acc_roll * 100;

Serial.print(“pit = “); // print it
Serial.print(acc_pit);
Serial.print(“, rol = “); // print it
Serial.println(acc_rol);

Weight.writeValue(acc_pit); // and update the battery level characteristic
WeightMeasurement.writeValue(acc_rol);
}
}

void loop() {
// listen for BLE peripherals to connect:
BLEDevice central = BLE.central();

// if a central is connected to peripheral:
if (central) {
Serial.print(“Connected to central: “);
Serial.println(central.address());
// while the central is still connected to peripheral:
while (central.connected()) {
long currentMillis = millis();
if (currentMillis – previousMillis >= 50) {
previousMillis = currentMillis;
updateAngle();
}
}
Serial.print(F(“Disconnected from central: “));
Serial.println(central.address());
}
}

업로드를 하실 때 꼭 빨간 부분을 확인 하시고 업로드 버튼을 눌러줍니다.

60 쇼케 블루투스 수평계 (14)

확인이 끝났으면 업로드 버튼을 눌러줍니다.

60 쇼케 블루투스 수평계 (15)

이렇게 하면 보드에서는 기울기 신호를 연결되어 있는 블루투스 기기(핸드폰)로 보내주게 됩니다. 그럼 데이터가 수신되는 핸드폰의 애플리케이션에 대해 알아보기 전에 코드를 잠시 분석해 보도록 하겠습니다.

#include <ArduinoBLE.h >
#include <Arduino_LSM6DS3.h >

NANO 33 IoT보드에 내장된 블루투스와 6축센서를 사용하기 위한 라이브러리를 포함시키는 코드입니다.

BLEService DeviceInformation(“180A”);
BLEFloatCharacteristic Weight(“2A98″, BLERead | BLENotify);
BLEShortCharacteristic WeightMeasurement(“2A9D”, BLERead | BLENotify);

UUID를 추가하는데 이미 쓰이고 있는 16BIT의 공식적인 UUID를 사용했습니다. 여기에서 DeviceInformation은 0000180a-0000-1000-8000-00805f9b34fb의 UUID로 게시가 되며, 밑에 Weight와 WeightMeasurement의 UUID도 진하게 표시된 부분만 바뀐 UUID로 게시가 됩니다.

float acc_x, acc_y, acc_z;
float acc_pitc, acc_roll;
short acc_pit, acc_rol;
long previousMillis = 0;

프로그램에서 사용될 변수를 지정합니다. 저의 경우 임의로 위와 같은 이름을 지정했는데 편하신 이름으로 바꾸어도 됩니다. 피치와 롤값이 두 개인데 그 이유는 나중에 보내는 데이터를 소수점 2자리로 고정하기 위해 위와 같은 편법을 썼습니다.
또한 Delay함수를 사용하지 않고 일정한 시간간격으로 지정된 동작을 하도록 하기 위해 previousMillis를 변수로 지정하였습니다. 이에 관한 자료는 아두이노 예제 중 BlinkWithoutDelay를 참고하시면 됩니다.

void setup() {
Serial.begin(9600);
if (!IMU.begin()) { //LSM6DS3센서 시작
Serial.println(“LSM6DS3센서 오류!”);
while (1);
}
if (!BLE.begin()) {
Serial.println(“starting BLE failed!”);
while (1);
}

동작에 앞서 보드에 전원이 들어왔을 때 한번 실행될 Setup동작을 지정합니다. 여기에서는 6축센서와 BLE가 제대로 동작하는지 확인을 하게 됩니다.

BLE.setLocalName(“CaravanInfo”);
BLE.setAdvertisedService(DeviceInformation);
DeviceInformation.addCharacteristic(Weight);
DeviceInformation.addCharacteristic(WeightMeasurement);
BLE.addService(DeviceInformation);

Weight.writeValue(0);
WeightMeasurement.writeValue(0);

BLE.advertise();

Setup구문 안에 있는 내용입니다.
BLE 기기(NANO 33 IoT보드)가 공시할 이름과 서비스 UUID, 특성 UUID의 이름을 지정하고 초기값을 0으로 지정한 후 BLE신호를 주변에 뿌리도록 합니다.

void loop() {
BLEDevice central = BLE.central();
if (central) {
Serial.print(“Connected to central: “);
Serial.println(central.address());
while (central.connected()) {
long currentMillis = millis();
if (currentMillis – previousMillis >= 50) {
previousMillis = currentMillis;
updateAngle();
}
}
Serial.print(F(“Disconnected from central: “));
Serial.println(central.address());
}
}

updateAngle 구문 이전에 loop문을 살펴보겠습니다.
여기에서는 BLE기기(NANO 33 IoT보드)가 BLE central과 접속된 경우 시간을 재도록 하며 50ms(0.05초)가 지난 경우 updateAngle함수를 실행시키도록 합니다.

void updateAngle() {
if (IMU.accelerationAvailable()) {
IMU.readAcceleration(acc_x, acc_y, acc_z);
//각도 계산(라디안을 각도로 180/PI = 57.27755)
acc_pitc = RAD_TO_DEG * atan(acc_x / sqrt(acc_y *acc_y + acc_z *acc_z));
acc_roll = RAD_TO_DEG * atan(acc_y / sqrt(acc_x *acc_x + acc_z *acc_z));

acc_pit = acc_pitc * 100;
acc_rol = acc_roll * 100;

Serial.print(“pit = “);
Serial.print(acc_pit);
Serial.print(“, rol = “);
Serial.println(acc_rol);

Weight.writeValue(acc_pit);
WeightMeasurement.writeValue(acc_rol);
}
}

updateAngle내부가 가장 핵심적인 부분이라고 할 수 있습니다. 여기에서는 가속도 값을 받아 이를 통해서 기울기를 측정하게 되고 여기에서 나오는 피치값은 Weight UUID를 통해 송신하고 롤 값은 WeightMeasurement UUID를 통해 송신하게 됩니다.

3. 애플리케이션 제작
애플리케이션은 블록코딩으로 간단하게 만들 수 있는 앱인벤터를 이용하여 만들어 보도록 하겠습니다. (물론 기능을 여러 가지를 넣다보니 블록이 복잡해졌습니다.) 간단하게 만드실 분들은 블록을 참고하셔서 필요없는 부분은 과감히 삭제 하셔도 됩니다.
먼저 애플리케이션을 만드는 앱 인벤터에 접속합니다.

http://ai2.appinventor.mit.edu/

접속시 로그인 화면이 뜹니다. google계정이 있다면 쉽게 로그인 할 수 있습니다.

60 쇼케 블루투스 수평계 (16)
로그인 하면 아래와 같이 프로젝트를 만들 수 있습니다. ‘새 프로젝트 시작하기’를 눌러 프로젝트 이름을 넣어줍니다

60 쇼케 블루투스 수평계 (17)

레이아웃-수평배치를 드래그 하여 넣어줍니다.

60 쇼케 블루투스 수평계 (18)

오른쪽의 속성창에서 너비는 부모 요소에 맞추어 줍니다.

60 쇼케 블루투스 수평계 (19)

사용자 인터페이스에서 ‘목록 선택버튼’과 ‘버튼’을 하나씩 넣어줍니다.

60 쇼케 블루투스 수평계 (20)

이런 식으로 하여 자신이 원하는 디자인의 앱을 만들어줍니다.
저는 ‘보이기’ 기능을 이용하여 스크린을 두 페이지로 나누어 만들었습니다. (다른 스크린에 들어가더라도 블루투스 연결을 유지하기 위해서입니다.)

60 쇼케 블루투스 수평계 (21)

60 쇼케 블루투스 수평계 (22)

이제 동작이 되도록 하기 위하여 각 버튼에 코딩을 해주어야 합니다.
오른쪽 윗 부분에 ‘블록’을 클릭하여 줍니다. 제가 만든 수평계의 블록구성은 아래와 같습니다.

60 쇼케 블루투스 수평계 (23)

기능을 하나 두 개 추가하다보니 블록의 개수가 많아졌네요. 확대하여 하나씩 확인해보고 그 기능에 대해 설명해 드리도록 하겠습니다.

60 쇼케 블루투스 수평계 (24)

먼저 변수들을 지정해줍니다. BLE기기의 데이터를 받아오기 위해서는 서비스 UUID와 특성 UUID가 지정되어야 하며, 각 UUID를 통해 데이터가 전송될 수 있습니다. Classic Bluetooth보다 복잡하긴 하지만 동시에 여러 개의 데이터를 독립적으로 전송한다는 데에 큰 장점이 있습니다. 이제 연결을 위한 버튼인 SCAN, 연결하기, 연결끊기가 동작하는 코드에 대하여 알아보도록 하겠습니다.

60 쇼케 블루투스 수평계 (25)

먼저 SCAN버튼입니다.
SCAN버튼을 누르면 주변 BLE기기를 스캔하게 됩니다. 이때 스캔된 기기를 블루투스 리스트에 하나씩 추가하게 되는데, 저는 블루투스 리스트를 평소에 안보이도록 해두었기 때문에 블루투스 보이기 값을 ‘참’으로 바꾸어 주는 코드를 더 추가 하였습니다.

60 쇼케 블루투스 수평계 (26)

주변의 블루투스 코드가 발견되면 블루투스 리스트를 추가하도록 하는 코드입니다.

60 쇼케 블루투스 수평계 (27)

이제 블루투스 리스트에서 하나의 항목을 선택한 후 ‘연결하기’버튼을 누르면 항목 번호로 연결이 실행됩니다. 나중에 자동연결을 위하여 이때 연결되는 기기의 MAC주소를 ‘saveDevice’라는 태그로 TinyDB에 저장해두게 됩니다.

60 쇼케 블루투스 수평계 (28)

마지막으로 연결끊기를 누르면 BLE연결을 끊고 블루투스 리스트를 안보이도록 해줍니다.

60 쇼케 블루투스 수평계 (29)

블루투스가 연결되었다면 상태 메세지를 “블루투스가 연결되었습니다.”로 바꾸고 수평계 화면을 보이도록 하며, 블루투스가 끊어졌다면 “블루투스가 끊겼습니다.”로 상태 메시지를 바꾸고 수평계 화면을 안보이도록 하는 동작입니다.

60 쇼케 블루투스 수평계 (30)

위에 코드는 애플리케이션이 초기화되었을 때(시작할 때) 자동연결하도록 하는 코드입니다. 만약 연결되었던 기기가 있었다면 자동연결을 실행하도록 하게 되며, TinyDB저장된 기기의 MAC 어드레스를 불러와 연결을 시도하게 됩니다.

60 쇼케 블루투스 수평계 (31)
핸드폰에서 뒤로 가기 버튼을 눌렀을 때의 동작을 지정해줄 필요가 있습니다. 만약 뒤로가기로 종료가 되는 경우 앱은 새로 시작하는데 블루투스의 연결을 유지되는 현상이 발생하는 경우가 있기 때문에 뒤로가기 버튼이 눌리는 경우 동작할 코드를 따로 지정해줍니다. 저는 블루투스의 연결을 끊고 애플리케이션을 종료하도록 하였습니다.

60 쇼케 블루투스 수평계 (32)

60 쇼케 블루투스 수평계 (33)

수평계에서 핵심적인 코드입니다. 블루투스 연결이 유지되는 동안 같은 동작을 반복합니다. 두 개의 UUID에서 전송하는 값을 받아와 이를 필요한 데이터로 계산하는 과정을 거칩니다. 이후 이 값을 출력하고, 차량의 정면사진과 측면사진을 회전시켜 쉽게 확인 가능하도록 하는 동작을 합니다.

60 쇼케 블루투스 수평계 (34)

이 블루투스 수평계를 사용하는 사람마다 차량의 상태가 다르기 때문에 차량 설정하는 창을 열어주는 버튼의 동작코드입니다. 스크린을 바꿀 수도 있지만 스크린이 바뀌는 경우 블루투스 연결이 끊어지기 때문에 저는 화면이 꽉차는 레이아웃을 크게 두 개를 만들고 차량설정으로 들어가는 경우 첫 번째 레이아웃을 안보이도록 하고 두 번째 레이아웃을 보이게 하여 블루투스 연결을 유지하도록 하였습니다.

60 쇼케 블루투스 수평계 (35)

60 쇼케 블루투스 수평계 (36)
블루투스 수평계를 차량에 설치한 경우 정확히 수평인 곳에 설치될 가능성은 거의 없습니다. 그렇기 때문에 영점을 조절할 수 있는 버튼을 넣어 영점조정을 눌러 현재의 기울기 값을 저장해 측정값에서 기준값을 빼주도록 하였습니다.

60 쇼케 블루투스 수평계 (37)

혹시나 잘못된 BLE기기와 연결되는 경우 잘못된 값을 받아와 계속 오류가 나게 되는데, 이를 해결하기 위하여 자동연결을 초기화 시키는 버튼이 있습니다.

60 쇼케 블루투스 수평계 (38)

60 쇼케 블루투스 수평계 (39)
차량 설정 페이지 안에서는 다양한 값을 변경할 수 있습니다. 차량마다 그 길이와 너비가 다르기 때문에 각자의 차량에 맞도록 길이와 너비를 지정해 줄 수 있으며, 좀 더 애정이 가도록 이미지도 자신의 차량에 맞도록 변화시켜줄 수 있습니다. 또한 소수점의 개수를 변경시켜 보이는 민감도도 변화시켜줄 수 있습니다.

60 쇼케 블루투스 수평계 (40)

수평계를 충전잭 위치에 따라 앞뒤를 바꾸어 연결할 수 있도록 앞뒤를 변경하는 버튼을 추가하였습니다.

60 쇼케 블루투스 수평계 (41)

이렇게 다양하게 차량을 설정한 값이 애플리케이션을 껐다고 사라지면 안되기 때문이 이 모든 값은 TinyDB에 저장을 하게 됩니다.

60 쇼케 블루투스 수평계 (42)

그리고 애플리케이션이 초기화 되는 경우(새로 앱을 실행시킨 경우) TinyDB에 저장된 값을 불러오게 되며, 자동 연결시도를 하게 됩니다.
처음 애플리케이션을 만들었을 때는 코드가 매우 적었습니다만 점점 오류를 해결하고 편의기능을 넣다보니 코드가 점점 늘어났습니다. 위 코드에서 원하는 부분만 발췌하여 사용하시더라도 수평계 애플리케이션을 만들 수 있습니다.

4. 애플리케이션 설치 및 동작확인하기
이제 핸드폰(블루투스 4.0이상)에 만들어진 앱을 설치하고 사용해봅니다. 애플리케이션의 링크는 다음과 같습니다. (https://play.google.com/store/apps/details?id=appinventor.ai_jinsub8506.Caravan_check) 혹은 구글 플레이에서 “카라반 블루투스(BLE) 수평계”를 검색하여 다운로드 합니다.

60 쇼케 블루투스 수평계 (1)

애플리케이션을 실행한 후 ‘SCAN’을 눌러 주변에 NANO 33 보드를 검색한 후 ‘연결하기’를 누르면 카라반의 수평수치가 표시되는 것을 확인할 수 있습니다.
이후 다시 애플리케이션을 실행시키면 마지막에 접속되었던 블루투스 기기를 검색하여 자동으로 연결됩니다.

60 쇼케 블루투스 수평계 (43)

60 쇼케 블루투스 수평계 (44)

차량 설정에서는 자신의 카라반에 대한 설정을 할 수 있습니다.
자신의 카라반의 크기, 표시되는 소수점의 개수를 조절할 수 있으며 화면에 나오는 카라반의 사진을 바꿀 수도 있습니다.
수평조정 버튼은 현재의 기울기를 0으로 놓는 영점조절 버튼입니다.
혹시 앞뒤를 바꾸어야하는 상황이라면 전후 좌우 변경 버튼으로 유동적으로 사용할 수 있습니다.

60 쇼케 블루투스 수평계 (45)

이처럼 NANO 33 보드를 사용하면 별도의 회로 구성없이 원격에서 수평수치를 받아볼 수 있습니다.

5. 자주 묻는 질문
Q1. 뭘 사야하나요?
녹색창에 “NANO 33 IoT”를 검색하셔서 나오는 보드를 사시면 됩니다. (뒤에 길게 있는 숫자는 의미 없는 듯합니다.) 핀이 있는 모델과 없는 모델은 기능상 차이는 없고 추후 어떻게 사용할지의 차이입니다.

Q2. 컴퓨터와 보드를 연결하여 보드에 녹색불이 들어오지만 포트가 잡히지 않습니다.
보드와 연결한 Micro 5핀 케이블이 충전 전용 케이블인듯 합니다. 데이터 케이블을 사용하셔야 컴퓨터와 보드간의 통신이 가능합니다. 혹시 이런 현상이 있을 경우에 핸드폰과 컴퓨터를 연결하여 핸드폰이 컴퓨터에서 인식이 되는지 확인해보시면 데이터 케이블인지 아닌지를 쉽게 판단 가능합니다.(핸드폰이 내 PC에 떠야 데이터 케이블입니다.)

Q3. 카라반 어디에 설치하는게 좋나요?
카라반 어디든 설치하셔도 됩니다. 기울어진 곳에 설치해도 괜찮으나 너무 큰 각도로 기울어지면 정밀도가 낮아집니다. 가급적이면 평평한 곳에 설치하시되 꼭 긴방향이 카라반의 전면 또는 후면을 바라보도록 나란히 설치해주시면 됩니다.

Q4. 전원 연결은 어떻게 하나요?
전원 연결 시 USB-5핀 단자를 이용하면 5V전기를 이용하시면 됩니다. 시가잭에 꼽는 5V USB단자를 이용하시면 됩니다. 만약 12V의 배터리를 직결하시고 싶다하시면 배터리의 +를 보드의 VIN에, 배터리의 -를 보드의 GND에 연결하시면 됩니다.(24V는 안됩니다.)

Q5. 보조배터리로 전원을 공급하면 10~30초 후 보드의 전원이 꺼집니다.
제 생각에 보조배터리는 충전용으로 많이 쓰이기 때문에 과충전 방지기능이 들어있어 적은 전류를 소비하는 경우 전기를 차단하는 경우가 있습니다. 아마도 이때문에 보드의 전원이 꺼지는 듯합니다. 웬만하면 카라반의 전기를 연결하는 방식을 추천합니다.

Q7. 보드를 사서 어플만 깔면 바로 사용가능한가요.?
아쉽지만 아닙니다. ‘아두이노 통합 소프트웨어’를 설치하신 후 내부에서 3번의 내부파일을 설치하시고 소스코드를 업로드 해야합니다. 글에서 만드는 과정을 꼭 봐주세요.

6. 아두이노 보드를 잘못 구입한 경우
가끔 실수로 IoT보드가 아닌 BLE나 BLE Sense보드를 구입하는 경우가 있습니다. 이런 경우 환불이나 버리실 필요는 없고 약간 다른 방법으로 수평계 만들기가 진행됩니다. BLE보드는 IoT보드와 달리 WiFi기능은 없으나 오히려 블루투스 5.0을 이용하므로 사용가능 거리가 더 길다는 장점이 있습니다.
다른 부분은 IoT보드를 세팅하는 과정과 동일한 과정을 거치나 NANO 33 BLE를 추가할 때에는 검색창에 “NANO 33″이라고 검색한 후 IoT와 달리 ‘Arduino nRF528x Boards’를 확인하고 설치합니다. 보드를 설치하고 다시 보드 옵션을 확인해보면 Arduino NANO 33 BLE를 확인할 수 있습니다. NANO 33 BLE를 선택하여 보드를 설정해줍니다.

60 쇼케 블루투스 수평계 (46)

블루투스 수평계를 만들기 위하여 IoT보드와 달리 “LSM9DS1”이라는 9축센서와 블루투스 기능의 라이브러리를 얻어야합니다. 이를 위해 Arduino Software (IDE)에서 사용 가능한 라이브러리 관리자를 열어줍니다.

60 쇼케 블루투스 수평계 (47)
라이브러리 관리에서 “LSM9DS1”과 “ArduinoBLE”를 검색후 설치 버튼을 눌러줍니다.

60 쇼케 블루투스 수평계 (48)
보드와 라이브러리를 설치하였으면, 이후 과정을 NANO 33 IoT보드와 완전히 동일하게 진행되게 됩니다.

60 쇼케 블루투스 수평계 (49)

이 글을 보시고 계시는 분들이 무언가를 만들 때 한 줄이라도 도움이 되었으면 좋겠다는 마음으로 제가 만들어 보었던 ‘블루투스 수평계’를 만드는 방법에 대해 알려드렸습니다.

 

Arduino Nano 33 IoT 제품 상세보러가기

Arduino Nano 33 IoT with headers 제품 상세보러가기

 

 

 

 

 

 

Leave A Comment

*