در این آموزش ما مراحل مربوط به راه اندازی شتاب سنج ADXL345 با آردوینو را بررسی خواهیم کرد.
در این آموزش، نحوه اتصال شتاب سنج ADXL345 به یک Arduino Uno را یاد خواهید گرفت. ما همچنین به شما آموزش می دهیم که چگونه برنامه ای بنویسید که از کتابخانه سنسور Adafruit ADafL345 استفاده کند.
ADXL345 کم مصرف و مقرون به صرفه است. شتاب سنج 3 محوره MEMS که هر دو رابط سریال I2C و SPI را پشتیبانی می کند.
MEMS مخفف سیستمهایمیکروالکترومکانیکی و بدان معنی است که ADXL345 شامل یک جزء مکانیکی میکروسکوپی است که به تعیین شتاب کمک می کند.
شما همچنین می توانید از ADXL345 در نیز Raspberry Pi استفاده کنید. روند تنظیم کاملاً متفاوت است ، بنابراین اگر تصمیم به استفاده از رزبری پای را دارید، حتماً آموزش های موجود در وبسایت میکرو دیزاینر الکترونیک را بررسی کنید.
این سنسور تنها یکی از بسیار مواردی است که می توانید به Arduino خود متصل شوید. می توان از آن در طیف گسترده ای از پروژههای آردوینو که در آن دانستن شتاب اهمیت دارد استفاده کرد.
تجهیزات مورد نیاز
برای تکمیل آموزشبرای راه اندازی شتاب سنج ADXL345 با آردوینو، به تجهیزات زیر نیاز دارید.
- برد آردوینو UNO
- بردبورد
- سیم بردبوردی
- سنسور شتاب سنج ADXL345
فیلم راه اندازی شتاب سنج ADXL345 با آردوینو
ویدیوی زیر مراحل مونتاژ مدار شتاب سنج را به شما نشان می دهد. همچنین با استفاده از Arduino IDE مراحل ارسال کد به Arduino Uno را بررسی می کند.
سرهم کردن مدار
مدار شتاب سنج ADXL345 کاملاً سر راست است و نیازی به قطعات پیچیده یا سیم کشی ندارد و می تواند مستقیماً به آردوینو متصل شود.
در زیر ما تمام مراحل مورد نیاز برای نحوه اتصال شتاب سنج ADXL345 به Arduino Uno را نوشتیم.
- پین GND ADXl345 را به پین GND در آردوینو وصل کنید.
- پین VCC ADXL345 را به پین 3v3در آردوینو وصل کنید.
- پین SCL ADXL345 را به پین SCL در آردوینو وصل کنید.
- پین SDA ADXL345 را به پین SCL در آردوینو وصل کنید.
مدار زیر نیز برای اتصال صحیح آردوینو به ADXL345 بسیار مفید است.
اگر از برد Adafruit ADXL345 استفاده می کنید، می توانید از یک اتصال 5 ولت نیز بهره ببرید زیرا این برد دارای مداری است تا سطح ولتاژ را به 3 ولت مورد نیاز تغییر دهید.
اضافه کردن کتابخانهها
نوشتن کد برای خواندن داده ها از شتاب سنج به لطف کتابخانه هایی که می توانیم از آنها استفاده کنیم یک روند نسبتاً ساده است.
برای این پروژه Arduino، ما از کتابخانه “Adafruit Unified Sensor” و کتابخانه “Adafruit ADXL345” استفاده خواهیم کرد.
1. برای شروع، منوی کتابخانه را در Arduino IDE با رفتن به مسیر زیر باز کنید.
(Sketch (1.) -> Include Library (2.) -> Manage Libraries (3
2. در این پنجره، (Adafruit ADXL345 (1. را جستجو کنید و (2.) “Adafruit ADXL345 by Adafruit” را پیدا کنید. که باید تنها نتیجه جستجو شما باشد.
مطابق شکل زیر، آخرین نسخه کتابخانه را با کلیک بر روی گزینه (Install” (3“ نصب کنید.
3. اکنون، در همان پنجره، (Adafruit Unified Sensor” (1“ را جستجو کرده و کتابخانه را پیدا کنید (2) پس از یافتن، (Install” (3“ را برای ادامه کار فشار دهید.
برنامهنویسی برای راه اندازی شتاب سنج ADXL345 با آردوینو
1- در Arduino IDE خطوط کد زیر را وارد کنید.
ما هر بخش از کد شتاب سنج آردوینو را توضیح خواهیم داد تا شما از نحوه عملکرد آن و کار هر بخش مهم آگاهی کسب کنید.
#include <Wire.h> #include <Adafruit_Sensor.h> #include <Adafruit_ADXL345_U.h>
ما با اضافه کردن همه کتابخانه ها که در بیشتر عملکردهای برنامه به آنها تکیه داریم شروع می کنیم.
از كتابخانه “Wire” در كتابخانه ADXL345 استفاده می شود تا آردوینو با استفاده از پروتكل سریال i2C بتواند با شتاب سنج ارتباط برقرار كند.
به كتابخانه “Adafruit_Sensor” احتیاج داریم، زیرا پایه كتابخانهی ADXL345 است که ما استفاده میکنیم. این کتابخانه موارد مختلفی را برای ADXL345 اداره می کند و به عنوان پایهای برای اکثر کتابخانههای سنسور Adafruit استفاده می شود.
“Adafruit_ADXL345” کتابخانه نهایی است که ما وارد می کنیم. این کتابخانه همان چیزی است که کلیه کدهای مرتبط با شتاب سنج Arduino را در اختیار شما قرار می دهد. از این کتابخانه برای بازخوانی اطلاعات شتاب از سنسور استفاده می شود.
Adafruit_ADXL345_Unified accel = Adafruit_ADXL345_Unified();
این خط، كتابخانه Adafruit ADXL345 را به متغیر “accel” )منظور همان متغیر شتاب است) می رساند.
متغیر “accsl” یک هدف مرسوم خواهد داشت که امکان تعامل با شتاب سنج ADXL345 را برای دسترسی به عملکردهای بی شمار فراهم می کند.
void setup(void) { Serial.begin(9600); if(!accel.begin()) { Serial.println("No ADXL345 sensor detected."); while(1); } }
هنگامی که آردوینو روشن می شود، تابع “()setup” به طور خودکار اجرا می شود.
ما با اجرای تابع “()Serial.begin” شروع می کنیم تا آردوینو بتواند پیامهایی را از طریق اتصال سریال ارسال کند.ما سرعت پورت سریال را روی ۹۶۰۰ تنظیم میکنیم.
پس از آن، ما از تابع “()begin” برای شروع اتصال به شتاب سنجADXL345 استفاده میکنیم.
در مرحله بعد، نتیجه برگشت داده شده توسط این عملکرد را بررسی می کنیم. اگر “false” باشد، ما پیامی را برای مانیتور سریال ارسال می کنیم که به کاربر هشدار می دهد که ما نتوانستیم به شتاب سنج ADXL345 دسترسی پیدا کنیم.
اگر خطایی روی داده باشد، با استفاده از “(1)while” ما یک حلقه نامحدود را اجرا می کنیم و این کار، این اطمینان را می دهد که ما هرگز وارد حلقه اصلی نخواهیم شد. برای خروج از این حلقه، باید آردوینو را مجدداً راه اندازی کنید.
void loop(void) { sensors_event_t event; accel.getEvent(&event); Serial.print("X: "); Serial.print(event.acceleration.x); Serial.print(" "); Serial.print("Y: "); Serial.print(event.acceleration.y); Serial.print(" "); Serial.print("Z: "); Serial.print(event.acceleration.z); Serial.print(" "); Serial.println("m/s^2 "); delay(500); }
تابع “loop ()” پس از اتمام “setup ()” به طور خودکار اجرا می شود.
در این تابع، ما یک متغیر به نام “event” که از ساختار “sensors_event_t” استفاده می کند را ایجاد میکنیم.
در مرحله بعد، ما از تابع “()getEvent شی “accel” استفاده می کنیم و متغیر event که قبلاً تعریف کرده بودیم را هم به عنوان آرگومان به تابع میفرستیم.
تابع “()getEvent” داده ها را از شتاب سنج در یافت میکند و ساختاری که ما به آن پاس دادیم (در این حالت متغیر “event”) را با داده های مربوطه پر می کند.
سپس مقادیر شتاب X ، Y و Z را که در متغیر “event” ما ذخیره شده اند، نمایش می دهیم. هر سه این مقادیر از طریق vector یا بردار “event.acceleration” در دسترس هستند.
سرانجام، با استفاده از عملکرد “()delay” دوباره حلقه در حال اجرا را به مدت 500 میلی ثانیه به تأخیر می اندازیم.
2. با انجام همه ی این مراحل، کد نهایی شما باید مانند آنچه در زیر نشان داده ایم به پایان برسد.
#include <Wire.h> #include <Adafruit_Sensor.h> #include <Adafruit_ADXL345_U.h> Adafruit_ADXL345_Unified accel = Adafruit_ADXL345_Unified(); void setup(void) { Serial.begin(9600); if(!accel.begin()) { Serial.println("No ADXL345 sensor detected."); while(1); } } void loop(void) { sensors_event_t event; accel.getEvent(&event); Serial.print("X: "); Serial.print(event.acceleration.x); Serial.print(" "); Serial.print("Y: "); Serial.print(event.acceleration.y); Serial.print(" "); Serial.print("Z: "); Serial.print(event.acceleration.z); Serial.print(" "); Serial.println("m/s^2 "); delay(500); }
تست شتاب سنج ADXL345
1. برای بارگذاری کد روی آردوینو، بر روی گزینه (1)“Verify” و سپس بر روی (2)“Upload” کلیک کنید.
اگر مشکلی پیش آمد، کد را بررسی کنید تا مطمئن شوید همه چیز درست است.
همچنین، بررسی کنید که Arduino شما متصل شده است و شما باید آن را به صورت انتخاب شده در قسمت Tools -> Port داشته باشید.
2. شتاب سنج آردوینو شما اکنون باید فعال شود (بالا بیاید) و از طریق مانیتور(ترمینال) سریال، داده های خود را اجرا و تغذیه کند.
اکنون بهترین زمان برای بارگذاری مانیتور سریال است تا اندازه گیری های انجام شده توسط شتاب سنج ADXL345 را ببینید.
می توانید با کلیک بر روی (Tools” (1″ و سپس بر روی (Monitor Serial” (2″ نرم افزار مانیتور(ترمینال) سریال Arduino را باز کنید.
3. در داخل مانیتور سریال، باید داده های شتاب سنج ADX345 متصل به آردوینو خود را مشاهده کنید.
امیدوارم تا پایان این آموزش شما شتاب سنج آردوینو خود را راه بیاندازید و داده ها همان چیزی باشد که شما انتظار دارید.
Reff: https://pimylifeup.com/arduino-accelerometer-adxl345
اگر درباره آموزش راه اندازی شتاب سنج ADXL345 با آردوینو انتقاد و نظری دارید، لطفاً در کامنتها، نظر خود را از ما دریغ نکنید. همچنین توصیه میکنیم دیگر پروژههای آردوینو را هم ببینید.
اگر این نوشته برایتان مفید بود لطفا کامنت بنویسید.
سلام وقت بخیر
آیا برای کالیبره کردن این سنسور کار خاصی باید بکنیم؟
من میخوام وقتی روی یه سطحی قرار گرفت کالیبره ش صفر بشه. یه چیزی شبیه توزین در ترازو که روی کفه ترازو چیزی بگزاری میشه صفر کرد وزن رو. ممنون میشم راهنمایی کنید .
سلام خسته نباشید بدون صفحه نمایش هم میشه این پروژه رو بست یا نه؟
سلام ممنون سلامت باشید، بله میتونید.اعداد خروجی را میتونید هر جایی که دوست دارید در برنامه استفاده کنید. در این پروژه مثلا می فرسته پورت سریال شما میتونید روی یک ال سی دی ، سون سگمنت ، بدون هیچ نمایشگر بسازید انتخاب با شماست.
سلام ببخشید ب چ صورت میشه داده های ک در سه راستا بدست میاریم روی نمودار نمایش بدیم