پروژه الکترونیکپروژه های آردوینوپروژه های اندازه گیری

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

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

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

شماتیک پروژه

شماتیک مدار برای پروژه سرعت سنج 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 استخراج کنیم.

[irp posts=”4775″ name=”آموزش ساخت ردیاب GPS با برد آردوینو و شیلد LoRa (پروژه IoT ردیابی وسایل و افراد)”]

فرمت 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 می تواند کار کند.

کد پروژه

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

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

اول از همه ، همه کتابخانه ها را فرخوانی میکنیم. در اینجا از کتابخانه 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 با آردوینو

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

دانلود فیلم پروژه سرعت سنج GPS با آردوینو

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

پروژه ها رایگان هستند. برای دانلود فایل های پروژه باید در سایت عضو باشید. ثبت نام / ورود

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

محمد رحیمی

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

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

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