ورکشاپ آموزشی - آیسی مدار
رفتن به محتوا

ایستگاه هواشناسی اینترنتی با رزبری‌پای و مانیتور

ابزار و گجت
۰ نظر
۶۸ نفر
کد ۴۳۵۱

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

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

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

قطعات موردنیاز

  • برد رزبری‌پای (Raspberry Pi)
  • مانیتور HDMI (ترجیحا بدون قاب یا Open Frame)
  • آداپتور تغذیه 12 ولت
  • شارژر فندکی ماشین (برای تبدیل 12 ولت به 5 ولت)
  • کابل USB
  • ورق پلکسی‌گلاس برای ساخت قاب
  • کارت حافظه MicroSD
مرحله ۱

نسخه اولیه: چالش‌های مانیتور آنالوگ و قاب ساده

ایده اولیه این بود که از یه نمایشگر کوچیک کامپوزیت (مثل مانیتورهای دنده‌عقب ماشین) استفاده بشه. رزولوشن این مانیتورها معمولا پایینه و نمایش اطلاعات زیاد و خوانا روی اونا یه چالش اساسی محسوب می‌شه.

این نمایشگرها معمولا با ولتاژ 12 ولت کار می‌کردن، در حالی که رزبری‌پای برای روشن شدن به 5 ولت نیاز داره. برای حل این مشکل اختلاف ولتاژ، از یه ایده جالب و در دسترس استفاده کردیم: شارژر فندکی ماشین!

با استفاده از یه آداپتور دیواری 12 ولت، برق اصلی کل سیستم تامین می‌شه. این ولتاژ 12 ولت مستقیما به مانیتور وصل می‌شه تا انرژی لازم برای روشن شدنش رو فراهم کنه.

از طرف دیگه، همون ولتاژ 12 ولت وارد شارژر فندکی می‌شه تا به یه 5 ولت رگوله‌شده تبدیل بشه. تو این نسخه اولیه، خروجی این شارژر مستقیما با دو تا تکه سیم به رزبری‌پای لحیم شد؛ البته این روش لحیم‌کاری مستقیم خیلی اصولی و ایمن نیست.

در نهایت با وجود اینکه سیستم کار می‌کرد، اما کیفیت تصویر روی مانیتور آنالوگ اصلا راضی‌کننده نبود. متن‌ها تار بودن و خوانایی خوبی نداشتن. از طرفی قاب ساده‌ای که براش در نظر گرفته شده بود هم خیلی زود جذابیتش رو از دست داد و به همین خاطر رفتیم سراغ ارتقای پروژه.

مرحله ۲

نسخه نهایی: مانیتور HDMI و ساخت قاب لیزری

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

با استفاده از دستگاه برش لیزر، قطعات این قاب از ورق پلکسی‌گلاس نسبتا ضخیم بریده شد تا ظاهر فوق‌العاده حرفه‌ای و مقاومی به پروژه بده.

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

این مانیتور جدید هم با 12 ولت کار می‌کنه، پس همون ترفند شارژر فندکی رو دوباره پیاده کردیم. با این تفاوت که این بار به جای لحیم‌کاری مستقیم روی برد، از یه کابل USB برش‌خورده استفاده شد تا تغذیه رزبری‌پای خیلی اصولی‌تر تامین بشه.

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

مرحله ۳

راه‌اندازی نرم‌افزاری رزبری‌پای

نصب سیستم‌عامل و نرم‌افزارهای لازم روی رزبری‌پای اصلا کار سختی نیست. کل برنامه این پروژه با زبان پایتون نوشته شده و فقط باید یه ماژول اضافه به اسم pywapi رو روی برد نصب کنی. این کتابخونه قدرتمند

بهت کمک می‌کنه تا اطلاعات لحظه‌ای آب‌وهوا رو به راحتی از سرویس‌های آنلاین دریافت کنی. اول از همه باید سیستم‌عامل رو روی برد نصب کنی. این مراحل رو قدم‌به‌قدم انجام بده:

  1. آخرین نسخه سیستم‌عامل Raspbian رو دانلود کن و فایل ایمیج اون رو استخراج کن.
  2. فایل ایمیج رو با نرم‌افزارهای فلش کردن، روی یه کارت حافظه MicroSD رایت کن.
  3. کارت حافظه رو داخل رزبری‌پای بذار، کابل شبکه رو وصل کن و برد رو روشن کن.
  4. از طریق تنظیمات مودم، آی‌پی رزبری‌پای رو پیدا کن.
  5. با استفاده از SSH و وارد کردن نام کاربری و رمز عبور پیش‌فرض، به برد متصل شو.
  6. دستور raspi-config رو اجرا کن تا تنظیمات اولیه رو انجام بدی و برد رو روی حالت بوت اتوماتیک رابط کاربری گرافیکی تنظیم کنی.
  7. برای دسترسی راحت‌تر، VNC رو نصب کن تا بدون نیاز به مانیتور و کیبورد مجزا، بتونی از طریق کامپیوترت دسکتاپ رزبری‌پای رو ببینی.
  8. از طریق محیط گرافیکی، وای‌فای برد رو به شبکه متصل کن.
  9. حالا کابل شبکه رو جدا کن و برد رو ریستارت کن تا از این به بعد بی‌سیم بهش وصل بشی.

حالا باید ماژول pywapi رو دانلود و نصب کنیم. برای این کار مراحل زیر رو پیش ببر:

  1. فایل‌های مربوط به کتابخونه pywapi رو دانلود و تو یه پوشه جدید استخراج کن.
  2. این پوشه رو به مسیر اصلی (Home) رزبری‌پای منتقل کن.
  3. از طریق SSH وارد این پوشه شو و با دستورات پایتون، فایل setup.py رو بیلد (build) و اینستال (install) کن.

دو تا نکته خیلی مهم دیگه هم وجود داره که باید حتما روی برد تنظیم بشن:

  1. پکیج avahi-daemon رو نصب کن؛ اینطوری می‌تونی به جای عدد آی‌پی، با یه اسم دلخواه به برد متصل بشی و راحت‌تر تو شبکه پیداش می‌کنی.
  2. دوباره وارد تنظیمات raspi-config شو و منطقه زمانی (Timezone) خودت رو دقیق تنظیم کن. با این کار رزبری‌پای همیشه ساعت دقیق رو از اینترنت می‌گیره.
مرحله ۴

اجرای کدهای پایتون و نمایش اطلاعات

تمام کدهای این نمایشگر جذاب بر پایه پایتون و کتابخونه‌های PyGame و Pywapi نوشته شده که همگی متن‌باز و رایگان هستن. از PyGame برای طراحی کل رابط کاربری گرافیکی استفاده شده؛ یه ابزار فوق‌العاده که باعث می‌شه کل صفحه نمایش هر یک ثانیه یه بار رفرش و به‌روزرسانی بشه.

توی کدهای این پروژه، بخش‌هایی برای تغییر اندازه تصویر وجود داره. بسته به اینکه از چه سایز مانیتوری استفاده می‌کنی، می‌تونی بخش مربوط به اون رزولوشن رو از حالت کامنت خارج و فعال کنی. برای اجرای برنامه، کافیه پوشه کدهای پروژه رو وارد رزبری‌پای کنی و بعد با استفاده از SSH این دستورات رو بزنی:

  1. با دستور cd وارد پوشه کدها شو.
  2. دستور sudo python weather.py رو اجرا کن تا برنامه بالا بیاد.

استفاده از کلمه sudo ضروریه، چون پایتون برای دسترسی به پین‌های GPIO رزبری‌پای به دسترسی ادمین نیاز داره. وقتی مطمئن شدی که همه‌چیز درست کار می‌کنه، باید کاری کنی که برنامه با هر بار روشن شدن رزبری‌پای به‌طور خودکار اجرا بشه.

  1. با اجرای دستور sudo vi /etc/rc.local فایل تنظیمات استارت‌آپ رو باز کن.
  2. درست قبل از خط آخر که نوشته شده exit 0، مسیر کدهای پروژه و دستور اجرای پایتون رو اضافه کن.

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

یکی از ایده‌هایی که می‌تونی روی این سیستم پیاده کنی، اضافه کردن قابلیت کنترل لوازم خونه هست. مثلا زمان‌بندی روشن شدن چراغ‌های حیاط با تاریک شدن هوا. برای این کار می‌تونی از ماژول‌های رله یا کنترلرهای هوشمند استفاده کنی و با استفاده از پین‌های خروجی رزبری‌پای، بهشون فرمان بدی.

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

مثلا می‌تونی چند تا چراغ وضعیت مجازی طراحی کنی یا خروجی ماژول‌های رادیویی و سنسورهای دمای محیط داخل اتاق رو همونجا نمایش بدی. این پروژه یه نقطه شروع عالی برای ورود به دنیای اینترنت اشیا (IoT) و کار با رابط‌های گرافیکی تو سیستم‌عامل لینوکس محسوب می‌شه. با کمی خلاقیت، این ایستگاه هواشناسی می‌تونه به یه پنل مرکزی جذاب برای مدیریت کل خانه هوشمندت تبدیل بشه.

مرحله ۵

نتیجه‌گیری و توسعه‌های آینده

توی نسخه‌های به‌روزشده این کدها، قابلیت انتخاب بین واحدهای اندازه‌گیری متریک (مثل سانتی‌گراد) و امپریال اضافه شده تا بتونی دما رو همون‌طوری که راحت‌تری روی صفحه ببینی. به همین سادگی یه مانیتور بدون استفاده و یه برد رزبری‌پای رو به یه ایستگاه هواشناسی شیک و کاربردی تبدیل کردیم! خوبی این دست پروژه‌ها اینه که جای کار خیلی زیادی دارن.

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

فایل‌های پیوست

ZIP Weather.zip
PY weather.py
GZ pywapi-0.3.8.tar.gz

تو میتونی اولین سازنده باشی!

اگه پروژه رو ساختی به اشتراک بزار و اعتبار هدیه بگیر

این آموزش با استانداردهای اختصاصی آیسی‌مدار بازنویسی و بهینه‌سازی شده و تمامی حقوق انتشار آن متعلق به این مجموعه است و در صورت کپی یا بازنشر پیگرد قانونی خواهد داشت.

آموزش‌های مشابه

گفتگو‌های کاربران

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