개발자/Arduino

Arduino Nano 33 IoT 개발 가이드 6 - Accelerator and Gyroscope

지구빵집 2020. 5. 15. 15:44
반응형

Arduino Nano 33 IoT 개발 가이드 6 - Accelerator and Gyroscope

 

Arduino Nano 33 IoT에는 이미 보드에 가지고 있는 온보드 센서인 가속기 및 자이로 스코프가 있습니다. 이 센서는 부착되어 있습니다. I2C 인터페이스를 위해 이미 I2C 프로토콜을 배웠습니다.

 

전체 강의자료와 소스코드는 아래를 참고하십시요. 소스코드의 출처는 위의 책 마지막 페이지에 소개되어 있습니다.

 

Arduino Nano 33 IoT 개발 가이드 1 - 개발환경

Arduino Nano 33 IoT 개발 가이드 2 - 기본적인 예제 살펴보기

Arduino Nano 33 IoT 개발 가이드 3 - WiFi Network 실습

Arduino Nano 33 IoT 개발 가이드 4 - 내부 RTC와 Sleep Mode

Arduino Nano 33 IoT 개발 가이드 5 - Arduino Cloud

Arduino Nano 33 IoT 개발 가이드 6 - Accelerator and Gyroscope

Arduino Nano 33 IoT 개발 가이드 7 - Bluetooth Low Energy (BLE)

실습에 필요한 전체 소스코드 다운

 

이제 모든 I2C 장치를 스캔 할 수 있습니다. 스케치 프로그램을 사용합니다. 아래 코드를 파일이름을 i2c_scanner.ino 로 저장하여, 연결한 I2C 부품을 찾는 기능을 실습한다.

 

#include <Wire.h>

void setup() 
{
Serial.begin(9600);
Wire.begin();
Serial.println("\nI2C Scanner");
}

void loop() 
{
byte error, address;
int nDevices;
Serial.println("Scanning...");
nDevices = 0;
for(address = 1; address < 127; address++) {
// The i2c_scanner uses the return value of
// the Write.endTransmisstion to see if
// a device did acknowledge to the address.
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0) {
Serial.print("I2C device found at address 0x");
if (address < 16)
Serial.print("0");
Serial.println(address, HEX);
nDevices++;
}
else if (error == 4) {
Serial.print("Unknown error at address 0x");
if (address < 16)
Serial.print("0");
Serial.println(address, HEX);
}
}
if (nDevices == 0)
Serial.println("No I2C devices found");
else
Serial.println("done");
delay(5000); // wait 5 seconds for next scan
}

 

이제이 프로그램을 컴파일하여 보드에 업로드합니다. I2C를 보려면 Serial Monitor 도구를여십시오 장치. Arduino Nano 33 IoT에서 I2C 프로토콜을 통해 내장 된 센서를 볼 수 있습니다.

 

컴파일하여 업로드 합니다. 시리얼 모니터를 열어 스캔 결과를 확인합니다.

 

 

 

 

 

이러한 I2C 주소에서 가속기 및 자이로 스코프 센서가 실행되는 것을 볼 수 있습니다. 다음으로 Sketch 프로그램에서 가속기 및 자이로 스코프 센서에 액세스합니다. 이러한 I2C 주소에서 가속기 및 자이로 스코프 센서가 실행되는 것을 볼 수 있습니다. 다음으로 Sketch 프로그램에서 가속기 및 자이로 스코프 센서에 액세스합니다.

 

LSM6DS3 라이브러리 추가

 

Arduino Nano 33 IoT의 가속기 및 자이로 스코프 센서에 액세스하기 위해 LSM6DS3 라이브러리를 사용할 수 있습니다. 스케치-> 라이브러리 포함-> 라이브러리 관리 메뉴를 클릭하여 LSM6DS3 라이브러리를 추가 할 수 있습니다.

 

아두이노 스케치 -> 툴 -> 라이브러리 관리 하면으로 가서 아래와 같이 LSM6DS3를 검색하여 라리브러리를 설치한다.

 

 

Working with Accelerator

 

가속기 센서는 장치의 가속도를 측정 할 수 있습니다. 우리는 x, y, z 좌표에서 가속도 센서 값을 얻을 것입니다. 센서를 확인하기 위해 IMU 라이브러리의 AccelerationAvailable () 함수를 사용할 수 있습니다. 그런 다음 readAcceleration ()을 호출하여 센서 데이터를 읽을 수 있습니다. 데모를 위해 Arduino의 프로그램 샘플을 사용합니다. 이 프로그램을 Arduino Sketch에 작성하십시오.

 

이 프로그램을 SimpleAccelerometer로 저장하십시오. 프로그램을 컴파일하여 Arduino Nano 33 IoT 보드에 업로드하십시오. 그런 다음 Serial Monitor를 열어 센서 데이터를 볼 수 있습니다. Arduino Nano IoT 보드를 흔들어보십시오. 프로그램 출력 샘플은 아래 그림에서 볼 수 있습니다.

 

#include <Arduino_LSM6DS3.h>
void setup() {
Serial.begin(9600);
while (!Serial);
if (!IMU.begin()) {
Serial.println("Failed to initialize IMU!");
while (1);
}
Serial.print("Accelerometer sample rate = ");
Serial.print(IMU.accelerationSampleRate());
Serial.println(" Hz");
Serial.println();
Serial.println("Acceleration in G's");
Serial.println("X\tY\tZ");
}
void loop() {
float x, y, z;
if (IMU.accelerationAvailable()) {
IMU.readAcceleration(x, y, z);
Serial.print(x);
Serial.print('\t');
Serial.print(y);
Serial.print('\t');
Serial.println(z);
}
}

 

아래는 실행 결과를 보여줍니다. 위 그림은 출력 데이터를 시리얼 모니터로 본 그림입니다. 

 

아래는 최신 버전의 스케치 도구에서 제공하는 툴 메뉴의 시리얼 플로터를 열어 본 그림입니다. 가로, 세로, 상하로 흔들었을 때의 결과값과 X, Y축 좌표들을 확인할 수 있습니다. 씨리얼 플로터 사용에 대한 자세한 설명은 아래 링크를 참고하기 바랍니다.

 

2020/05/10 - [개발자/Arduino] - arduino IDE에서 Serial Plotter 사용법

 

 

Working with Gyroscope

 

두 번째 데모는 자이로 스코프 센서를 사용하는 것입니다. 자이로 스코프 센서는 장치 방향을 측정 할 수 있습니다. gyroscopeAvailable () 함수를 사용하여 자이로 스코프 센서에서 사용가능한지를 확인합니다. 그런 다음 readGyroscope () 함수를 사용하여 센서 데이터를 읽습니다. 데모를 위해 Arduino의 프로그램 샘플을 사용합니다. Arduino Sketch를 엽니 다. 그런 다음 프로그램을 작성하십시오

 

파일 이름은 SimpleGyroscope.ino 로 저장합니다.

 

#include <Arduino_LSM6DS3.h>
void setup() {
Serial.begin(9600);
while (!Serial);
if (!IMU.begin()) {
Serial.println("Failed to initialize IMU!");
while (1);
}
Serial.print("Gyroscope sample rate = ");
Serial.print(IMU.gyroscopeSampleRate());
Serial.println(" Hz");
Serial.println();
Serial.println("Gyroscope in degrees/second");
Serial.println("X\tY\tZ");
}
void loop() {
float x, y, z;
if (IMU.gyroscopeAvailable()) {
IMU.readGyroscope(x, y, z);
Serial.print(x);
Serial.print('\t');
Serial.print(y);
Serial.print('\t');
Serial.println(z);
}
}

 

이 프로그램을 SimpleGyroscope로 저장하십시오. 프로그램을 컴파일하여 Arduino에 업로드하십시오. 메시지를 보려면 Serial Monitor를 여십시오. 보드를 흔들어보십시오.

 

테스크 방법: 보드를 x, y, z 축으로 움직여서 시리얼 플로터를 열어 확인하면 동작을 쉽게 확인할 수 있습니다. 아래 이미지처럼 기울고 돌리며 확인합니다.

 

자이로 스코프 측정, 이미지 출처 https://www.mauroalfieri.it/elettronica/arduino-nano-33-ble-giroscopio-lsm9ds1.html 

 

마찬가지로 직렬 모니터의 프로그램 출력과 시리얼 플로터의 출력을 아래에 나타냅니다.

 

 

 

여기까지 정리. 비오는 데 놀러나가야지. ^^

 

 

 

 

반응형