تفاوت قطب نمای دیجیتال با قطب نمای ساده و یا معمولی
بی شک همه ما با قطب نما و کاربرد وسیع آن در جهت یابی آشنا هستیم. در گذشته تمام قطب نماهای موجود شکلی آنالوگ داشتند یعنی در ساخت آن ها از هیچ قطعه الکترونیکی استفاده نشده بود و همچنین ساخت قطب نماهای معمولی بسیار ساده بود، به طوریکه هر شخصی می توانست با کمترین تجهیزات یک قطب نمای ساده در خانه خود بسازد.
تا قبل از ساخته شدن قطب نماهای دیجیتالی کاربرد قطب نماهای معمولی بسیار محدود بود، به طوریکه فقط انسان ها می توانستند از آن برای جهت یابی استفاده کنند. اما با پیشرفت تکنولوژی پای قطب نماهای پیشرفته وارد عرصه جهت یابی شد، که امروزه این قطب نماها کاربرد وسیعی در صنعت رباتیک، مخابرات و صنایع نظامی دارند. بر خلاف قطب نماهای ساده و معمولی، قطب نماهای دیجیتالی به صورت کلی بر پایه علوم الکترونیک طراحی شده اند و در ساخت آن ها از قطعات الکترونیکی همچون مقاومت ها، خازن ها، تراشه ها و میکروچیپ ها استفاده شده است، که همین موضوع باعث شده تا علاوه بر انسان ها، ربات ها و سایر تجهیزات الکترونکی نیز بتوانند از آن برای جهت یابی و یافتن زوایا نسبت به محورها X و Y و Z استفاده کنند.
ماژول قطب نما GY-271
ماژول قطب نما GY-271 یک قطب نمای دیجیتالی پیشرفته است. این قطب نما سه محوره بوده و می تواند میزان شدت میدان مغناطیسی را تا ±8 گائوس با تلرانس پنج میلی گائوس محاسبه کند. ماژول قطب نما GY-21 را می توان با ولتاژ 3 الی 5 ولت DC راه اندازی نمود. همچنین این قطب نما از پروتکل ارتباطی I2C برای ارتباط با سایر تجهیزات استفاده می کند.
لیست قطعات مورد نیاز
برد آردوینو Arduino UNO R3 مدل DIP | 1 عدد |
ماژول قطب نما مدل GY-271 HMC5883 | 1 عدد |
LCD کاراکتری مدل 16×2 با Backlighting آبی | 1 عدد |
برد بورد (پروجکت برد) مدل GL | 1 عدد |
سیم جامپر برد بوردی مدل دو سر نری (سری 40تایی) | 1 عدد |
شرح عملکرد پروژه
در این پروژه آردوینو از مبحث آموزش آردوینو می خواهیم نحوه برنامه نویسی و ساخت یک قطب نما دیجیتال با استفاده از ماژول GY-271 با استفاده از برد آردوینو Arduino Uno را آموزش دهیم. عملکرد پروژه اینگونه است که ابتدا برد آردوینو به واسطه برنامه ای که برای آن نوشته شده است، توسط ماژول قطب نما GY-271 به جهت یابی و یافتن زوایا نسبت به محورها X و Y و Z می پردازاد و سپس نتایج بدست آمده را بر روی یک LCD کاراکتری که در مدار پروژه تعبیه شده است نمایش می دهد.
نقشه شماتیک مدار پروژه
نحوه اتصال LCD کاراکتری به برد آردوینو
ال.سی.دی های کاراکتری به صورت کلی دارای 16 پایه هستند که در این پروژه برای اتصال آن به برد آردوینو کافی است طبق جدول زیر اتصالات را انجام دهید. همچنین لازم به ذکر است پایه های 7 و 8 و 9 و 10 در LCD کاراکتری به جایی متصل نمی شوند.
برنامه آردوینو در نرم افزار آردوینو
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
#include<Wire.h> #include<QMC5883.h> #include <LiquidCrystal.h> LiquidCrystal lcd(8, 9, 10, 4, 5, 6, 7); QMC5883 GY271; String dire = ""; void setup (void) { lcd.begin (16, 2); GY271.begin(); analogWrite(11, 150); analogWrite(3, 255); lcd.clear(); lcd.setCursor(0, 0); lcd.print("*electronics 98*"); lcd.setCursor(0, 1); lcd.print ("> GY271 "); delay(2000); lcd.clear(); } void loop (void) { GY271.calculate(); getDir (GY271.getHeadingDegree('z')); lcd.setCursor(0, 0); lcd.print ("deg="); lcd.print(GY271.getHeadingDegree('z')); lcd.setCursor(12, 0); lcd.print (dire); lcd.setCursor(0, 1); lcd.print ("angle="); lcd.print (GY271.getHeading('z')); lcd.print (" rad "); delay (200); } void getDir (int degree) { if ( degree >= 0 && degree <= 30 ) { dire = "[N] "; } else if ( degree > 30 && degree <= 60 ) { dire = "[NE]"; } else if ( degree >= 60 && degree < 90 ) { dire = "[E] "; } else if ( degree >= 90 && degree < 120 ) { dire = "[E] "; } else if ( degree >= 120 && degree < 160 ) { dire = "[SE]"; } else if ( degree >= 160 && degree < 200 ) { dire = "[S] "; } else if ( degree >= 200 && degree < 245 ) { dire = "[SW]"; } else if ( degree >= 245 && degree < 290 ) { dire = "[W] "; } else if ( degree >= 290 && degree < 335 ) { dire = "[NW]"; } else if ( degree >= 335 && degree <= 360 ) { dire = "[N] "; } } |
آموزش دستورات و توابع مهم کتابخانه QMC5883.h
همانطور که در برنامه پروژه مشاهده می کنید ما برای راه اندازی ماژول قطب نما GY-271 توسط آردوینو Arduino از کتابخانه QMC5883.h استفاده کرده ایم. این کتابخانه دارای توابع بسیار کاربردی و مهمی برای جهت یابی و پیدا کردن زوایا نسبت به محورهای X و Y و Z دارد که در این بخش نحوه استفاده از آن ها را بیان میکنیم.
پیکربندی اولیه کتابخانه QMC5883.h
برای استفاده از کتابخانه در برنامه آردوینو ابتدا لازم است آنرا در نرم افزار آردوینو نصب کرده و توسط دستور زیر فراخوانی کنیم. سپس یک آبجکت با نام دلخواه از کلاس QMC5883 تعریف کنیم. (در صورتیکه با نصب کتابخانه در آردوینو آشنا نیستید نگران نباشید، برای این منظور می توانید ویدئو آموزشی درج شده در انتهای همین مطلب را مشاهده کنید.)
1 2 3 |
#include<QMC5883.h> QMC5883 GY271; |
شروع ارتباط با ماژول قطب نما GY-271
برای شروع برقراری ارتباط با ماژول قطب نما GY-271 لازم است کد دستوری زیر را در زیر برنامه Setup() وارد کنید.
1 2 3 4 |
void setup() { GY271.begin(); } |
کد دستوری برگرداندن مقدار زاویه ماژول نسبت به محوره X بر حسب رادیان
1 2 3 |
GY271.calculate(); int x = GY271.getX(); |
کد دستوری برگرداندن مقدار زاویه ماژول نسبت به محوره Y بر حسب رادیان
1 2 3 |
GY271.calculate(); int y = GY271.getY(); |
کد دستوری برگرداندن مقدار زاویه ماژول نسبت به محوره Z بر حسب رادیان
1 2 3 |
GY271.calculate(); int z = GY271.getZ(); |
کد دستوری برگرداندن مقدار زاویه به طور مستقیم بر حسب رادیان
1 2 3 |
GY271.calculate(); int rad = GY271.getHeading('z'); |
کد دستوری برگرداندن مقدار زاویه به طور مستقیم بر حسب درجه
1 2 3 |
GY271.calculate(); int deg = GY271.getHeadingDegree('z'); |
با سلام امکانش هست که این برنامه رو برای سری hmc5883 بنویسید چون qmc5883 تو بازار موجود نیست
یا اگر امکانش هست ماژول رو برام بفرستید
چون واقعا به این پروژه نیاز دارم
سلام دوست عزیز
فکر نمی کنیم مشکل از مدل ماژول شما باشد چراکه ما خود نیز در این پروژه از مدل GY-271 HMC5883L استفاده کرده ایم و نتیجه نیز حاصل شد.
بهتر است اتصالات خود را به دقت بررسی نمائید و برنامه را بدون کوچکترین ویرایشی استفاده کنید اگر نتیجه حاصل نشد ممکن است ماژول شما مشکل داشته باشد و یا در هنگام راه اندازی به دلیل یک اشتباه صدمه دیده باشد.
با سلام و خسته نباشید
من اتصالات رو چک کردم مشکلی وجود نداشت
میشه یک ماژول واسم بفرسین یا من حضوری بیام شرکتتون؟؟؟؟
سلام دوست عزیز
با عرض پوزش، در حال حاضر فروش قطعات الکترونیکی نداریم.
سلام میتونم حظوری خدمتتون برسم ؟
چون واقعا برام حیاتی این مسئله
سلام دوست عزیز
خیر متاسفانه در حال حاضر به دلیل ازدحام کاری امکان ملاقات با تیم فنی مقدور نیست.
سلام من پروژه شما را راه اندازی کردم ولی مقادیرم روی lcd صفره اتصالات و همه چی رو بررسی کردم اگ میتونید کمکم کنید ممنون میشم عجله زیادی دارم ممنون