آموزش اینترنت اشیا با پایتون (Python IoT) | گام به گام و به زبان ساده
در این مطلب، آموزش اینترنت اشیا با پایتون ارائه و سپس، منابع یادگیری اینترنت اشیا با پایتون (Python IoT) معرفی میشوند. اما پیش از پرداختن به بحث اصلی این مطلب یعنی آموزش اینترنت اشیا با پایتون نیاز به بررسی اجمالی مفهوم «اینترنت اشیا» (Internet of Things | IoT)، «مولفههای اینترنت اشیا» (IoT Components)، بررسی «زبان برنامهنویسی پایتون» (Python Programming Language) و به طور خاص ویژگیهای آن برای اینترنت اشیا است. دلیل نیاز به بررسی مفهوم IoT و مولفههای آن و همچنین، ویژگیهای پایتون پیش از پرداختن به مبحث آموزش اینترنت اشیا با پایتون آن است که با بررسی آن موارد میتوان به طور شفاف بیان کرد که چرا پایتون زبان مناسبی برای IoT است.
اینترنت اشیا چیست؟
به بیان ساده، «اینترنت اشیا» (Internet of Things | IoT) که به آن «اینترنت چیزها» نیز گفته میشود، عنوانی برای توصیف دنیای بهم متصل دستگاههای فیزیکی است. این دستگاههای فیزیکی دارای اتصالات اینترنتی شامل «حسگرها» (Sensors) و سختافزارهای دیگری میشوند که معمولا به صورت «توکار» (Embedded) در سیستم قرار دارند. اتصالات بین این دستگاهها به آنها امکان تعامل کردن با یکدیگر و به کاربر امکان نظارت و کنترل کردن آنها را از طریق «وب» (Web) میدهد. IoT دستگاههای فاقد هوش را با دادن قابلیت ارسال دادهها از طریق اینترنت و تعامل با انسانها و دیگر دستگاههای دارای اینترنت، «هوشمند» (Smart) میکند.
«خانه هوشمند» (Smart Home)، مثالی از اینترنت اشیا (IoT) در دنیای واقعی است. در یک خانه هوشمند، ترموستاتها، زنگهای در، شناساگرهای دود و دزدگیرهای دارای اینترنت، یک شبکه متصل از اشیا/چیزها را میسازند که در آن، دادهها بین دستگاههای فیزیکی از طریق اینترنت به اشتراک گذاشته میشوند و کاربران میتوانند «اشیا» (Things) را در آن شبکه و از راه دور، با استفاده از یک «برنامه کاربردی» (Application) یا وبسایت، کنترل کنند.
اینترنت اشیا صرفا به خانههای هوشمند محدود نمیشود و در طیف وسیعی از دستگاهها، صنایع و اکوسیستمها وجود دارد و قابل پیادهسازی است. امروزه، از «تخته سیاههای هوشمند» (Smart Board) موجود در مدارس گرفته تا تجهیزات پزشکی که میتوانند علائم بیماریهایی مانند پارکینسون را شناسایی کنند، جزئی از دنیای گسترده اینترنت اشیا محسوب میشوند. اینترنت اشیا، جهان را با متصل کردن دستگاههای فیزیکی و دیجیتال، هوشمندتر میکند. در یک نگاه اجمالی و کلنگر میتواند گفت که اینترنت اشیا به صورت زیر عمل میکند:
- دستگاهها در یک سیستم اینترنت اشیا، دارای سختافزارهایی مانند حسگرها هستند. از جمله فعالیتهای این حسگرها میتوان به گردآوری دادهها اشاره کرد. (مثال: حسگر میزان رطوبت و حسگر دما در گلخانه هوشمند)
- دادههای گردآوری شده توسط حسگرها، از طریق اتصالات و در واقع خطوط انتقال داده و با بهرهگیری از اینترنت، در «ابر» (Cloud) به اشتراک گذاشته میشوند. به بیان بهتر، دادههای گردآوری شده توسط حسگرها در ابر یکپارچه میشوند. (مثال: دادههای گردآوری شده از حسگرهای رطوبت، دما، فشار، نور و دیگر حسگرهای موجود در گلخانه در یک ابر گردآوری میشوند.)
- نرمافزار تحلیل داده، دادههای گردآوری و ذخیره شده در ابر را تحلیل و اطلاعات و دانش حاصل شده از آن را با استفاده از یک برنامه کاربردی یا وبسایت به کاربر انتقال میدهد تا تصمیمسازی کند و یا بر اساس این دانش حاصل شده، به صورت خودکار تصمیمی را اتخاذ میکند.
- تصمیم اتخاذ شده توسط کاربر یا تصمیمی که به صورت خودکار گرفته شده است، به سیستم IoT ارسال میشود. بر این اساس، «محرکها/عملگرها» (Actuators) که نقش عاملهای اجرایی را در یک سیستم IoT دارند، عمل میکنند.
امروزه، دستگاههای اینترنت اشیا در اطراف همه انسانها وجود دارند و به طور دائم، ضمن گردآوری دادهها، آنها را انتقال میدهند و با دیگر دستگاههای اینترنت اشیا تعامل برقرار میکنند. در دنیای کنونی، اغلب افراد به صورت روزمره از «دستگاههای هوشمند» (Smart Devices) به اشکال گوناگونی از «دستیارهای مجازی» (Virtual Assistant) گرفته تا «دستگاههای پزشکی پوشیدنی» (Wearable Medical Devices) (شامل دستبندهای هوشمندی که اطلاعات سلامت را ثبت، منتقل و تحلیل میکنند) استفاده میکنند. هر دستگاه اینترنت اشیا اطلاعات را به صورت آنی ثبت و آن را برای انسانها یا دستگاههای دیگری ارسال میکند تا زندگی نوع بشر را امنتر، سلامتتر و کاراتر کنند.
پس در یک تعریف کلی و ساده در پاسخ به این پرسش که «اینترنت اشیا چیست؟»، باید گفت:
اینترنت اشیا، سیستمی از دستگاههای محاسباتی، ماشینهای مکانیکی و دیجیتال، حیوانات یا انسانهایی است که دارای شناساگرهای یکتا و تواناییهایی برای انتقال دادهها در یک شبکه، بدون نیاز به تعاملات انسان به انسان یا انسان با کامپیوتر هستند.
در بخش بعدی از مطلب آموزش اینترنت اشیا با پایتون به سیستم اینترنت اشیا و مولفههای آن پرداخته شده است.
سیستم اینترنت اشیا و مولفههای آن
در این بخش از مطلب آموزش اینترنت اشیا با پایتون سیستم اینترنت اشیا و مولفههای آن مورد بررسی قرار میگیرد. هر چند ریشه اینترنت اشیا به اوایل سال ۱۹۸۲ میلادی و زمانی باز میگردد که اولین دستگاه متصل به اینترنت فروش خودکار کوکاکولا توسط «دانشگاه کارنگی ملون» (Carnegie Mellon University) معرفی شد، اما به باور دانشمندان و غولهای فناوری اطلاعات، مبحث اینترنت اشیا (IoT) در میان سالهای ۲۰۰۸ تا ۲۰۰۹ متولد شده است.
با وجود داغ بودن مبحث اینترنت اشیا و دنبال شدن آموزش اینترنت اشیا با پایتون توسط افراد زیادی، اغلب منابع موجود برای آموزش اینترنت اشیا با پایتون دارای محتوای کاملا فنی و سردرگم کننده هستند. بنابراین، برای بسیاری از افراد شفاف نیست که یک «راهکار اینترنت اشیا» (IoT Solutions) چگونه کار میکند.
بنابراین، در ادامه مطلب آموزش اینترنت اشیا با پایتون چیستی یک «سیستم اینترنت اشیا» (IoT System) و چگونگی کارکرد آن تشریح میشود. نکتهای که باید پیش از ورود به بحث اصلی به آن توجه داشت این است که راهکارهای اینترنت اشیا بر اساس کاربرد و فناوریهای زیرساختی مورد استفاده برای آنها اغلب بسیار متفاوت از یکدیگر هستند؛ اما آنچه در ادامه بیان میشود، میتواند یک چشمانداز کلی و فاقد مباحث و اصطلاحات فنی و پیچیده را از اینترنت اشیا ارائه کند. یک راهکار اینترنت اشیا، از چهار «مولفه» (Component) متمایز تشکیل شده است. این مولفهها عبارتند از:
- حسگرها/دستگاهها (Sensors/Devices)
- اتصالات (Connectivity)
- پردازشهای داده (Data Processing)
- رابط کاربری (User Interfaces)
در ادامه مطلب آموزش اینترنت اشیا با پایتون هر یک از چهار مولفه بیان شده در بالا، توضیح داده شدهاند.
حسگرها/دستگاهها
در این بخش از مطلب آموزش اینترنت اشیا با پایتون به مبحث حسگرها/دستگاهها پرداخته شده است. میتوان گفت که در یک سیستم اینترنت اشیا، حسگرها/دستگاهها در جایگاه و گام اول قرار دارند. حسگرها یا دستگاهها، دادهها را از محیط گردآوری (Data Collecting) میکنند. این کار میتواند به سادگی خواندن درجه حرارت یا به پیچیدگی ثبت یک خوراک ویدئویی کامل باشد. دلیل استفاده از عبارت ترکیبی حسگرها/دستگاهها آن است که چندین حسگر میتوانند به یکدیگر متصل شوند و یا میتوانند بخشی از یک دستگاه باشند که کاری بیش از حس کردن (Sensing) انجام میدهد.
برای مثال، «گوشی هوشمند» (Smart Phone) دارای چندین حسگر (دوربین، شتابسنج، جیپیاس و دیگر موارد) است، اما گوشی فقط یک حسگر محسوب نمیشود و یک دستگاه است. صرفنظر از اینکه یک حسگر یا یک دستگاه کامل وجود داشته باشد، در گام اول، دادهها به وسیله «چیزی» از محیط گردآوری میشوند. برای مطالعه بیشتر پیرامون حسگرها (سنسورها)، مطالعه مطالب زیر پیشنهاد میشود.
- سنسور و ترانسدیوسر در مهندسی برق — به زبان ساده
- سنسور فشار — از صفر تا صد
- سنسور موقعیت — از صفر تا صد
- سنسور دما — به زبان ساده
- سنسور نور چیست؟ — از صفر تا صد
- سنسور مجاورتی — راهنمای جامع
- فلومتر (Flowmeter) – از صفر تا صد
- دماسنج مقاومتی – به زبان ساده
- سنسور اثر هال و کاربردهای آن — به زبان ساده (+ دانلود فیلم آموزش رایگان)
اتصالات
در گام بعدی، دادهها باید به «ابر» (کلود | Cloud) ارسال شوند. اما برای این انتقال داده، نیاز به یک راهکار انتقال داده وجود دارد. حسگرها/دستگاهها میتوانند با استفاده از روشهای گوناگونی، شامل «تلفنهای سلولی» (Cellular Phone)، «ماهواره» (Satellite)، «وایفای» (Wi-Fi)، «بلوتوث» (Bluetooth)، «شبکه گسترده کمتوان» (Low-Power Wide-Area Networks | LPWAN) یا اتصال مستقیم به اینترنت از طریق «اترنت» (Ethernet) به انتقال دادهها میپردازند.
در هر یک از گزینههای بیان شده در بالا، موازنهای بین مصرف برق، رنج و پهنای باند وجود دارد. انتخاب اینکه کدام نوع اتصال بهترین است، بستگی به کاربردهای خاص اینترنت اشیا دارد؛ اما همه این روشها، کار مشابهی یعنی «ارسال دادهها به ابر» را انجام میدهند. برای مطالعه بیشتر در این رابطه، مطالب زیر پیشنهاد میشوند.
- رایانش ابری (Cloud Computing) — از صفر تا صد
- یادگیری ماشین مبتنی بر رایانش ابری — راهنمای جامع
- راهنمای جامع روشهای اتصال در اینترنت اشیا (Internet of Things) — بخش اول: مقدمه
- راهنمای جامع روشهای اتصال در اینترنت اشیا (Internet of Things) — بخش دوم: وایفای (WiFi) و ترد (Thread)
- راهنمای جامع روشهای اتصال در اینترنت اشیا (Internet of Things) — بخش سوم: زیگبی (ZigBee)
- راهنمای جامع روشهای اتصال در اینترنت اشیا (Internet of Things) — بخش چهارم: بلوتوث (BlueTooth)
- راهنمای جامع روشهای اتصال در اینترنت اشیا (Internet of Things) — بخش پنجم: RFID و NFC
- راهنمای جامع روشهای اتصال در اینترنت اشیا (Internet of Things) — بخش ششم: پروتکلهای اختصاصی اینترنت اشیا
پردازش دادهها
پس از ارسال دادهها به ابر، نرمافزار پردازش و تحلیل دادهها، پردازشهایی را روی آنها انجام میدهد. این کار میتواند به سادگی بررسی این باشد که آیا دما در یک طیف مشخص قابل پذیرش است یا خیر و یا به پیچیدگی استفاده از «بینایی کامپیوتری» (Computer Vision) روی ویدئوها برای «بازشناسی اشیا» (Object Detection) باشد؛ که برای مثال از آن در دوربینهای امنیتی برای تشخیص ورودهای غیر مجاز در خانه یا دیگر محیطها استفاده میشود.
اما هنگامی که در مثالهای بیان شده، دما بسیار بالا تشخیص داده شود و یا مشخص شود که فردی به صورت غیر مجاز وارد خانه شده است، چه اتفاقی میافتد؟ در اینجا است که بحث رابط کاربری به میان میآید. برای آشنایی بیشتر با مبحث تحلیل دادهها، مطالعه مطلب زیر پیشنهاد میشود.
رابط کاربری
در این گام، اطلاعات به نوعی برای کاربر نهایی مفیدسازی و بصریسازی میشوند. این کار را میتوان به وسیله دادن هشدار به کاربر (ایمیل، پیامک، اخطار، یا دیگر موارد) انجام داد. برای مثال، هنگامی که دمای سردخانه یک کارخانه بالاتر از حد استاندارد آن باشد، یک پیامک هشدار برای مسئولان مرتبط ارسال میشود. همچنین، کاربر ممکن است دارای «رابط کاربری» (User Interfaces | UI) باشد که به او امکان ورود فعالانه به موضوع را بدهد. برای مثال، کاربر ممکن است تمایل داشته باشد که خوراکهای ویدئویی دریافتی و مربوط به خانه خود (در مثال دوربینهای امنیتی) را در لحظه و با استفاده از برنامه کاربردی موبایل یا مرورگر وب، بررسی کند.
اگرچه، این کار یک خیابان یک طرفه نیست. بسته به کاربرد اینترنت اشیا، کاربر ممکن است قادر به انجام اقدام/اقداماتی باشد و با دستورات خود، راهکار را متاثر کند. برای مثال، کاربر ممکن است از راه دور، دمای سردخانه را با استفاده از اپلیکیشن موجود در تلفن همراه خود، تنظیم کند. برخی از اقدامات نیز ممکن است به صورت خودکار توسط سیستم انجام شوند. برای مثال، بدون آنکه سیستم صبر کند تا کاربر درجه حرارت را تنظیم کند، میتواند این کار را با بهرهگیری از قوانین از پیش تعریف شدهای انجام دهد. در مثال مربوط به دوربینهای امنیتی نیز سیستم میتواند به صورت خودکار با ارسال هشدار، مسئولین مرتبط (پلیس یا در سازمانها و ادارات، نگهبانی و حراست) را با خبر کند. برای مطالعه بیشتر پیرامون رپشهای بصریسازی، مطالعه مطالب زیر پیشنهاد میشود.
- اینفوگرافیک چیست و چه فرقی با بصریسازی دادهها دارد؟
- هیستوگرام (Histogram) و نمودارهای چگالی — راهنمای بصری سازی دادههای تکبُعدی در پایتون
- بوکه (Bokeh) — از صفر تا صد
ساز و کار یک سیستم اینترنت اشیا
در این بخش از مطلب آموزش اینترنت اشیا با پایتون ساز و کار یک سیستم اینترنت اشیا به صورت کلی تشریح میشود. چنانکه پیش از این بیان شد، یک راهکار اینترنت اشیا شامل حسگرها/دستگاههایی است که از طریق برخی از انواع اتصالات، با ابر تعامل میکنند. هنگامی که دادهها به ابر میروند، نرمافزاری آنها را پردازش میکند و بر اساس نتیجه پردازشها، تصمیم میگیرد که چه اقدامی/اقداماتی را انجام دهد.
این اقدامات میتوانند شامل ارسال یک پیام هشدار به صورت خودکار یا تنظیم خودکار حسگرها/دستگاهها بدون نیاز به انجام کاری از سوی کاربر باشند. اما اگر ورودی کاربر مورد نیاز باشد یا اگر کاربر تمایل داشته باشد که در شرایطهای خاص، شخصا موضوع را بررسی کند، رابط کاربری این امکان را برای او فراهم میکند. هرگونه تنظیم یا عملی که کاربر انجام میدهد، از طریق همان زیرساخت و فقط در جهت عکس، یعنی از رابط کاربری به ابر و از ابر به حسگرها/دستگاهها ارسال میشود تا نوعی از تغییرات را ایجاد کند.
سختافزارهای اینترنت اشیا
سختافزارهای اینترنت اشیا یکی از مباحث مهم ضمن آموزش اینترنت اشیا با پایتون محسوب میشوند. بنابراین در این بخش از مطلب آموزش اینترنت اشیا با پایتون به طور اجمالی به آنها پرداخته شده است. سختافزارهای گوناگونی در حوزه اینترنت اشیا کاربرد دارند. از جمله این سختافزارها میتوان به «کامپیوترهای تک بردی» (Single Board Computers) یا «مینیکامپیوترها» (Mini Computers) اشاره کرد.
«رزبریپای» (Raspberry Pi) و «آردوینو» (Arduino) از جمله محبوبترین کامپیوترهای تکبردی هستند که در حوزه اینترنت اشیا کاربردهای بسیار زیادی دارند. از پایتون میتوان برای کدنویسی برای این مینیکامپیوترها استفاده کرد. برای مطالعه بیشتر پیرامون این موارد، مطالب زیر پیشنهاد میشوند.
- رزبری پای — هر آنچه باید در مورد این رایانه کوچک بدانید — بخش اول
- رزبری پای — هر آنچه باید در مورد این رایانه کوچک بدانید — بخش دوم
- آشنایی با برد آردوینو — بخش اول: معرفی و کاربردها
- آشنایی با برد آردوینو — بخش دوم: معرفی انواع برد و ویجتها
برنامهنویسی اینترنت اشیا
در این بخش از مطلب آموزش اینترنت اشیا با پایتون مبحث برنامه نویسی اینترنت اشیا مورد بررسی قرار گرفته است. سرمایهگذاری کسب و کارها، مراکز آموزشی و پژوهشی و دولتها در سراسر جهان روی بحث اینترنت اشیا حاکی از آن است که مرحله جدیدی از توسعه فناوریهایی که به طور کامل دنیا زندگی بشر را دستخوش تحول میکنند و هم مشتریان و هم بخش صنعتی را تحت تاثیر قرار میدهند به وقوع پیوسته است. ظهور اینترنت اشیا با توسعه فناوریهای «بیسیم» (Wireless) و فناوریهای حسگر، مستلزم انجام کارهایی کاملا جدید مانند موارد زیر است:
- توسعه استانداردهای جدید ارتباطی در شبکه اینترنت اشیا
- کاهش هزینههای یکپارچهسازی حسگرهای هوشمند
- مدیریت مصرف انرژی
این موارد، طراحی و تست دستگاههای اینترنت اشیا را پیچیده میکند؛ زیرا توسعهدهندگان باید دائما فناوریهای نوآورانه را به منظور ساخت و پیادهسازی سریع و موفقیتآمیز اینترنت اشیا دنبال کنند و از آنها آگاه باشند. بنابراین، شرکتهای توسعه برنامههای کاربردی اینترنت اشیا معمولا فناوریهای موجود را تحلیل و راهکارهای وجود را برای کشف آنکه کدام فناوریهای برای پروژههای اینترنت اشیا مناسبتر هستند، بررسی میکنند.
یکی از ابزارهای مورد نیاز در بحث اینترنت اشیا، «زبان برنامهنویسی» است. از برنامهنویسی در قسمتهای مختلف یک پروژه اینترنت اشیا استفاده میشود و عملا پیادهسازی یک پروژه اینترنت اشیا بدون استفاده از یک زبان برنامهنویسی، کاری غیر ممکن است. البته نباید فراموش کرد که پروژههای اینترنت اشیا، پروژههای صرفا نرمافزاری نیستند و ترکیبی از فعالیتها در حوزه برق و الکترونیک، سختافزار، شبکه، برنامهنویسی، تحلیل و کاوش اطلاعات (علم داده | Data science)، مکانیک و دیگر مباحث را شامل میشوند.
اینترنت اشیا دنیا را دستخوش تغییر میکند. متصل کردن همه چیز با حسگرها و رایانش ابری دربها را به سوی انقلاب صنعتی بعدی باز میکند. دستگاههای هوشمند به طور فزایندهای زندگی بشر را در بر میگیرد و به نظر میرسد اکنون زمان مناسبی برای راهاندازی محصولات اینترنت اشیا جدید از راه رسیده است. بنابراین، کاربر باید اطمینان حاصل کند که همه چیز را در سطح بالا با استفاده از یک زبان برنامهنویسی ردیف بالا انجام میدهد.
از میان خیل عظیم زبانهای برنامهنویسی که تاکنون معرفی شدهاند، تعداد کمی از آنها در حوزه اینترنت اشیا کاربرد دارند و سرآمد دیگر موارد محسوب میشوند. از جمله این زبانها میتوان به C++، پایتون و «جاوا» (Java) اشاره کرد. پایتون در این میان، طی سالهای اخیر از محبوبیت به سزایی برخوردار شده و کاربردهای بسیار زیادی در حوزه اینترنت اشیا پیدا کرده است. از این رو، در ادامه مطلب آموزش اینترنت اشیا با پایتون به معرفی اجمالی این زبان و دلیل استفاده از آن در حوزه اینترنت اشیا پرداخته شده، کتابخانههای پایتون برای اینترنت اشیا معرفی و در نهایت، منابع آموزش اینترنت اشیا با پایتون ارائه میشوند. برای مطالعه بیشتر در رابطه با زبانهای برنامهنویسی حوزه اینترنت اشیا، مطالعه مطلب زیر پیشنهاد میشود.
زبان برنامهنویسی پایتون
در این بخش از مطلب آموزش اینترنت اشیا با پایتون به زبان برنامهنویسی پایتون پرداخته شده است. «زبان برنامهنویسی پایتون» (Python Programming Language) توسط «خیدو فان روسوم» (Guido Van Rossum) ایجاد شد و توسعه پیدا کرد. این زبان، در ابتدا به عنوان یک «زبان اسکریپتنویسی» (Scripting Language) سطح بالا شروع به کار کرد. بر اساس «شاخص تیوبی» (Tiobe Index)، پایتون طی سه سال متوالی (۲۰۱۸، ۲۰۱۹ و ۲۰۲۰) جزو سه زبان برنامهنویسی محبوب در دنیا بوده است.
ویژگیها و قابلیتهای پایتون موجب شده است تا این زبان نه تنها بازار کار بسیار گستردهای داشته باشد، بلکه جایگاه شغلی و درآمد برنامهنویسهای پایتون نیز بسیار قابل توجه باشد. در ادامه، برخی از ویژگیها و خصوصیات پایتون بیان شدهاند.
- رایگان (Free)
- متنباز (OpenSource)
- سطح بالا (High Level)
- همه منظوره (General Purpose)
- چند پارادایمی (Multi-Paradigm)
- چند سکویی (Cross-Platform)
- مفسری (Interpreted Language)
اینترنت اشیا با پایتون
در این بخش از مطلب آموزش اینترنت اشیا با پایتون به ویزگیهای پایتون و دلایل استفاده از این زبان برای اینترنت اشیا پرداخته شده است. ویژگیها و خصوصیات پایتون و قدرت زیاد این زبان که در بالا به صورت موردی به برخی از آنها اشاره شد، نه تنها موجب گستردگی بازار کار و بالا بودن سطح درآمد برنامهنویسهای این زبان شده است، بلکه موجب شده تا پایتون به زبانی سرآمد و قابل توجهی برای اینترنت اشیا نیز مبدل شود.
صرفنظر از اینکه کاربر پروژه اینترنت اشیا خود را از صفر میسازد یا با تعامل با حسگرها، محرکها/عملگرها و تجهیزات جانبی، پایتون نیازهای کاربر را میشناسد. کاربر به راحتی می تواند کد پایتون را مطالعه، خطاها را اصلاح و کدنویسی را به سادگی آغاز کند و کدهای نوشته شده را به راحتی روی دستگاههای مختلف مورد استفاده قرار دهد. در ادامه مطلب آموزش اینترنت اشیا با پایتون تاثیر هر یک از ویژگیهای پایتون در راستای کاربردپذیری این زبان در حوزه اینترنت اشیا، با در نظر داشتن هر یک از مولفههای یک سیستم اینترنت اشیا، مورد بررسی قرار گرفته است.
رایگان و متنباز بودن پایتون و نقش آن در کاربرد پایتون برای اینترنت اشیا
پایتون یک زبان رایگان و متنباز است و همین امر موجب میشود تا کاربران بتوانند به سادگی از آن در پروژههای گوناگون تجاری و غیر تجاری اینترنت اشیا استفاده کنند. از سوی دیگر، متنباز بودن این زبان موجب شده تا جامعه کاربری بسیار بزرگ و قدرتمندی داشته باشد که نه تنها میتوانند مشکلات و پرسشهای یکدیگر را در زمینههای مختلف به سرعت پاسخگو باشند و حل کنند، بلکه کتابخانههای متعددی را برای این زبان در زمینههای گوناگون از جمله اینترنت اشیا توسعه میدهند. تعداد زیاد کتابخانههای موجود برای این زبان کمک میکند تا کاربر بتواند با کمترین تعداد خطوط کد و با بیشترین سرعت، کار خود را به پیش ببرد.
سطح بالا بودن پایتون و اهمیت آن در آموزش اینترنت اشیا با پایتون
اینترنت اشیا به خودی خود مبحث پیچیدهای محسوب میشود. در صورت استفاده از یک زبان برنامهنویسی پیچیده با ساختار و نحو غیر شفاف و خوانایی کم، این مشکل بیش از پیش برجسته میشود. زبان پایتون ساده است و به راحتی میتوان کار توسعه و استقرار نرمافزار را با استفاده از آن انجام داد. کدهای نوشته شده به زبان پایتون دارای خوانایی بالایی هستند. یادگیری پایتون آسان، استفاده از آن بسیار گسترده و پشتیبانی از آن مستحکم است.
پایتون انتخاب مناسبی برای مدیریت و سازماندهی جریانهای داده پیچیده است و این کار را بدون نیاز به نگهداری پایگاههای کد پیچیده انجام میدهد. نحو ساده پایتون آن را برای سازماندهی «پایگاه داده» (Data Base) نیز مناسب میسازد. در صورتی که برنامه کاربردی نیاز به سازماندهی دادهها در قالب پایگاه داده و یا استفاده از جدولها داشته باشد، پایتون گزینه بسیار خوبی خواهد بود.
به طور کلی میتوان گفت که زبان پایتون نحو بسیار ساده و ساختار شفافی دارد و همین ویژگیها موجب شده است تا طی سالهای اخیر، گوی سبقت را در بحث آموزش از جاوا برباید و به زبان اول در حوزه آموزش برنامهنویسی در جهان، مبدل شود. این مسئله به نوبه خود باعث شده است تا پایتون زبان مناسبی برای آموزش اینترنت اشیا هم باشد. بر خلاف زبانهای سطح بالایی مانند جاوا یا C++، پایتون به طور خاص طراحی شده تا منطق کسب و کار را در سطح دستگاه پیادهسازی کند. با استفاده از این زبان برنامهنویسی، کاربر میتواند هر حجم دادهای را که با آن سر و کار دارد دستکاری و آن را از طریق ابر دسترسیپذیر کند.
همه منظوره بودن پایتون و تاثیر آن بر اینترنت اشیا با پایتون
پایتون یک «زبان برنامهنویسی همهمنظوره» (General Purpose Programming Language) است که در زمینههای مختلف از برنامهنویسی علمی و محاسباتی گرفته تا برنامهنویسی وب، موبایل، ساخت بازیهای کامپیوتری، برنامهنویسی «سیستمهای توکار» و دیگر موارد کاربرد دارد. همین موارد موجب میشود تا بتوان از پایتون برای مولفههای گوناگون اینترنت اشیا از بحث برنامهنویسی سختافزاری، اتصالات و پردازش داده گرفته تا رابط کاربری استفاده کرد. داشتن شاهکلیدی که بتوان با آن همه قفلها را باز کرد، در پروژههای فناوری اطلاعات بسیار مهم است و پایتون در حوزه اینترنت اشیا میتواند نقش همین شاهکلید را ایفا کند.
به طور خاص، یکی از زمینههایی که پایتون در آن بسیار قدرتمند و یکهتاز میادین محسوب میشود، «هوشمصنوعی» (Artificial Intelligence) و علم داده است. از همین رو، پایتون یک زبان ایدهآل برای برنامههای کاربردی دادهمحور محسوب میشود. بنابراین، پایتون برای مولفه پردازش دادهها در اینترنت اشیا نیز گزینهای مناسب و شاید بیاغراق بتوان گفت که بهترین گزینه ممکن است. در واقع، پایتون گزینه ایدهآلی برای بخش تحلیل داده در سیستمهای اینترنت اشیا محسوب میشود.
از سوی دیگر، پایتون زبان بسیار مناسبی برای «دستگاههای مرزی» (Edge Devices) است که برنامههای کاربردی فشرده را اجرا و چندین جریان داده را مدیریت میکنند. در حالت متداول، معمولا یک دستگاه گره وجود دارد که دادهها را گردآوری و آنها را از حسگرهای چندگانه آماده میکند؛ بستههای داده را به «ابر» (Cloud) ارسال میکند و دستورات را به صورت بلادرنگ به دستگاه نهایی مسیریابی میکند. اگر یک دستگاه مرزی نیاز به اجرای برنامههای کاربردی دادهمحور داشته باشد، برای مثال، به عنوان یک مرکز پردازش داده محلی کامل، پایتون گزینه خوبی خواهد بود.
همچون زبان برنامهنویسی Go، زبان پایتون نیز انعطافپذیر و غیر پیچیده است. پایتون امکان ساخت و توسعه کدهای سبک را در عین پیادهسازی کارکردهای بسیار مهم و پیچیده، فراهم میکند. پایتون به عنوان یک زبان برنامهنویسی متداول که در اینترنت اشیا مورد استفاده قرار میگیرد، انتخاب خوبی برای کاربردهای گردآوری و پردازش داده و افزودن قابلیتهای «علم داده» (Data Science) و تحلیل به دستگاههای مرزی است.
چند پاردایمی بودن پایتون و اهمیت آن برای اینترنت اشیا
پایتون یک زبان چند پاردایمی است که از پاردایمهای برنامهنویسی مهمی مانند «شیگرایی» (Object Oriented Programming) پشتیبانی میکند. همین امر موجب میشود تا مهندسان IoT بتوانند در صورت لزوم، در بخشهای مختلف یک پروژه به راحتی از پاردایمهای مختلف برنامهنویسی استفاده کنند. از سوی دیگر، با جا به جایی از یک پروژه به پروژه دیگر و نیاز به استفاده از یک پاردایم برنامهنویسی متفاوت، در صورت تسلط بر پایتون، نیازی به تغییر زبان برنامهنویسی نیست و این مسئله بیش از آنچه در بیان به نظر میرسد، در عمل حائز اهمیت است.
چند سکویی بودن پایتون و کاربرد آن در اینترنت اشیا
پایتون یک زبان چندسکویی است. همین امر موجب میشود تا بتوان به راحتی آن را روی پلتفرمهای مختلف سختافزاری و نرمافزاری استفاده و اجرا کرد. همین ویژگی موجب کاهش بسیاری از دغدغههای کاربر ضمن انجام پروژه چه در حوزه IoT و چه در دیگر زمینهها میشود.
مفسری بودن پایتون و نقش آن در اینترنت اشیا
پایتون یک زبان مفسری است و این یعنی کاربر میتواند یک برنامه را فورا پس از ایجاد تغییرات در فایلهای آن، اجرا کند. این امر منجر به آن میشود که نهاییسازی، پردازش و خطایابی برنامهها بسیار سریعتر از دیگر زبانهای برنامهنویسی انجام شود. برای مثال، برخی از «میکروکنترلرها» (Microcontroller | ریزکنترلگر) پیادهسازیهای خاصی از پایتون را دارند و البته مفسر خود پایتون نیز در اغلب پلتفرمهای نرمافزاری مانند مک و لینوکس به صورت پیشفرض نصب است.
مزایای کلیدی پایتون برای اینترنت اشیا
در این بخش از مطلب آموزش اینترنت اشیا با پایتون به مزایای کلیدی پایتون برای اینترنت اشیا پرداخته شده است. بسیاری از کارشناسان امروزه پایتون را به عنوان بهترین و خواستنیترین زبان برنامهنویسی با طراحی خوب و نحو ساده معرفی میکنند؛ این ویژگیها موجب میشود که پایتون هم برای توسعهدهندگان اینترنت اشیا با تجربه و هم تازهکارها، ابزاری جذاب باشد. مزایای کلیدی پایتون به طور کلی عبارتند از:
شروع به کار آسان: ساختار ویژه این زبان و حجم انبوه مولفههان کمکی آن، به کاربر کمک میکند تا پایتون را به سادگی بفهمد. شخصی که با مبانی برنامهنویسی آشنا باشد، طی تنها سی دقیقه میتواند شروع به نوشتن اسکریپتهای پایتون کند. پایتون، کار برنامهنویسی را ساده و جذاب میکند.
طراحی خوب: پایتون شامل اغلب گرایشهای برنامهنویسی نوین میشود و آنها را به کار میگیرد. علاوه بر آن، این زبان به صورت پویا توسعه پیدا میکند؛ یعنی ساختارهای جدیدی که مقرر میشود به زبان اضافه شوند، در زبان به خوبی عیبیابی شدهاند و در عین حال، افزودن پاردایمهای برنامهنویسی گوناگون به این زبان همچنان ادامه دارد. این کارها، در عین داشتن سازگاری رو به عقب و ثبات داخلی در زبان پایتون، انجام میشود.
نحو با خوانایی ساده (در مقایسه با C++، پرل و PHP): پایتون این امکان را فراهم میکند که کاربر کدهای نوشته شده توسط دیگران را به راحتی بخواند و کدهایی که طی بلند مدت نوشته شدهاند را درک کند.
کتابخانههای متعدد و متنوع: تعداد قابل توجهی کتابخانه برای حوزههای گوناگون از برنامهنویسی سختتافزاری و وب گرفته تا محاسبات علمی، هوش مصنوعی و بصریسازی دادهها برای پایتون وجود دارد.
قابلیت حمل: پایتون تحت همه سیستمعاملهای محبوب و متداول و انواع گوناگون معماریها شامل ویندوز، لینوکس، مکاواس و حتی مینیکامپیوترهای آردوینو پیادهسازی شده است. سیستم وابستگیها در پایتون به خوبی مورد بررسی قرار گرفته و توسعه برنامههای کاربردی با این زبان روی ماشینهای گوناگون کاری ساده و آسان است.
ارزیابی: توسعه نرمافزار با پایتون به کاربران این قابلیت را میدهد که هر قطعه از کد را پس از آنکه توسط مفسر پایتون تفسیر شد، ارزیابی کنند. در زبانهای کامپایلری کاربر تنها این امکان را دارد که برنامه را به طور کامل بنویسد و کامپایل کند؛ سپس آن را از جهت داشتن خطا بررسی کند.
انعطافپذیری: با توجه به آنکه پایتون ابزار قدرتمندی محسوب میشود که در اختیار کاربر قرار گرفته است، برنامهنویسهای پایتون الزامی به پایبندی به پارادایم برنامهنویسی خاصی ندارند. پایتون دارای نحو شفاف و سازگاری است. در عین حال، دارای ماژولاریتی و مقیاسپذیری فکر شدهای است که کد منبع برنامه نوشته شده در پایتون را خواناتر میکند.
در ادامه مطلب آموزش اینترنت اشیا با پایتون کتابخانههای پایتون برای اینترنت اشیا مورد بررسی قرار میگیرند.
کتابخانههای پایتون برای اینترنت اشیا
در این بخش از آموزش اینترنت اشیا با پایتون کتابخانههای پایتونی که برای توسعه برنامههای اینترنت اشیا قابل استفاده هستند، معرفی میشوند. یادگیری کتابخانههای پایتون اینترنت اشیا یک گام مهم در آموزش اینترنت اشیا با پایتون محسوب میشود.
Mraa
Mraa [+] یک کتابخانه برای پین «ورودی خروجی همه منظوره» (General-Purpose Input/Output | GPIO) برای اغلب «کامپیوترهای تک بُرد» (Single Board Computers) است که از پایتون پشتیبانی میکند. نکته مثبت پیرامون این کتابخانه آن است که یک کتابخانه برای همه تجهیزات است. بنابراین، کاربر نیازی به استفاده از کتابخانههای متفاوت برای بردهای متفاوت شامل «اینتل ادیسون» (Intel Edison)، «رزبریپای» (Raspberry Pi) و دیگر موارد ندارد. Mraa یک کتابخانه سطح بالا است که با استفاده از آن میتوان خواندن/نوشتن از/روی پینها را تنها با یک خط کد انجام داد. کتابخانه Mraa از پروتکلهای ارتباطی مانند UART ،I2C و SPI نیز پشتیبانی میکند.
Sockets
sockets کتابخانهای است که برنامهنویسی شبکه را برای TCP/IP و UDP با استفاده از پایتون، تسهیل میکند. Sockets دسترسی به «رابطهای کاربردی برنامهنویسی سوکتهای برکلی» (Berkeley socket API) را برای دسترسی به اینترنت فراهم میکند. هم TCP/IP و هم UDP ، پروتکلهای لایه انتقال ایدهآلی برای ارتباط با تجهیزات روی یک شبکه وایفای مشابه، محسوب میشوند. یکی از کاربردهای جالب کتابخانه Sockets آن است که فرد میتواند پروتکلهای ارتباطی خودش را با استفاده از این بسته به عنوان مبنا، بسازد.
Mysqldb
پایگاه داده یکی از بخشهای جداییناپذیر اینترنت اشیا است. در پروژههایی که هدف آنها ارسال دادهها به اینترنت است، نیاز به یک پایگاه داده، دستکم پایگاه داده از راه دوری که همه دادههای تولید شده روی آن ذخیره شوند، وجود دارد. MySQL یک پایگاه داده رابطهای است که بسیاری از توسعهدهندگان از آن استفاده میکنند. در همین راستا، Mysqldb ابزار بسیار مناسبی است که نیاز به اجرای دستورات شل در یک اسکریپت پایتون را برای خواندن و نوشتن در پایگاه داده، انجام میدهد.
Numpy
در پایتون، از لیستها به عنوان جایگزینی برای آرایههای استفاده میشود. «نامپای» (Numpy) کتابخانه پایتون برای محاسبات علمی است که امکان کار با آرایهها را فراهم میکند. برای مثال، از این کتابخانه میتوان برای خواندن دادهها از پایگاه داده و کار با آنها با توابع توکار استفاده کرد. برای آشنایی بیشتر با این کتابخانه، مطالعه مطلب «برنامه نویسی پایتون (Python) با کتابخانه NumPy — به زبان ساده» پیشنهاد میشود.
Matplotlib
بصریسازی دادهها یکی از پایهایترین عملیات در پروژههای اینترنت اشیا و تحلیل داده است. مبدل کردن حجم انبوهی از دادهها به یک نمودار مفید و مختصر، که میتوان با یک نگاه به آن اطلاعات مفیدی را به دست آورد و به طور خاص، ترسیم نمودار در پروژههای علمی و پژوهشی، یک مسئله مهم است. کتابخانه پایتون «متپلاتلیب» (Matplotlib) قابلیت ترسیم انواع نمودارها را برای دادهها فراهم میکند. کتابخانه Matplotlib ابزار بسیار مفیدی برای ارائه بینش از دادهها در دسترس قرار میدهد. برای آشنایی بیشتر با این کتابخانه، مطالعه مطلب «رسم نمودار در پایتون با Matplotlib — راهنمای کاربردی» پیشنهاد میشود.
Pandas
کتابخانه دیگری که «دانشمندان داده» (Data Scientists) به وفور از آن استفاده میکنند، «پانداس» (Pandas) است. این کتابخانه به نوعی یک جایگزین محلی برای پایگاه داده SQL است که بیشتر برای کار با دادههایی مناسب است که با استفاده از کتابخانه نامپای ساخته شدهاند. نامپای مزایای زیادی دارد که از جمله آنها میتوان به قابلیتهای این کتابخانه برای مدیریت و تحلیل دادهها و مدیریت دادههای ناهمگن و نامرتب اشاره کرد. برای آشنایی بیشتر با کتابخانه پانداس، مطالعه مطب «پانداس (Pandas) — از صفر تا صد» پیشنهاد میشود.
Opencv
«پردازش سیگنال» (Signal Processing) و «پردازش تصویر» (Image Processing) از موضوعات داغ روز محسوب میشوند که در اینترنت اشیا نیز کاربردهای قابل توجهی دارند. Opencv یک پورت از کتابخانه بسیار توانمند و قدرتمند C برای پردازش تصویر است. این کتابخانه حاوی انواع سطح بالا از توابع پردازش تصویر است که کار تحلیل تصویر را سادهتر میکند. برای آشنایی بیشتر با این کتابخانه، مطالعه مطلب «آموزش پایتون: مفاهیم OpenCV برای تشخیص چهره و حرکت — راهنمای مقدماتی» پیشنهاد میشود.
Tkinter
Tkinter کتابخانه پایتون برای توسعه «رابط کاربری گرافیکی» (Graphical User Interface | GUI) است که همراه با همه نسخههای پایتون عرضه میشود. با استفاده از این کتابخانه میتوان هر جنبهای از اسکریپت پایتون را با استفاده از رابط کاربری گرافیکی کنترل کرد. این قابلیت در شرایطهایی مانند تست کارکرد یا اجرای مکرر یک کد، بسیار مفید است.
Tensorflow
«تنسورفلو» (Tensorflow) بستهای برای «محاسبات عددی» (Numerical Computation) ویژه «یادگیری ماشین» (Machine Learning) است. این کتابخانه ارائههای ریاضیاتی متفاوتی که به آنها گرافهای جریان داده گفته میشود و گرهها (راسها) در آن عملیات ریاضی و یالها آرایههای داده هستند را استفاده میکند. این کتابخانه، در صورتی که کاربر با مجموعه دادههای غیر خطی یا با درختهای تصمیم و شبکههای عصبی کار میکند، بسیار مفید خواهد بود. برای آشنایی بیشتر با کتابخانه تنسورفلو، مطالعه مطلب «تنسورفلو (TensorFlow) — از صفر تا صد» پیشنهاد میشود.
Requests
HTTP یکی از پروتکلهای اصلی مورد استفاده در مبادله منابع مبتنی بر اینترنت سنتی است که برای مبادله دادههای انبوه بهبود یافته است. بسته Requests در پایتون برای انجام فراخوانیهای HTTP و تجزیه پاسخها (واکنشها) مورد استفاده قرار میگیرد. این بسته هنگام کار با خدمات ابری شخص ثالث مبتنی بر ابر، بسیار مفید است.
Paho-mqtt
MQTT پروتکل اختصاصی توسعه پیدا کرده برای پارادایم اینترنت اشیا است. تمرکز این پروتکل روی ارتباطات با سرعت بالا برای ارتباطات بار مفید کم بین دستگاههای دارای محدودیت منابع است. کتابخانه Paho-mqtt یک نسخه بسیار کاربرپسند از پروتکل را برای استفاده در سیستمهای توکار ارائه میکند. درخواستهای MQTT را میتوان به طور مستقیم با پایتون بدون هرگونه تنظیمات و راهاندازیهای اضافهای انجام داد. این کتابخانه به طور خاص در مرحله ساخت «نمونه اولیه» (Prototyping) مفید است.
آموزش اینترنت اشیا با پایتون با پروژه گام به گام
در این بخش از مطلب آموزش اینترنت اشیا با پایتون روش ساخت یک موس با استفاده از گوشی هوشمند برای کامپیوتر، به عنوان یک پروژه IoT نمونه، به صورت گام به گام آموزش داده میشود. در واقع، در اینجا هدف ساختن یک برنامه کاربردی در گوشی هوشمند است که دو جویاستیک مجازی برای حرکت دادن مکاننمای موس، پیمایش کردن در صفحه و کلیک راست و چپ را درست مانند موسهای معمولی انجام دهد. تجهیزات لازم برای این کار عبارتند از:
- بردهای Arduino/Genuino UNO
- ماژول بلوتوث HC-05
- جامپر
در این پروژه آموزش اینترنت اشیا با پایتون برنامه کاربردی گوشی هوشمند، دادههای محور x و y، وضعیت پیمایش و وضعیت کلیک راست و چپ را با استفاده از بلوتوث به برد Arduino Uno ارسال میکند که به ماژول بلوتوث HC-05 وصل شده است. این دادهها پس از دریافت شدن توسط آردوینو، دستکاری میشوند تا موقعیت کنونی مکاننمای موس به وضعیت جدید تغییر کند. دادههای حاصل شده از پیمایش موس یا وضعیت کلیدها، به عنوان خروجی شناسایی شده برای خوانده شدن توسط برنامه پایتون چاپ میشود. برنامه پایتون بدین منظور ساخته شده است تا اقدامات موس را با استفاده از ماژول موس اجرا کند.
برنامه کاربردی مورد استفاده در پروژه آموزش اینترنت اشیا با پایتون
برنامه کاربردی گوشی هوشمند با استفاده از «برنامهساز امآیتی» (MIT-App Inventor) ساخته شده است. ساخت این برنامه کاربردی ساده است و کاربر صرفا نیاز دارد برای انجام این کار، بلوکهای مورد نظر خود را به برنامه اضافه کند. صفحه اصلی برنامه به صورت زیر است.
پیش از ارسال اطلاعات اصلی به ماژول بلوتوث HC-05، برنامه کاربردی ابتدا یک عدد تک بایتی (۲۵۵) را برای نشان دادن شروع اطلاعات، ارسال میکند. توالی دادههایی که انتقال داده میشوند به صورت زیر هستند.
- ارسال ۲۵۵ برای اطلاعرسانی شروع
- ارسال یک بایت مقدار محور x جویاستیک
- ارسال یک بایت مقدار محور y جویاستیک
- ارسال وضعیت کلیدهای راست و چپ و اسکرول (یک بایت)
دادهها از برنامه کاربردی هر ۲۰ میلیثانیه یک بار به Arduino UNO ارسال میشوند.
وقایع سمت آردوینو در پروژه آموزش اینترنت اشیا با پایتون
بایتهای داده از برنامه کاربردی توسط آردوینو و به کمک ماژول بلوتوث HC-05 دریافت میشوند. آردوینو حاوی مختصات کنونی مکاننما است که در آن، مختصات x مقداری بین ۰ تا ۱۲۷۹ و y مقداری بین ۰ تا ۷۹۹ دارد. این مقادیر از تابع پایتون mouse.get_position() به دست میآید که مختصات را هنگامی که مکاننما حرکت داده میشود، باز میگرداند.
بر اساس دادههای دریافت شده در پی حرکت دادن جویاستیک، موقعیت کنونی مکاننما (مختصاتهای x و y) به دادههای دریافت شده توسط برنامه کاربردی اضافه یا از آن کم میشوند تا مکاننما به مختصات جدید مورد انتظار برود. داده نهایی روی «مانیتور سریال» (Serial Monitor) با توالی زیر چاپ میشود.
توالی داده بیان شده، در نهایت توسط پایتون خوانده میشود تا توسط آن، اجرا شود. در این گام، نیاز به ماژولهای افزودهای است که در گام بعدی معرفی میشوند.
برنامهنویسی پایتون در پروژه آموزش اینترنت اشیا با پایتون
کاربر باید پایتون ۳ را روی لپتاپ/کامپیوتر خود نصب داشته باشد. برای آشنایی با روش نصب پایتون در سیستمعاملهای گوناگون، مطالعه مطالب زیر پیشنهاد میشود.
- آموزش نصب پایتون در ویندوز | گام به گام و تصویری — از صفر تا صد
- نصب پایتون در لینوکس — از صفر تا صد
- نصب پایتون در مک — از صفر تا صد
- نصب پایتون — از صفر تا صد
پس از نصب پایتون، باید مسیر موقعیت فایل پایتون را کپی کرد.
گامهای زیر باید در «خط فرمان» (Command Prompt) انجام شوند. بنابراین، باید خط فرمان را باز و دستورات زیر را وارد کرد.
- <cd <paste the path of the python file
- py –m pip install –-upgrade pip
- py –m pip install mouse
- py -m pip install pyserial
ماژول mouse برای انجام اقدامات موس و ماژول pyserial برای ارسال/دریافت دادهها از/به آردوینو مورد استفاده قرار میگیرد. در صورتی که ماژولهای لازم نصب باشند، کاربر باید خروجی زیر را مشاهده کند.
اجرای پروژه آموزش اینترنت اشیا با پایتون
ابتدا باید کنترل بلوتوث موس را روی گوشی هوشمند نصب کرد. سپس، کد مربوط به آردوینو را روی Arduino UNO آپلود کرده و فعالیتها به شکل داده شده در شماتیک کلی که تصویر آن پیشتر آمده است، دنبال میشوند. باید اطمینان حاصل کرد که ماژول بلوتوث HC-05 با گوشی هوشمند جفت (Paired) شده است. تنها پس از این حالت است که میتوان آن را از لیست دستگاههای جفت شده (Paired Devices) مشاهده کرد. در سمت پایتون نیز باید اقدامات زیر را برای اجرا انجام داد.
1. کد پایتون در یک فایل نوتپد کپی-پیست شود. پورت COM به پورت COM مربوط به Arduino UNO تغییر داده و با پسوند py. ذخیره شود.
۲. محیط توسعه یکپارچه پایتون (Python IDLE) باز و فایل نوتپد از آنجا باز شود.
۳. برنامه باید اجرا شود.
اکنون میتوان برنامه کاربردی را در گوشی هوشمند باز کرد و به ماژول بلوتوث متصل شد. در این وهله به راحتی میتوان از گوشی به عنوان یک موس استفاده کرد. کد آردوینو برای این پروژه آموزش اینترنت اشیا با پایتون، در ادامه آمده است.
1int datareceived[5] {0,0,0,0}; // To store byte from phone
2int in_byte = 0;
3int array_index = 0;
4void setup() {
5Serial.begin (9600); // starts the serial monitor
6}
7 int height=0,width=0;
8 int lcount=0,rcount=0;
9void loop() {
10 int clicks=0;
11 int sensitivity=20; // you can adjust the sensitivity
12 int xpos=0,ypos=0;
13if (Serial.available() > 0) { //recieve byte from phone
14 in_byte= Serial.read(); //store in byte into a variable
15 if (in_byte == (255)) { // if the variable is 0 stet the array inxed to 0.
16 array_index = 0;
17 }
18 datareceived[array_index] = in_byte; //store number into array
19 array_index = array_index +1;
20
21if(datareceived[1]>=110)
22xpos=map(datareceived[1],110,172,0,sensitivity); // When moved right
23if(datareceived[1]<=70)
24xpos=map(datareceived[1],60,1,0,-sensitivity); // When moved left
25if(datareceived[2]>=110)
26ypos=map(datareceived[2],110,255,0,sensitivity); // When moved down
27if(datareceived[2]<=60)
28ypos=map(datareceived[2],70,1,0,-sensitivity); // When moved up
29
30
31if(datareceived[3]==1) // TO recognise a single button press
32{
33 lcount+=1;
34 if(lcount>3)
35 {
36 clicks=1;
37 lcount=0;
38 }
39}
40else if(datareceived[3]==2)
41{
42 rcount+=1;
43 if(rcount>3)
44 {
45 clicks=2;
46 rcount=0;
47 }
48}
49else
50clicks=datareceived[3]; // to recognise the scroll
51
52
53if(xpos!=0 or ypos!=0 or clicks!=0) // when either of the joystick is moved or the button is pressed
54{
55height=height+ypos;
56width=width+xpos;
57if(height>=799)
58height=799;
59if(height<=0)
60height=0;
61if(width>=1279)
62width=1279;
63if(width<=0)
64width=0;
65Serial.print(width);
66Serial.print(":");
67Serial.print(height);
68Serial.print(":");
69Serial.println(clicks);
70clicks=0;
71}
72}
73}
منابع آموزش اینترنت اشیا با پایتون
در ادامه، منابع آموزش اینترنت اشیا با پایتون معرفی میشوند. به افرادی که هیچ آشنایی اولیه ای با زبان برنامهنویسی پایتون ندارند پیشنهاد میشود که ابتدا پایتون را بیاموزند و سپس، آموزش اینترنت اشیا با پایتون را دنبال کنند.
برای دسترسی به بیش از ۹,۲۶۲ دقیقه آموزش ویدئویی و به زبان فارسی پایتون، کلیک کنید.
آموزش پایتون (Python) | برنامه نویسی پایتون مقدماتی
طول مدت این دوره آموزشی که مدرس آن مهندس پژمان اقبالی است، برابر با نوزده ساعت و پنجاه و سه دقیقه است. این آموزش برای افراد تازهوارد به دنیای برنامهنویسی پایتون و کسانی که با پایتون تا حدی آشنا هستند و قصد دارند سطح دانش و مهارت خود را بیش از پیش ارتقا دهند مناسب است. در «آموزش پایتون (Python) | برنامه نویسی پایتون مقدماتی»، ضمن معرفی و آموزش چگونگی نصب پایتون، مباحث ساختمان دادهها در پایتون، توابع و ماژولها، کلاس، خواندن و نوشتن فایلها و دیگر موارد مورد بررسی قرار میگیرند.
آموزش برنامه نویسی پایتون – تکمیلی
طول مدت این دوره آموزشی که مدرس آن مهندس میترا تجربهکار هستند، چهار ساعت و چهل و شش دقیقه است. در این دوره، مباحث پیشرفتهتر و در واقع تکمیلی آموزش برنامهنویسی پایتون مورد بررسی قرار گرفته است. از جمله موضوعات مورد بررسی در این دوره آموزش ویدئویی میتوان به معرفی و تعریف آرایهها در زبان پایتون، معرفی بسته نامپای (NumPy)، رسم نمودار در پایتون و دیگر موارد اشاره کرد.
آموزش اینترنت اشیا – مقدماتی
طول مدت این دوره آموزشی که مدرس آن مهندس مرضیه آقایی هستند، یک ساعت و سی و شش دقیقه است. در این دوره، مباحث مقدماتی اینترنت اشیا مورد بررسی قرار گرفته است. از جمله موضوعات مورد بررسی در این دوره آموزش ویدئویی میتوان به معرفی اینترنت اشیا، تاریخچه و چالشهای پیادهسازی آن، مدل مرجع اینترنت اشیا و فناوریهای اساسی درگیر، چشماندازها، تاثیرات و حوزههای کاربرد و دیگر موارد اشاره کرد.
آموزش اینترنت اشیا – پیشرفته
طول مدت این دوره آموزشی که مدرس آن مهندس مرضیه آقایی هستند، چهار ساعت و سی و پنج دقیقه است. در این دوره، مباحث پیشرفته اینترنت اشیا مورد بررسی قرار گرفته است. از جمله موضوعات مورد بررسی در این دوره آموزش ویدئویی میتوان به معرفی سختافزارها و نرمافزارهای این حوزه، الکترونیک اینترنت اشیا، نرمافزارهای این حوزه، سنسورها و لوازم جانبی، Wyliodrin Dashboard، وبسرورهای اینترنت اشیا و دیگر موارد اشاره کرد.
آموزش اینترنت اشیا با نرمافزار Node-Red
طول مدت این دوره آموزشی که مدرس آن مهندس رضا قاسمی هستند، یازده ساعت و هفت دقیقه است. از جمله موضوعات مورد بررسی در این دوره آموزش ویدئویی میتوان به مباحث مقدماتی، جایگاه لینوکس در اینترنت اشیا، مباحث تکمیلی تر اینترنت اشیا، نصب پ راهاندازی Node-Red، برنامهنویسی با Node-Red، پروژه عملی ساخت یک اتاق هوشمند با Node-Red و دیگر موارد اشاره کرد.
آموزشهای اینترنت اشیا با تمرکز بر مبحث شبکههای انتقال داده
یکی از مولفههای اساسی و مهم در مبحث اینترنت اشیا، «اتصالات» (Connectivity) است. شبکههای انتقال داده از جمله مهمترین بخشها در بحث اتصالات هستند در ادامه، آموزشهای اینترنت اشیا با تمرکز بر بحث اتصالات و انتقال داده، معرفی شدهاند.
- آموزش پروژه محور اینترنت اشیا (IoT) – کنترل لوازم منزل با شبکه و پیامک و ماژول های SIM و ESP8266 (مدرس: مهندس مجتبی شادریان، طول مدت دوره: ده ساعت و هشت دقیقه)
- آموزش انتقال داده ها در شبکه های کامپیوتری و اینترنت به همراه حل مسائل (مدرس: مهندس مهدی عاشوری، طول مدت دوره: هشت ساعت و چهل و چهار دقیقه)
- آموزش شبکه های بی سیم (Wireless Networks) (مدرس: مهندس مهدی عاشوری، طول مدت دوره: سه ساعت و چهارده دقیقه)
آموزش میکروکنترلر
میکروکنترلرها یا ریزکنترلگرها از جمله سختافزارهای مهمی هستند که در حوزه اینترنت اشیا مورد استفاده قرار میگیرند. آشنایی با میکروکنترلرها برای مهندسان اینترنت اشیا مسئلهای مهم و قابل توجه است. در ادامه، لینک دسترسی به آموزشهای این حوزه ارائه شده است.
آموزش سختافزارهای متنباز اینترنت اشیا (رزبریپای و آردوینو)
«رزبری پای» (Raspberry Pi) و «آردوینو» (Arduino) دو مورد از بردهای سختافزاری متنبازی هستند که در حوزه اینترنت اشیا به شدت مورد استفاده قرار میگیرند. در ادامه، آموزشهای این سختافزارهای اینترنت اشیا معرفی شده است.
- آموزش کاربردی برد رزبری پای (Raspberry Pi) (مدرس دوره: مهندس مجتبی شادریان، طول مدت دوره: هشت ساعت و سی و شش دقیقه)
- آموزش برنامه نویسی رزبری پای (Raspberry Pi) با پایتون (مدرس دوره: مهندس مجتبی شادریان، طول مدت دوره: دوازده اسعت و چهل و شش دقیقه)
- آموزش برنامه نویسی برد رزبری پای (Raspberry Pi) با ۴ زبان برنامه نویسی (مدرس دوره: مهندس مجتبی شادریان، طول مدت دوره: یازده ساعت و ۵۴ دقیقه)
برای کسب اطلاعات بیشتر و دسترسی به بیش از ۴۶۲۴ دقیقه آموزش آردوینو Arduino، کلیک کنید.
جمعبندی
اینترنت اشیا یکی از موضوعات داغ روز است که زندگی بشر را متحول خواهد کرد. یک سیستم اینترنت اشیا مولفههای گوناگونی دارد و برای طرح ریزی و پیادهسازی آن، نیاز به کارشناسان حوزههای مختلفی است. یکی از ابزارهایی که برای پیادهسازی یک پروژه اینترنت اشیا در فازهای گوناگون مورد نیاز محسوب میشود، زبان برنامهنویسی است. از میان فهرست زبانهای برنامهنویسی مناسب اینترنت اشیا، زبان پایتون یکی از محبوبترین و بهترین گزینهها است. پایتون، یکی از زبانهای بسیار محبوب و پرکاربرد برای برنامهنویسی وب، سخت افزار و تحلیل داده است.
IoT نیز چیز متفاوت از موارد بیان شده را لازم ندارد؛ با این تفاوت که به کلیه این موارد به صورت یکجا نیاز دارد. زیرا در پروژههای اینترنت اشیا نیاز به بیسیمهای توکار با مصرف انرژی کم، وب فول استک، پردازش حجم بالای دادههای بیدرنگ بکاند، تحلیل دادهها (معمولا در دامنه بسیار خاصی) و انجام عملیات بر اساس خروجیهای حاصل شده است. به طور خاص، در صورت کار با رزبریپای، پایتون یک گزینه کلیدی محسوب میشود.
همچنین، میتوان از پایتون در بسیاری از بردهای توسعه استفاده کرد. این کار به انجام خودکارسازی کمک بیشتری میکند. از پایتون میتوان برای برقراری تعامل با پایگاه داده نیز استفاده کرد. بنابراین، در صورت فعالیت در حوزه اینترنت اشیا، پایتون حقیقتا یک گزینه عالی محسوب میشود. در بحث آموزش اینترنت اشیا با پایتون به افرادی که هیچ آشنایی اولیهای با پایتون ندارند توصیه میشود که ابتدا پایتون را بیاموزند و سپس به دنبال آموزش اینترنت اشیا با پایتون بروند. همچنین، منابع گوناگون آموزش ویدئویی به زبان فارسی برای آموزش اینترنت اشیا با پایتون ارائه شدهاند که در این مطلب، برخی از آن ها معرفی شدند.
سلام مطالب بسیار بسیار مفید بودن.
من بدنبال انتخاب کتابخانه مناسب از پایتون برای استفاده در پروتکل مدباس rtuکه روش ارتباط دیوایس هاست هستم. بطوریکه بتونم داده های اندازه گیری شده را از slave از طریق Master دریافت کنم و این ارتباط را همیشه بدون قطعی داشته باشم و دستوراتی برای کنترل دستگاه از طریق مستر به slave بدهم، مثلا اگر دمای اندازه گیری شده ااز مقدار استاندار بیشتر شده ، دستور خاموش شدن و در صورت افت دما دستور روشن شدن دستگاه را بدهم.
Master در اینجا یک رزپری پای و slave یک پمپ گرمایی است.
باتشکر
سلام ممنونم بابت مطالب
برای پیاده سازی اینترنت اشیا با بلاک چین با پایتون
اگر نخوایم از رزبری پای استفاده کنم
راه حل دیگه وجود دارد؟
ممنونم
با سلام؛
از همراهی شما با مجله فرادرس سپاسگزاریم. چنانکه در مطلب نیز بیان شده است، سختافزارهای گوناگونی برای اینترنت اشیا موجود هستند که کاربر بنا به نیاز خود میتواند از آنها استفاده کند. از مهمترین رقبای رزبریپای، آردوینو است؛ هرچند گزینههای دیگری نیز در این راستا قابل استفاده هستند.
ممنونم به خاطر مطالب مفیدتون
و این حجم از مطلب بی سابقه ست :))) 72 صفحه