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

ساخت ردیاب GPS ماشین با آردوینو + هشدار تصادف SMS با Sim900 و SIM28

سلام. ساخت ردیاب GPS ماشین با آردوینو + هشدار SMS با Sim900 را آماده کردیم.

راه اندازی gps با آردوینو

در این پروژه آردوینو ، ما قصد داریم با استفاده از GPS ، GSM و شتاب سنج، یک سیستم هشدار تصادف وسیله نقلیه بسازیم. شتاب سنج تغییر ناگهانی محورهای وسیله نقلیه را تشخیص می دهد و ماژول GSM پیام هشدار و مکان تصادف را به تلفن همراه شما ارسال می کند. محل حادثه به صورت پیوند Google Map ارسال می شود که از طول و عرض جغرافیایی ماژول GPS گرفته شده است. پیام همچنین حاوی سرعت خودرو است. این پروژه Arduino همچنین میتواند به عنوان یک سیستم ردیابی و خیلی موارد دیگر با ایجاد چند تغییر کوچک در سخت افزار و نرم افزار استفاده شود.

قبل از ورود به پروژه ، در مورد GPS ، GSM و شتاب سنج صحبت خواهیم کرد.

ماژول GPS چیست و چگونه کار میکند ؟

GPS مخفف سیستم موقعیت یابی جهانی است و برای تشخیص طول و عرض جغرافیایی هر مکان بر روی زمین ، با زمان دقیق UTC (زمان هماهنگ جهانی) استفاده می شود. ماژول GPS برای ردیابی محل حادثه در پروژه ما استفاده می شود. این دستگاه برای هر ثانیه مختصات و زمان و تاریخ مختصات را از ماهواره دریافت می کند.

ماژول GPS چیست و چگونه کار میکند ؟

ماژول 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 چک کردن اطلاعات

ماژول GSM Sim900 چیست و چگونه کار میکند ؟

SIM900 یک ماژول چهار باند GSM / GPRS کامل است که به راحتی قابل پیکربندی است. SIM900 قابلیت انتقال صدا ، پیام کوتاه ، داده های اینترنت را دارد. این ماژول به فراوانی در بازار موجود است و قیمت مناسبی دارد. SIM900 با استفاده از پردازنده  AMR926EJ-S طراحی شده است. این ماژول محبوب دارای چهار باند ماژول GSM / GPRS در اندازه ای کوچک است.

اگر میخواهید آردوینو را به صورت اصولی و پروژه محور (برنامه نویسی حرفه ای، ارتباط آردوینو با اندروید، ساخت ربات با آردوینو) یاد بگیرید، روی دوره آموزش آردوینو کلیک کنید.
[irp posts=”1101″ name=”پروژه آردوینو راه اندازی خانه هوشمند با اس ام اس (GSM Sim900 Arduino SMS)”]

دستورات AT

AT به معنی توجه است. این دستور برای کنترل ماژول GSM استفاده می شود. برای تست ماژول GSM از دستور AT استفاده کردیم. بعد از دریافت دستور AT ماژول GSM با OK پاسخ دهید. این یعنی که ماژول GSM خوب کار می کند. در زیر چند دستور AT که در این پروژه از آنها استفاده کرده ایم آورده شده است:

ATE0 For echo off
AT+CNMI=2,2,0,0,0  <ENTER>      باز کردن خودکار پیام ها
ATD<Mobile Number>; <ENTER>      تماس با یک شماره (ATD+989350126059;\r\n)
AT+CMGF=1 <ENTER>                انتخاب نوع متن
AT+CMGS=”Mobile Number” <ENTER>  شماره گیرنده
>>نوشتن پیام
>>پس از نوشتن پیام
Ctrl+Z  دستور ارسال پیام (26 در دسیمال)
ENTER=0x0d در هگز

توضیحات شتاب سنج ADXL335

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

سنسور شتاب سنج ADXL335
سنسور شتاب سنج ADXL335

توضیحات پین های شتاب سنج :

  • VCC :  برق +5V باید به این پین وصل شود.
  • X-OUT : این پین خروجی آنالوگ را در جهت x میدهد.
  • Y-OUT : این پین خروجی آنالوگ را در جهت y میدهد.
  • Z-OUT : این پین خروجی آنالوگ را در جهت z میدهد.
  • GND : این پین باید به زمین (-) وصل شود.
  • ST : این پین برای حساسیت سنسور استفاده میشود.
[irp posts=”753″ name=”پروژه آردوینو کنترل ربات با حرکت دست با سنسور شتاب سنج”]

شماتیک و توضیحات مدار پروژه ردیاب با آردوینو

اتصالات مدار پروژه سیستم هشدار تصادف وسیله نقلیه ساده است. در اینجا پین Tx ماژول GPS مستقیماً به پین ​​دیجیتال شماره 10 آردوینو متصل است.

شماتیک و توضیحات مدار پروژه ردیاب با آردوینو

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

به طور پیش فرض از پین 0 و 1 آردوینو برای ارتباط سریال استفاده می شود اما با استفاده از کتابخانه SoftwareSerial می توان ارتباط سریال را در سایر پین های دیجیتال آردوینو امکان پذیر کرد. از منبع تغذیه 12 ولت برای تغذیه ماژول GPS استفاده می شود.

پین های Tx و Rx ماژول GSM به طور مستقیم به پین ​​D2 و D3 آردوینو وصل می شوند. برای ارتباط GSM، در اینجا از کتابخانه سریال استفاده کرده ایم. ماژول GSM از منبع تغذیه 12 ولت بهره می برد. پین های داده ال سی دی D4 ، D5 ، D6 و D7 به پین ​​شماره 6 ، 7 ، 8 و 9 آردوینو وصل می شوند. پین RS و EN از LCD به پین شماره 4 و 5 آردوینو متصل شده و پین RW مستقیماً به GND وصل شده است. از پتانسیومتر نیز برای تنظیم کنتراست یا روشنایی LCD استفاده می شود.

برای تشخیص تصادف در این سیستم شتاب سنج اضافه شده و پین های خروجی ADC با محور x ، y و z آن مستقیماً به پین ​​های A1 ، A2 و A3 آردوینو آنالوگ به دیجیتال متصل می شوند.

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

  1. برد آردوینو Uno
  2. ماژول GSM SIM900A
  3. ماژول GPS SIM28ML
  4. شتاب سنج ADXL335
  5. ال سی دی کاراکتری 16*2 (اختیاری)
  6. پتانسیومتر 10 کیلو اهم
  7. منبع تغذیه 12 ولت 1 آمپر

این پروژه چطور کار میکند ؟

در این پروژه از آردوینو برای کنترل کل مراحل با یک گیرنده GPS و ماژول GSM استفاده می شود. گیرنده GPS برای تشخیص مختصات وسیله نقلیه استفاده می شود، از ماژول GSM برای ارسال پیام هشدار به همراه مختصات و پیوند به نقشه گوگل استفاده می شود. شتاب سنج یعنی ADXL335 برای تشخیص تصادف یا تغییر ناگهانی در هر محور استفاده می شود. و یک ال سی دی کاراکتری 16*2 (اختیاری) نیز برای نمایش پیام های وضعیت یا مختصات استفاده می شود. ما از ماژول GPS SIM28ML و GSM ماژول SIM900A استفاده کرده ایم.

هشدار تصادف SMS با Sim900 و GPS SIM28

توضیحات برنامه نویسی پروژه

برنامه کامل در فایل دانلودی قرار داده شده است. در اینجا بخش های مهم آن را توضیح میدهیم.

ابتدا كتابخانه ها و پرونده های هدر مورد نیاز را درج كرده و متغیرهای مختلفی را برای محاسبه و ذخیره داده های موقتی اعلام میکنیم.

در اینجا در این پروژه می توان حساسیت شتاب سنج را با قرار دادن حداقل و حداکثر در کد تنظیم کرد.

#define minVal -50
#define MaxVal 50

برای نتیجه بهتر می توانید از 200 به جای 50 استفاده کنید، یا می توانید با توجه به نیاز خود تنظیم کنید.

پس از آن، ما برای ایجاد اولیه ماژول GSM و بررسی پاسخ آن با استفاده از دستورات AT ، یک تابع ایجاد میکنیم.

void initModule(String cmd, char *res, int t)
{
  while(1)
  {
    Serial.println(cmd);
    Serial1.println(cmd);
    delay(100);
    while(Serial1.available()>0)
    {
       if(Serial1.find(res))
       {
        Serial.println(res);
        delay(t);
        return;
       }

       else
       {
        Serial.println("Error");
       }
    }
    delay(t);
  }
}

پس از این ، در تابع void setup () ، ما ارتباط سریال سخت افزاری و نرم افزاری ، LCD ، GPS ، ماژول GSM و شتاب سنج را تعریف میکنیم.

void setup() 
{
  Serial1.begin(9600);
  Serial.begin(9600);
  lcd.begin(16,2);  
  lcd.print("Accident Alert  ");
  lcd.setCursor(0,1);
  lcd.print("     System     ");
  delay(2000);
  lcd.clear();
  .... ......
  ...... .....

روند کالیبراسیون شتاب سنج نیز در حلقه setup انجام می شود. در اینجا ما برخی مقادیر را دریافت کرده ایم، آن ها را تبدیل به محور x ، محور y و محور z میکنیم و در یک متغیر ذخیره میکنیم. سپس از این مقادیر برای متوجه شدن تغییر هنگام تصادف وسیله نقلیه استفاده میکنیم.

  lcd.print("Callibrating ");
  lcd.setCursor(0,1);
  lcd.print("Acceleromiter");
  for(int i=0;i<samples;i++)
  {
    xsample+=analogRead(x);
    ysample+=analogRead(y);
    zsample+=analogRead(z);
  }

  xsample/=samples;
  ysample/=samples;
  zsample/=samples;

  Serial.println(xsample);
  Serial.println(ysample);
  Serial.println(zsample);

سپس در تابع void loop()  مقادیر محور های شتاب سنج را میخوانیم و محاسبه میکنیم تا تغییرات را متوجه شویم. اگر تغییرات کمتر و بیشتر از حد تعیین شده باشد، آردوینو پیامی را به شماره ای که تعیین میکنید با استفاده از ماژول GSM SIM900 میفرستد.

void loop() 
{
    int value1=analogRead(x);
    int value2=analogRead(y);
    int value3=analogRead(z);

    int xValue=xsample-value1;
    int yValue=ysample-value2;
    int zValue=zsample-value3;
    
    Serial.print("x=");
    Serial.println(xValue);
    Serial.print("y=");
    Serial.println(yValue);
    Serial.print("z=");
    Serial.println(zValue);
    ..... .....
    ........ ...

فیلم عملکرد پروژه

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

دانلود فیلم عملکرد پروژه ردیاب و هشدار تصادف ماشین با آردوینو

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

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

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

محمد رحیمی

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

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

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