آردوینو آردوینو نانو Nano

آموزش راه اندازی برد آردوینو Nano 33 IOT بخش ششم: سنسور IMU LSM6DS3

getting-started-with-arduino-nano-33-iot-part-six-imu-lsm6ds6-sensor-digispark
نوشته شده توسط پریسا پوربلورچیان

برخلاف برد آردینو Arduino NANO 33 Sense برد آردوینو NANO 33 IOT فقط و فقط از یک سنسور داخلی در ساخت آن استفاده شده است. سنسور کاربردی شتاب سنج و ژایروسکوپ سه بعدی LSM6DS3. در بخش پنجم از سری آموزش های آردوینو نانو ۳۳ IOT به معرفی این سنسور و نحوه ی کدنویسی آن در محیط نرم افزار آردوینو خواهیم پرداخت. در ادامه با مرجع تخصصی آردوینو نانو به زبان فارسی، دیجی اسپارک همراه باشید.

راه اندازی برد آردوینو Nano 33 IOT - دیجی اسپارک

 


سنسور شتاب سنج و ژایرو LSM6DS3


سنسور LSM6D3 شتاب سنج و ژایروسکوپ با عملکرد سه بعدی است که به دلیل کم مصرف بودتش در رده سنسورهای کاربردی برای اپلیکیشن ها قرار گرفته است. آی سی به کار برده شده در ساخت سنسور از تکنولوژی CMOS بهره برده و عملکرد فوق العاده ای را به جای میگذارد. کم مصرف بودن این سنسور عددی در حدود ۰٫۹ میلی آمپر در شرایط نرمال و ۱٫۲۵ میلی آمپر در بالاترین عملکردش است. ولتاژ آنالوگ سنسور در بازه ۱٫۷۱ تا ۳٫۶ ولت است. این سنسور از پروتکل های ارتباطی SPI, I2C پشتیبانی کرده و دارای سنسور داخلی اندازه گیری دما است. این سنسور در دسته بندی سنسورهای IMUs قرار گرفته است که مخفف عبارت Inertial Measurement Units است. نوع سنسور شتاب سنج ۶ محوره ۶-axis است که محورهای X,Y,Z را پوشش میدهد.

سنسور شتاب سنج و ژایرو LSM6DS3 - دیجی اسپارک

 

سنسور شتاب سنج و ژایرو LSM6DS3 در برد nano33 - دیجی اسپارک

 


نصب کتابخانه LSM6DS3


سنسور داخلی LSM6DS3 قابلیت اندازه گیری شتاب و ژایرو را دارد. این سنسور بر روی برد آردوینو نانو قرار گرفته شده است و برای استفاده از آن بایستی کتابخانه را در قدم اول نصب کنید.

نصب کتابخانه LSM6DS3 در ide2 - دیجی اسپارک

 

کتابخانه نصب و قایل استفاده است.

نصب کتابخانه LSM6DS3 و اجرای سمپل کتابخانه - دیجی اسپارک

 


اجرای برنامه شتاب سنج


برنامه اول جهت تست را برنامه SIMPLE ACCELEROMETER را انتخاب کنید. کد را کپی و به نرم افزار آردوینو انتقال دهید. سپس کد را اجرا کنید. بر روی سریال مانیتور کلیک کنید تا گزارش دیتای دریافتی از سنسور را نمایش دهد. برد را در سه جهت محور X Y Z حرکت دهید تا تغییر مقادیر را شاهد باشید.

 

//Arduino LSM6DS3 - Simple Accelerometer
#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);
  }
}

 

نمونه برنامه سنسور LSM6DS3 - دیجی اسپارک

 

در قدم اول در کتابخانه را فراخوانی کنید.

#include <Arduino_LSM6DS3.h>

 

سپس در ست آپ برنامه تنظیمات اولیه و سپس عدم فعال بودن سنسور را مشخص کنید.

void setup() {
  Serial.begin(9600);
  while (!Serial);

  if (!IMU.begin()) {
    Serial.println("Failed to initialize IMU!");

    while (1);
  }

 

توسط تابع زیر سمپل IMU  در سه محور X Y Z خوانده می‌شود.

IMU.accelerationSampleRate

 

در قدم بعدی مشخص می‌کنیم که دیتاهای دریافتی بر اساس محور X Y Z برای ما نمایش داده شود.

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");

 

اگر بخواهیم مقادیر دریافتی بر حسب عدد اعشاری باشد، آن ها را با نوع داده FLOAT در کدها معرفی می‌کنیم.

  float x, y, z;

 

در این تابع مقادیر از سنسور خوانده می‌شود.

 IMU.readAcceleration(x, y, z);

 

سپس شرط نویسی می‌کنیم، در صورتیکه مقادیر IMU در دسترس باشد، دیتا در سه محور نمایش داده می‌شود.

 if (IMU.accelerationAvailable()) {
    IMU.readAcceleration(x, y, z);

    Serial.print(x);
    Serial.print('\t');
    Serial.print(y);
    Serial.print('\t');
    Serial.println(z);

 

 


اجرای برنامه ژایروسکوپ


از دیگر قابلیت های این سنسور تشخیص ژایروسکوپ است. برای تست این برنامه از منو EXAMPLE برنامه SIMPLE GYROSCOPE را انتخاب کنید.  کد را کپی و به نرم افزار آردوینو انتقال دهید.

// Arduino LSM6DS3 - Simple Gyroscope
#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);
  }
}

 

در قدم اول کتابخانه را فراخوانی کنید.

#include <Arduino_LSM6DS3.h>

 

سپس مشخص کنید که در صورتی که ارتباط بین سنسور و میکرو برقرار نباشد، به ما هشدار دهد.

void setup() {
  Serial.begin(9600);
  while (!Serial);

  if (!IMU.begin()) {
    Serial.println("Failed to initialize IMU!");

    while (1);
  }

 

توسط تابع زیر سمپل IMU  در سه محور X Y Z خوانده می‌شود.

Serial.print(IMU.gyroscopeSampleRate());

 

سپس مشخص می‎‌کنیم این سمپل ها در سه محور X Y Z نمایش داده شود.

 Serial.println(" Hz");
  Serial.println();
  Serial.println("Gyroscope in degrees/second");
  Serial.println("X\tY\tZ");

 

در قدم بعدی سه متغیر برای سه محور با نوع داده FLOAT مشخص می‌کنیم.

 float x, y, z;

 

سپس توسط تابع زیر دیتا در سه محور خوانده می‌شود.

IMU.readGyroscope(x, y, z);

 

برای نمایش دیتای دریافتی از سریال مانیتور استفاده می‌کنیم.

Serial.print(x);
    Serial.print('\t');
    Serial.print(y);
    Serial.print('\t');
    Serial.println(z);

 

اجرای برنامه ژایرو با سنسور LSM6DS3 - دیجی اسپارک

 

اجرای برنامه ژایرو با سنسور LSM6DS3 - دیجی اسپارک

 


جمع بندی لیدی پای


برای راه اندازی سنسور داخلی امبدد برد آردوینو نانو ۳۳ باید در ابتدا نوع سنسور و تراشه را تشخیص دهیم. سپس در لیست کتابخانه های آردوینو آن ها را جستجو کنیم. سنسور شتاب سنج و ژایروسکوپ با تراشه LSM6DS3 قابلیت اندازه گیری این دو پارامتر را دارد. دقت کنید با دانشی که از برنامه نویسی بردهای آردوینو دارید، به راحتی میتوانید هر سنسوری را کدنویسی کنید و توابع مهم را شناسایی و استفاده کنید. این برد در مقایسه با برد آردوینو NANO 33 SENSE فقط یک سنسور داخلی دارد که میتوانید دیتا را از طریق بلوتوث و وای فای داخلی برد ارسال کنید.

 


وسایل مورد نیاز


برد آردوینو ARDUINO NANO 33 IOT

 

چنانچه در مراحل راه اندازی برد ARDUINO NANO 33 IOT و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند می‌توانید از همین طریق اطلاع رسانی کنید.

 

درباره نویسنده

پریسا پوربلورچیان

تولید کننده محتوا / کارشناس IOT

زندگی یعنی پژوهش و فهمیدن چیزی جدید

تلاشم بر این است تجربیاتم در زمینه IOT‌ را به بهترین شکل با شما در میان بگذارم.

تبادل نظر و رفع عیب با ثبت دیدگاه

۲ دیدگاه