PDA

View Full Version : نوشتن برنامه تلفیقی GPS , GPRS , HARDware ؟



prince0fpersia
چهارشنبه 15 دی 1389, 08:55 صبح
سلام به همگی


قبل از هر چیز بگم من مبتدی ام ...پس لطفا خرده نگیرید از سوالام

من چند وقت پیش یک سیستمی رو دیدم که به صورت دزدگیر برای خودرو بود

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

بعد نشون میده خودرو الان کجای نقشه هست

ضمنا یک قابلیت دیگه هم داره که سخت افزاری میشه و میتونه با ارسال دستوری از طریق سایت ، خودرو رو خاموش کنه


میخواستم منو راهنمایی کنید که اگر بخوام همچین برنامه ای رو بنویسم به چه چیزهایی نیاز دارم؟ (مخصوصا سوال من این هست که چطور میشه سایتی طراحی کرد که بتونه روی نقشه دستگاه های جی-پی-اس متعدد رو که من برای سیستم تعریف میکنم نشون بده و حتی من بتونم از طریق سایت دستوراتی رو برای این جی-پی-اس ها (که مدارات جانبی دیگه ای هم برای کارهای دیگه دارند) بفرستم و اونها دستوراتی که من بهشون میدم رو اجرا کنن؟)



و در آخر سر اگر بخوام کل این پروژه رو به صورت هوش مصنوعی پیاده کنم چطوری میشه؟ یعنی به جای اینکه من از طریق سایت دستورات رو بفرستم خود سایت با توجه به برنامه ریزی قبلی که شده دستورات رو اتوماتیک (و به صورت جداگانه برای هر کدوم از دستگاه ها) بفرسته


:لبخند:



ممنون که راهنمایی میکنید .... اجرکم عندالله

Mohsen6558
جمعه 17 دی 1389, 14:01 عصر
دوست عزیز شما نیازمند همچین پروژه ای هستین فکر کنم:
http://www.mohsen6558.com/gps

این پروژه رو من نوشتم و الان در حال استفاده هست
اینم مشخصه های ارتباطی بنده
http://www.mohsen6558.com/visit.jpg

Mehran.GH
شنبه 18 دی 1389, 18:10 عصر
اگر بخوام همچین برنامه ای رو بنویسم به چه چیزهایی نیاز دارم؟


برای انجام این کار یک GPS نیاز داری که موقعیت را پیدا کند , یک مادول GPRS نیاز داری که مختصات را به سرور بفرستد (یا یک گوشی موبایل قدیمی که دستورات AT را پشتبانی کند ) یک میکرو کنترلر کوچک لازم داری که از طریق یک پورت سریال مختصات را از GPS بخواند و از طریق پورت سریال دوم مختصات را از طریق GPRS به سرور بفرستد



مخصوصا سوال من این هست که چطور میشه سایتی طراحی کرد که بتونه روی نقشه دستگاه های جی-پی-اس متعدد رو که من برای سیستم تعریف میکنم نشون بده و حتی من بتونم از طریق سایت دستوراتی رو برای این جی-پی-اس ها (که مدارات جانبی دیگه ای هم برای کارهای دیگه دارند) بفرستم و اونها دستوراتی که من بهشون میدم رو اجرا کنن؟


ارتباط GPRS با سرور از طریق روش برنامه نویسی سوکت انجام میشود و نیاز داری در سمت سرور IP VALID داشته باشی یعنی شرکت خدمات دهنده موبایل که GPRS را از آنها می گیری باید یک IP VALID برای سمت سرور بهت بدهد.

هر ایستگاه متحرک از طریق یک IPو سوکت به سرور متصل می شود , مختصات را مثلا هر یک دقیقه به سرور می فرستد (در دستورات AT گوشی موبایل یا مادول GPRS میتوانی این را مطالعه کنی و کار مشکلی نیست ) و در سمت سرور هم که با برنامه نویسی سوکت آن اطلاعات را که شامل مختصات و .... بعلاوه یک ID مربوط به هر ایستگاه است را دریافت می کند و در یک بانک اطلاعاتی ذخیره می کند.
زبان برنامه نویسی در سمت میکرو همان c خودمون ! و در سمت سرور هم هر زبان اسکریپتی که برای انتقال داده از طریق سوکت بلدی یا حتی cgi


چون ممکن است همزمان بخواهند چند ایستگاه مختصات بفرستند راحترین راه برای یک پروژه آموزشی باز کردن سوکت در سمت سرور ,خواندن پاکت از یک ایستگاه, بستن سوکت و مجددا تکرار این چرخه هر یک دقیقه مثلا

برای نمایش گرافیکی اطلاعات هر ایستگاه در یک نرم افزار هم استفاده از API هایGOOGLE EARTH سریعترین روش است یا نوشتن یکبرنامه در #c که از یک طرف اطلاعات را از بانک بخواند و از طرف دیگر با API گوگل ارتباط برقرار کند و مختصات را در نقشه نشان دهد (در صفحه مربوط به GOOGLE EARTH روش و مثال فراوان است) و اگر هم نخواهی از امکانات گوگل استفاده کنی و نرم افزار را خودت تهیه کنی (در بخش #c فروم در این باره صحبت شده بگردی مطلب بیشتری پیدا می کنی )

برای نمایش گرافیکی اطلاعات در یک سایت به صورت Online :
مثلا شبیه این سایت که پرواز هواپیماها را در اروپا نشان می دهد http://www.radarvirtuel.com/

این بخش یکم باید راجع بهش فکر کرد چون در اصل نیاز به یک web-based GIS Engine داری

در راه حل قبلی یعنی نمایش اطلاعات در یک PC مثلا آن برنامه #c اطلاعات به جایی فرستاده نمی شد اما در حالت نمایش در اینترنت باید اطلاعات را به صورت چرخشی برای سایت خاص خودت آماده شود و مثلا به روش FTP به سرور ارسال شود یا از طریق GET از طرف سرور درخواست شود (این بخش را جواب قطعی ندارم و باید بیشتر بررسی کرد که چه گزینه هایی مقدور است)



و در آخر سر اگر بخوام کل این پروژه رو به صورت هوش مصنوعی پیاده کنم چطوری میشه؟ یعنی به جای اینکه من از طریق سایت دستورات رو بفرستم خود سایت با توجه به برنامه ریزی قبلی که شده دستورات رو اتوماتیک (و به صورت جداگانه برای هر کدوم از دستگاه ها) بفرسته


ارسال اتوماتیک دستورات که هوش معمولی کامپیوتری است و هوش مصنوعی یک مفهوم دیگری دارد , مشکل برای ارسال اطلاعات به ایستگاه ها یا همان مثالی که خودت زدی خاموش کردن اتومبیل مثلا نیاز داری در سمت ایستگاه IP Valid داشته باشی یعنی در شبکه موبایل GPRS که ایستگاه ها به آن متصل هستند شرکت خدمات دهنده باید این امکان را در اختیار مشتری بگذارد که معمولا به دلایل امنیتی بعضی کشورها این امکان را نمی دهند (اگر بعدها به این بخش رسیدی باز هم می توان بیشتر صحبت کرد)


استفاده از این روش برای کاربردی چون دزدگیر خودرو یا "هر کاربردی که صحت عملکرد کل سیستم وابسته به برقراری دایمی ارتباط ایستگاه ها به شبکه است" مشکلات زیر را دارد :
- شبکه GPRS نقاط کور دارد و همه جا را پوشش نمی دهد
- به راحتی میتوان با استفاده از GPS and GSM jammer (http://www.navigadget.com/index.php/2007/01/29/gps-and-gsm-jammer)
کل سیستم را کور کرد به طوری که نه مختصات را از ماهواره بگیرد و نه ارتباط با سرور مقدور باشد !

حتی مثلا کاربردهایی که فردی بخواهد اتومبیل ها یا رانندگانش را تحت کنترل داشته باشد هم بایک jammer می توان سیستم را در هر نقطه دلخواه کور کرد بنابراین این روش ها را باید بیشتر برای بهینه کردن سیستم دید نه کنترل افراد یا چنین تعاریفی!


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

پیشنهاد می کنم روی روشی کار کنی که امکان انتقال صدا هم از طریق الگوریتم های فشرده سازی و یا هر روش دیگری که خودت کشف می کنی از طریق شبکه GPRS که پهنای باند کمی دارد قابل پیاده سازی باشد یعنی چیزی شبیه همان VOICE Over IP در پهنای باند کم , چون در UTMS این کار قابل انجام است اما از نظر هزینه برای پروژه هایی که چندین ایستگاه متحرک به صورت Online به سرور مرکزی متصل هستند ودیتا و صدا تبادل می شود از نظر اقتصادی به صرفه نیست.

prince0fpersia
یک شنبه 19 دی 1389, 22:15 عصر
ضمن تشکر از راهنمایی های شما دوستان عزیز و مخصوصا آقا مهران که سعی کردند از همه جوانب به موضوع نگاه کنن و پیشنهاداتی ارایه بدن


راستش دفعه قبل کلی نوشته بودم درست قبل از اینکه دکمه ارسال رو بزنم صفحه مرورگرم خود به خود بسته شد و همه اش به باد رفت ....الانم از صبح پای سیستمم چشمام سو نداره انگشت درد هم گرفتم بس که نوشتم (جاهای دیگه رو میگم)


خلاصه اینو نوشته بودم که با توجه به اون قسمت حرف شما که فرمودین اطلاعات هر دقیقه به سرور فرستاده میشه ، میشه اینطور نتیجه گرفت که هنوز قدرت سخت افزار ها به جایی نرسیده که ارسال آنی اطلاعات اونم با حجم گسترده(یعنی خیلی اطلاعات دیگه به غیر از مکان اون شی) و همچنین به تعداد خیلی بالا شی متحرک (میلیونی) رو پشتیبانی کنه...درسته؟


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

یا مثلا بیایم یک سری خیابون و بزرگراه رو واسشون حد سرعت تعیین کنیم توی برنامه و از اونطرف هم روی خودرو ها علاوه بر گیرنده یه کروز کنترل(یا یه همچین چیزی) بذاریم که با گیرنده هم در ارتباط باشه و نذاره خودرو ها از اون حد مجاز سرعت بتونن بیشتر برن توی اون خیابون یا بزرگراه


و خیلی خیلی خیلی قابلیت های مختلف که میتونه به این سیستم اضافه بشه


اما الان با توجه به توضیحات شما یه جورایی به این نتیجه رسیدم که انگار غیر ممکنه(حداقل امروز با این سخت افزارها؟!)


بازم تشکر میکنم از راهنمایی های همه دوستان

Mohsen6558
یک شنبه 19 دی 1389, 23:08 عصر
دوست عزیز اصلا غیر ممکن نیست
دستگاه GPS شما دو تا آنتن خواهد داشت GSM,GPRS
این دستگاه GPS با GPRS هم م تونه اطلاعات بفرسته هم دریافت کنه
خب از طریق آنتن GPS شما می فهمید که تو موقعیت فلان و با سرعت فلان هستید
خب یه سیگنال به یه خروجی می دید این خروجی مثلا وصل هست به یه آژیر و آژیر شروع به کار می کنه یا وصل هست به دریچه ی بنزین و بنزین رو کم میکنه و سرعت کم می شه
هیچ چی غیر ممکن نیست

Mehran.GH
دوشنبه 20 دی 1389, 00:21 صبح
خلاصه اینو نوشته بودم که با توجه به اون قسمت حرف شما که فرمودین اطلاعات هر دقیقه به سرور فرستاده میشه ، میشه اینطور نتیجه گرفت که هنوز قدرت سخت افزار ها به جایی نرسیده که ارسال آنی اطلاعات اونم با حجم گسترده(یعنی خیلی اطلاعات دیگه به غیر از مکان اون شی) و همچنین به تعداد خیلی بالا شی متحرک (میلیونی) رو پشتیبانی کنه...درسته؟


یک دقیقه را مثال زدم که در برنامه می توانی این طور تعریف کنی. روش عملکرد به اینصورت است که Client یک درخواست به سمت سرور ارسال می کند و سرور پاسخ می دهد و این درخواست می تواند مثلا هر یک دقیقه یک بار باشد یا هر زمان دیگر

ببین یک راه حل برای اینکه توانایی پاسخ گویی سرور به ایستگاه های مختلف افزایش یابد استفاده از روش Multi-Threaded است که در این روش Client درخواست اتصال TCP را ارسال می کند و در سمت سرور یک Thread برای این Client تعریف می شود و در سرورهای قوی می توان Request-Handling-Strategie تعریف کرد که شامل Thread pro Connection ,Thread per Requast , Thread Polling ,.... بشود

به زبان ساده ایستگاه درخواست می کند که اطلاعاتش را بفرستد و سرور هم می گوید بفرست آماده دریافت هستم و در مکانیسم Multi-Threaded می تواند همزمان به چند ایستگاه بگوید بفرستید و هر کدام که تمام شد ارتباط را می بندد تا یک ایستگاه دیگر امکان برقراری ارتباط داشته باشد.

حالا اگر نیاز داشته باشی به صورت آنی و حجم زیاد اطلاعات بفرستی باید روشی پیداکنی که در طرف ایستگاه امکان Multi-Threaded برای درخواست پیاده سازی شود , که آسان نیست.

یک مثال میزنم : اگر دقت کنی بعضی وقتها به یک سایت که مراجعه می کنی به علت ترافیک بالا سایت صفحه سایت را نمیتوانی ببینی و بعدها باید مراجعه کنی (معمولا پیغام Bad Request ) و یکی از روشهای از کار انداختن یک سرور اینترنتی هم که به آن حمله می کنند همین ارسال درخواست های زیاد همزمان است.

این مشکل را در سایتهای بزرگ مثل گوگل و .... نمی بینی. علت : استفاده از سرورهای قوی و Chain
به هم متصل هستند و بار اضافی یکی را دیگری پاسخ میدهد و اینکه با توجه به نیازی که در پاسخگویی دارند مرتب سرورها را بهینه می کنند و افزایش می دهند.

بنابراین این نتیجه گیری که خودت کردی درست است , می توان سیستم را توسعه داد که توانایی بیشتری داشته باشد اما یک جایی دیگر حد پایانی است (با توجه به تکنولوژی موجود در همان زمان) مگر اینکه شرکتی مثل گوگل باشد که از این خدمات پول کلان در می آورد و مرتب هم سرمایه گذاری می کند.

به هر حال اگر محدودیت سخت افزاری وجود نداشت هیچگاه لازم نبود CPU چند هسته ای تولید شود , هیچگاه لازم نبود برای ارتباط شبکه موبایل بعد از GPRS مثلا UMTS بیاید و یا HSDPA و بقیه روشهایی که در آینده خواهد آمد.



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

یا مثلا بیایم یک سری خیابون و بزرگراه رو واسشون حد سرعت تعیین کنیم توی برنامه و از اونطرف هم روی خودرو ها علاوه بر گیرنده یه کروز کنترل(یا یه همچین چیزی) بذاریم که با گیرنده هم در ارتباط باشه و نذاره خودرو ها از اون حد مجاز سرعت بتونن بیشتر برن توی اون خیابون یا بزرگراه


این ایده خیلی جالبیه و عالیه که دید مهندسی خوبی داری و راه حل تکنولوژی برای مشکلات موجود بررسی می کنی.

اگر دولتی بخواهد این پروژه را انجام دهد باید یکسری مشکلات مختلف را قبلش حل کرده باشد:

- بحث زیر ساخت مخابراتی باید قوی باشد و این سرمایه گذاری زیادی می خواهد
- سازمانهای تصمیم گیرنده باید همکاری کنند مثلا نیروی انتظامی که از راه خلاف کردن رانندگان درآمد دارد قطعا به نفعش نیست که چنین سیستمی خودکار سرعت ماشین را کاهش دهد و یا به هر نحوی از مکانیسم کنترل خیابانها کنار زده شود.
- پروژه باید صد در صد درست کار کند , در صورتی که حتی یک بار بر اثر باگ نرم افزار یا هر چی تغییر سرعت باعث تصادف یا کشته شدن فردی شود پرونده آن پروژه برای همیشه بسته است. راننده می گوید من نبودم و ادمین سیستم می گوید خود راننده بود!!
-بحث امنیتی دارد که در صورت بروز خرابکاری می توان کل خودروها را از یک مرکز متوقف کرد و در صورت نیاز خودروهای انتظامی یا امداد امکان وارد شدن به محدوده شهری را ندارند
-بحث استفاده از Jammer هم که هست یعنی هر راننده ای که بخواهد وارد محدوده شود jammer را روشن می کند و دیگر در محدوده دیده نمی شود!

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

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

بنابراین از دید مشتری که نگاه کنی پیاده کردن چنین سیستمی رقبای دیگری یا در حقیقت راه حلهای دیگری دارد که مشکل را ممکن است حل کند.