برنامه نویسی سیستم های ردیابی
ساخت مسیریاب مکانی با استفاده از SIM800 و آردوینو
معمولا برای جلوگیری از آسیب جدی به برد الکترونیکی دستگاه از فیوز بر روی برد یا فیوز خارجی نیز استفاده میشود تا اگر برق ناگهانی وارد دستگاه شد بتواند با آن مقابله کند و برد آسیب جدی نبیند. در این مقاله قصد داریم اجزا اصلی تشکیل دهنده ردیاب و روش ساخت آن را مورد بررسی قرار دهیم. پس از بررسی شماتیک و اتصالات، نوبت به برقراری ارتباطات می رسد. پس از بررسی قطعات به کار رفته در پروژه، ابتدا به شماتیک و اتصالات می پردازیم. شما فقط روی فروش محصولاتتون تمرکز کنید و ۰ تا ۱۰۰ تولید و مونتاژ برد الکترونیکی خودتون رو به ما بسپارید.
پیامی به آردوینو ارسال میشود و آردوینو مختصات مکان را از ماژول GPS میگیرد و لینک گوگل مپ را به شماره ای که شما تنظیم کرده اید میفرستد. وقتی پیام را دریافت می کنیم، فقط باید روی پیوند کلیک کنیم و به نقشه گوگل هدایت می شویم و سپس می توان مکان دقیق وسیله را مشاهده کرد. ماژول GPS (سیستم موقعیت یاب جهانی) مهمترین جزء تشکیل دهنده ردیاب خودرو همین ماژول است. این ماژول سیگنالهای ارسالی ماهوارههای GPS را دریافت می کند و از آنها برای تعیین موقعیت مکانی دقیق وسایل نقلیه بهره میبرد.پس از دریافت اطلاعات آنها را به سرور ردیابی برای بررس صاحب دستگاه انتقال میدهد. اگر که خودتان قصد راه اندازی یک اپلیکیشن ردیابی خودرو یا مدیریت ناوگان را دارید باید بدانید که این کار پیچیدگیهای خاص خود را دارد و از طرقی دیگر مزایای زیادی را نیز به همراه دارد. عیب اصلی این است که باید دانش نسبتا خوبی به این بازار و عملکرد ردیاب و همچنین برنامه نویسی داشته باشید.
در این روش، ویژگیهای HOG تنها یکبار استخراج میشوند ولی میتوانند به دفعات مختلف زیرنمونهگیری شوند تا پنجره کاملی شکل بگیرد. به عبارت دیگر، در این روش پنجرههای جستجوی مختلفی در تصویر اصلی تشکیل و در نهایت با یکدیگر ترکیب میشوند تا نواحی تشخیص خودرو به خوبی مشخص شوند. از قطعه کد زیر، برای پیدا کردن خودروها با استفاده از روش زیرنمونهگیری هیستوگرام گرادیانهای جهتدار استفاده میشود. یک «توصیفگر ویژگی» (Feature Descriptor)، نمایشی از یک تصویر یا مجموعهای از تصاویر است که از طریق استخراج اطلاعات مفید و دور انداختن اطلاعات غیر اصلی، آن تصویر یا مجموعه تصاویر را سادهسازی میکند. روش هیستوگرام گرادیانهای جهتدار، یک توصیفگر ویژگی است که در بینایی ماشین و پردازش تصویر جهت «تشخیص اشیاء» (Object Detection) استفاده میشود.
در ادامه، بیشتر با وجوه کاربردی طراحی اپلیکیشن رصد و موقعیتیابی و ردیابی آشنا خواهیم شد. سیستم ردیاب فارغ التحصیل آنلاین از یک سایت عمومی و یک سایت مدیریت تشکیل شده است . سایت عمومی سمتی از سیستم است که فارغ التحصیلان می توانند اطلاعات خود را در مورد وضعیت فعلی خود پر کنند. در ادمین سایت ، کاربران برای دسترسی به امکانات و قابلیت های سمت مذکور موظفند با مشخصات معتبر خود وارد سیستم شوند. کاربران ادمین می توانند فارغ التحصیلان BSIT و BSCS را فهرست و مدیریت کنند.
پین های Tx و Rx ماژول GSM به طور مستقیم به پین D2 و D3 آردوینو وصل می شوند. برای ارتباط GSM، در اینجا از کتابخانه سریال استفاده کرده ایم. پین های داده ال سی دی D4 ، D5 ، D6 و D7 به پین شماره 6 ، 7 ، 8 و 9 آردوینو وصل می شوند. پین RS و EN از LCD به پین شماره 4 و 5 آردوینو متصل شده و پین RW مستقیماً به GND وصل شده است. از پتانسیومتر نیز برای تنظیم کنتراست یا روشنایی LCD استفاده می شود.
اگر میخواهید ردیابی مکانی با استفاده از GPS را ببنید لینک را دنبال کنید. GPS مخفف سیستم موقعیت یابی جهانی است و برای تشخیص طول و عرض جغرافیایی هر مکان بر روی زمین ، با زمان دقیق UTC (زمان هماهنگ جهانی) استفاده می شود. این دستگاه برای هر ثانیه مختصات و زمان و تاریخ مختصات را از ماهواره دریافت می کند. توجه داشته باشید که پس از آپلود کدها، ابتدا اتصال پایه GPIO0 را از زمین جدا کرده و سپس ماژول را ریست کنید. در این حالت شما می توانید روال اجرای برنامه را در سریال مانیتور آردوینو مشاهده کنید.
لازم به ذکر هست که ویدیوهای آموزشی دو کاربره هستند و قابلیت مشاهده ویدیو ها در دو سیستم برای کاربران وجود دارد. مدل ماشین بردار پشتیبان با کرنل خطی، توسط تابع LinearSVC در بسته SciKit-Learn پیادهسازی میشود. ذخیره نام، ایمیل و وبسایت من در مرورگر برای زمانی که دوباره دیدگاهی مینویسم. شرکت Ublox شرکتی پیشرو در صنعت ساخت ماژول های GPS می باشد اما برای دریافت اطلاعات GPS می توانیم از ماژول SIM808 تولید شرکت SIMCOM نیز استفاده کنیم. Dialy Expense Tracker System در پایگاه داده PHP و MySQL توسعه یافته است.
ماژول مخابراتی SIM800L، یک ماژول سیم کارتی جهت برقراری تماس تلفنی، ارسال و دریافت پیامک و اتصال به اینترنت است. این ماژول جزو ارزانترین و البته پرکابردترین ماژول مخابراتی به شمار می رود. مهم ترین نکته در راه اندازی این ماژول، بحث تامین تغذیه آن است. وظیفه پیدا کردن مختصات جغرافیایی دستگاه را از طریق ماهواره های GPS (Global positioning system) را بر عهده دارد. برای نمایش محل دستگاه بر روی نقشه کره زمین تنها به دو مولفه عرض و طول جغرافیایی (Latitude and Longitude) نیاز است.
بعلاوه دهها نفر ساعتی که هفتگی برای بالا نگه داشتن وبسایت صرف میکنیم تا شما دوستان عزیز براحتی به آموزشهای رایگان دسترسی داشته باشید. پس با مطالعه، انتشار لینک آموزشها و کامنت گذاشتن زیر نوشتهها ما را در این راه همراهی کنید. روی لینک کلیک کرده و تلفن به صورت خودکار وارد Google maps شده و مکان دریافتی روی گوشی شما با یک پین قرمز رنگ مشخص میشود. لینک بالا هنگامی که باز میشود مانند تصویر زیر ظاهر میشود. درون تابع setup، ارتباط serial monitor و SIM800 را در نرخ 9600 baud آغاز میکنیم و همچنین پین ۱۲ (PWR_KY) را برای فعال کردن ماژول GSM به مدت ۱ ثانیه low میکنیم. سپس از تابعی که در بالا درست کردیم برای ارتباط با ماژول GSM بهره میگیریم.
این LED، به عنوان یک LED وضعیت برای نمایش وضعیت شبکه عمل میکند، هرچند استفاده از آن دلخواه است. به صورت مشابه، از پین BT_ANT میتوان برای اتصال یک آنتن به ماژول استفاده کرد تا کار وصل شدن به شبکه را آسانتر گرداند، که باز هم اختیاری است. ماژول GSM (سیستم جهانی برای ارتباطات سیار) وظیفه انتقال دادههای جمع آوری شده توسط ماژول GPS را به سرور ردیابی برای بررسی کاربران دارد. از شبکه های سلولی یا ماژول GSM برای ارسال داده ها استفاده میشود که این ارسال اطلاعات از طریق سیم کارت داخل دستگاه امکان پذیر است. در این برنامه جهت کاهش توان مصرفی و افزایش مدت زمان فعال بودن دستگاه، واحد مخابراتی ماژول ESP (وای فای) خاموش می شود. در حلقه تکرار برنامه، تابع send_data وظیفه کنترل تماس ورودی و ارسال پیام را دارد.
با کلیک بر روی این لینک، می توانید ماژول شارژر مناسب باتری ها را مشاهده نمایید. با همکاران ما در شرکت مرصا ارائه دهنده خدمات طراحی، تولید و مونتاژ بردهای الکترونیکی تماس بگیرید و ما شما را در انجام پروژه های الکترونیکی یاری خواهیم کرد. مشتاقانه منتظر تماس شما هستیم، تامل نکنید و همین الان از طریق لینک زیر با ما تماس بگیرید. برای ادامه کار باید سیم بندی را به درستی انجام بدیم و قطعات را به یکدیگر متصل کنیم. حال با توجه به تصویر زیر مسیر ارتباطی بین قطعات را فراهم می آوریم.
با کلیک کردن روی لینک میتوانید مکان خودرو را در گوگل مپ مشاهده کنید. برای آموزش های بیشتر و کدهای منبع رایگان بیشتر در این وب سایت کاوش کنید . با انجام مراحل فوق، میتوانید یک سیستم بر اساس بلاکچین برای ردیابی و اثبات اصالت محصولات در زنجیره تامین خود پیادهسازی کنید و به اطلاعات شفاف و قابل اعتماد مربوط به محصولات دسترسی داشته باشید. پس از آن، سرعت محاسبه شده با دو رقم اعشار روی صفحه LCD نمایش داده می شود. اگر اختلاف زمانی نامعتبر باشد، “Invalid Reading” را روی صفحه نمایش چاپ می کند. فرآیند فوق تا زمانی که هر دو سنسور فعال شده باشند تکرار می شود.
چنانچه ابهامی در مطالب گفته شده می بینید و یا اینکه احساس می کنید مباحث گفته شده برای شما گنگ است، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. همچنین اگر ایرادی در کدها، مطالب گفته شده و یا مراحل اجرایی وجود دارد میتوانید از همین طریق اطلاع رسانی کنید. در تصویر فوق کادر جستجوی کتابخانه ها با فلش قرمز رنگ مشخص شده است. با کلیک بر روی گزینه install این کتابخانه را می توانید نصب کنید. برای راه اندازی نمایشگر از کتابخانه u8g2 و برای مود PDU نیز از کتابخانه PDUlib استفاده شده است.
از کد اردوینو برای انجام این کار استفاده میکنیم و لینک را هنگام درخواست از طریق SMS به تلفنمان ارسال میکنیم. مانند همیشه برنامه کامل همراه با ویدئو و جزئیات در انتهای صفحه آمده است، اما در اینجا برنامه را در بخشهای کوچک توضیح خواهیم داد تا آن را بهتر درک کنید. وقتی که پین کد مکان صفر است، (در کشور هند قابل دریافت نیست) ۲۶.۸۴۸۸۸۳۲ عرض و ۷۵.۸۰۲۴۶۰ طول میباشد. بنابراین این مقادیر را از نتایج حاصله جدا کرده و آن را به یک لینک نقشه گوگل اضافه میکنیم تا روی نقشه به این مکان اشاره شود. به طور پیش فرض از پین 0 و 1 آردوینو برای ارتباط سریال استفاده می شود اما با استفاده از کتابخانه SoftwareSerial می توان ارتباط سریال را در سایر پین های دیجیتال آردوینو امکان پذیر کرد. در ادامه از یک مبدل DC-DC Boost Converter Step Up استفاده نمایید و ولتاژ 5 ولت آردوینو را تامین نمایید.
هنگامی که یک جسم حرکت می کند، باید از اولین سنسور IR عبور کند. در حالی که جسم از اولین حسگر IR عبور می کند، اولین سنسور IR به آردوینو سیگنال می دهد تا تایمر را راه اندازی کند. هنگام اندازه گیری سرعت یک جسم متحرک با استفاده از دو حسگر IR، این فرآیند بر اساس محاسبه زمان صرف شده برای حرکت یک جسم متحرک بین آن حسگرهای مادون قرمز است. بعداً می توان سرعت را با تقسیم مسافت طی شده توسط جسم بر زمان صرف شده محاسبه کرد. همچنین توجه داشته باشید که برای تغذیه این مدار به یک آداپتور برق 12 ولت خارجی نیاز دارید.
همچنین تابع smart_delay داده ها را از ماژول GPS دریافت و در بافر مخصوص خود، ذخیره می کند. در دوره برنامه نویسی Embedded Python فراگیران زبان برنامه نویسی پایتون را با رویکرد استفاده در سیستم های نهفته فرا میگیرند. رنکته مهم این است که پس از پایان هر پروژه مدرس آن را بر روی برد iot kit پیاده سازی میکنند و دانشجویان به صورت سخت افزاری نیز نتایج پروژه را مشاهده خواهند کرد . در پایان دوره در صورت انجام پروژه پایانی و کسب امتیاز مورد نظر گواهینامه فنی و حرفه ای نیرا نیز برای شما صادر خواهد شد. تا اینجای کار، سیستم تشخیص و ردیابی خودرو قادر است تصاویر با دقت پیکسلی (64x64) را دریافت و برچسب کلاسی (Cars یا Non-Cars) آنها را پیشبینی کند. برای اینکه بتوان کلیه اشیاء موجود در تصاویر واقعی با دقت پیکسلی (720x1280) را دستهبندی کرد، از مفهومی به نام پنجره لغزان استفاده میشود.
با قرار دادن دو سنسور IR در یک فاصله ثابت از یکدیگر، میتوانیم مدت زمان حرکت جسم بین آنها را ردیابی کنیم. با زمان ثبت شده و فاصله شناخته شده بین آنها، می توانیم سرعت جسم را با استفاده از یک فرمول به طور دقیق محاسبه کنیم. دانشجویان عزیز پس از گذراندن این دوره آموزشی با مفاهیم و ماژول های GPS و GSM آشنا می شوند و در نهایت می توانند یک ردیاب یا GPS خودرو را برنامه نویسی و تولید کنند. پس از فراگیری مراحل فوق به برقراری ارتباط با وبسایت Thingspeak پرداخته و به کمک GPRS اطلاعات محیط را به این وبسایت ارسال کرده و در عمل این ارسال را خواهیم دید. بعد از این مرحله به سراغ ارسال اطلاعات به وبسایت های دلخواه خواهیم پرداخت. به کمک هم یک وبسایت ساده را راه اندازی کرده و اطلاعات را به این وبسایت ارسال میکنیم و در عمل خواهیم دید ارسال به چه صورت انجام گرفته است.
وقتی که دستورات مستقیماً از طریق پورت سریال اجرا میشوند پاسخی مشابه شکل زیر دارند. در زیر بخشهای مختلف مدار را به چند بلوک تقسیم کرده و توضیح میدهیم تا مطمئن گردیم که شما قادر به استفاده و یا ویرایش آنها مطابق نیاز خودتان خواهید بود. برای نتیجه بهتر می توانید از 200 به جای 50 استفاده کنید، یا می توانید با توجه به نیاز خود تنظیم کنید. قبل از ورود به پروژه ، در مورد GPS ، GSM و شتاب سنج صحبت خواهیم کرد. بله چندین هشدار متفاوت بر روی این دستگاه وجود دارد که میتواند از به سرقت رفتن ردیاب جلوگیری کند.
دیگر اتصالات نشان داده شده در مدار بالا اختیاری بوده و تاثیر چندان مهمی بر این پروژه ندارند. برای مقاومت R29 مقدار ۱ کیلواهم و برای مقاومت R29 مقدار ۲.۲ کیلواهم را انتخاب کرده تا به ولتاژ ۴ ولت دست پیدا کنیم. دقت کنید که ماژول SIM800 ولتاژ را بین ۳.۷ ولت تا ۴.۲ ولت مجدداً به دست آورده تا به صورت نرمال کار کند. در اینجا ما برخی مقادیر را دریافت کرده ایم، آن ها را تبدیل به محور x ، محور y و محور z میکنیم و در یک متغیر ذخیره میکنیم. سپس از این مقادیر برای متوجه شدن تغییر هنگام تصادف وسیله نقلیه استفاده میکنیم.
برای این کار، پایه RX مبدل سریال به پایه TX ماژول ESP متصل شده و کابل GND مبدل سریال به پایه GND ماژول ESP وصل گردد. در این حالت می توانید اجرای برنامه را به شکل زیر مشاهده کنید. در این پروژه ما از کتابخانه TingGPS++ جهت دریافت داده از ماژول GPS استفاده می کنیم. برای نصب این کتابخانه در آردوینو، می توان به صورت دستی و خودکار(از مخازن آردوینو) اقدام نمود. ما در اینجا از روش خودکار و با استفاده از نرم افزار آردوینو، به نصب کتابخانه ++TnyGps می پردازیم.
دسترسی به ویدیوهای آموزشی ردیاب خودرو با استفاده از ماژول MC60 به صورت فایل دانلودی مقدور میباشد. دانشجویانی که قصد شرکت در این دوره را دارند حتما باید به زبان برنامه نویسی Embedded C تا سطح پیشرفته مسلط باشند و تمامی واحدهای آن را راه اندازی کرده باشند. در صورتی که از سیستم PlatformIO برای برنامه نویسی استفاده میکنید می توانید از این لینک به آخرین ورژن این پروژه بر روی این سیستم دسترسی پیدا کنید. ردیابی توزیعشده و مانیتورینگ پیشرفته نهتنها باعث بهبود عملکرد سیستمهای میکروسرویسی میشوند، بلکه از طریق شناسایی مشکلات، هزینههای نگهداری را کاهش میدهند. ابزارهایی مانند OpenTelemetry، Prometheus، Jaeger و ELK Stack به توسعهدهندگان کمک میکنند تا دید کاملی نسبت به سیستم داشته باشند و در مواقع بحرانی، بهسرعت مشکل را برطرف کنند.
برنامه نویسی شبکه