آموزش اینترنت اشیا با پایتون (Python IoT) | گام به گام و به زبان ساده

اینترنت اشیا چیست؟
اینترنت اشیا صرفا به خانههای هوشمند محدود نمیشود و در طیف وسیعی از دستگاهها، صنایع و اکوسیستمها وجود دارد و قابل پیادهسازی است. امروزه، از «تخته سیاههای هوشمند» (Smart Board) موجود در مدارس گرفته تا تجهیزات پزشکی که میتوانند علائم بیماریهایی مانند پارکینسون را شناسایی کنند، جزئی از دنیای گسترده اینترنت اشیا محسوب میشوند. اینترنت اشیا، جهان را با متصل کردن دستگاههای فیزیکی و دیجیتال، هوشمندتر میکند. در یک نگاه اجمالی و کلنگر میتواند گفت که اینترنت اشیا به صورت زیر عمل میکند:
- دستگاهها در یک سیستم اینترنت اشیا، دارای سختافزارهایی مانند حسگرها هستند. از جمله فعالیتهای این حسگرها میتوان به گردآوری دادهها اشاره کرد. (مثال: حسگر میزان رطوبت و حسگر دما در گلخانه هوشمند)
- دادههای گردآوری شده توسط حسگرها، از طریق اتصالات و در واقع خطوط انتقال داده و با بهرهگیری از اینترنت، در «ابر» (Cloud) به اشتراک گذاشته میشوند. به بیان بهتر، دادههای گردآوری شده توسط حسگرها در ابر یکپارچه میشوند. (مثال: دادههای گردآوری شده از حسگرهای رطوبت، دما، فشار، نور و دیگر حسگرهای موجود در گلخانه در یک ابر گردآوری میشوند.)
- نرمافزار تحلیل داده، دادههای گردآوری و ذخیره شده در ابر را تحلیل و اطلاعات و دانش حاصل شده از آن را با استفاده از یک برنامه کاربردی یا وبسایت به کاربر انتقال میدهد تا تصمیمسازی کند و یا بر اساس این دانش حاصل شده، به صورت خودکار تصمیمی را اتخاذ میکند.
- تصمیم اتخاذ شده توسط کاربر یا تصمیمی که به صورت خودکار گرفته شده است، به سیستم IoT ارسال میشود. بر این اساس، «محرکها/عملگرها» (Actuators) که نقش عاملهای اجرایی را در یک سیستم IoT دارند، عمل میکنند.

پس در یک تعریف کلی و ساده در پاسخ به این پرسش که «اینترنت اشیا چیست؟»، باید گفت:
اینترنت اشیا، سیستمی از دستگاههای محاسباتی، ماشینهای مکانیکی و دیجیتال، حیوانات یا انسانهایی است که دارای شناساگرهای یکتا و تواناییهایی برای انتقال دادهها در یک شبکه، بدون نیاز به تعاملات انسان به انسان یا انسان با کامپیوتر هستند.
در بخش بعدی از مطلب آموزش اینترنت اشیا با پایتون به سیستم اینترنت اشیا و مولفههای آن پرداخته شده است.
سیستم اینترنت اشیا و مولفههای آن
در این بخش از مطلب آموزش اینترنت اشیا با پایتون سیستم اینترنت اشیا و مولفههای آن مورد بررسی قرار میگیرد. هر چند ریشه اینترنت اشیا به اوایل سال ۱۹۸۲ میلادی و زمانی باز میگردد که اولین دستگاه متصل به اینترنت فروش خودکار کوکاکولا توسط «دانشگاه کارنگی ملون» (Carnegie Mellon University) معرفی شد، اما به باور دانشمندان و غولهای فناوری اطلاعات، مبحث اینترنت اشیا (IoT) در میان سالهای ۲۰۰۸ تا ۲۰۰۹ متولد شده است.
با وجود داغ بودن مبحث اینترنت اشیا و دنبال شدن آموزش اینترنت اشیا با پایتون توسط افراد زیادی، اغلب منابع موجود برای آموزش اینترنت اشیا با پایتون دارای محتوای کاملا فنی و سردرگم کننده هستند. بنابراین، برای بسیاری از افراد شفاف نیست که یک «راهکار اینترنت اشیا» (IoT Solutions) چگونه کار میکند.
بنابراین، در ادامه مطلب آموزش اینترنت اشیا با پایتون چیستی یک «سیستم اینترنت اشیا» (IoT System) و چگونگی کارکرد آن تشریح میشود. نکتهای که باید پیش از ورود به بحث اصلی به آن توجه داشت این است که راهکارهای اینترنت اشیا بر اساس کاربرد و فناوریهای زیرساختی مورد استفاده برای آنها اغلب بسیار متفاوت از یکدیگر هستند؛ اما آنچه در ادامه بیان میشود، میتواند یک چشمانداز کلی و فاقد مباحث و اصطلاحات فنی و پیچیده را از اینترنت اشیا ارائه کند. یک راهکار اینترنت اشیا، از چهار «مولفه» (Component) متمایز تشکیل شده است. این مولفهها عبارتند از:
- حسگرها/دستگاهها (Sensors/Devices)
- اتصالات (Connectivity)
- پردازشهای داده (Data Processing)
- رابط کاربری (User Interfaces)

در ادامه مطلب آموزش اینترنت اشیا با پایتون هر یک از چهار مولفه بیان شده در بالا، توضیح داده شدهاند.
حسگرها/دستگاهها
در این بخش از مطلب آموزش اینترنت اشیا با پایتون به مبحث حسگرها/دستگاهها پرداخته شده است. میتوان گفت که در یک سیستم اینترنت اشیا، حسگرها/دستگاهها در جایگاه و گام اول قرار دارند. حسگرها یا دستگاهها، دادهها را از محیط گردآوری (Data Collecting) میکنند. این کار میتواند به سادگی خواندن درجه حرارت یا به پیچیدگی ثبت یک خوراک ویدئویی کامل باشد. دلیل استفاده از عبارت ترکیبی حسگرها/دستگاهها آن است که چندین حسگر میتوانند به یکدیگر متصل شوند و یا میتوانند بخشی از یک دستگاه باشند که کاری بیش از حس کردن (Sensing) انجام میدهد.

- سنسور و ترانسدیوسر در مهندسی برق — به زبان ساده
- سنسور فشار — از صفر تا صد
- سنسور موقعیت — از صفر تا صد
- سنسور دما — به زبان ساده
- سنسور نور چیست؟ — از صفر تا صد
- سنسور مجاورتی — راهنمای جامع
- فلومتر (Flowmeter) – از صفر تا صد
- دماسنج مقاومتی – به زبان ساده
- سنسور اثر هال و کاربردهای آن — به زبان ساده (+ دانلود فیلم آموزش رایگان)
اتصالات

- رایانش ابری (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) — بخش ششم: پروتکلهای اختصاصی اینترنت اشیا
پردازش دادهها

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

اگرچه، این کار یک خیابان یک طرفه نیست. بسته به کاربرد اینترنت اشیا، کاربر ممکن است قادر به انجام اقدام/اقداماتی باشد و با دستورات خود، راهکار را متاثر کند. برای مثال، کاربر ممکن است از راه دور، دمای سردخانه را با استفاده از اپلیکیشن موجود در تلفن همراه خود، تنظیم کند. برخی از اقدامات نیز ممکن است به صورت خودکار توسط سیستم انجام شوند. برای مثال، بدون آنکه سیستم صبر کند تا کاربر درجه حرارت را تنظیم کند، میتواند این کار را با بهرهگیری از قوانین از پیش تعریف شدهای انجام دهد. در مثال مربوط به دوربینهای امنیتی نیز سیستم میتواند به صورت خودکار با ارسال هشدار، مسئولین مرتبط (پلیس یا در سازمانها و ادارات، نگهبانی و حراست) را با خبر کند. برای مطالعه بیشتر پیرامون رپشهای بصریسازی، مطالعه مطالب زیر پیشنهاد میشود.
- اینفوگرافیک چیست و چه فرقی با بصریسازی دادهها دارد؟
- هیستوگرام (Histogram) و نمودارهای چگالی — راهنمای بصری سازی دادههای تکبُعدی در پایتون
- بوکه (Bokeh) — از صفر تا صد
ساز و کار یک سیستم اینترنت اشیا
در این بخش از مطلب آموزش اینترنت اشیا با پایتون ساز و کار یک سیستم اینترنت اشیا به صورت کلی تشریح میشود. چنانکه پیش از این بیان شد، یک راهکار اینترنت اشیا شامل حسگرها/دستگاههایی است که از طریق برخی از انواع اتصالات، با ابر تعامل میکنند. هنگامی که دادهها به ابر میروند، نرمافزاری آنها را پردازش میکند و بر اساس نتیجه پردازشها، تصمیم میگیرد که چه اقدامی/اقداماتی را انجام دهد.
این اقدامات میتوانند شامل ارسال یک پیام هشدار به صورت خودکار یا تنظیم خودکار حسگرها/دستگاهها بدون نیاز به انجام کاری از سوی کاربر باشند. اما اگر ورودی کاربر مورد نیاز باشد یا اگر کاربر تمایل داشته باشد که در شرایطهای خاص، شخصا موضوع را بررسی کند، رابط کاربری این امکان را برای او فراهم میکند. هرگونه تنظیم یا عملی که کاربر انجام میدهد، از طریق همان زیرساخت و فقط در جهت عکس، یعنی از رابط کاربری به ابر و از ابر به حسگرها/دستگاهها ارسال میشود تا نوعی از تغییرات را ایجاد کند.
سختافزارهای اینترنت اشیا
سختافزارهای اینترنت اشیا یکی از مباحث مهم ضمن آموزش اینترنت اشیا با پایتون محسوب میشوند. بنابراین در این بخش از مطلب آموزش اینترنت اشیا با پایتون به طور اجمالی به آنها پرداخته شده است. سختافزارهای گوناگونی در حوزه اینترنت اشیا کاربرد دارند. از جمله این سختافزارها میتوان به «کامپیوترهای تک بردی» (Single Board Computers) یا «مینیکامپیوترها» (Mini Computers) اشاره کرد.

«رزبریپای» (Raspberry Pi) و «آردوینو» (Arduino) از جمله محبوبترین کامپیوترهای تکبردی هستند که در حوزه اینترنت اشیا کاربردهای بسیار زیادی دارند. از پایتون میتوان برای کدنویسی برای این مینیکامپیوترها استفاده کرد. برای مطالعه بیشتر پیرامون این موارد، مطالب زیر پیشنهاد میشوند.
- رزبری پای — هر آنچه باید در مورد این رایانه کوچک بدانید — بخش اول
- رزبری پای — هر آنچه باید در مورد این رایانه کوچک بدانید — بخش دوم
- آشنایی با برد آردوینو — بخش اول: معرفی و کاربردها
- آشنایی با برد آردوینو — بخش دوم: معرفی انواع برد و ویجتها
برنامهنویسی اینترنت اشیا
- توسعه استانداردهای جدید ارتباطی در شبکه اینترنت اشیا
- کاهش هزینههای یکپارچهسازی حسگرهای هوشمند
- مدیریت مصرف انرژی
این موارد، طراحی و تست دستگاههای اینترنت اشیا را پیچیده میکند؛ زیرا توسعهدهندگان باید دائما فناوریهای نوآورانه را به منظور ساخت و پیادهسازی سریع و موفقیتآمیز اینترنت اشیا دنبال کنند و از آنها آگاه باشند. بنابراین، شرکتهای توسعه برنامههای کاربردی اینترنت اشیا معمولا فناوریهای موجود را تحلیل و راهکارهای وجود را برای کشف آنکه کدام فناوریهای برای پروژههای اینترنت اشیا مناسبتر هستند، بررسی میکنند.

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

- رایگان (Free)
- متنباز (OpenSource)
- سطح بالا (High Level)
- همه منظوره (General Purpose)
- چند پارادایمی (Multi-Paradigm)
- چند سکویی (Cross-Platform)
- مفسری (Interpreted Language)
اینترنت اشیا با پایتون
رایگان و متنباز بودن پایتون و نقش آن در کاربرد پایتون برای اینترنت اشیا
سطح بالا بودن پایتون و اهمیت آن در آموزش اینترنت اشیا با پایتون
اینترنت اشیا به خودی خود مبحث پیچیدهای محسوب میشود. در صورت استفاده از یک زبان برنامهنویسی پیچیده با ساختار و نحو غیر شفاف و خوانایی کم، این مشکل بیش از پیش برجسته میشود. زبان پایتون ساده است و به راحتی میتوان کار توسعه و استقرار نرمافزار را با استفاده از آن انجام داد. کدهای نوشته شده به زبان پایتون دارای خوانایی بالایی هستند. یادگیری پایتون آسان، استفاده از آن بسیار گسترده و پشتیبانی از آن مستحکم است.
همه منظوره بودن پایتون و تاثیر آن بر اینترنت اشیا با پایتون
پایتون یک «زبان برنامهنویسی همهمنظوره» (General Purpose Programming Language) است که در زمینههای مختلف از برنامهنویسی علمی و محاسباتی گرفته تا برنامهنویسی وب، موبایل، ساخت بازیهای کامپیوتری، برنامهنویسی «سیستمهای توکار» و دیگر موارد کاربرد دارد. همین موارد موجب میشود تا بتوان از پایتون برای مولفههای گوناگون اینترنت اشیا از بحث برنامهنویسی سختافزاری، اتصالات و پردازش داده گرفته تا رابط کاربری استفاده کرد. داشتن شاهکلیدی که بتوان با آن همه قفلها را باز کرد، در پروژههای فناوری اطلاعات بسیار مهم است و پایتون در حوزه اینترنت اشیا میتواند نقش همین شاهکلید را ایفا کند.
به طور خاص، یکی از زمینههایی که پایتون در آن بسیار قدرتمند و یکهتاز میادین محسوب میشود، «هوشمصنوعی» (Artificial Intelligence) و علم داده است. از همین رو، پایتون یک زبان ایدهآل برای برنامههای کاربردی دادهمحور محسوب میشود. بنابراین، پایتون برای مولفه پردازش دادهها در اینترنت اشیا نیز گزینهای مناسب و شاید بیاغراق بتوان گفت که بهترین گزینه ممکن است. در واقع، پایتون گزینه ایدهآلی برای بخش تحلیل داده در سیستمهای اینترنت اشیا محسوب میشود.

چند پاردایمی بودن پایتون و اهمیت آن برای اینترنت اشیا
چند سکویی بودن پایتون و کاربرد آن در اینترنت اشیا
پایتون یک زبان چندسکویی است. همین امر موجب میشود تا بتوان به راحتی آن را روی پلتفرمهای مختلف سختافزاری و نرمافزاری استفاده و اجرا کرد. همین ویژگی موجب کاهش بسیاری از دغدغههای کاربر ضمن انجام پروژه چه در حوزه IoT و چه در دیگر زمینهها میشود.
مفسری بودن پایتون و نقش آن در اینترنت اشیا
پایتون یک زبان مفسری است و این یعنی کاربر میتواند یک برنامه را فورا پس از ایجاد تغییرات در فایلهای آن، اجرا کند. این امر منجر به آن میشود که نهاییسازی، پردازش و خطایابی برنامهها بسیار سریعتر از دیگر زبانهای برنامهنویسی انجام شود. برای مثال، برخی از «میکروکنترلرها» (Microcontroller | ریزکنترلگر) پیادهسازیهای خاصی از پایتون را دارند و البته مفسر خود پایتون نیز در اغلب پلتفرمهای نرمافزاری مانند مک و لینوکس به صورت پیشفرض نصب است.
مزایای کلیدی پایتون برای اینترنت اشیا
در این بخش از مطلب آموزش اینترنت اشیا با پایتون به مزایای کلیدی پایتون برای اینترنت اشیا پرداخته شده است. بسیاری از کارشناسان امروزه پایتون را به عنوان بهترین و خواستنیترین زبان برنامهنویسی با طراحی خوب و نحو ساده معرفی میکنند؛ این ویژگیها موجب میشود که پایتون هم برای توسعهدهندگان اینترنت اشیا با تجربه و هم تازهکارها، ابزاری جذاب باشد. مزایای کلیدی پایتون به طور کلی عبارتند از:
شروع به کار آسان: ساختار ویژه این زبان و حجم انبوه مولفههان کمکی آن، به کاربر کمک میکند تا پایتون را به سادگی بفهمد. شخصی که با مبانی برنامهنویسی آشنا باشد، طی تنها سی دقیقه میتواند شروع به نوشتن اسکریپتهای پایتون کند. پایتون، کار برنامهنویسی را ساده و جذاب میکند.
طراحی خوب: پایتون شامل اغلب گرایشهای برنامهنویسی نوین میشود و آنها را به کار میگیرد. علاوه بر آن، این زبان به صورت پویا توسعه پیدا میکند؛ یعنی ساختارهای جدیدی که مقرر میشود به زبان اضافه شوند، در زبان به خوبی عیبیابی شدهاند و در عین حال، افزودن پاردایمهای برنامهنویسی گوناگون به این زبان همچنان ادامه دارد. این کارها، در عین داشتن سازگاری رو به عقب و ثبات داخلی در زبان پایتون، انجام میشود.
نحو با خوانایی ساده (در مقایسه با C++، پرل و PHP): پایتون این امکان را فراهم میکند که کاربر کدهای نوشته شده توسط دیگران را به راحتی بخواند و کدهایی که طی بلند مدت نوشته شدهاند را درک کند.

کتابخانههای متعدد و متنوع: تعداد قابل توجهی کتابخانه برای حوزههای گوناگون از برنامهنویسی سختتافزاری و وب گرفته تا محاسبات علمی، هوش مصنوعی و بصریسازی دادهها برای پایتون وجود دارد.
قابلیت حمل: پایتون تحت همه سیستمعاملهای محبوب و متداول و انواع گوناگون معماریها شامل ویندوز، لینوکس، مکاواس و حتی مینیکامپیوترهای آردوینو پیادهسازی شده است. سیستم وابستگیها در پایتون به خوبی مورد بررسی قرار گرفته و توسعه برنامههای کاربردی با این زبان روی ماشینهای گوناگون کاری ساده و آسان است.
ارزیابی: توسعه نرمافزار با پایتون به کاربران این قابلیت را میدهد که هر قطعه از کد را پس از آنکه توسط مفسر پایتون تفسیر شد، ارزیابی کنند. در زبانهای کامپایلری کاربر تنها این امکان را دارد که برنامه را به طور کامل بنویسد و کامپایل کند؛ سپس آن را از جهت داشتن خطا بررسی کند.
انعطافپذیری: با توجه به آنکه پایتون ابزار قدرتمندی محسوب میشود که در اختیار کاربر قرار گرفته است، برنامهنویسهای پایتون الزامی به پایبندی به پارادایم برنامهنویسی خاصی ندارند. پایتون دارای نحو شفاف و سازگاری است. در عین حال، دارای ماژولاریتی و مقیاسپذیری فکر شدهای است که کد منبع برنامه نوشته شده در پایتون را خواناتر میکند.
در ادامه مطلب آموزش اینترنت اشیا با پایتون کتابخانههای پایتون برای اینترنت اشیا مورد بررسی قرار میگیرند.
کتابخانههای پایتون برای اینترنت اشیا
در این بخش از آموزش اینترنت اشیا با پایتون کتابخانههای پایتونی که برای توسعه برنامههای اینترنت اشیا قابل استفاده هستند، معرفی میشوند. یادگیری کتابخانههای پایتون اینترنت اشیا یک گام مهم در آموزش اینترنت اشیا با پایتون محسوب میشود.
Mraa
Sockets
Mysqldb

Numpy

Matplotlib

Pandas
Opencv

Tkinter
Tkinter کتابخانه پایتون برای توسعه «رابط کاربری گرافیکی» (Graphical User Interface | GUI) است که همراه با همه نسخههای پایتون عرضه میشود. با استفاده از این کتابخانه میتوان هر جنبهای از اسکریپت پایتون را با استفاده از رابط کاربری گرافیکی کنترل کرد. این قابلیت در شرایطهایی مانند تست کارکرد یا اجرای مکرر یک کد، بسیار مفید است.

Tensorflow
Requests

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) باز و فایل نوتپد از آنجا باز شود.



۳. برنامه باید اجرا شود.

اکنون میتوان برنامه کاربردی را در گوشی هوشمند باز کرد و به ماژول بلوتوث متصل شد. در این وهله به راحتی میتوان از گوشی به عنوان یک موس استفاده کرد. کد آردوینو برای این پروژه آموزش اینترنت اشیا با پایتون، در ادامه آمده است.
منابع آموزش اینترنت اشیا با پایتون
در ادامه، منابع آموزش اینترنت اشیا با پایتون معرفی میشوند. به افرادی که هیچ آشنایی اولیه ای با زبان برنامهنویسی پایتون ندارند پیشنهاد میشود که ابتدا پایتون را بیاموزند و سپس، آموزش اینترنت اشیا با پایتون را دنبال کنند.
آموزش پایتون (Python) | برنامه نویسی پایتون مقدماتی
آموزش برنامه نویسی پایتون – تکمیلی

آموزش اینترنت اشیا – مقدماتی
طول مدت این دوره آموزشی که مدرس آن مهندس مرضیه آقایی هستند، یک ساعت و سی و شش دقیقه است. در این دوره، مباحث مقدماتی اینترنت اشیا مورد بررسی قرار گرفته است. از جمله موضوعات مورد بررسی در این دوره آموزش ویدئویی میتوان به معرفی اینترنت اشیا، تاریخچه و چالشهای پیادهسازی آن، مدل مرجع اینترنت اشیا و فناوریهای اساسی درگیر، چشماندازها، تاثیرات و حوزههای کاربرد و دیگر موارد اشاره کرد.
آموزش اینترنت اشیا – پیشرفته
طول مدت این دوره آموزشی که مدرس آن مهندس مرضیه آقایی هستند، چهار ساعت و سی و پنج دقیقه است. در این دوره، مباحث پیشرفته اینترنت اشیا مورد بررسی قرار گرفته است. از جمله موضوعات مورد بررسی در این دوره آموزش ویدئویی میتوان به معرفی سختافزارها و نرمافزارهای این حوزه، الکترونیک اینترنت اشیا، نرمافزارهای این حوزه، سنسورها و لوازم جانبی، 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) با ۴ زبان برنامه نویسی (مدرس دوره: مهندس مجتبی شادریان، طول مدت دوره: یازده ساعت و ۵۴ دقیقه)
جمعبندی
اینترنت اشیا یکی از موضوعات داغ روز است که زندگی بشر را متحول خواهد کرد. یک سیستم اینترنت اشیا مولفههای گوناگونی دارد و برای طرح ریزی و پیادهسازی آن، نیاز به کارشناسان حوزههای مختلفی است. یکی از ابزارهایی که برای پیادهسازی یک پروژه اینترنت اشیا در فازهای گوناگون مورد نیاز محسوب میشود، زبان برنامهنویسی است. از میان فهرست زبانهای برنامهنویسی مناسب اینترنت اشیا، زبان پایتون یکی از محبوبترین و بهترین گزینهها است. پایتون، یکی از زبانهای بسیار محبوب و پرکاربرد برای برنامهنویسی وب، سخت افزار و تحلیل داده است.
IoT نیز چیز متفاوت از موارد بیان شده را لازم ندارد؛ با این تفاوت که به کلیه این موارد به صورت یکجا نیاز دارد. زیرا در پروژههای اینترنت اشیا نیاز به بیسیمهای توکار با مصرف انرژی کم، وب فول استک، پردازش حجم بالای دادههای بیدرنگ بکاند، تحلیل دادهها (معمولا در دامنه بسیار خاصی) و انجام عملیات بر اساس خروجیهای حاصل شده است. به طور خاص، در صورت کار با رزبریپای، پایتون یک گزینه کلیدی محسوب میشود.
همچنین، میتوان از پایتون در بسیاری از بردهای توسعه استفاده کرد. این کار به انجام خودکارسازی کمک بیشتری میکند. از پایتون میتوان برای برقراری تعامل با پایگاه داده نیز استفاده کرد. بنابراین، در صورت فعالیت در حوزه اینترنت اشیا، پایتون حقیقتا یک گزینه عالی محسوب میشود. در بحث آموزش اینترنت اشیا با پایتون به افرادی که هیچ آشنایی اولیهای با پایتون ندارند توصیه میشود که ابتدا پایتون را بیاموزند و سپس به دنبال آموزش اینترنت اشیا با پایتون بروند. همچنین، منابع گوناگون آموزش ویدئویی به زبان فارسی برای آموزش اینترنت اشیا با پایتون ارائه شدهاند که در این مطلب، برخی از آن ها معرفی شدند.
مطالب مجله فرادرس را در جستجوی گوگل سریعتر ببینید













سلام مطالب بسیار بسیار مفید بودن.
من بدنبال انتخاب کتابخانه مناسب از پایتون برای استفاده در پروتکل مدباس rtuکه روش ارتباط دیوایس هاست هستم. بطوریکه بتونم داده های اندازه گیری شده را از slave از طریق Master دریافت کنم و این ارتباط را همیشه بدون قطعی داشته باشم و دستوراتی برای کنترل دستگاه از طریق مستر به slave بدهم، مثلا اگر دمای اندازه گیری شده ااز مقدار استاندار بیشتر شده ، دستور خاموش شدن و در صورت افت دما دستور روشن شدن دستگاه را بدهم.
Master در اینجا یک رزپری پای و slave یک پمپ گرمایی است.
باتشکر
سلام ممنونم بابت مطالب
برای پیاده سازی اینترنت اشیا با بلاک چین با پایتون
اگر نخوایم از رزبری پای استفاده کنم
راه حل دیگه وجود دارد؟
ممنونم
با سلام؛
از همراهی شما با مجله فرادرس سپاسگزاریم. چنانکه در مطلب نیز بیان شده است، سختافزارهای گوناگونی برای اینترنت اشیا موجود هستند که کاربر بنا به نیاز خود میتواند از آنها استفاده کند. از مهمترین رقبای رزبریپای، آردوینو است؛ هرچند گزینههای دیگری نیز در این راستا قابل استفاده هستند.
ممنونم به خاطر مطالب مفیدتون
و این حجم از مطلب بی سابقه ست :))) 72 صفحه