آردوینو آردوینو Arduino Uno آموزش آردوینو پروژه های آردوینو

آموزش راه اندازی ماژول قطب نما GY271 HMC5883L آردوینو Arduino

آموزش راه اندازی ماژول gy271 hmc2883 با استفاده از آردوینو
نوشته شده توسط علیرضا قربانی

 gy271 HMC8358 یک قطب نمای سه محوره دیجیتال است که میتواند شدت میدان مغناطیسی را تا ۸+/- گائوس با دقت ۵ میلی گائوس اندازه گیری کند. توسط ماژول HMC5883 میتوان زاویه خود را نسبت به محور ها با دقت ۱ الی ۲ درجه محاسبه نمود. از ماژول HMC5883 GY271 میتوان در سیستم ناوبری اتوماتیک ، سیستم های جهت یابی ربات استفاده نمود. در ادامه با مرجع تخصصی الکترونیک به زبان فارسی، دیجی اسپارک همراه باشید.

 


ماژول قطب نما GY-271 سه محوره  HMC5883 موقعیت یاب


ماژول قطب‌نما GY-271 یک ماژول قطب‌نما سه محوره است که از تراشه‌ی HMC5883 استفاده می‌کند. این تراشه یک سنسور مغناطیسی دیجیتال با دقت بالا است که قادر است به شما در تعیین جهت مغناطیسی جغرافیایی (شمال، جنوب، شرق و غرب) کمک کند. این ماژول دارای سه محور (محور X، Y و Z) است که اجازه می‌دهد جهت قطب‌نما را در فضا ردیابی کنید. ماژول قطب‌نما GY-271 دارای رابط I2C است که به شما امکان اتصال آن به میکروکنترلرها و سیستم‌های مبتنی بر میکروکنترلر را می‌دهد. با استفاده از پروتکل I2C، می‌توانید داده‌های قطب‌نما را از ماژول دریافت کرده و آنها را برای استفاده در برنامه‌ها و کنترل‌کننده‌ها استفاده کنید. این ماژول دارای قابلیت‌هایی مانند کالیبراسیون خودکار، خواندن داده‌های مغناطیسی با دقت بالا و تعیین زاویه قطب‌نما است. همچنین، با توجه به تراشه HMC5883، می‌توانید مقادیر قطب‌نما را در بازه‌ی ۳۶۰ درجه خوانده و استفاده کنید.برای استفاده از ماژول قطب‌نما GY-271، باید کتابخانه‌های مربوطه را در برنامه‌نویسی میکروکنترلر خود استفاده کنید. این کتابخانه‌ها عملیات خواندن داده‌های مغناطیسی را ساده‌تر می‌کنند و به شما امکان کنترل و استفاده بهینه از ماژول را می‌دهند.

  • تراشه سنسور: HMC5883
  • ولتاژ کاری: ۳٫۳ ولت
  • رابط ارتباطی: I2C (دارای خطوط SDA و SCL)
  • دقت قطب‌نما: تا ۰٫۱ درجه
  • بازه‌ی قطب‌نما: ۰ تا ۳۶۰ درجه
  • سرعت اندازه‌گیری: تا ۱۶۰ عملیات در ثانیه
  • قابلیت کالیبراسیون خودکار
  • قابلیت تشخیص و جبران تداخل مغناطیسی
  • سه محور مستقل (محور X، Y و Z)
  • اندازه‌گیری دقیق میدان مغناطیسی
  • ابعاد فیزیکی: حدود ۱۴٫۵ × ۱۳٫۵ میلی‌متر

 


بررسی پایه های ماژول قطب نما GY-271 سه محوره  HMC5883


 

 

  • VCC: پایه تغذیه با ولتاژ ۳٫۳ ولت. این پایه باید به منبع تغذیه ۳٫۳ ولت متصل شود.
  • GND: پایه اتصال به زمین (منفی). این پایه باید به پایه زمین متصل شود.
  • SDA: پایه داده سریال (Serial Data Line) برای ارتباط با میکروکنترلر از طریق رابط I2C.
  • SCL: پایه ساعت سریال (Serial Clock Line) برای ارتباط با میکروکنترلر از طریق رابط I2C.

 

پایه DRDY (Data Ready) در ماژول قطب‌نما GY-271 با تراشه HMC5883، به عنوان خروجی سیگنالی استفاده می‌شود که نشان دهنده آماده بودن داده‌ها برای خواندن است. وقتی که داده‌های جدیدی برای قطب‌نما آماده می‌شوند و قابل خواندن هستند، این پایه در حالت فعال (HIGH) قرار می‌گیرد و با خواندن داده‌های جدید از قطب‌نما متصل به آن، می‌توانید بفهمید که داده‌ها آماده خواندن هستند.پایه DRDY به عنوان ورودی به میکروکنترلر شما متصل می‌شود. شما می‌توانید از روش‌های مختلف برای خواندن این پایه استفاده کنید، مانند خواندن حالت پایه به صورت مکرر تا زمانی که در حالت فعال قرار بگیرد یا استفاده از قابلیت (interrupt) برای شناسایی آماده بودن داده‌ها خواهد بود.

 

 


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


برای راه اندازی ماژول قطب‌نما GY-271 با آردوینو، شما می‌توانید از کتابخانه‌ی HMC5883L ارائه شده توسط Adafruit استفاده کنید. برای استفاده از این کتابخانه و راه اندازی ماژول، مراحل زیر را دنبال کنید. ابتدا، از طریق برنامه آردوینو IDE، کتابخانه‌ی HMC5883L را نصب کنید. برای این کار، به منوی “Sketch” بروید، سپس “Include Library” را انتخاب کرده و سپس “Manage Libraries” را انتخاب کنید. در پنجره جدید، در قسمت جستجو، “HMC5883L” را جستجو کرده و کتابخانه را نصب کنید.متصل کردن ماژول GY-271 به آردوینو را انجام دهید. برق آردوینو را به VCC و GND ماژول متصل کنید. پایه SDA ماژول را به پایه A4 آردوینو و پایه SCL را به پایه A5 آردوینو متصل کنید.کد زیر را در آردوینو IDE قرار دهید و برای آپلود کد به برد، از منوی “Sketch” و سپس “Upload” استفاده کنید.

 

 

محدودیت در دسترسی کامل به این مجموعه آموزش

 

دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندس‌های دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید.

 


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


 

float heading = atan2 (event.compass.y, event.compass.x);

هنگامی که محور z به سمت بالا اشاره کند ، با استفاده از عملیات بالا میتوان زاویه محور x  نسبت به قطب شمال زمین را بدست آورد.

float declinationAngle = 0.066613399668;
heading += declinationAngle;

هم اکنون باید به توضیخ مطلبی  به نام میل مغناطیسی یا وردش مغناطیسی بپردازم . میل مغناطیسی چیست ؟؟؟؟؟!

پاسخ:محور مغناطیسی زمین با محور جغرافیایی آن (محور چرخش زمین) به طور کامل موازی نیست. در نتیجه خواندن یک قطب‌نما تا حدودی از شمال جغرافیایی انحراف دارد. این انحراف که با مکان تغییر می‌کند وردش مغناطیسی یا میل مغناطیسی نامیده می‌شود.میل مغناطیسی، در هر نقطه از زمین، زاویه بین شمال حقیقی و شمال مغناطیسی در آن نقطه است؛ یعنی زاویهٔ بین سمتی که عقربهٔ قطب‌نما نشان می‌دهد، و سمت شمال جغرافیایی. برخی از منابع مختلف میل مغناطیسی را «وردش مغناطیسی» هم می‌نامند که درست است. برخی هم به اشتباه آن را انحراف مغناطیسی گفته‌اند، ولی این واژه، برای انحراف ناچیز عقربهٔ قطب‌نما در اثر عوامل محیطی (مانند وسایل آهنی و منابع الکتریکی و غیره) است و هیچ ارتباطی با زاویه میل مغناطیسی در یک محل ندارد.

آموزش راه اندازی ماژول قطب نما GY271 HMC5883L

میل مغناطیسی

برای پیدا کردن میل مغناطیسی می‌بایست ابتدا وارد سایت زیر شویم.  http://www.magnetic-declination.com/  در این سایت مقدار فیلد Magnetic declination برابر میل مغناطیسی می‌باشد.

آموزش راه اندازی ماژول قطب نما GY271 HMC5883L

مقدار میل مغنناطیسی

در عکس بالا شما دو عدد °۳ و همچنین ’۴۹ را مشاهده میکنید. عدد ۴۹ بر پایه ی واحد دقیقه‌ی قوسی(هر دقیقه قوسی معادل  یک شصتم یک درجه است) می‌باشد و باید آن را به درجه تبدیل کنید و به عدد ۳ اضافه کنید.

۴۹÷۶۰=۰٫۸۱۶۶۶۶۶

۳+۰٫۸۱۶۶۶۶=۳٫۸۱۶۶۶۶۶۶

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

۳٫۸۱۶۶۶°=۰٫۰۶۶۶۱۳۲۸۳۴۲۹۱۶۷ rad

if ( heading < 0 )
    {
    heading += 2 * PI;
    }


  if ( heading > 2 * PI )
    {
    heading -= 2 * PI;
    }

با استفاده از عملیات فوق مقادیر قطب نما را بین ۰ تا ۲PI رادیان ( ۰ تا ۳۶۰ درجه) تبدیل میکنیم. در پایان مقدار زاویه قطب نما نسبت به شمال جغرافیایی و همچنین جههات جغرافیایی را بر روی ال سی دی نمایش میدهیم.

 


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


ماژول قطب نما GY-271 سه محوره با تراشه HMC5883 موقعیت یاب HONEYWELL

برد آردوینو Arduino UNO

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

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

علیرضا قربانی

علیرضا قربانی هستم دانشجوی مهندسی پزشکی. چیزهای خیلی زیادی رو در دنیا دوست دارم. یک گیک هستم و یشه گفت یک هکر. نه به معنی دزدی پسورد و ایمیل مردم. به معنی عشق به دونستن و عشق به تحقیق درباره خیلی از چیزهایی که می بینم و می‌شنوم. اگر بخوام علاقه‌مندی‌ درجه یکم رو نام ببرم میتونم بگم برنامه نویسی و بعد از اون امبدد سیستم ها.

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

۳۲ دیدگاه

  • خیلی مطالبتان عالی و خوب بود ببخشید من چند سوال دارم
    اول
    Adafruit_HMC5883_Unified compass (55555); این دستور دقیقا متوجه نشدم که کار برد ان چی هست و چرا گذاشته شده
    دوم
    این دستور sensors_event_t event هم در خط ۲۶ متوجه کاربردش نمی شوم

    و هنوز سوالات دیگری دارم
    ممنون میشدم اگر برنامه را کمی واضح تر توضیح میدادید و پیشاپیش بابت وقت گزاری شما خیلی ممنان

    • با سلام
      ضمن تشکر از توجه، خوشحالم که مطالب سایت دیجی اسپارک برای شما موثر بوده است.
      در مورد سوال اول برای این که بتوان از کتابخانه‌ی ماژول استفاده کرد باید یک شی از کلاس ماژول بسازیم. که همانطور که بیان شده است ساخته میشود.
      در مورد سوال دوم از کلاس sensoe_event یک شی به نام event می‌سازیم. با این روش تغییرات سنسور را دریافت میکنیم.

      لطفا سوالاتتان را از همین طریق بپرسید.

  • سلام
    در ابتدای فایل تعریف توابع به عبارت lt;Adafruit_Sensor.h&gt&
    ارور می گیره در نسخه های ۱٫۸ و اشاره می کند به تعریف به صورت می بایست تعریف شود.

    • با سلام
      ضمن تشکر از توجه شما، تگ‌های html وارد کدها شده بودند، که به درخواست شما، مشکل حل شد.

  • سلام
    وققتون بخیر
    تشکر از سایت و مطالبتان
    لطفا راه اندازی ماژول HMC5883L را با کدویژن توضیح دهید.
    با تشکر

    • با سلام
      ضمن تشکر از توحه شما، در این مجموعه فعلا راجع به کدویژن برنامه‌ای نداریم. ولی در آینده اگر از بین کاربران چنین تخصصی وجود داشته باشد، حتما حمایت خواهیم کرد.

  • سلام

    sketch_oct25a:29: error: ‘struct sensors_event_t’ has no member named ‘compass’

    float heading = atan2 (event.compass.y, event.compass.x);

    ^

    sketch_oct25a:29: error: ‘struct sensors_event_t’ has no member named ‘compass’

    float heading = atan2 (event.compass.y, event.compass.x);

    ^
    این چه اروریه؟

  • سلام
    برای راه اندازی ماژول gy271-hmc5883l
    آیا باید مقادیر آفست را محاسبه و حذف کنیم؟؟؟
    و چگونه باید مقادیر آفست را محاسبه و حذف و کنیم؟؟؟

  • سلام
    ببخشید من با این که کتاب خونه هارو دانلود و اضافه کردم ولی با این ارور رو به رو میشم ممکنه کمکم کنید
    Arduino: 1.8.5 (Windows 7), Board: “Arduino Nano, ATmega328P”

    C:\Users\Admin\Desktop\قطب نما\sketch_dec11a\sketch_dec11a.ino: In function ‘void loop()’:

    sketch_dec11a:28: error: ‘struct sensors_event_t’ has no member named ‘compass’

    sketch_dec11a:28: error: ‘struct sensors_event_t’ has no member named ‘compass’

    Multiple libraries were found for “Adafruit_HMC5883_U.h”
    Used: C:\Users\Admin\Documents\Arduino\libraries\Adafruit_HMC5883_Unified-master
    Not used: C:\Users\Admin\Documents\Arduino\libraries\Adafruit_HMC5883_Unified
    exit status 1
    ‘struct sensors_event_t’ has no member named ‘compass’

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.

    ممنون

    • با سلام
      ضمن تشکر از توجه شما، در حال حاضر پیغام چندین کتابخانه با یک نام را دریافت میکنید. Multiple libraries were found for “Adafruit_HMC5883_U.h برای رفع مشکل وارد مسیر C:\Users\Admin\Documents\Arduino\libraries شده و کتابخانه دارای عنوان HMC5883 را یکی را پاک کنید. سپس موارد را اطلاع دهید.

      • با تشکر از پاسخ شما
        موارد اصلاح شد ولی حالا باز این پیغام رو میده

        آردوینو:۱٫۶٫۸ (Windows 7), بُرد:”Arduino Nano, ATmega328″

        The sketch name had to be modified. Sketch names can only consist
        of ASCII characters and numbers (but cannot start with a number).
        They should also be less than 64 characters long.

        C:\Program Files (x86)\Arduino\arduino-builder -dump-prefs -logger=machine -hardware “C:\Program Files (x86)\Arduino\hardware” -hardware “C:\Users\A.M\AppData\Local\Arduino15\packages” -tools “C:\Program Files (x86)\Arduino\tools-builder” -tools “C:\Program Files (x86)\Arduino\hardware\tools\avr” -tools “C:\Users\A.M\AppData\Local\Arduino15\packages” -built-in-libraries “C:\Program Files (x86)\Arduino\libraries” -libraries “C:\Users\A.M\Documents\Arduino\libraries” -fqbn=arduino:avr:nano:cpu=atmega328 -ide-version=10608 -build-path “C:\Users\A.M\AppData\Local\Temp\build7c8a898c707d7916a321a5a012ad21d0.tmp” -warnings=none -prefs=build.warn_data_percentage=75 -verbose “C:\Users\A.M\Documents\Arduino\ghotb_nama\ghotb_nama.ino”
        C:\Program Files (x86)\Arduino\arduino-builder -compile -logger=machine -hardware “C:\Program Files (x86)\Arduino\hardware” -hardware “C:\Users\A.M\AppData\Local\Arduino15\packages” -tools “C:\Program Files (x86)\Arduino\tools-builder” -tools “C:\Program Files (x86)\Arduino\hardware\tools\avr” -tools “C:\Users\A.M\AppData\Local\Arduino15\packages” -built-in-libraries “C:\Program Files (x86)\Arduino\libraries” -libraries “C:\Users\A.M\Documents\Arduino\libraries” -fqbn=arduino:avr:nano:cpu=atmega328 -ide-version=10608 -build-path “C:\Users\A.M\AppData\Local\Temp\build7c8a898c707d7916a321a5a012ad21d0.tmp” -warnings=none -prefs=build.warn_data_percentage=75 -verbose “C:\Users\A.M\Documents\Arduino\ghotb_nama\ghotb_nama.ino”
        WARNING: Spurious .github folder in ‘Adafruit HMC5883 Unified’ library
        “C:\Users\A.M\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\4.9.2-atmel3.5.4-arduino2/bin/avr-g++” -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10608 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR “-IC:\Users\A.M\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\cores\arduino” “-IC:\Users\A.M\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\variants\eightanaloginputs” “C:\Users\A.M\AppData\Local\Temp\build7c8a898c707d7916a321a5a012ad21d0.tmp\sketch\ghotb_nama.ino.cpp” -o “nul”
        “C:\Users\A.M\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\4.9.2-atmel3.5.4-arduino2/bin/avr-g++” -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10608 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR “-IC:\Users\A.M\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\cores\arduino” “-IC:\Users\A.M\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\variants\eightanaloginputs” “-IC:\Users\A.M\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\libraries\Wire\src” “C:\Users\A.M\AppData\Local\Temp\build7c8a898c707d7916a321a5a012ad21d0.tmp\sketch\ghotb_nama.ino.cpp” -o “nul”
        “C:\Users\A.M\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\4.9.2-atmel3.5.4-arduino2/bin/avr-g++” -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10608 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR “-IC:\Users\A.M\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\cores\arduino” “-IC:\Users\A.M\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\variants\eightanaloginputs” “-IC:\Users\A.M\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\libraries\Wire\src” “-IC:\Users\A.M\Documents\Arduino\libraries\Adafruit_Sensor-master” “C:\Users\A.M\AppData\Local\Temp\build7c8a898c707d7916a321a5a012ad21d0.tmp\sketch\ghotb_nama.ino.cpp” -o “nul”
        “C:\Users\A.M\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\4.9.2-atmel3.5.4-arduino2/bin/avr-g++” -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10608 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR “-IC:\Users\A.M\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\cores\arduino” “-IC:\Users\A.M\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\variants\eightanaloginputs” “-IC:\Users\A.M\Documents\Arduino\libraries\Adafruit_HMC5883_Unified-master” “-IC:\Users\A.M\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\libraries\Wire\src” “-IC:\Users\A.M\Documents\Arduino\libraries\Adafruit_Sensor-master” “C:\Users\A.M\AppData\Local\Temp\build7c8a898c707d7916a321a5a012ad21d0.tmp\sketch\ghotb_nama.ino.cpp” -o “nul”
        “C:\Users\A.M\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\4.9.2-atmel3.5.4-arduino2/bin/avr-g++” -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10608 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR “-IC:\Users\A.M\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\cores\arduino” “-IC:\Users\A.M\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\variants\eightanaloginputs” “-IC:\Users\A.M\Documents\Arduino\libraries\Adafruit_HMC5883_Unified-master” “-IC:\Program Files (x86)\Arduino\libraries\LiquidCrystal\src” “-IC:\Users\A.M\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\libraries\Wire\src” “-IC:\Users\A.M\Documents\Arduino\libraries\Adafruit_Sensor-master” “C:\Users\A.M\AppData\Local\Temp\build7c8a898c707d7916a321a5a012ad21d0.tmp\sketch\ghotb_nama.ino.cpp” -o “nul”
        “C:\Users\A.M\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\4.9.2-atmel3.5.4-arduino2/bin/avr-g++” -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10608 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR “-IC:\Users\A.M\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\cores\arduino” “-IC:\Users\A.M\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\variants\eightanaloginputs” “-IC:\Users\A.M\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\libraries\Wire\src” “-IC:\Users\A.M\Documents\Arduino\libraries\Adafruit_Sensor-master” “-IC:\Users\A.M\Documents\Arduino\libraries\Adafruit_HMC5883_Unified-master” “-IC:\Program Files (x86)\Arduino\libraries\LiquidCrystal\src” “C:\Users\A.M\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\libraries\Wire\src\Wire.cpp” -o “nul”
        “C:\Users\A.M\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\4.9.2-atmel3.5.4-arduino2/bin/avr-g++” -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10608 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR “-IC:\Users\A.M\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\cores\arduino” “-IC:\Users\A.M\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\variants\eightanaloginputs” “-IC:\Users\A.M\Documents\Arduino\libraries\Adafruit_Sensor-master” “-IC:\Users\A.M\Documents\Arduino\libraries\Adafruit_HMC5883_Unified-master” “-IC:\Program Files (x86)\Arduino\libraries\LiquidCrystal\src” “-IC:\Users\A.M\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\libraries\Wire\src” “C:\Users\A.M\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\libraries\Wire\src\utility\twi.c” -o “nul”
        “C:\Users\A.M\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\4.9.2-atmel3.5.4-arduino2/bin/avr-g++” -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10608 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR “-IC:\Users\A.M\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\cores\arduino” “-IC:\Users\A.M\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\variants\eightanaloginputs” “-IC:\Program Files (x86)\Arduino\libraries\LiquidCrystal\src” “-IC:\Users\A.M\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\libraries\Wire\src” “-IC:\Users\A.M\Documents\Arduino\libraries\Adafruit_Sensor-master” “-IC:\Users\A.M\Documents\Arduino\libraries\Adafruit_HMC5883_Unified-master” “C:\Users\A.M\Documents\Arduino\libraries\Adafruit_HMC5883_Unified-master\Adafruit_HMC5883_U.cpp” -o “nul”
        “C:\Users\A.M\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\4.9.2-atmel3.5.4-arduino2/bin/avr-g++” -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10608 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR “-IC:\Users\A.M\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\cores\arduino” “-IC:\Users\A.M\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\variants\eightanaloginputs” “-IC:\Users\A.M\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\libraries\Wire\src” “-IC:\Users\A.M\Documents\Arduino\libraries\Adafruit_Sensor-master” “-IC:\Users\A.M\Documents\Arduino\libraries\Adafruit_HMC5883_Unified-master” “-IC:\Program Files (x86)\Arduino\libraries\LiquidCrystal\src” “C:\Program Files (x86)\Arduino\libraries\LiquidCrystal\src\LiquidCrystal.cpp” -o “nul”
        “C:\Users\A.M\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\4.9.2-atmel3.5.4-arduino2/bin/avr-g++” -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10608 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR “-IC:\Users\A.M\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\cores\arduino” “-IC:\Users\A.M\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\variants\eightanaloginputs” “-IC:\Users\A.M\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\libraries\Wire\src” “-IC:\Users\A.M\Documents\Arduino\libraries\Adafruit_Sensor-master” “-IC:\Users\A.M\Documents\Arduino\libraries\Adafruit_HMC5883_Unified-master” “-IC:\Program Files (x86)\Arduino\libraries\LiquidCrystal\src” “C:\Users\A.M\AppData\Local\Temp\build7c8a898c707d7916a321a5a012ad21d0.tmp\sketch\ghotb_nama.ino.cpp” -o “nul”
        “C:\Users\A.M\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\4.9.2-atmel3.5.4-arduino2/bin/avr-g++” -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10608 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR “-IC:\Users\A.M\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\cores\arduino” “-IC:\Users\A.M\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\variants\eightanaloginputs” “-IC:\Users\A.M\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\libraries\Wire\src” “-IC:\Users\A.M\Documents\Arduino\libraries\Adafruit_Sensor-master” “-IC:\Users\A.M\Documents\Arduino\libraries\Adafruit_HMC5883_Unified-master” “-IC:\Program Files (x86)\Arduino\libraries\LiquidCrystal\src” “C:\Users\A.M\AppData\Local\Temp\build7c8a898c707d7916a321a5a012ad21d0.tmp\sketch\ghotb_nama.ino.cpp” -o “C:\Users\A.M\AppData\Local\Temp\build7c8a898c707d7916a321a5a012ad21d0.tmp\preproc\ctags_target_for_gcc_minus_e.cpp”
        “C:\Program Files (x86)\Arduino\tools-builder\ctags\5.8-arduino10/ctags” -u –language-force=c++ -f – –c++-kinds=svpf –fields=KSTtzns –line-directives “C:\Users\A.M\AppData\Local\Temp\build7c8a898c707d7916a321a5a012ad21d0.tmp\preproc\ctags_target_for_gcc_minus_e.cpp”
        “C:\Users\A.M\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\4.9.2-atmel3.5.4-arduino2/bin/avr-g++” -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10608 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR “-IC:\Users\A.M\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\cores\arduino” “-IC:\Users\A.M\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\variants\eightanaloginputs” “-IC:\Users\A.M\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\libraries\Wire\src” “-IC:\Users\A.M\Documents\Arduino\libraries\Adafruit_Sensor-master” “-IC:\Users\A.M\Documents\Arduino\libraries\Adafruit_HMC5883_Unified-master” “-IC:\Program Files (x86)\Arduino\libraries\LiquidCrystal\src” “C:\Users\A.M\AppData\Local\Temp\build7c8a898c707d7916a321a5a012ad21d0.tmp\sketch\ghotb_nama.ino.cpp” -o “C:\Users\A.M\AppData\Local\Temp\build7c8a898c707d7916a321a5a012ad21d0.tmp\sketch\ghotb_nama.ino.cpp.o”
        C:\Users\A.M\Documents\Arduino\ghotb_nama\ghotb_nama.ino: In function ‘void loop()’:

        ghotb_nama:28: error: ‘struct sensors_event_t’ has no member named ‘compass’

        float heading = atan2 (event.compass.y, event.compass.x);

        ^

        ghotb_nama:28: error: ‘struct sensors_event_t’ has no member named ‘compass’

        float heading = atan2 (event.compass.y, event.compass.x);

        ^

        Multiple libraries were found for “Adafruit_HMC5883_U.h”
        Used: C:\Users\A.M\Documents\Arduino\libraries\Adafruit_HMC5883_Unified-master
        Not used: C:\Users\A.M\Documents\Arduino\libraries\Adafruit_HMC5883_Unified
        Using library Wire at version 1.0 in folder: C:\Users\A.M\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\libraries\Wire
        Using library Adafruit_Sensor-master at version 1.0.2 in folder: C:\Users\A.M\Documents\Arduino\libraries\Adafruit_Sensor-master
        Using library Adafruit_HMC5883_Unified-master at version 1.0.0 in folder: C:\Users\A.M\Documents\Arduino\libraries\Adafruit_HMC5883_Unified-master
        Using library LiquidCrystal at version 1.0.5 in folder: C:\Program Files (x86)\Arduino\libraries\LiquidCrystal
        exit status 1
        ‘struct sensors_event_t’ has no member named ‘compass’

        • با سلام
          ضمن تشکر از توجه شما و عذرخواهی بابت تاخیر در پاسخگویی، در ابتدای خطا نوشته شده است. احتمالا تغییراتی در کدها داده‌‌اید که منجر به این موضوع شده است.
          he sketch name had to be modified. Sketch names can only consist
          of ASCII characters and numbers (but cannot start with a number).
          They should also be less than 64 characters long

          • سلام ممنون از پاسخ
            ولی من هیچ تغییری ندادم همین کد هایی که هستن رو کپی میکنم ولی بازم این ارور رو میده
            به نظرتون مشکل کجاست؟

            • الان داره این ارور رو میده
              Arduino: 1.8.5 (Windows 7), Board: “Arduino Nano, ATmega328P”

              C:\Users\Admin\Downloads\FP6LRL2IUIYSWKD\HMC5833L\HMC5833L.ino: In function ‘void loop()’:

              HMC5833L:28: error: ‘struct sensors_event_t’ has no member named ‘compass’

              float heading = atan2 (event.compass.y, event.compass.x);

              ^

              HMC5833L:28: error: ‘struct sensors_event_t’ has no member named ‘compass’

              float heading = atan2 (event.compass.y, event.compass.x);

              ^

              exit status 1
              ‘struct sensors_event_t’ has no member named ‘compass’

              This report would have more information with
              “Show verbose output during compilation”
              option enabled in File -> Preferences.

            • سلام مجدد
              پیرو مشکل شما، بنده کدها را کامپایل کردم. جهت رفع ارور لطفا کدهای زیر را با سطر ۲۸ عوض کنید. سپس موارد را اطلاع دهید.

              float heading = atan2 (event.magnetic.y, event.magnetic.x);

  • با سلام و تشکر از سایت عالیتون
    یک مشکلی رو برای این پروژه بهش برخورد کردم که بعد از چندروز تلاش بالاخره تونستم راه اندازیش کنم.
    گفتم به اشتراک بذارم تا بقیه دوستان به این مشکل نخورن.
    ماژول GY-271 که در این پروژه استفاده شده از نوع اورجینال هست که با کد HMC5883 شناخته میشه و روی IC کد L883 حک شده ولی متاسفانه اکثر ماژول های GY-271 موجود در بازار برای یک شرکت فرعی هستند و با کد QMC5883 شناخته میشن و روی IC کد DA5883 حک شده. برای راه اندازی این ماژول باید از کتابخونه جداگونه که برای QMC5883 هست استفاده کنید چون آدرس رجیستر و … این دو نوع ماژول کاملا باهم فرق دارن!

  • سلام
    من کتابخانه هارو نصب کردم
    اما بازم ارور میده
    Arduino: 1.8.3 (Mac OS X), Board: “Arduino/Genuino Uno”

    /Users/MATRIX/Documents/Arduino/sketch_mar30b/sketch_mar30b.ino: In function ‘void loop()’:
    sketch_mar30b:27: error: ‘struct sensors_event_t’ has no member named ‘compass’
    float heading = atan2 (event.compass.y, event.compass.x);
    ^
    sketch_mar30b:27: error: ‘struct sensors_event_t’ has no member named ‘compass’
    float heading = atan2 (event.compass.y, event.compass.x);
    ^
    exit status 1
    ‘struct sensors_event_t’ has no member named ‘compass’

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.

    • با سلام و تشکر از شما
      در بالاتر پاسخ به یکی دیگر از کاربران همین موضوع را اشاره کرده‌ام، بایستی یک خط از کدها را تغییر دهید. لطفا کامنت‌های بالایی را مطالعه بفرمایید. سپس نتیجه را از همین طریق اطلاع رسانی کنید.

  • سلام. لطفا یه برنامه برای راه اندازی این ماژول با تراشه QMC5883 هم بذارید.ممنون میشم.
    کتابخونه های مختلفی از این تراشه دانلود کردم اما متاسفانه زاویه ۰ تا ۳۶۰ رو طبق قطب نمای گوشیم دقیق نمیده.راهنمایی کنید لطفا

  • سلام. ایا اشیای فلزی در اطراف ماژول روی زاویه بدست اومده از ماژول تاثیر گذاره؟
    اگه جواب مثبته چطور میشه مثل قطب ممای گوشی موبایل این تاثیرات رو از بین برد!؟!؟

    • با سلام
      هر ماژولی دارای عملکرد متفاوتی است. بنده نمی‌توانم به صورت قطعی راجع به این مضوع نظر بدهم. از دیگر کاربرانی که در این خصوص تجربه کافی دارند، تقاضا دارم تا در این بحث شرکت کنند.

  • سلام
    تمام پین ها درست ارتباط دارد و همچنین کتابخانه و کد شما به همراه تغییرات را اعمال کردم ولی در زمان اجرا فقط متن زیر نمایش داده میشود
    ۱۲:۳۷:۴۲٫۷۰۵ -> HMC5883 compass Test
    و هیچ چیز دیگری نوشته نمی شود

  • من پایه ۳٫۳v رو وقتی فقط وصل مکنم هیچ درجه ایی نشون نمیده ولی وقتی پایه +۵v رو وصل می کنم یک بار عدد ۳٫۸ درجه رو نشون میده و دیگه چیزی نمی نویسه

    • سلام
      با تغذیه ۵ ولت تست کنید. اتصالات کابل ها هم می بایست محکم باشند. از این بابت اطمینان حاصل کنید پایه های SCL و SDA را هم به ترتیب زیر متصل کنید:
      اتصال پایه SCL ماژول به پایه A5 اردوینو
      اتصال پایه SDA ماژول به پایه A4 اردوینو