برخلاف برد آردینو Arduino NANO 33 Sense برد آردوینو NANO 33 IOT فقط و فقط از یک سنسور داخلی در ساخت آن استفاده شده است. سنسور کاربردی شتاب سنج و ژایروسکوپ سه بعدی LSM6DS3. در بخش پنجم از سری آموزش های آردوینو نانو ۳۳ IOT به معرفی این سنسور و نحوه ی کدنویسی آن در محیط نرم افزار آردوینو خواهیم پرداخت. در ادامه با مرجع تخصصی آردوینو نانو به زبان فارسی، دیجی اسپارک همراه باشید.
سنسور شتاب سنج و ژایرو LSM6DS3
سنسور LSM6D3 شتاب سنج و ژایروسکوپ با عملکرد سه بعدی است که به دلیل کم مصرف بودتش در رده سنسورهای کاربردی برای اپلیکیشن ها قرار گرفته است. آی سی به کار برده شده در ساخت سنسور از تکنولوژی CMOS بهره برده و عملکرد فوق العاده ای را به جای میگذارد. کم مصرف بودن این سنسور عددی در حدود ۰٫۹ میلی آمپر در شرایط نرمال و ۱٫۲۵ میلی آمپر در بالاترین عملکردش است. ولتاژ آنالوگ سنسور در بازه ۱٫۷۱ تا ۳٫۶ ولت است. این سنسور از پروتکل های ارتباطی SPI, I2C پشتیبانی کرده و دارای سنسور داخلی اندازه گیری دما است. این سنسور در دسته بندی سنسورهای IMUs قرار گرفته است که مخفف عبارت Inertial Measurement Units است. نوع سنسور شتاب سنج ۶ محوره ۶-axis است که محورهای X,Y,Z را پوشش میدهد.
نصب کتابخانه LSM6DS3
سنسور داخلی 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); } }
در قدم اول در کتابخانه را فراخوانی کنید.
#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 قابلیت اندازه گیری این دو پارامتر را دارد. دقت کنید با دانشی که از برنامه نویسی بردهای آردوینو دارید، به راحتی میتوانید هر سنسوری را کدنویسی کنید و توابع مهم را شناسایی و استفاده کنید. این برد در مقایسه با برد آردوینو NANO 33 SENSE فقط یک سنسور داخلی دارد که میتوانید دیتا را از طریق بلوتوث و وای فای داخلی برد ارسال کنید.
وسایل مورد نیاز
برد آردوینو ARDUINO NANO 33 IOT
چنانچه در مراحل راه اندازی برد ARDUINO NANO 33 IOT و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
هرچیزی اورجینال باشه همینه دیکه دقت بالا داده ها و سرعت آپلود کد
برای به روز بودن از شما ممنونم
با سلام
کاربر گرامی سپاس از همراهی شما
امیدوارم مفید واقع شده باشد.