ساخت ردیاب GPS ماشین با آردوینو (+هشدار تصادف SMS)
محتویات
سلام. ساخت ردیاب GPS ماشین با آردوینو + هشدار SMS با Sim900 را آماده کردیم.
راه اندازی gps ماشین با آردوینو
در این پروژه آردوینو ، ما قصد داریم با استفاده از GPS ، GSM و شتاب سنج، یک سیستم هشدار تصادف وسیله نقلیه بسازیم. شتاب سنج تغییر ناگهانی محورهای وسیله نقلیه را تشخیص می دهد و ماژول GSM پیام هشدار و مکان تصادف را به تلفن همراه شما ارسال می کند. محل حادثه به صورت لینک Google Map ارسال می شود که از طول و عرض جغرافیایی ماژول GPS گرفته شده است. پیام همچنین حاوی سرعت خودرو است. این پروژه Arduino همچنین میتواند به عنوان یک سیستم ردیابی و خیلی موارد دیگر با ایجاد چند تغییر کوچک در سخت افزار و نرم افزار استفاده شود.
فیلم زیر به شما در درک نحوه کار این پروژه کمک میکند.
قبل از ورود به پروژه ، در مورد GPS ، GSM و شتاب سنج صحبت خواهیم کرد.
ماژول GPS چیست و چگونه کار میکند ؟
GPS مخفف سیستم موقعیت یابی جهانی است و برای تشخیص طول و عرض جغرافیایی هر مکان بر روی زمین ، با زمان دقیق UTC (زمان هماهنگ جهانی) استفاده می شود. ماژول GPS برای ردیابی محل حادثه در پروژه ما استفاده می شود. این دستگاه برای هر ثانیه مختصات و زمان و تاریخ مختصات را از ماهواره دریافت می کند.
جهت کسب اطلاعات بیشتر، مقاله GPS چیست را بخوانید.
ماژول GPS داده های مربوط به موقعیت را در به صورت لحظه ای می فرستد، و داده های زیادی را با فرمت NMEA می فرستد (تصویر زیر). فرمت NMEA شامل چند جمله است که ما در آن فقط به یک جمله نیاز داریم. این جمله از $ GPGGA شروع می شود و حاوی مختصات ، زمان و سایر اطلاعات مفید است.
می توانیم با شمارش کاما (,) در رشته ، مختصات را از رشته $ 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 استفاده کرده ایم. این ماژول دارای قیمت خوب و عملکرد بسیار خوبی است و به فراوانی در دسترس است. توضیحات پین های این سنسور را در زیر آورده ایم :
توضیحات پین های شتاب سنج :
- 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 آردوینو آنالوگ به دیجیتال متصل می شوند.
قطعات مورد نیاز
- برد آردوینو Uno
- ماژول GSM SIM900A
- ماژول GPS SIM28ML
- شتاب سنج ADXL335
- ال سی دی کاراکتری 16*2 (اختیاری)
- پتانسیومتر 10 کیلو اهم
- منبع تغذیه 12 ولت 1 آمپر
این پروژه چطور کار میکند ؟
در این پروژه از آردوینو برای کنترل کل مراحل با یک گیرنده GPS و ماژول GSM استفاده می شود. گیرنده GPS برای تشخیص مختصات وسیله نقلیه استفاده می شود، از ماژول GSM برای ارسال پیام هشدار به همراه مختصات و پیوند به نقشه گوگل استفاده می شود. شتاب سنج یعنی ADXL335 برای تشخیص تصادف یا تغییر ناگهانی در هر محور استفاده می شود. و یک ال سی دی کاراکتری 16*2 (اختیاری) نیز برای نمایش پیام های وضعیت یا مختصات استفاده می شود. ما از ماژول GPS SIM28ML و GSM ماژول SIM900A استفاده کرده ایم.
برنامه نویسی پروژه هشدار تصادف 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 میگیرد و لینک گوگل مپ را به شماره ای که شما تنظیم کرده اید میفرستد. وقتی پیام را دریافت می کنیم، فقط باید روی پیوند کلیک کنیم و به نقشه گوگل هدایت می شویم و سپس می توان مکان دقیق وسیله را مشاهده کرد.
موارد موجود در فایل : سورس کامل ، شماتیک پروژه
برای دانلود فایل ها باید حساب کاربری داشته باشید ثبت نام / ورود
سلام آیا میشه از سیم 800Lاستفاده کرد .
سلام عزیز
بله
سلام وقتتون بخیر من میخواهم این پروژه رو انجام بدم ولی متاسفانه برد gps sim28ml رو پیدا نکردم تو هیچ سایتی که بخرمش آیا میشه به جای این ماژول از یک ماژول ترکیبی sim900 gps/gprs استفاده کنیم؟
و اگه اینکارو کنیم توی کد نویسی چه تغییری باید بدیم
سلام عزیز
نیازمند تغییرات خیلی زیادی در کد هست یعنی کلا میتونید یک پروژه دیگر در نظر بگیرید
با سلام. چرا در این پروژه برای GPS از ماژول جدا استفاده شده؟ در صورتی که خود SIM900 این قابلیت رو داره؟