آردوینو Arduino Uno اینترنت اشیا IOT رزبری پای سیم کارت GSM - GPRS گنو/لینوکس

ارتباط بین رزبری پای و آردوینو از طریق اینترنت سیم کارت با ردیابی مسیر حرکت

نوشته شده توسط معین صابری

برد رزبری پای و  آردویینو، دو برد محبوب، کارا و پرکاربرد در پروژه ها به حساب می آیند. برد آردویینو با توان پردازشی کمتر نسبت به رزبری، بسیار مناسب ارتباط با سنسور ها، رله ها، ماژول های مخابراتی و… است. از طرفی دیگر، برد رزبری پای، با توجه به توان پردازشی بالا، انتخاب مناسبی برای پردازش های سنگین خواهد بود. وجود پردازنده قدرتمند، تعداد زیاد GPIO و سیستم عامل لینوکس، سبب انتخاب این برد برای پروژه های حجیم خواهد شد.

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

 


معرفی برد آردوینو


برد آردویینو، یک برد توسعه میکروکنترلر AVR محسوب می شود. هسته پردازشی این برد، ATMEGA32P بوده و پایه های دیجیتال و آنالوگ آن  به کمک پین هدر ها قابل دسترسی است. از طرفی دیگر وجود کریستال برای منبع کلاک، خازن های فیلترینگ نویز تغذیه و رگولاتور ۳٫۳ ولت، مجموعه کاملی از امکانات را در اختیار کاربر قرار می دهد. از طرف دیگر، نحوه آپلود برنامه بر روی این برد به سادگی و از طریق کابل USB صورت می پذیرد. همچنین این برد دارای جک آداپتور است که ولتاژ بین ۷ الی ۱۲ را به عنوان ورودی می پذیرد.

سومین ویرایش از نسخه میکروکنترلر-دیجی اسپارک

تقریبا میتوان گفت که هیچ سنسوری نیست که نتوان آن را با آردویینو راه اندازی کرد. وجود کتابخانه های قدرتمند برای راه اندازی سنسورها، زمان راه اندازی و تولید خروجی را به حداقل رسانده و ذهن طراح را تنها معطوف به الگوریتم اصلی پروژه خواهد نمود. با توجه به تغذیه اغلب سنسنورها که در بازه ۳٫۳ الی ۵ قرار دارند، این برد با توجه به رگولانور ۵ و ۳٫۳ خود می تواند به سادگی تغذیه سنسورها را تامین نماید.

 


معرفی برد رزبری پای


برد رزبری پای، یک کامپیوتر تک بردی با توان پردازشی بسیار بالاست. این برد از پردازنده دو هسته ای با فرکانس ۱٫۴ گیگاهرتز بهره می برد. در کنار حافظه رم، وای فای و بلوتوث، این برد انتخاب مناسبی برای پردازش های سنگین خواهد بود. از طرفی دیگر، به کمک سیستم عامل قدرتمند لینوکس، به هزاران ابزار نرم افزاری متن باز دسترسی خواهیم داشت. در کنار این موارد، وجود تعداد مناسبی GPIO، به مزایای این برد می افزاید.

معرفی برد رزبری پای Raspberry pi 3 A+ digispark

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

 


معرفی ماژول سیم کارت SIM808


ماژول سیم کارت SIM808 یک ماژول مخابراتی سیم کارتی است. کافیست یک سیم کارت درون این ماژول قرار دهید، سپس می توانید همانند یک تلفن همراه با آن به برقراری ارتباط بپردازید. این ماژول دارای رابط سریال UART است که فرامین ارسال و دریافت پیامک، اتصال به اینترنت، برقرارری تماس تلفنی و… را از همین طریق دریافت می نماید. از طرفی، به لطف تعبیه GPS درون این ماژول، موقعیت یابی، تعیین سرعت، ارتفاع و… به سادگی امکان پذیر است. به طور خلاصه تر، امکانات این ماژول قابلیت کار در باند فرکانسی ۸۵۰/۹۰۰/۱۸۰۰/۱۹۰۰ ، قابلیت ارسال و دریافت پیامک، قابلیت برقراری تماس صوتی دو طرفه، قابلیت اتصال به اینترنت و پشتیبانی از پروتکل ها HTTP،FTP،SMTP و… قابلیت مکان یابی به کمک GPS و تعیین سرعت، ارتفاع و… با توجه به قابلیت های این ماژول، می توان آن را به عنوان یک انتخاب مناسب برای پروژه ها اینترنت اشیا دانست. قابلیت اتصال این ماژول به اینترنت، پروژه های IOT را بی نیاز از مودم های جانبی می نماید. همچنین با توجه به رابط سریال UART میتوان به سادگی این ماژول را به آردویینو متصل نمود. به عنوان نمونه،در این آموزش، نحوه اتصال برد آردویینو به اینترنت و ارسال موقعیت به سرور به طور کامل بحث شده است. از دیگر ویژگی های این آموزش می توان به قابلیت کنترل اینترنی رله متصل به آردویینو به کمک اینترنت ماژول SIM808، اشاره نمود.

کنترل کلیه وسایل توسط مدار SMS Control و ماژول سیم کارت SIM808-دیجی اسپارک (2)

 


شیلد سیم کارت SIM800C رزبری پای


همانطور که در قسمت قبلی بیان شد، ماژول های سیم کارتی نقش بسیار مهمی در هوشمند سازی و ارتباط از راه دور فراهم می آورند. از دیگر ماژول های سیم کارتی پرکاربرد در زمینه هوشمند سازی، می توان به ماژول SIM800C اشاره نمود. این ماژول همانند ماژول SIM808 قابلیت برقراری تماس تلفنی، پیامک، اینترنت را برای کاربر فراهم می آورد. وجود رابط سریال UART، همانند ماژول sim808 کار را با این ماژول بسیار راحت می سازد. این ماژول دارای فرامینی از پیش تعیین شده به نام AT-COMMAND است که با ارسال آن ها به ماژول، می توان قابلیت های آن را کنترل نمود.

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

شیلد سیم کارت Sim800C برد رزبری پای - دیجی اسپارک

 


ارتباط ریموت بین رزبری و آردوینو


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

آموزش ترسیم نمودار پارامترهای مختلف در برد رزبری پای

آموزش طراحی سرور مخصوص اتصال دیوایس های اینترنت اشیا

آموزش تبدیل ماژول SIM800C به مودم سیم کارتی مخصوص رزبری پای

آموزش کنترل وسایل برقی با اینترنت ماژول SIM808 و آردوینو با قابلیت ردیابی موقعیت آردویینو

 


شماتیک و اتصالات بخش آردوینو


در این قسمت به نحوه اتصالات و سیم کشی برد آردویینو با ماژول SIM808 می پردازیم. چنانچه که پیشتر بیان شد، در این آموزش قصد داریم تا ضمن برقراری ارتباط ریموت بین رزبری پای و آردویینو، مسیر حرکت آردویینو را ردیابی و ترسیم نماییم.

اتصالات ماژول سیم کارت Sim808 به برد آردوینو - دیجی اسپارک

اتصالات مدار فوق را به شرح زیر، دنبال نمایید.

پایه TX به پایه ۱۰ آردویینو

پایه Rx با تقسیم مقاومتی(هر مقاومت یک کیلو اهم) به پایه ۱۱ آردویینو

پایه V ماژول به ۵ ولت

پایه GND ماژول علاوه بر تغذیه به پایه GND آردویینو

توجه: در این پروژه، ما تغذیه آردویینو را از کابل تامین نموده ایم، همچنین، تغذیه ماژول سیم کارت به صورت جداگانه، تامین شده است.

 


تغذیه ماژول SIM808


در این آموزش ما از این ماژول برای تعیین موقعیت و ارسال داده به سرور استفاده کرده ایم. این ماژول برای تغذیه، ولتاژ ۵ ولت را می پذیرد. این ولتاژ میبایست با یک منبع تغذیه ۲ آمپری تامین گردد. در نظر داشته باشید که این ولتاژ به هیچ عنوان از ۵ ولت آردویینو، به دلیل جریان ضعیف آن، قابل تامین نیست. چنانچه شما آداپتوری با ولتاژ بالاتر نسبت به ولت دارید، می توانید به کمک ماژول کاهنده ولتاژ LM2596، ولتاژ را به ۵ ولت برسانید.

ماژول رگلاتور کاهنده LM2596 - دیجی اسپارک

 


برنامه ارتباط اینترنتی آردوینو


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

 

محدودیت در دسترسی کامل به این مجموعه آموزش

 

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

 


برنامه ارتباط اینترنتی رزبری پای


در این قسمت به بررسی کدهای بخش رزبری پای می پردازیم. در قسمت پیشین، برد آردویینو اطلاعات خود شامل طول، عرض و ارتفاع را به سرور ارسال می نماید. برد رزبری پای هم ضمن اتصال به اینترنت، داده ها را دانلود کرده و در فایلی به نام gps.txt ذخیره می نماید. در ادامه، به کمک نرم افزار gnuplot، مسیر حرکت را به صورت سه بعدی ترسیم خواهیم نمود. برای اجرای این کدها، ابتدا در محیط ترمینال، فایلی با نام دلخواه به کمک نرم افزار nano باز نمایید. ما در اینجا نام remote را انتخاب می نماییم. این فایل را با دستور زیر باز نمایید.

nano remote

با بازگشایی فایل، عبارت زیر را در آن کپی نمایید. در ادامه، به جای example.com، نام هاست خود را قرار دهید.

 

محدودیت در دسترسی کامل به این مجموعه آموزش

 

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

 


اجرا و تست پروژه


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

مرحله یک: دریافت داده های GPS شامل طول، عرض و ارتفاع توسط آردویینو

مرحله دو: اتصال آردویینو به اینترنت از طریق قابلیت GPRS ماژول SIM808

مرحله سه: اتصال رزبری به اینترنت GPRS از طریق شیلد ماژول SIM800C

مرحله چهار: دانلود اطلاعات طول، عرض و ارتفاع، ارسال شده توسط آردویینو

مرحله پنج: ترسیم نمودار سه بعدی مسیر حرکت آردویینو

پروژه اینترنت آردوینو با ماژول سیم کارت - دیجی اسپارک

 

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

./remote

پس از اجرای دستور فوق، برنامه اجرا شده و داده های دریافتی از سرور، درون فایل gps.txt ذخیره خواهند شد. این داده ها شامل طول، عرض و ارتفاع بوده که از ماهواره های GPS دریافت شده اند. به کمک نرم افزار gnuplot، این داده ها را ترسیم می نماییم. برای ترسیم داده ها در حالت سه بعدی، ابتدا می بایست وارد نرم افزار gnuplot شویم. بنابراین، ابتدا دستور زیر را در ترمینال وارد نمایید.

gnuplot

با تایپ دستور فوق در ترمینال، وارد محیط نرم افزار می شویم. در این نرم افزار، دستورات زیر را تایپ نمایید تا مقدمات ترسیم، صورت پذیرد.

setdgrid3d 30,30
set hidden3d
plot 'gps.txt' using 1:2:3 with lines

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

رسم نمودار سه بعدی تشخیص موقعیت جغرافیایی - دیجی اسپارک

 


کاربرد ترسیم نمودار مسیر حرکت GPS


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

نمودار مسیر حرکت GPS در رزبری پای - دیجی اسپارک

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

 


تحلیل کدهای بخش آردویینو


کدهای این قسمت از پروژه دقیقا مشابه پروژه کنترل وسایل برقی با اینترنت GPRS ماژول SIM808 است. حتی این کدها مشابهت زیادی با آموزش کنترل اینترنتی موتور به کمک GPRS ماژول SIM808 دارند. بنابراین توصیه می شود که این آموزش ها را نیز، مورد مطالعه قرار دهید. مشابه این دو آموزش، اجرای این پروژه بر روی دوش چهارتابع زیر قرار می گیرد.

تحلیل توابع و AT Command ماژول سیم کارت SIM808 برد آردوینو - دیجی اسپارک

در رابطه با تابع run_command در نظر داشته باشید که این تابع جهت اجرای فرمان قطع/وصل رله به کار می رود. شما می توانید از طریق برد رزبری پای، به رله متصل به برد آردویینو، فرمان داده و آن را کنترل نمایید. این مورد در این آموزش لحاظ نشده است، اما امکان آن در سورس کد آردویینو فراهم است. به منظور ارسال فرمان قطع و یا وصل رله متصل به آردویینو از طریق رزبری پای، مطالعه این آموزش پیشنهاد می گردد.

 


تحلیل کدهای بخش رزبری پای


در این قسمت به بررسی کدهای قسمت رزبری پای می پردازیم. در ابتدا اسکریپت remote با اجرای خود، داده ها را از سرور دانلود و در فایلی به نام gps.txt ذخیره می نماید. این عمل به طور دائم تکرار شده و داده های طول، عرض و ارتفاع در فایل ذخیره می شوند. البته به کمک دستور زیر، ابتدا اینترنت GPRS شیلد ماژول SIM800C فعال می شود.

sudo pon sim800c

برای اتصال به سرور و خواندن داده ها، مطابق آموزش آپلود عکس از رزبری پای به سرور، از ابزای به نام curl استفاده می نماییم. به کمک این ابزار به سرور متصل شده و داده های موجود در فایل tmp.txt، شامل طول، عرض و ارتفاع را خوانده و به کمک عملگر << در فایل gps.txt ذخیره می نماییم. این رویه درون یک حلقه تکرار بی نهایت(به کمک متغیر x) قرار گرفته و دائما تکرار می شود. توجه داشته باشید که به کمک عبارت زیر، خط جدیدی در فایل ایجاد شده و داده هر بار در یک خط پایین تر نسبت به خط قبلی خود، ذخیره می گردند.

echo "" >>gps.txt

 

 


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


ماژول SIM808 با قابلیت GPS

آنتن GSM

آنتن GPS

برد آردویینو UNO (تغذیه برد آردویینو از همان کابل تامین می شود)

مقاومت ۱k اهم

برد رزبری پای

شیلد ماژول SIM800C مخصوص رزبری پای

 


جمع بندی


در این آموزش، بین برد رزبری پای و آردویینو از طریق اینترنت، ارتباط ریموت برقرار نمودیم. برای برقراری ارتباط بین این دو برد، پیشتر همکارم در این آموزش، ارتباط بین این دو برد را از طریق تکنولوژی لورا برقرار کرده است. در این آموزش ما از طریق اینترنت، داده های برد آردویینو را از طریق برد رزبری پای دریافت و سپس ترسیم می نماییم. برای برقراری ارتباط اینترنتی، ابتدا برد آردویینو را به کمک GPRS ماژول SIM808 به اینترنت متصل می نماییم. به کمک قابلیت GPS این ماژول، طول، عرض و ارتفاع را دریافت کرده و به سروری پیشتر در همین خصوص طراحی کرده ایم، ارسال می نماییم. در طرف دیگر، به کمک شیلد ماژول SIM800C، به اینترنت متصل شده و داده های آردویینو که بر روی سرور قرار گرفته است را دانلود و در فایلی به نام gps.txt ذخیره می نماییم. سپس به کمک نرم افزار gnuplot، تصویری سه بعدی از مسیر حرکت ترسیم می نماییم. به کمک این نمودار می توانیم میزان پستی بلندی ها و یا ناهمواری های زمین مورد نظر را بدست بیاوریم.

 

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

 

 

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

معین صابری

کارشناسی ارشد رشته معماری سیستم های کامپیوتری

مالي که ز تو کس نستاند، علم است
حرزي که تو را به حق رساند، علم است
جز علم طلب مکن تو اندر عالم
چيزي که تو را ز غم رهاند، علم است
(شیخ بهایی)

تبادل نظر و رفع عیب با ثبت دیدگاه