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

پروژه سرعت سنج GPS با آردوینو و نمایشگر OLED

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

فیلم زیر به شما در درک نحوه کار این پروژه کمک میکند. در اینجا ما از سرعت سنج تلفن همراه برای بررسی صحت داده های نمایش داده شده استفاده میکنیم.

در این پروژه آردوینو ، ما یک سرعت سنج GPS آردوینو با استفاده از ماژول GPS NEO6M با نمایشگر OLED SH1106 خواهیم ساخت.

شماتیک سرعت سنج GPS با آردوینو

شماتیک مدار برای پروژه سرعت سنج GPS آردوینو با استفاده از OLED در زیر آورده شده است.

سرعت سنج GPS آردوینو با استفاده از OLED

قطعات مورد نیاز

  1. برد آردوینو نانو
  2. ماژول GPS NEO6M
  3. صفحه نمایش 1.3 اینچ OLED I2C SH1106 
قطعات مورد نیاز را از فروشگاه قطعات آیرنکس تهیه کنید.

ماژول GPS Neo-6M

ماژول مکان یاب GPS Neo-6M

Neo 6M یک ماژول GPS سریال است که جزئیات مکان را از طریق ارتباط سریال ارائه می دهد. این ماژول جی پی اس دارای چهار پین است. توضیحات پین های این ماژول را در جدول زیر مشاهده میکنید.

پین توضیح
Vcc منبع تغذیه 2.7 تا 5 ولت
Gnd GND
TXD ارسال اطلاعات
RXD دریافت اطلاعات

ماژول GPS داده ها را در چند رشته با نرخ 9600 Baud Rate منتقل می کند. اگر از ارتباط UART با نرخ 9600 Baud استفاده کنیم ، می توانیم داده های دریافت شده توسط GPS را ببینیم.

ماژول GPS داده های موقعیت ردیابی را با فرمت NMEA ارسال می کند. فرمت NMEA شامل چند جمله است که در زیر چهار جمله مهم آن آورده شده است.

  • $ GPGGA : داده های ثابت سیستم موقعیت یابی جهانی
  • $ GPGSV : ماهواره های GPS در نمای
  • $ GPGSA : ماهواره های فعال و GPS DOP
  • $ GPRMC : حداقل داده های خاص GPS / Transit ویژه توصیه شده

ماژول GPS داده های مربوط به موقعیت را در به صورت لحظه ای می فرستد، و داده های زیادی را با فرمت NMEA می فرستد (تصویر زیر). فرمت NMEA شامل چند جمله است که ما در آن فقط به یک جمله نیاز داریم. این جمله از $ GPGGA شروع می شود و حاوی مختصات ، زمان و سایر اطلاعات مفید است.

فرمت NMEA

می توانیم با شمارش کاما (,) در رشته ، مختصات را از رشته $ GPGGA استخراج کنیم.

فرمت NMEA چیست ؟

در زیر یک رشته GPGGA $ به همراه توضیحات آن آورده شده است :

$GPGGA,104534.000,7791.0381,N,06727.4434,E,1,08,0.9,510.4,M,43.9,M,,*47
$GPGGA,HHMMSS.SSS,latitude,N,longitude,E,FQ,NOS,HDP,altitude,M,height,M,,checksum data
واحد توضیح
$GPGGA فرمت اطلاعات موقعیت جهانی
HHMMSS.SSS زمان بر حسب ساعت ، دقیقه ، ثانیه و میلی ثانیه
Latitude عرض جغرافیایی
N جهت N= شمال و S= جنوب
Longitude عرض جغرافیایی
E جهت E= شرق و W= غرب
FQ کیفیت اطلاعات
NOS شماره ماهواره های استفاده شده
HDP دقت افقی
Altitude ارتفاع بر حسب متر از سطح دریا
M متر
Height ارتفاع
Checksum چک کردن اطلاعات

صفحه نمایش OLED I2C 1.3 اینچی

OLED SH1106

اصطلاح OLED به معنای “Organic Light emitting diode” است ، از همان فناوری استفاده می کند که در بیشتر تلویزیون های ما استفاده می شود اما پیکسل کمتری نسبت به آنها دارد. ارتباط نمایشگر های OLED با آردوینو همیشه جذاب بوده است. در این پروژه ما از یک صفحه نمایش OLED مجهز به 4 پین SH1106 OLED 1.28 استفاده می کنیم. این نمایشگر فقط با حالت I2C می تواند کار کند. مشخصات نمایشگر OLED SH1106 را بخوانید.

اگر در مورد این مطلب سوالی دارید در قسمت نظرات بپرسید

کد پروژه سرعت سنج با آردوینو

کد کامل پروژه در انتهای صفحه در فایل دانلودی قرار داده شده است. در اینجا بعضی از قسمت های کد را بررسی میکنیم.

اول از همه ، همه کتابخانه ها را فرخوانی میکنیم. در اینجا از کتابخانه TinyGPS ++ .h برای بدست آوردن مختصات GPS با استفاده از ماژول گیرنده GPS و Adafruit_SH1106.h برای OLED استفاده می شود.

#include <TinyGPS++.h>
#include <SoftwareSerial.h>
#include <Wire.h>
#include <Adafruit_SH1106.h>

سپس ، آدرس OLED I2C را تعریف میکنیم که می تواند OX3C یا OX3D باشد ، در اینجا OX3C برای ماژول من است. همچنین ، پین ریست نمایشگر باید مشخص شود. برای من، پین ریست -1 است.

#define OLED_ADDRESS   0x3C
#define OLED_RESET -1
Adafruit_SH1106 display(OLED_RESET);

در مرحله بعد ، اشیا for مربوط به کلاس TinyGPSPlus و Softwolutionial به شرح زیر مشخص شده اند. کلاس سریال نرم افزار به پین ​​شماره آردوینو نیاز دارد. برای ارتباط سریال که در اینجا 2 و 3 تعریف شده است.

int RX = 2, TX = 3;
TinyGPSPlus gps;
SoftwareSerial gpssoft(RX, TX);

در داخل setup()، مقداردهی اولیه برای ارتباطات سریال و OLED انجام می شود. نرخ پیش فرض baud برای ارتباط سریال نرم افزار 9600 تعریف شده است. در اینجا SH1106_SWITCHCAPVCC برای تامین ولتاژ نمایشگر از 3.3V داخلی و از تابع display.begin برای مقداردهی اولیه صفحه استفاده می شود.

void setup()
{
  Serial.begin(9600);
  gpssoft.begin(9600);
  display.begin(SH1106_SWITCHCAPVCC, OLED_ADDRESS);
  display.clearDisplay();
}

اگر سیگنالهای معتبری از GPS دریافت شده باشد ، displayspeed()برای نمایش سرعت در نمایشگر استفاده میشود.

while (gpssoft.available() > 0)
    if (gps.encode(gpssoft.read()))
      displayspeed();

در داخل displayspeed() ، داده ها از ماژول GPS با استفاده از تابع gps.speed.isValid () بررسی می شود و اگر مقدارصحیح باشد ، مقدار سرعت در صفحه نمایش OLED نمایش داده می شود. در اینجا اندازه متن در OLED با استفاده از تابع display.setTextSize و موقعیت متن با استفاده از تابع display.setCursor تعریف می شود. داده های سرعت از ماژول GPS با استفاده از تابع gps.speed.kmph () رمزگشایی می شود و در نهایت با استفاده از display.display () نمایش داده می شود.

if (gps.speed.isValid())
  {
    display.setTextSize(2);
    display.setCursor(40, 40);
    display.print(gps.speed.kmph());
    display.display();
  }

فیلم عملکرد

در آخر ، کد را در Arduino بارگذاری کنید و مدار را در وسیله نقلیه در حال حرکت قرار دهید ، و می توانید سرعت را بر روی صفحه نمایش OLED مشاهده کنید همانطور که در تصویر زیر نشان داده شده است.

سرعت سنج GPS با آردوینو

موارد موجود در فایل : سورس کامل ، شماتیک کامل

4.2 (12 نفر)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام ما را دنبال کنید.

محمد رحیمی

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

4 نظر

  1. سلام مجدد
    موقع پروگرام کردن این خطا رو میده مشکل از کجاست؟

    An error occurred while uploading the sketch

    avrdude: ser_open(): can’t open device “\\.\COM6”: Access is denied.

    1. سلام عزیز
      سریال مانیتور را ببندید و دوباره آپلود را انجام دهید

  2. سلام خسته نباشید
    من قطعاتش رو جور کردم و برای پروگرام کردن به مشکل تشخیص ندادن آردوینو مواجه شدم!و با نصب کتابخانه هم رفع نشد

    1. سلام عزیز
      تشخیص ندادن برد آردوینو به کتابخانه ربطی نداره، باید درایور بردتون رو نصب کنید

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

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