مطمئن باشید بعد از خواندن این آموزش کلی ایدهی باحال و جدید به ذهنتان میرسد !
به نظر شما تمام لذت و کاربرد یک پروژهی اینترنت اشیا چیست؟
تا حالا به این فکر کردید که کد و نتایج پروژهای که انجام دادید، از هر نقطه از جهان و در آن واحد برایتان قابل دسترس باشد؟ مثلاً به این فکر کردید که از خانه یا محل کارتان برد را کنترلکنید یا نتایج برنامهای که نوشتید را ببینید؟ به نظر من تمام لذت انجام یک پروژهی DIY و IOT به همین Globally Accessible بودن آن است. حالا حسابکنید با استفاده از این ویژگی، چه پروژههای کاربردیای که نمیتوان تعریفکرد! بنابراین با توجه به اهمیت و کاربرد این خصوصیت، در این بخش قصد داریم نحوهی دسترسی به برد رزبریپای از طریق اینترنت و توسط موبایل و لپتاپ از هر نقطه از جهان را باهم بررسیکنیم. پس با من همراه باشید تا مطالب زیر را باهم گامبهگام بررسیکنیم:
- بررسی مفهوم Port Forwarding
- آموزش دسترسی به Desktop و Command-Line رزبریپای از طریق Remote.it از هر نقطه از جهان
- آموزش دسترسی به Command-Line رزبریپای از طریق Dataplicity از هر نقطه از جهان
قطعات مورد نیاز:
رزبریپای 4
کارت حافظه Sd Card با ظرفیت حداقل 8 GB
روتر
این دسترسی جهانی به چه دردی میخوره؟
در بخش قبلی آموزش، نحوهی اتصال لپتاپ و موبایل به رزبریپای و انتقال فایل بین آنها را باهم بررسیکردیم. در آن قسمت دیدیم که با روشهای مختلفی میتوانیم به Command-Line یا Desktop رزبریپای متصلشویم، دستورات مورد نظرمان را اجرا کنیم و حتی فایلهای مختلفی را بین این دستگاهها جابهجا کنیم! اما همهی آن کارها یک ضعف بزرگ داشت! در واقع همهی آنها بهصورت محلی (Local) قابل استفادهبودند. یعنی چی؟ یعنی فقط برای زمانی که شما کنار برد نشستید، اما حوصله یا امکانات کافی مثل مانیتور، کابل، کیبورد و ... را ندارید، مناسب بودند. از یک فاصلهی معینی که دورتر میشدید، دیگر توانایی اتصال به برد را نداشتید. به همین دلیل در این قسمت قصد داریم این ضعف را پوشش بدهیم. یعنی از هرجایی که اینترنت داشتید، بتوانید به برد و محتویات آن دسترسی کامل داشتهباشید. این ویژگی کاربردهای فراوانی در زمینهی اینترنت اشیا میتواند داشتهباشد. مثلاً فرضکنید با استفاده از دوربین رزبریپای، یک سیستم امنیتی برای خانه، باغ یا محیط کار خود طراحیکردید. توسط این ویژگی میتوانید تصویر و سایر اطلاعات سنسوری را از هر نقطهای که به اینترنت دسترسی دارید، مشاهدهکنید! یا حتی با رزبریپای لوازم خانگی خود را کنترل و از راه دور وضعیت عملکرد آنها را مدیریتکنید. پس این شیوهی دسترسی خیلی می-تواند کاربردی و جذاب باشد.
میدانم خیلی حوصلهی متنهای طولانی را ندارید. پس مقدمه را طولانی نمیکنم و از اینجا به بعد سراغ اصل مطلب میرویم.
پیشنیاز: IP، Port Forwarding و Reverse Proxy: خیلی مختصر و مفید
اگر دسترسی Local را بهیاد داشتهباشید، گفتیم برای متصلکردن رزبریپای به لپتاپ، به آدرس IP برد نیاز داریم. اما برای برقراری ارتباط، لپتاپ باید در همان شبکه قرار میگرفت. مثلاً اگر رزبریپای به مودم وصلبود، شما هم باید در شبکهای که مودم ایجادکرده قرار بگیرید تا بتوانید به برد دسترسی داشتهباشید ولی اگر برد به یک مودم و لپتاپ شما به مودم دیگری متصلباشد، نمیتوانید بین آنها ارتباطی برقرار کنید. این محدودیت دسترسی به این خاطر بود که ما از IP داخلی برای اتصال به برد استفادهمیکردیم. ولی حالا نیاز داریم که برد را توسط یک IP قابل دسترسی از هر نقطه از جهان به اینترنت متصلکنیم نه IP داخلی. برای دسترسی به اینترنت که کار سختی نداریم. میتوانید برد را با Wi-Fi یا کابل LAN به مودم اینترنت خود وصلکنید. اما میماند بخش اساسی کار یعنی ایجاد IP قابل دسترسی از هر جای دنیا! اجازه بدید کمی برگردیک عقب و دقیقتر صحبتکنیم.
IP هر دستگاه، در واقع آدرس و کد شناسایی آن در دنیای اینترنت است. بنابراین IP برای دستگاهها مانند کد ملی برای انسانها یا شماره پلاک برای خودروها عملمیکند. این آدرسها را بهطور کلی به دو دستهمیتوان تقسیمبندی کرد: عمومی (Public IP) و خصوصی (Private IP)
IPهای خصوصی به آدرسهایی گفتهمیشود که فقط در شبکههای داخلی و خصوصی قابل استفادهاند. بهعنوان مثال فرضکنید در یک سازمان 20 دستگاه و کامپیوتر قصد دارند باهم در ارتباط باشند. بنابراین هر کدام از یک IP داخلی که توسط مودم آن سازمان به آنها تخصیصدادهشده، استفاده و یکدیگر را شناساییمیکنند. در حقیقت این IP ها توسط سرویس DHCP روتر به دستگاههای زیر مجموعه اختصاصدادهمیشود و شامل دستههای زیر است:
10.0.0.0 تا 10.255.255.255
192.168.0.0 تا 192.168.255.255
172.16.0.0 تا 172.31.255.255
در مقابل این دسته، IPهای عمومی قراردارند که ازهر کجای جهان قابل دسترسی هستند. در همان مثال قبلی، هر کدام از 20 دستگاه برای دسترسی به اینترنت، باید به دستگاهی که اینترنت بر روی آن وجود دارد(مودم) وصلشده و با یک IP عمومی به شبکهی اینترنت متصلشوند.IP های عمومی معمولاً رایگان نیستند و توسط شرکتهای ارائه-دهندهی اینترنت (ISP) به روتر اختصاصدادهمیشود. بنابراین در همان سازمان، 20 آیپی خصوصی داریم و یک آی-پی عمومی که همهی 20 دستگاه توسط آن به اینترنت دسترسی پیدا میکنند.
خب اگر بخواهیم به رزبریپای یک IP عمومی اختصاصبدیم نه بهصرفه است نه منطقی. برای حل این مشکل، دو روش وجود دارد:
- استفاده از Port Forwarding که اتصال به Private IP را از طریق یک پورت خاص ممکنمیکند. برای این کار باید وارد تنظیمات مودم خود شده و پیکربندی آن را تغییر دهید تا اطلاعات روی یک پورت خاص را به IP رزبریپای شما ارسالکند. از آن جایی که این روش برای مودمهای مختلف، متفاوت بوده و همچنین امنیت شبکهی شما را کاهش میدهد، در اینجا از روش دوم استفادهمیکنیم.
- استفاده از Reverse Proxy که بهعنوان واسط بین رزبریپای و لپتاپ شما قرار گرفته و ارتباط غیر مستقیمی را بین دو سیستم در دو شبکهی مختلف را فراهممیکند. در واقع با این روش شما برای انتقال اطلاعات، به-جای رزبریپای به یک سرور واسط متصلمیشوید.
خب دیگه توضیح و مفاهیم بسه، بریم سراغ عمل!!
در این آموزش فرض شده که رزبریپای شما از قبل دارای سیستمعامل است. در غیر این صورت برای نصب سیستمعامل میتوانید به آموزش راهاندازی رزبریپای ۴ با نصب سیستمعامل رزبین مراجعه کنید.
Remote.it : اتصال در همه جا به برد رزبری پای!
این وبسایت یک شبکهی اینترنت مجازی خصوصی بهصورت امن برای ارتباط دستگاههای شما در فضای عمومی اینترنت فراهممیکند. با استفاده از remote.it میتوانید توسط پروتکلهای مختلف SSH، SCP، HTTPS/HTTP و RDP و بهطور کلی TCP/IP به برد خود متصلشوید. این یعنی از طریق این سرویس میتواتید هر کاری که می-خواهید با برد خود انجامبدید!! پس همین الان برای ورود به وبسایت روی این لینک کلیککنید تا مرحله به مرحله باهم پیشبریم. در صفحهی باز شده ابتدا باید یک حساب کاربری ایجادکنید. برای این کار روی GET A FREE DEVELOPER ACCOUNT کلیککرده و ایمیل خود را واردکنید.
سپس در صفحهی جدید، کد ارسالشده به ایمیل خود را وارد و رمز ورود مناسبی برای حساب کاربری خود تعیینکنید. پس از انجام موارد فوق حساب کاربری شما ساختهمیشود. حالا به سراغ رزبریپای بریم تا پکیجهای لازم را در آن نصبکنیم. پس در Command-Line برد، دستورات زیر را یکبهیک و بهترتیب وارد کنید.
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install connectd
خب پکیج لازم نصبشد. از این پس برای هر بار اجرای آن میتوانید از دستور زیر استفادهکنید تا وارد تنظیمات سرویس Remote.it شوید:
$ sudo connectd_installer
پس از اجرای دستورات فوق، با صفحهی زیر مواجهخواهیدشد:
۱- ورود به حساب کاربری ساختهشده
۲- دریافت کد برای ساخت حساب کاربری جدید (اگر از طریق وبسایت حساب کاربری نساختهاید)
۳- وارد کردن کد دریافت شده در ۲ و ایجاد حساب کاربری جدید (اگر از طریق وبسایت حساب کاربری نساختهاید)
۴- خارجشدن از منو
خب چون ما از طریق وبسایت حساب کاربری را ایجادکردیم، در این منو گزینهی اول را انتخاب و پس از وارد کردن ایمیل و رمز ورود، وارد حساب خود میشویم. پس از این مرحله از شما خواستهمیشود تا یک نام برای اتصالات خود تعیینکنید. در اینجا ما این نام را Sanatbazar انتخابکردیم.
در مرحلهی بعدی و منوی جدید هم گزینهی 1 را انتخابکنید.
در این بخش میتوانید پروتکل و پورت دسترسی موردنظر خود را انتخابکنید. ابتدا کار را با SSH شروعمیکنیم. پس با با وارد کردن 1 وارد مرحلهی بعد شوید. در بخش بعدی از شما پرسیدهمیشود که برای این پروتکل از چه پورتی می-خواهید استفادهکنید. بدون تغییر پورت، با زدن y اجازهبدید از مقدار پیشفرض 22 استفادهشود.
در این مرحله از شما درخواست میشود که نامی برای نشاندادن این اتصال در لیست سروسهای remot.it انتخاب-کنید. (این نام را pi-SSH انخابکردم. شما میتوانید هر نامی که خواستید را واردکنید.) اگر تمامی مراحل را بهدرستی طیکردهباشید، با صفحهی زیر روبهرو خواهیدشد:
در کادر مشخصشده، تمامی سرویسهای شما در حساب کاربریتان نمایشدادهخواهدشد. همانطور که میبینید، ما تا الان فقط یک سرویس SSH تنظیمکردیم. توجه داشتهباشید که اگر تنظیمات را بهدرستی انجامدادهباشید و همچنین برد شما روشن و به اینترنت متصلباشد، عبارت OK در بخش Application، نمایش دادهخواهدشد. در غیر این صورت، Not Detected را مشاهدهمیکنید و این یعنی یک جایی از کار، ایراد دارد!
خب حالا که برد را تنظیمکردیم، وقت این رسیده که در سایت Remote.it وارد حساب کاربری مربوطه شویم. پس وارد سایت شده و این بار از بخش sign in وارد حسابتان شوید.
خب میبینیم که در بخش Devices، Sanatbazar ایجادشدهاست. با کلیک روی آن وارد صفحهی بعد میشویم.
و همانطور که انتظار داشتیم، سرویس pi-SSH که در رزبریپای ایجادکردهبودیم، اینجا قابل مشاهده است. اگر برد شما روشن و به اینترنت متصلباشد، علامت تیک کنار آن نمایان میشود. اگر این علامت خط تیره باشد، یا برد شما خاموش است، یا اتصال اینترنت آن برقرار نیست. حالا برای متصلشدن به برد، روی سرویس خود (در اینجا pi-SSH) کلیککنید.
مرحلهی آخر: IPها
اگر میخواهید از MobaXterm ، Putty یا JuiceSSH استفادهکنید، باید آدرس کادر اول با پورت مشخصشده را استفادهکنید.
همچنین برای استفاده از SSH در Termianl ویندوز، از روی کیبورد Win+R را فشار داده و در پنجرهی بازشده، عبارت cmd را وارد کنید. پس از این که وارد Terminalشدید، عبارت نوشتهشده در کادر دوم را واردکنید. پس از وارد کردن رمز، وارد رزبریشدید!
اگر میخواهید بهعنوان root وارد شوید از کادر سوم و برای ورود بهعنوان سایر کاربران، نام کاربر را جایگزین LOGIN در کادر چهارم تصویر بالا کنید.
خب این از SSH. حالا اگر موافقید، خیلی سریع با VNC هم به Desktop برد وصلشیم. برای این کار دوباره در Terminal رزبریپای دستور $ sudo connectd_installer را اجرا و با انتخاب گزینهی 1 به حساب کاربری خود در remote.it واردشوید. این بار پس از انتخاب گزینهی اول (Attach/reinstall a remote.it Service to an application) بهجای SSH، گزینهی چهارم یعنی VNC on port 5900 را انتخابکنید.
در اینجا هم پورت پیشفرض VNC یعنی 5900 را تغییر ندهید و با وارد کردن y به مرحلهی بعدی بروید. اینبار نام اتصال را pi-VNC انتخابمیکنیم و پس از انجام تنظیمات، میبینیم که این سرویس هم به سرویس قبلی بهدرستی اضافهمیشود. (عبارت OK در Application)
دوباره به وبسایت برگردید و وارد پنجرهی Devices شوید. همانطور که انتظار داریم، pi-VNC هم به pi-SSH اضافه-شده. روی آن کلیک میکنیم تا IP و پورت مناسب برای اتصال VNC ایجادشود.
در پنجرهی جدید میتوانید یکی از 3 گزینهی ارائهشده برای اتصال را انتخابکنید. در اینجا ما از گزینهی سوم برای استفاده از نرمافزار Real VNC Viewer استفادهمکنیم. پس آدرس دادهشده را در VNC Viewer کپیکنید.
پس از وارد کردن نام کاربری و کلمهی عبور، میتوانید از هرجای دنیا که خواستید به دسکتاپ رزبریپای خود، دسترسی پیدا کنید. قطعاً سرعت اتصال در این نوع از دسترسی به سرعت اینترنت شما وابستهاست.
خب هم از طریق SSH و هم از طریق VNC، Remote.it را امتحانکردید. برای دسترسی ار طریق سایر پروتکلها هم خودتان میتوانید بهصورت مشابه، از پکیج Connectd_installer، استفادهکنید.
نکته: کافیست تنظیمات گفتهشده را فقط یک بار انجامدهید. از این به بعد با هر بار روشنکردن برد، با ورود به وبسایت میتوانید یه یرد خود دسترسی داشتهباشید. البته اگر رزبری را به مودم دیگری وصلکنید، لازم است مراحل فوق را بار دیگر برای آن مودم نیز تکرار کنید.
Dataplicity: تنها با استفاده از Browser از هرجا خواستید، وارد Terminal شوید!
اول آموزش گفتیم که برای اتصال به برد، از روشهای مختلفی میتوانید استفادهکنید. در این قسمت هم قصد دارم یکی راحتترین و سریعترین روشها را به شما نشانبدهم. همانطور که دیدید Remote.it امکانات بسیاری بهصورت رایگان در اختیار ما میگذاشت. حتی این دسترسی فقط منحصر به رزبریپای نبود و شما میتوانید سایر بردها و وسایل خود را در یک سرویس قراردهید. اما اگر بخواهیم فقط به خط فرمان رزبریپای دسترسی داشتهباشیم هم لازم است این همه دردسر بکشیم؟
Dataplicity وبسایت دیگری است که این اتصال را برای شما خیلی راحتتر میکند. البته باید بگم که از این روش فقط برای دسترسی به Terminal رزبریپای میتوانید استفادهکنید نه دسکتاپ و تصاویر گرافیکی! اما با توجه به سرعت مناسب و راحتی برقراری این اتصال، بد نیست یه این روش هم نگاهی بیاندازیم. پس خیلی سریع از این لینک وارد سایت Dataplicity شوید.
مانند Remote.it در صفحهی اصلی، ابتدا یک حساب کاربری برای خود ایجاد کنید. پس از وارد کردن ایمیل، دستوری در بخش دوم ظاهر میشود. رزبریپای خود را به اینترنت متصل و دستور نمایشدادهشده را در خط فرمان اجراکنید. سپس وارد ایمیل خود شوید تا علاوهبر تاییدحساب کاربری، برای ورودهای بعدی خود رمز عبور مناسبی تعیینکنید.
از این پس، در صورتی که به حساب کاربری خود وارد شوید، Device خود را مشاهده خواهیدکرد. با کلیک روی آن، میتوانید به سیستمعامل برد از هر کجا که خواستید دسترسی داشتهباشید.
همین! به همین سادگی!! حالا هر دستوری که میخواهید، از راه دور نوشته و در برد اعمالکنید.
ما تا الان Dataplicity را از طریق Browser اجرا میکردیم. شما میتواند نرمافزار آن را برای سیستمعاملهای مختلف روی موبایل و کامپیوتر خود نصبکنید و به برد خود متصلشوید.
این هم از اتصال از راه دور! کمکم همه چیز آماده است که پروژههای خلاقانهی خودتان را شروعکنید. اما برای انجام آنها یک پیش نیاز خیلی خیلی مهم نیاز دارید: توانایی برنامهنویسی!!! قطعاً برای این که رزبریپای دستورات شما را بفهمد، باید آن را به زبان خود برد بنویسید. خوشبختانه رزبریپای زبانهای زیادی را میفهمد! اما به دلایلی که در آموزش بعدی به آن میپردازیم، در این مجموعهی آموزشی، ما از زبان پایتون برای استفاده از برد استفاده میکنیم. پس برای یادگیری این زبان پر کاربرد در قسمت بعدی با من همراه باشید.
نظرات شما باعث بهبود محتوای آموزشی ما میشود. اگر این آموزش را دوست داشتید، همینطور اگر سوالی در مورد آن دارید، از شنیدن نظراتتان خوشحال خواهیم شد.
نظرات (4)