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

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

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

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

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

فیلم زیر به شما در درک نحوه کار این پروژه کمک میکند.

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

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

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

جهت کسب اطلاعات بیشتر، مقاله GPS چیست را بخوانید.

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

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

فرمت NMEA

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

همچنین ساخت ردیاب GPS با برد آردوینو و LoRa را مشاهده کنید.

آموزش فرمت 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 در اندازه ای کوچک است.

دستورات 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 : این پین برای حساسیت سنسور استفاده میشود.

همچنین پروژه کنترل بازوی رباتیک با حرکت دست و آردوینو را مشاهده کنید.

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

اتصالات مدار پروژه سیستم هشدار تصادف وسیله نقلیه ساده است. در اینجا پین 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

برنامه نویسی پروژه هشدار تصادف SMS با آردوینو

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

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

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

#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 میگیرد و لینک گوگل مپ را به شماره ای که شما تنظیم کرده اید میفرستد. وقتی پیام را دریافت می کنیم، فقط باید روی پیوند کلیک کنیم و به نقشه گوگل هدایت می شویم و سپس می توان مکان دقیق وسیله را مشاهده کرد.

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

4.4 (7 نفر)

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

محمد رحیمی

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

5 نظر

  1. سلام وقتتون بخیر من میخواهم این پروژه رو انجام بدم ولی متاسفانه برد gps sim28ml رو پیدا نکردم تو هیچ سایتی که بخرمش آیا میشه به جای این ماژول از یک ماژول ترکیبی sim900 gps/gprs استفاده کنیم؟
    و اگه اینکارو کنیم توی کد نویسی چه تغییری باید بدیم

    1. سلام عزیز
      نیازمند تغییرات خیلی زیادی در کد هست یعنی کلا میتونید یک پروژه دیگر در نظر بگیرید

  2. با سلام. چرا در این پروژه برای GPS از ماژول جدا استفاده شده؟ در صورتی که خود SIM900 این قابلیت رو داره؟

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

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