آردوینو Arduinoپروژه های آردوینو

راه اندازی قطب نما دیجیتال با آردوینو و سنسور QMC583

سلام. آموزش پروژه راه اندازی قطب نما دیجیتال با آردوینو و سنسور مغناطیس سنج QMC583 یا HMC5883 را آماده کردیم. فیلم عملکرد مدار را ببینید !

آموزش راه اندازی قطب نما دیجیتال با آردوینو

آموزش راه اندازی قطب نما دیجیتال با آردوینو

مغز انسان از لایه های پیچیده ای ساخته شده است که به ما کمک می کند در مکان هایی که به آن آشنایی نداریم راه خود را پیدا کنیم. اما بر خلاف ما ، ربات ها و وسایل نقلیه بدون سرنشین این مغز پیشرفته مارا ندارند و برای پیدا کردن مسیر نیاز به فناری هایی دارند. ربات های مختلف برای انجام این کار از سنسور های مختلفی استفاده می کنند ، اما متداول آن یک مفناطیس سنج است که می تواند به ربات اطلاع دهد که در چه جهت جغرافیایی قرار دارد. این نه تنها به روبات کمک می کند تا جهت را حس کند بلکه به چرخش در یک جهت از پیش تعریف شده و زاویه نیز کمک می کند.

این سنسور میتواند موقعیت جغرافیایی شمال ، جنوب ، شرق و غرب را نشان دهد. ما در این پروژه آردوینو میخواهیم یک سنسور مغناطیس سنج را راه اندازی کنیم و با استفاده از آن یک قطب نمای دیجیتال بسازیم. این قطب نما با روشن کردن یک چراخ ال ای دی جهت شمال را به ما نشان میدهد.

مدار پروژه قطب نما دیجیتال با آردوینو

مدار پروژه قطب نما دیجیتال با آردوینو

برای یادگیری کامل آردوینو (برنامه نویسی حرفه ای، ارتباط با اندروید، ساخت ربات) ، روی دوره آموزش آردوینو کلیک کنید.

همچنین اگر میخواهید الکترونیک را با فیلم های آموزشی یاد بگیرید، روی دوره آموزش الکترونیک کلیک کنید.

  1. برد آردوینو Pro mini
  2. سنسور مغناطیس سنج QMC583 یا HMC5883
  3. لامپ ال ای دی – 8 عدد
  4. مقاومت 470 اهم – 8 عدد

سنسور مغناطیس سنج QMC5883 / HMC5883

سنسور مغناطیس سنج QMC5883

مغناطیس سنج قطعه ای است که میتواند قطب های مغناطیسی زمین را حس کند. همانطور که میدانید کره زمین مانند آنربای کروی بزرگی است که دارای قطب شمال و جنوب است. به همین دلیل میدان مغناطیسی وجود دارد که این سنسور میتواند آن را حس کند و جهت را نشان دهد.

توضیحات کامل در : دانلود کتابخانه مشخصات سنسور مغناطیس سنج QMC5883

تفاوت سنسور HMC5883 با QMC5883

این دو سنسور بسیار شبیه هم هستند. در این پروژه میتوان از دو سنسور استفاده کرد. اما این دو سنسور با هم تفاوت دارند و باید کتابخانه های مخصوص آن سنسور را استفاده کرد. نحوه تشخیص سنسور HMC5883 با QMC5883 در تصویر زیر مشخص شده است.

تفاوت سنسور HMC5883 با QMC5883

ما در کد این پروژه از سنسور QMC5883 استفاده میکنیم.

توضیحات مدار پروژه قطب نما با آردوینو

مدار پروژه قطب نما با آردوینو

مدار این پروژه بسیار ساده است. ما باید برد آردوینو را با سنسور QMC583 و 8 ال ای دی متصل کنیم. ماژول سنسور دارای 5 پین است که پین DRDY در پروژه ما استفاده نمیشود. پین VCC و GND به پین 5 ولت Arduino متصل میشوند. پین های SCL و SDA ماژول سنسور مغناطیس سنج به پین A4 و A5 برد آردوینو Pro mini متصل میشوند.

مطلب پیشنهادی:  آموزش جامع برنامه نویسی برد ESP32 با آردوینو

برای نشان دادن جهت شمال ما از 8 عدد ال ای دی استفاده کردیم که همه آنها از طریق یک مقاومت 470 اهم به پین های GPIO آردوینو متصل میشوند. مدار توسط باتری 9 ولت تغذیه میشود و این باتری به پین Vin آردوینو متصل میشوند و توسط رگولاتور موجود در آردوینو به 5 ولت تبدیل میشوند.

فایل PCB مدار در فایل دانلودی قرار داده شده است.

همچنین اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید

توضیحات کد پروژه

مثل همیشه ما در ابتدا کتابخانه های مورد نیاز را فراخوانی میکنیم. خط اول کتابخانه برای ارتباط I2C است و خط دوم برای فراخوانی کتابخانه سنسور است. لینک دانلود کتابخانه در قسمت توضیحات سنسور (کمی بالاتر) قرار داده شده است.

#include <Wire.h> 
#include <MechaQMC5883.h>

در این قسمت ما پین های ال ای دی ها را تعریف کرده ایم :

int ledPins[] = {2,3,4,5,6,7,8,9};

نحوه تعریف قطب های مغناطیسی در آردوینو

با توجه به جدول پایین و کد میتوانید بفهمید ما چگونه این کار را انجام میدهیم.

جهت درجه جهت  محدوده درجه جهت
شمال 0° / 360° >338° یا< 22°
شمال شرقی 45° 22° تا 68°
شرق 90° 68° تا 113°
جنوب شرقی 135° 113° تا 158°
جنوب 180° 158° تا 203°
جنوب غربی 225° 203° تا 248°
غربی 170° 248° تا 293°
شمال غربی 315° 293° تا 338°

 

 if (heading > 338 || heading < 22) // اگر در این محدوده بود
  {
    Serial.println("NORTH"); //شمال
    digitalWrite(ledPins[0],HIGH); // ال ای دی شمالی روشن شود
  }

  if (heading > 22 && heading < 68) // اگر در این محدوده بود
  {
    Serial.println("NORTH-EAST"); //شمال شرقی
    digitalWrite(ledPins[7],HIGH); // ال ای دی شمال شرقی روشن شود
  }

  if (heading > 68 && heading < 113) // اگر در این محدوده بود
  {
    Serial.println("EAST"); // شرق
    digitalWrite(ledPins[6],HIGH); // ال ای دی شرقی روشن شود
  }

  if (heading > 113 && heading < 158) // اگر در این محدوده بود
  {
    Serial.println("SOUTH-EAST"); // جنوب شرقی
    digitalWrite(ledPins[5],HIGH); // ال ای دی جنوب شرقی روشن شود
  }

  if (heading > 158 && heading < 203) // اگر در این محدوده بود
  {
    Serial.println("SOUTH"); // جنوب
    digitalWrite(ledPins[4],HIGH); // ال ای دی جنوبی روشن شود
  }

  if (heading > 203 && heading < 248) // اگر در این محدوده بود
  {
    Serial.println("SOTUH-WEST"); // جنوب غربی
    digitalWrite(ledPins[3],HIGH); // ال ای دی جنوب غربی روشن شود
  }

  if (heading > 248 && heading < 293) // اگر در این محدوده بود
  {
    Serial.println("WEST"); // غرب
    digitalWrite(ledPins[2],HIGH); // ال ای دی غربی روشن شود
  }

  if (heading > 293 && heading < 338) // اگر در این محدوده بود
  {
    Serial.println("NORTH-WEST"); // شمال غربی
    digitalWrite(ledPins[1],HIGH); // ال ای دی شمال غربی روشن شود
  }
موارد موجود در فایل : فایل PCB ، شماتیک ، فایل Hex ، فایل آردوینو ، و …

میخواهید برنامه نویسی STM32 را یاد بگیرید؟

دوره آموزش STM32

میخواهید الکترونیک را یاد بگیرید؟

دوره آموزش الکترونیک
دوره آموزش آردوینو

میخواهید آردوینو را به صورت پروژه محور یاد بگیرید؟ برای مشاهده توضیحات روی دوره مورد نظر کلیک کنید

محمد رحیمی

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید را قرار دهم. (در خصوص سوال در مورد این مطلب از قسمت نظرات همین مطلب اقدام کنید) سعی میکنم تمام نظرات را پاسخ دهم.

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *