مانیتورینگ دما و رطوبت با رزبریپای و اینترنت اشیا (IoT)
اینترنت اشیا یا همون IoT الان دیگه همهجا هست و چی بهتر از اینکه خودمون دست به کار بشیم و اولین پروژه اینترنت اشیای خودمون رو بسازیم؟ تو این آموزش میخوایم یه ایستگاه هواشناسی کوچیک درست کنیم که دما، رطوبت و وضعیت نور محیط رو میخونه و دادههاش رو به صورت آنلاین روی پلتفرم Thingspeak میفرسته. این یعنی از هر جای دنیا میتونی اطلاعات سنسورهای اتاقت رو لحظهبهلحظه چک کنی.
برای ساخت این پروژه از یه برد رزبریپای به عنوان پردازنده اصلی، یه سنسور دمای DHT11 و یه مقاومت نوری استفاده میکنیم. خبر خوب اینه که کل مدار قراره روی یه بردبورد بسته بشه؛ پس هیچ نیازی به لحیمکاری یا طراحی فیبر مدار چاپی نداری. ما تو تیم آیسیمدار همیشه سعی میکنیم قدمهای ورود به دنیای اینترنت اشیا رو برات ساده و لذتبخش کنیم تا با کمترین دردسر بهترین نتیجه رو بگیری. پس وسایلت رو آماده کن تا بریم سراغ ساخت این پروژه هیجانانگیز!
لیست قطعات مورد نیاز
حالا بریم سراغ قطعاتی که برای ساخت این سیستم نیاز داریم. همونطور که گفتیم، مدار کاملا روی بردبورد پیاده میشه و فعلا کاری با هویه و لحیم نداریم.
برای شروع به یه برد رزبریپای (ترجیحا نسخه 2 یا بالاتر) به همراه یه کارت حافظه میکرو اسدی که سیستمعامل رزبین روش نصب شده باشه، نیاز داری. یه کابل و آداپتور یواسبی هم برای تأمین برق برد لازم داری.
برای بخش الکترونیکی کار، یه بردبورد و چند تا سیم جامپر تهیه کن. قطعات اصلی مدار هم شامل دو عدد سنسور دما و رطوبت DHT11، دو تا مقاومت 10 کیلواهم، دو تا مقاومت نوری (فتوسل) و در نهایت دو تا خازن 1 میکروفاراد میشه. همه اینها رو روی میز کارت بچین تا بریم مرحله بعد.
آمادهسازی برد رزبریپای
اگه هنوز سیستمعامل رزبین رو روی کارت حافظه رزبریپای نصب نکردی، اول این کار رو انجام بده و برد رو روشن کن. وقتی رزبریپای بالا اومد، باید بستر نرمافزاری رو برای ارتباط پایتون با پینهای ورودی/خروجی (GPIO) آماده کنیم. این پینها در واقع پل ارتباطی بین برد ما و سنسور DHT11 یا فتوسل هستن تا رزبریپای بتونه دنیای بیرون رو حس کنه.
به صورت پیشفرض، همه کتابخونههایی که برای اجرای این پروژه نیاز داریم روی رزبین نصب نیستن. برای اینکه پایتون بتونه دیتای سنسورها رو بخونه، باید دو تا کتابخونه مهم رو دانلود و نصب کنی: یکی کتابخونه کنترل پینهای GPIO و یکی هم کتابخونه مخصوص سنسور DHT11. این کتابخونهها رو میتونی به راحتی با چند تا دستور ساده تو محیط ترمینال رزبریپای نصب کنی تا سیستم آماده برنامهنویسی بشه.
بعد از نصب کتابخونه پایه، حتما یادت نره که پکیج اختصاصی سنسور DHT11 رو هم اضافه کنی تا کدهامون بدون ارور اجرا بشن.
آشنایی با پینهای GPIO در رزبریپای
عبارت GPIO مخفف پایههای ورودی و خروجی همهمنظورهست. این پینها روی برد رزبریپای، رابط فیزیکی بین دنیای نرمافزار و سختافزارهای بیرونی مثل سنسورها هستن. برای ارتباط با سنسور دما و فتوسل باید دقیقا بدونیم از کدوم پینها استفاده کنیم.
نسخههای قدیمیتر رزبریپای 26 تا پین داشتن، اما تو نسخههای جدیدتر این تعداد به 40 تا رسیده؛ البته جای نگرانی نیست، چون همون 26 پین اول توی همه نسخهها ترتیب کاملا یکسانی دارن.
وقتی به نقشه پینهای رزبریپای نگاه میکنی، میبینی که هر پین چند تا اسم مختلف داره. یه اسم مربوط به شماره فیزیکی پین روی برده (از 1 تا 40) و یه اسم دیگه بر اساس استاندارد GPIO یا نامگذاری پردازنده تعیین میشه. ما تو کدهای پایتون این پروژه، برای سادگی کار از همون استاندارد نامگذاری GPIO استفاده میکنیم.
یکی از رایجترین اشتباهات توی پروژههای رزبریپای، وصل کردن سنسور به پین اشتباهه؛ پس حتما دقت کن که شماره پین تو کد دقیقا با پین فیزیکی که سنسور رو بهش وصل کردی همخونی داشته باشه.
بستن مدار روی بردبورد
حالا رسیدیم به بخش شیرین بستن مدار! اول از همه حواست باشه که رزبریپای کاملا خاموش باشه و کابل برقش رو جدا کرده باشی. یه اتصال کوتاه کوچیک میتونه برد ارزشمندت رو بسوزونه، پس با دقت پیش برو و قبل از روشن کردن، همهچیز رو دو بار چک کن.
برای وصل کردن پینهای رزبریپای به بردبورد، بهترین کار استفاده از سیمهای جامپر ماده به نره. سر ماده به پینهای برد و سر نر به سوراخهای بردبورد وصل میشه.
برای تغذیه سنسورها از پین شماره 1 رزبریپای (که ولتاژ 3.3 ولت میده) و پین گراند (GND) استفاده میکنیم. تحت هیچ شرایطی سراغ پین 5 ولت نرو! سنسور DHT11 چهار تا پایه داره که ترتیبشون به این شکله: پایه 1 تغذیه مثبت، پایه 2 دیتای سنسور، پایه 3 بدون استفاده و پایه 4 هم منفی یا همون گراند.
- پایه شماره 1 سنسور رو به خط 3.3 ولت وصل کن.
- پایه شماره 2 سنسور رو به پین 16 رزبریپای (یا همون GPIO 23) متصل کن و یه مقاومت 4.7 یا 10 کیلواهم بین پایه 1 و 2 قرار بده تا خط دیتا پایدار بشه.
- پایه شماره 4 سنسور هم باید مستقیم به گراند (GND) وصل بشه.
سنسور فتوسل یا همون مقاومت نوری هم کلا دو تا پایه داره:
- یکی از پایههای فتوسل رو مستقیم به خط 3.3 ولت روی بردبورد وصل کن.
- اون یکی پایه فتوسل رو به پین 18 رزبریپای (یا همون GPIO 24) متصل کن.
- یه خازن 1 میکروفاراد بردار و پایه مثبتش رو به همون پین GPIO 24 متصل کن. پایه منفی خازن (که معمولا با نوار سفید مشخص شده) رو هم به گراند مدار بزن.
بعد از انجام این اتصالات، یه بار دیگه نقشه شماتیک و عکسها رو با مدار خودت مطابقت بده تا خیالت راحت بشه.
تنظیمات پلتفرم Thingspeak برای دریافت دادهها
کد پایتونی که قراره بنویسیم، مقادیر دما، رطوبت و نور رو از سنسورها میخونه و اونا رو برای پلتفرم Thingspeak میفرسته. برای شروع کار، یه سر به سایت Thingspeak بزن.
یه اکانت رایگان بساز یا اگه از قبل حساب داری وارد شو. بعد برو به قسمت کانالهای من و روی گزینه ساخت کانال جدید کلیک کن. یه اسم دلخواه برای کانالت انتخاب کن و فیلدهای لازم برای دادهها رو بساز.
دقت کن که ترتیب این فیلدها خیلی مهمه، چون موقع ارسال دیتا از طریق کد پایتون باید دقیقا همین ترتیب رو رعایت کنیم تا اطلاعات جابهجا ثبت نشن. میتونی کانالت رو به صورت عمومی یا خصوصی تنظیم کنی؛ این موضوع کلا سلیقهایه و تأثیری روی کارکرد کد ما نداره.
در نهایت چیزی که بهش نیاز داریم، یه کلید اختصاصی به اسم Write API Key هست. این کلید رو یه جا کپی کن چون برای نوشتن دیتا توی کانال صددرصد بهش نیاز داریم.
کدنویسی با پایتون در محیط IDLE
پایتون زبان فوقالعادهایه که هم برای افراد مبتدی خیلی ساده و مفهومیه و هم برای برنامهنویسهای حرفهای به شدت قدرتمنده. بیدلیل نیست که پایتون انتخاب اول اکثر پروژههای رزبریپایه. توی سیستمعامل رزبریپای، دو نسخه پایتون 2 و 3 از قبل نصب شده که ما پروژهمون رو بر پایه پایتون 3 مینویسیم.
شاید بپرسی چرا پایتون 3؟ چون پایتون 2 دیگه قدیمی شده و آینده این زبان به طور کامل روی نسخههای 3 به بالا متمرکز شده. اگه دوست داری پایتون رو بهتر یاد بگیری، منابع آنلاین خیلی زیادی هست که میتونی ازشون استفاده کنی. اما فعلا بریم سراغ اجرای محیط کدنویسی توی خود برد.
برای نوشتن کدها، از محیط توسعه پیشفرض پایتون به اسم IDLE استفاده میکنیم. این محیط یه ویرایشگر متن هوشمنده که دستورات پایتون رو تشخیص میده.
توی این محیط دستورات رنگی میشن و اگه تو نوشتن ساختار کد اشتباهی کنی، بهت اخطار میده. برای باز کردنش کافیه از منوی اصلی رزبریپای، بخش برنامهنویسی رو باز کنی و روی پایتون 3 کلیک کنی.
وقتی برنامه باز شد، از منوی فایل گزینه New رو بزن تا یه صفحه خالی و جدید باز بشه. حالا قبل از اینکه کدی بنویسیم، بیا فایلت رو ذخیره کنیم.
دوباره از منوی فایل روی Save کلیک کن و اسمش رو بذار myfirstIOT.py و ترجیحا توی همون مسیر پیشفرض کاربر (یعنی پوشه pi) ذخیرهاش کن. یادت نره که حتما پسوند .py رو خودت آخر اسم فایل تایپ کنی.
اضافه کردن کدهای اینترنت اشیا
تو این مرحله باید کدهای پروژه رو وارد اون فایلی که ساختی بکنی. بعد از اینکه کدها رو کپی کردی، یه کار خیلی مهم مونده که باید انجام بدی. تو خطوط اول کد، باید دنبال خطی بگردی که متغیر myAPI توش تعریف شده.
اون کلید اختصاصی که تو مرحله قبل از سایت Thingspeak کپی کرده بودی رو دقیقا جلوی این متغیر قرار بده تا سرور بتونه دیتا رو به کانال خودت بفرسته. فایلت رو ذخیره کن تا بریم برای اجرا!
راهاندازی و نتیجهگیری پروژه
وقتشه که موتور اینترنت اشیای خودمون رو روشن کنیم! برنامه ترمینال (LXTerminal) رو تو رزبریپای باز کن. قاعدتا باید توی همون مسیری باشی که فایلت رو ذخیره کردی.
برای اطمینان میتونی دستور LS رو تایپ کنی تا لیست فایلها رو ببینی و مطمئن بشی فایلت اونجاست. از اونجایی که خوندن اطلاعات از پینهای GPIO نیاز به دسترسی ادمین داره، باید کدت رو با این دستور اجرا کنی: sudo python myfirstIOT.py
اگه همهچیز رو درست انجام داده باشی، تو صفحه ترمینال آدرس سایت به همراه کلید API و بعدش مقدار دما، رطوبت و وضعیت نور رو میبینی. حالا برو تو سایت Thingspeak و کانالت رو چک کن؛ نمودارها دارن با دادههای واقعی سنسور اتاقت آپدیت میشن! به همین راحتی اولین سیستم مبتنی بر اینترنت اشیای خودت رو ساختی.
این تازه اول راهه و با کنار هم گذاشتن سختافزارها و نرمافزارهای مختلف، میتونی پروژههای خیلی پیچیدهتری رو خلق کنی. امیدوارم از این آموزش حسابی لذت برده باشی. حتما اپلیکیشن آیسیمدار رو نصب کن و عکس پروژهای که ساختی رو اونجا با بقیه به اشتراک بذار. موفق باشی!
فایلهای پیوست
تو میتونی اولین سازنده باشی!
اگه پروژه رو ساختی به اشتراک بزار و اعتبار هدیه بگیر
این آموزش با استانداردهای اختصاصی آیسیمدار بازنویسی و بهینهسازی شده و تمامی حقوق انتشار آن متعلق به این مجموعه است و در صورت کپی یا بازنشر پیگرد قانونی خواهد داشت.












































گفتگوهای کاربران
هنوز نظری ثبت نشده؛ تو شروع کن!
هنوز نظری ثبت نشده؛ تو شروع کن!