برنامه نویسی IoT
آموزش اینترنت اشیا با پایتون Python IoT گام به گام و به زبان ساده فرادرس مجله
میکروکنترلرها یا ریزکنترلگرها از جمله سختافزارهای مهمی هستند که در حوزه اینترنت اشیا مورد استفاده قرار میگیرند. آشنایی با میکروکنترلرها برای مهندسان اینترنت اشیا مسئلهای مهم و قابل توجه است. برای کسب اطلاعات بیشتر پیرامون دوره آموزش ویدئویی آموزش پایتون (Python) | برنامه نویسی پایتون مقدماتی و مشاهده پیشنمایشهایی از آن، کلیک کنید. پایتون یک زبان چند پاردایمی است که از پاردایمهای برنامهنویسی مهمی مانند «شیگرایی» (Object Oriented Programming) پشتیبانی میکند. همین امر موجب میشود تا مهندسان IoT بتوانند در صورت لزوم، در بخشهای مختلف یک پروژه به راحتی از پاردایمهای مختلف برنامهنویسی استفاده کنند.
یکی از کاربردهای جالب کتابخانه Sockets آن است که فرد میتواند پروتکلهای ارتباطی خودش را با استفاده از این بسته به عنوان مبنا، بسازد. این اقدامات میتوانند شامل ارسال یک پیام هشدار به صورت خودکار یا تنظیم خودکار حسگرها/دستگاهها بدون نیاز به انجام کاری از سوی کاربر باشند. اما اگر ورودی کاربر مورد نیاز باشد یا اگر کاربر تمایل داشته باشد که در شرایطهای خاص، شخصا موضوع را بررسی کند، رابط کاربری این امکان را برای او فراهم میکند. هرگونه تنظیم یا عملی که کاربر انجام میدهد، از طریق همان زیرساخت و فقط در جهت عکس، یعنی از رابط کاربری به ابر و از ابر به حسگرها/دستگاهها ارسال میشود تا نوعی از تغییرات را ایجاد کند. با وجود داغ بودن مبحث اینترنت اشیا و دنبال شدن آموزش اینترنت اشیا با پایتون توسط افراد زیادی، اغلب منابع موجود برای آموزش اینترنت اشیا با پایتون دارای محتوای کاملا فنی و سردرگم کننده هستند. بنابراین، برای بسیاری از افراد شفاف نیست که یک «راهکار اینترنت اشیا» (IoT Solutions) چگونه کار میکند.
این دستور اس کیو ال الکمی را به عنوان کتابخانه ORM و Flask-SQLAlchemy را برای ادغام آسانتر SQLAlchemy با فریم ورک Flask نصب میکند. کتابهای مرجعی مانند “Automate the Boring Stuff with Python” یا “Eloquent JavaScript” میتوانند برای یادگیری عمیقتر مفید باشند. این ویژگی باعث میشود که توسعهدهندگان بتوانند به سرعت ایدههای خود را به کد تبدیل کرده و پروژههای IoT را پیادهسازی کنند. این امر به ویژه در IoT که اغلب نیاز به توسعه سریع و پروتوتایپینگ دارد، بسیار مهم است. بخش عمدهای از این کار روی سرورها و دروازهها یا هابهایی که اطلاعات را جمع میکنند متمرکز شده و سپس آن را ذخیره میکند. هابها و سنسورهای هوشمند کوچکتر که لینوکس را اجرا میکنند معمولاً میتوانند Node.js.
Mraa [+] یک کتابخانه برای پین «ورودی خروجی همه منظوره» (General-Purpose Input/Output | GPIO) برای اغلب «کامپیوترهای تک بُرد» (Single Board Computers) است که از پایتون پشتیبانی میکند. نکته مثبت پیرامون این کتابخانه آن است که یک کتابخانه برای همه تجهیزات است. بنابراین، کاربر نیازی به استفاده از کتابخانههای متفاوت برای بردهای متفاوت شامل «اینتل ادیسون» (Intel Edison)، «رزبریپای» (Raspberry Pi) و دیگر موارد ندارد. Mraa یک کتابخانه سطح بالا است که با استفاده از آن میتوان خواندن/نوشتن از/روی پینها را تنها با یک خط کد انجام داد. کتابخانه Mraa از پروتکلهای ارتباطی مانند UART ،I2C و SPI نیز پشتیبانی میکند. در هر یک از گزینههای بیان شده در بالا، موازنهای بین مصرف برق، رنج و پهنای باند وجود دارد.
از سوی دیگر، C# زبان اصلی توسعه در محیط .NET است و برای ساخت برنامههای ویندوز و بازیهای ویدیویی با استفاده از Unity بسیار مناسب است. اگر به بازیسازی علاقهمند هستید، یادگیری این زبانها میتواند مسیر شما را هموار کند. برای شروع آموزش سی شارپ میتوانید از منابع متنوع موجود استفاده کنید. پایتون با سینتکس ساده و انعطافپذیری بالا، نقش مهمی در توسعه پروژههای اینترنت اشیا ایفا میکند. از کنترل دستگاههای کوچک و پردازش دادههای پیچیده تا ساخت سرورهای قدرتمند و پلتفرمهای ابری، پایتون به عنوان یک ابزار اصلی در دست توسعهدهندگان IoT مطرح است.
با دنبال کردن این مراحل، SQLite و SQLAlchemy به درستی نصب و پیکربندی شده و میتوانید از آنها برای مدیریت دادهها و تعامل با پایگاه داده در پروژههای Flask خود استفاده کنید. اگر ترجیح میدهید با راهنمایی مستقیم یاد بگیرید، شرکت در کلاسهای حضوری یا کارگاههای آموزشی میتواند انتخاب مناسبی باشد. سایتهای معتبری مانند freeCodeCamp و W3Schools منابع رایگانی برای یادگیری برنامهنویسی فراهم کردهاند. برخی توسعهدهندگان Raspberry Pi در مورد راهاندازی یک سیستم سرور کامل LAMP با Apache ، MySQL و PHP تحت لینوکس صحبت میکنند.یعنی با صرف امکانات سختافزاری و نرمافزاری کم میتوان یک سرور کامل تشکیل داد. این زبان ممکن است اولین انتخاب وبلاگ نویسان و نمونههای اولیه وبسایت باشد اما در IoT نیز به طرز شگفتآوری محبوب است. پس از زبانهای بزرگ و توابع آنها مانندC # ، PHP همان زبانی است که بیشترین استفاده توسط توسعهدهندگان در بررسی Eclipse داشته است.
بیشارپ به صورت تخصصی و منحصر به فرد برای اپلیکیشنهای کوچک توسعه داده شده است. این موضوع نیز از پشتیبانی EVM یا Embedded Virtual Machine از بیشارپ نشئت میگیرد. بعضی از IDEها از چندین زبان پشتیبانی میکنند، مانند GNU Emacs مبتنی بر زبان سی و Emacs Lisp و IntelliJ IDEA , اکلیپس، MyEclipse یا NetBeans، همه بر اساس جاوا، یا MonoDevel، مبتنی بر سیشارپ یا PlayCode. در سال 1995 Computerwoche اظهار داشت که استفاده یک IDE توسط توسعه دهندگان به خوبی مورد استقبال قرار نگرفته است زیرا این امر در خلاقیت آنها حکمر خواهد زد. همچنین به ساختار برنامهنویسی ساخت یافته از IBM (1974) مراجعه کنید.
حالا روی المنت بعدی یعنی Switch کلیک می کنیم ، Switch هم مانند المنت قبلی دارای خواص و تنظیماتی هست که می توانید آن ها را تغیر دهید . بخش مهم که با آن کار داریم Snap to pin است ، روی آن کلیک کنید و پایه D6 را انتخاب کنید . در این بخش از 2 المنت استفاده کردیم ، شما می توانید المنت های مختلفی رو به صفحه اضافه کنید . هر المنت دارای یک سری خواص و ویژگی های خاص هست که ممکن است با دیگری تفاوت داشته باشد . در صورتی که این آموزش برای شما مفید بود در بخش دیدگاه ها نظرت خود را بیان کنید تا آموزش استفاده از سایر المنت ها را در سایت قرار دهیم . در حال حاضر جاوا زبانی است که در زمینه IoT بسیار تاثیرگذار است، اما این موضوع بدان معنا نیست که میتواند برای تمام پروژههای IoT مفید باشد.
امروزه، دستگاههای اینترنت اشیا در اطراف همه انسانها وجود دارند و به طور دائم، ضمن گردآوری دادهها، آنها را انتقال میدهند و با دیگر دستگاههای اینترنت اشیا تعامل برقرار میکنند. هر دستگاه اینترنت اشیا اطلاعات را به صورت آنی ثبت و آن را برای انسانها یا دستگاههای دیگری ارسال میکند تا زندگی نوع بشر را امنتر، سلامتتر و کاراتر کنند. همانطور که ممکن بود این مورد را حدس بزنید باید بگویم که بدون زبان برنامهنویسی سی تقریبا بسیاری از چیزهای امروزی در دنیای کامپیوتر و توسعه نرم افزار وجود نداشت. باید بگویم که سی یک نقطه شروع به حساب میآید و محبوبترین زبان برنامهنویسی برای دستگاههای Embedded است. «اپل» (Apple) با در نظر داشتن نقش سوئیفت در بحث IoT، اقدام به توسعه چارچوبها و کتابخانههایی برای سوئیفت برای کار در پروژههای IoT کرده است.
همچنین یک صفحه وب و یا سخت افزار خاصی که خودمان طراحی می کنیم هم می تواند شامل وسیله هوشمند شود . خلاصه هر وسیله ای که در دست داریم و می توانیم سخت افزار خود را با آن کنترل کنیم . در صورت استفاده از گوشی، تبلت، لبتاب و کامپیوتر نیاز هست یک نرم افزار برای آن ها طراحی کنیم تا با سرور ارتباط برقرار کند و دستورات ما را به سرور ارسال کند . Rust زبان برنامهنویسی متن بازی است که توسط موزیلا توسعه داده شده است. Rust قادر به انجام کارهایی است که معمولا زبانهای برنامهنویسی دیگر به سادگی انجام نمیدهد.
در ادامه، منابع یادگیری زبان برنامه نویسی برای IoT و با تمرکز بر مبحث اینترنت اشیا و پروزههای عملی آن، معرفی شدهاند. هرگاه صحبت از زبانهای برنامهنویسی و به طور خاص برنامهنویسی سختافزاری میشود، نام زبان برنامهنویسی C در ذهن اغلب افراد نقش میبندد. C یکی از قدیمیترین و شناخته شدهترین زبانهای برنامهنویسی است که در بحث «سیستمهای توکار» (Embedded Systems) کاربردهای قابل توجهی دارد. پشتیبانی از زبانهای جایگزین اغلب توسط افزونهها ارائه میشود و به آنها امکان میدهد همزمان در همان IDE نصب شوند. به عنوان مثال، Flycheck یک برنامه مدرن چک کردن نحو در پرواز برای GNU Emacs 24 با پشتیبانی از ۳۹ زبان است.
ما در آموزش IoT به شما هر آن چه ساده و کاربری و مفید است را آموزش خواهیم داد. اگرچه اسمبلی در لیست زبانهای برنامهنویسی محبوب حضور ندارد اما گزینه بسیار خوبی برای توسعه اپلیکیشنهای IoT و همچنین کوچک نگه داشتن آن است. C++ علاوه بر آنکه یک راهکار بهینه برای اینترنت اشیا محسوب میشود، این قابلیت را نیز به کارشناس میدهد که زبانهای گوناگونی شامل #C، جاوا و پایتون را به کار بگیرد. IDE همیشه در محیطهای Mac OS و MacOS کلاسیک اپل محبوب بوده و قدمت آن به کارگاه برنامه نویسان Macintosh , Turbo Pascal , THINK Pascal و THINK C در اواسط دهه ۱۹۸۰ بازمیگردد. در حال حاضر برنامه نویسان macOS میتوانند بین IDEهای بومی مانند Xcode و ابزارهای منبع بازمانند Eclipse و Netbeans را انتخاب کنند. ActiveState Komodo یک IDE اختصاصی چند زبانه است که در macOS پشتیبانی میشود.
شناخت زبان های برنامه نویسی به شما کمک میکند برای هر بخش از زبان مناسبی برای این کار استفاده کنید. حال نوبت آن رسیده است که از بحث های تئوری خارج شویم و عملا پروژه های اینترنت اشیا را پیاده کنیم . اگر در اینترنت سرچ کنید مطالب زیادی درباره آموزش اینترنت اشیا موجود هست ولی هیچ کدام به صورت عملی و کامل وارد بحث نشده و صرفا کلیاتی بیان شده است . آموزش اینترنت اشیا با آردوینو آرائه خواهد شد و در برد های NodeMcu و سایر برد ها نیر قابل پیاده شدن است . در این مطلب، ۱۲ زبان برنامه نویسی برای IoT مورد بررسی قرار خواهد گرفت. رشد و توسعه اینترنت و تعدد دستگاههای هوشمند درسالهای اخیر، بشریت را به سمت داشتن دنیای کاملا متصل، به پیش میبرد.
در این بخش از آموزش اینترنت اشیا با پایتون کتابخانههای پایتونی که برای توسعه برنامههای اینترنت اشیا قابل استفاده هستند، معرفی میشوند. یادگیری کتابخانههای پایتون اینترنت اشیا یک گام مهم در آموزش اینترنت اشیا با پایتون محسوب میشود. پایتون یک زبان رایگان و متنباز است و همین امر موجب میشود تا کاربران بتوانند به سادگی از آن در پروژههای گوناگون تجاری و غیر تجاری اینترنت اشیا استفاده کنند. تعداد زیاد کتابخانههای موجود برای این زبان کمک میکند تا کاربر بتواند با کمترین تعداد خطوط کد و با بیشترین سرعت، کار خود را به پیش ببرد. در این بخش از مطلب آموزش اینترنت اشیا با پایتون به ویزگیهای پایتون و دلایل استفاده از این زبان برای اینترنت اشیا پرداخته شده است.
یکی از مولفههای اساسی و مهم در مبحث اینترنت اشیا، «اتصالات» (Connectivity) است. شبکههای انتقال داده از جمله مهمترین بخشها در بحث اتصالات هستند در ادامه، آموزشهای اینترنت اشیا با تمرکز بر بحث اتصالات و انتقال داده، معرفی شدهاند. محیطهای توسعه یکپارچه به منظور به حداکثر رساندن بهرهوری برنامهنویس با ارائه مؤلفههای گرهدار با رابطهای کاربری مشابه طراحی شدهاند. IDEها یک برنامه واحد ارائه میدهند که در آن تمام توسعهها انجام میشود. این برنامه بهطور معمول ویژگیهای بسیاری را برای نویسندگی، اصلاح، کامپایل، راهاندازی و اشکالزدایی نرمافزار ارائه میدهد.
اما چیزی که این تحول را ممکن کرده است، برنامهنویسی اینترنت اشیا با پایتون است. جاوا یا Java که معمولا آن را یک قهوه تلخ با شیرینی های متعدد تصور میکنند برای برنامه نویسی تکنولوژی اینترنت اشیا و دستگاههای آن کاملا کاربردی و قدرتمند است. به راحتی میتوان ویژگی دستگاه مجازی جاوا یا JVM را به هر تراشه ای که انتخاب کنید، اضافه کنید. به عنوان مثال از این قابلیت در موبایل های هوشمند و تبلت ها میتوان استفاده کرد. مزیت ماشین مجازی جاوا به کار گیری آن حتی در ماشین ها و تراشه های بسیار کوچک است که کار را بسیار راحت تر میکند و این زبان را محبوب تر نشان میدهد.
بهعنوان مثال، بیشتر مشارکت کنندگان در پایگاه داده PostgreSQL و GDB را مستقیماً برای ایجاد ویژگیهای جدید استفاده میکنند. حتی هنگام ساخت PostgreSQL برای Microsoft Windows با استفاده از Visual C ++، از اسکریپتهای Perl به جای اینکه به ویژگیهای IDE تکیه کنید، جایگزینی برای ساخت استفاده میشود. برخی از IDEهای لینوکس مانند Geany تلاش میکنند تا جلوی گرافیکی را برای عملیات ساخت سنتی ارائه دهند. در ادامه مطلب آموزش اینترنت اشیا با پایتون کتابخانههای پایتون برای اینترنت اشیا مورد بررسی قرار میگیرند. به طور خاص، یکی از زمینههایی که پایتون در آن بسیار قدرتمند و یکهتاز میادین محسوب میشود، «هوشمصنوعی» (Artificial Intelligence) و علم داده است.
پایتون دارای مجموعهای گسترده از کتابخانهها و ابزارها است که توسعهدهندگان IoT میتوانند از آنها بهره ببرند. کتابخانههایی مانند MicroPython و Zerynth به طور خاص برای برنامهنویسی دستگاههای کوچک و کممصرف طراحی شدهاند. این ابزارها به شما امکان میدهند تا به راحتی با سختافزارها ارتباط برقرار کنید و پروژههای IoT را به طور موثر مدیریت کنید. اینترنت اشیا یا Internet of Things (IoT) به شبکهای از دستگاهها، وسایل، و حسگرهای متصل به اینترنت اشاره دارد که قادر به جمعآوری و تبادل دادهها با یکدیگر هستند. اینترنت اشیا (IOT) به سرعت در حال تغییر دادن دنیای ماست، از خانههای هوشمند گرفته تا شهرهای هوشمند و صنایع خودکار. این فناوری که امکان ارتباط و کنترل دستگاهها از طریق اینترنت را فراهم میکند، به یکی از پایههای اصلی زندگی مدرن تبدیل شده است.
این پلتفرم بر پایه موتور V8 گوگل ساخته شده است که همان موتوری است که جاوا اسکریپت را در مرورگر کروم اجرا میکند. Node.js به دلیل معماری ناهمزمان (Asynchronous) و غیرمسدودکننده (Non-blocking)، به ویژه برای پروژه هایی که نیاز به مدیریت تعداد زیادی درخواست همزمان دارند، مناسب است. IoT نیز چیز متفاوت از موارد بیان شده را لازم ندارد؛ با این تفاوت که به کلیه این موارد به صورت یکجا نیاز دارد. زیرا در پروژههای اینترنت اشیا نیاز به بیسیمهای توکار با مصرف انرژی کم، وب فول استک، پردازش حجم بالای دادههای بیدرنگ بکاند، تحلیل دادهها (معمولا در دامنه بسیار خاصی) و انجام عملیات بر اساس خروجیهای حاصل شده است. به طور خاص، در صورت کار با رزبریپای، پایتون یک گزینه کلیدی محسوب میشود.
قسمت Indication شامل المان هایی هست که اطلاعات ورودی به گوشی را نمایش می دهد مثلا می توانیم LED ، نمودار خطی و زاویه ای ، امپر و … را به صفحه اضافه کنیم . در شکل بالا وسیله هوشمند که می تواند گوشی ، لبتاب ، تبلت و حتی یک صفحه وب باشد به یک سرور ابری متصل می شود . در سمت دیگر سخت که یک فن هوشمند است به همان سرور ابری وصل شده است . حالا سرور ابری وظیفه دارد بدون هیچ تاخیری ارتباط بین سخت افزار و وسیله هوشمند را برقرار کند . از نظر بسیاری جاوااسکریپت باعث شده که توسعه اپلیکیشنهای مختلف بسیار آسانتر از هر زمانی شود.
Swift به شما امکان میدهد اپلیکیشنهای کاربرپسند و پرسرعتی برای دستگاههای اپل ایجاد کنید. این زبان با ابزارهایی مانند Xcode ترکیب میشود تا فرآیند توسعه آسانتر و کارآمدتر شود. اگر هدف شما ورود به دنیای اپلیکیشنهای موبایل برای iPhone و iPad است، Swift بهترین انتخاب خواهد بود. سایت هایی مانند اینستاگرام، ردیت و موزیلا مبتنی بر این زبان برنامه نویسی ساخته شده اند. از مزایای اصلی پایتون می توان به قابلیت هایی نظیر خوانایی، جریان منطقی و استفاده از کتابخانه هایی برای انجام کارهای بیشتر با کد نویسی کمتر اشاره کرد. PHPoC (PHP on Chip) یک زبان برنامهنویسی و پلتفرم اینترنت اشیا (IoT) است که بر پایه زبان PHP توسعه یافته است.
به افرادی که هیچ آشنایی اولیه ای با زبان برنامهنویسی پایتون ندارند پیشنهاد میشود که ابتدا پایتون را بیاموزند و سپس، آموزش اینترنت اشیا با پایتون را دنبال کنند. از کاربردهای دیگر این زبان برنامه نویسی قوی و پایه میتوان به برنامه نویسی میکروکنتلرها اشاره کرد. این مزیت و کاربرد زبان برنامه نویسی C کار را برای بخش های سخت افزاری تکنولوژی اینترنت اشیا بسیار راحت کرده است. زبان C یک زبان سطح بالا محسوب میشود که برای کار با آن و نوشتن کد با آن نیاز به جدیت دارید. کاربرایی که علاوه بر الکترونیک و طراحی اپلیکیشن گوشی هوشمند ، می توانند برای سیستم عامل های مطرح مانند ویندوز و … نیز نرم افزار طراحی کنند و می توانند با پلتفرم های اینترنت اشیا ارتباط برقرار کنند .
برنامه نویسی صنعتی چیست