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

سیستم مانیتورینگ دما و رطوبت با رزبری‌پای و سنسور DHT22

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

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

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

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

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

  • برد رزبری‌پای (Raspberry Pi)
  • سنسور دما و رطوبت DHT22
  • مقاومت (بین پین دیتا و تغذیه برای پول‌آپ)
  • کارت حافظه MicroSD
  • منبع تغذیه 5 ولت مناسب رزبری‌پای
  • سیم جامپر برای اتصالات
مرحله ۱

راه‌اندازی سخت‌افزار و اتصال سنسورها

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

نکته جالب اینه که دستت تو انتخاب پایه‌های GPIO کاملا بازه. من سنسورهام رو به پین‌های GPIO22 و GPIO23 وصل کردم. یادت نره که همه سنسورها به ولتاژ 3.3 ولت و اتصال زمین (Ground) نیاز دارن.

حتما باید یه مقاومت بین خط 3.3 ولت و پایه دیتای سنسور (GPIO) قرار بدی تا ارتباط دیتا پایدار بشه. وقتی مدارت کامل شد، باید بریم سراغ آماده‌سازی کارت حافظه برای سیستم‌عامل.

مرحله ۲

نصب سیستم‌عامل روی رزبری‌پای

برای سیستم‌عامل، نسخه Raspbian Lite بهترین گزینه است چون سبک و سریعه. فایل ایمیج این سیستم‌عامل رو دانلود کن و یه نرم‌افزار مثل Win32 Disk Imager رو هم روی کامپیوترت نصب کن تا بتونیم ایمیج رو روی کارت حافظه بریزیم.

نرم‌افزار Disk Imager رو باز کن، فایل ایمیجی که دانلود کردی رو انتخاب کن و مطمئن شو که درایو مربوط به کارت حافظه‌ت رو درست انتخاب کرده باشی. بعدش روی دکمه Write کلیک کن.

نرم‌افزار ازت می‌پرسه که آیا مطمئنی می‌خوای اطلاعات روی فلش پاک بشه؟ بعد از چک کردن درایو، تایید کن و منتظر بمون تا فرآیند رایت کردن تموم بشه.

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

مرحله ۳

تنظیمات اولیه برد رزبری‌پای

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

نام کاربری پیش‌فرض pi و رمز عبور raspberry هست. بعد از لاگین شدن، باید وارد ابزار تنظیمات بشیم. برای این کار دستور sudo raspi-config رو تایپ کن و اینتر بزن.

توی صفحه تنظیمات اول از همه رمز عبورت رو عوض کن تا امنیت سیستمت بالا بره. بعد برو به بخش Network options و اگه دوست داشتی اسم دستگاهت رو عوض کن. تو همین بخش اطلاعات شبکه وای‌فای (SSID و رمز) رو هم وارد کن تا برد به اینترنت وصل بشه.

مطمئن شو که تو بخش Boot Options، حالت ورود به محیط کنسول (Console) رو انتخاب کرده باشی چون به رابط گرافیکی نیازی نداریم.

تنظیمات منطقه زمانی و زبان کیبورد (Locale) رو هم می‌تونی بر اساس نیازت شخصی‌سازی کنی. یه قدم خیلی مهم اینه که بری تو بخش Interfacing Options و SSH رو فعال کنی. با این کار می‌تونی از طریق کامپیوترت به رزبری‌پای وصل بشی و دیگه نیازی به کیبورد و مانیتور مجزا نخواهی داشت.

در نهایت برو به بخش Advanced Options و گزینه Expand filesystem رو بزن تا از کل فضای کارت حافظه‌ت استفاده بشه. حالا از منو خارج شو و با دستور sudo reboot دستگاه رو ری‌استارت کن. کانفیگ اولیه تموم شد! حالا بریم ببینیم چطور باید از راه دور به رزبری‌پای وصل بشیم.

مرحله ۴

پیدا کردن آدرس آی‌پی رزبری‌پای

حالا که رزبری‌پای کانفیگ شده، باید با استفاده از نرم‌افزار PuTTY از روی کامپیوترت بهش وصل بشی. وقتی نرم‌افزار PuTTY رو باز می‌کنی، ازت آدرس IP رزبری‌پای رو می‌خواد. برای پیدا کردن این آدرس، تو محیط خط فرمان رزبری‌پای دستور ifconfig رو تایپ کن.

این دستور تمام آداپتورهای شبکه رو لیست می‌کنه. اگه با کابل شبکه وصل شده باشی، زیر بخش eth0 یه عبارتی مثل inet addr:xxx.xxx.xxx.xxx می‌بینی که همون آدرس آی‌پی دستگاهته. این آدرس رو یادداشت کن.

اگه تو مرحله قبل وای‌فای رو تنظیم کرده باشی، همین اطلاعات رو زیر بخش wlan0 می‌بینی. با وارد کردن هر کدوم از این آی‌پی‌ها تو نرم‌افزار PuTTY می‌تونی به برد وصل بشی.

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

مرحله ۵

تنظیم دستی شبکه وای‌فای (اختیاری)

اگه می‌خوای تنظیمات وای‌فای رو به صورت دستی وارد کنی، باید فایل پیکربندی شبکه رو ادیت کنی. دستور sudo nano /etc/wpa_supplicant/wpa_supplicant.conf رو وارد کن تا فایل باز بشه. حالا تو انتهای فایل بلوک مربوط به شبکه رو به این شکل اضافه کن و اسم و رمز وای‌فای خودت رو جایگزین کن:

network={ ssid="yourssid" psk="passwordtoyourwlan" } با زدن کلیدهای Ctrl+X فایل رو ذخیره کن و تأیید رو بزن. حالا با دستور sudo reboot سیستم رو ری‌استارت کن. بعد از بالا اومدن سیستم، دوباره دستور ifconfig رو بزن تا ببینی آداپتور wlan0 تونسته آدرس آی‌پی دریافت کنه یا نه.

مرحله ۶

اتصال از راه دور به رزبری‌پای

حالا که آدرس آی‌پی رو درآوردی، تو نرم‌افزار PuTTY آی‌پی رو وارد کن، پورت رو روی 22 بذار و دکمه Open رو بزن. اگه پیغام امنیتی دیدی تاییدش کن تا پنجره خط فرمان باز بشه.

نام کاربری و رمز عبورت رو وارد کن. به محض ورود موفق، دیگه هیچ نیازی به کیبورد و مانیتور متصل به رزبری‌پای نداری و می‌تونی اون‌ها رو جدا کنی. برای اینکه این کار رو ایمن انجام بدی، اول با دستور sudo shutdown -h now سیستم رو خاموش کن. کابل برق رو بکش، مانیتور رو جدا کن و دوباره برق رو وصل کن.

چند ثانیه صبر کن تا رزبری‌پای بوت بشه و دوباره با PuTTY بهش وصل شو. اگه بار اول خطای Timeout داد، یه مقدار بیشتر صبر کن و دوباره امتحان کن. یه نکته مهم: وقتی مودم خاموش و روشن بشه، ممکنه آی‌پی رزبری‌پای عوض بشه و نتونی پیداش کنی.

برای اینکه این مشکل پیش نیاد، بهتره آی‌پی استاتیک روی برد ست کنی یا از طریق تنظیمات مودمت، یه آی‌پی ثابت بهش اختصاص بدی.

اگه مودمت قابلیت Address Reservation داره، خیلی راحت با داشتن MAC آدرس رزبری‌پای می‌تونی همون آی‌پی فعلی رو براش رزرو کنی تا دیگه هیچ‌وقت عوض نشه. برای پیدا کردن MAC آدرس، همون دستور ifconfig رو بزن.

عبارتی که جلوی hwaddr نوشته شده رو کپی کن و تو تنظیمات مودمت وارد کن. تو هر مودمی جای این تنظیمات فرق می‌کنه ولی معمولا تو بخش تنظیمات DHCP می‌تونی پیداش کنی. حالا که ارتباط کاملا پایدار شد، بریم سراغ بخش اصلی پروژه.

مرحله ۷

نصب کتابخانه‌های سنسور DHT22

قبل از هر کاری باید مخازن نرم‌افزاری رزبری‌پای رو آپدیت کنی. دستور sudo apt-get update رو بزن و منتظر بمون تا لیست پکیج‌ها به‌روز بشه. بعدش با دستور sudo apt-get upgrade کل سیستم رو آپگرید کن. اگه پیغامی برای تأیید اومد، کلید Y رو فشار بده.

وقتی آپدیت‌ها تموم شد، باید کتابخونه پایتون Adafruit رو نصب کنیم. این کتابخونه کمک می‌کنه که اطلاعات سنسورهای DHT22 رو به راحتی بخونیم و مدارمون رو تست کنیم. اول ابزارهای پیش‌نیاز رو با دستور sudo apt-get install build-essential python-dev python-openssl نصب کن.

با دستور cd /home/pi برو به پوشه اصلی. از اونجایی که توی نسخه لایت گیت نصب نیست، باید با دستور sudo apt-get install git نصبش کنی. حالا مخزن کتابخونه رو با اجرای دستور git clone دانلود کن (لینک مخزن Adafruit Python DHT رو می‌تونی سرچ کنی).

وارد پوشه دانلود شده بشو: cd Adafruit_Python_DHT و در نهایت کتابخونه رو با دستور sudo python setup.py install نصب کن. حالا وقت تست سنسورهاست.

مرحله ۸

تست عملکرد سنسورها

حالا که نصب با موفقیت انجام شد، باید ببینیم سنسورها درست کار می‌کنن یا نه. برو به پوشه مثال‌های کتابخونه‌ای که دانلود کردی. مسیرش اینجاست: cd /home/pi/Adafruit_Python_DHT/examples یادت میاد سنسورها رو به کدوم پین‌ها وصل کردی؟ عالیه. حالا دستور sudo ./AdafruitDHT.py رو به همراه مدل سنسور و شماره پین اجرا کن.

مثلا من برای سنسور DHT22 که به پین 22 وصل شده این دستور رو می‌زنم: sudo ./AdafruitDHT.py 22 22 و برای پین بعدی sudo ./AdafruitDHT.py 22 23. اگه همه‌چیز درست باشه، دما و رطوبت رو روی صفحه می‌بینی. دقیقا مثل خروجی تصویری که گذاشتم.

اگه خطای Failed to get reading رو دیدی، چند بار دیگه دستور رو تکرار کن. اگه بازم جواب نداد، شماره پین GPIO رو دوباره چک کن. اگر شماره پین درست بود، اتصالات سخت‌افزاری رو بررسی کن؛ مطمئن شو پایه‌های مثبت، منفی و مقاومت درست وصل شدن. به عنوان راهکار بعدی، می‌تونی سنسور رو به یه پین دیگه وصل کنی و دوباره تست بگیری.

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

مرحله ۹

راه‌اندازی دیتابیس MySQL برای ذخیره داده‌ها

برای ذخیره اطلاعات نیاز به یه دیتابیس داریم. با دستور sudo apt-get install mysql-server python-mysqldb دیتابیس MariaDB/MySQL و افزونه پایتونش رو نصب کن. در حین نصب دیگه ازت رمز عبور کاربر Root پرسیده نمی‌شه و به صورت پیش‌فرض خالیه.

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

با دستور sudo mysql -u root -p -h localhost وارد کنسول شو. وقتی رمز خواست فقط اینتر بزن تا وارد محیط ماریا‌دی‌بی بشی. اول یه دیتابیس به اسم temperatures بساز: CREATE DATABASE temperatures; بعد با دستور زیر این دیتابیس رو انتخاب کن: USE temperatures;

حالا باید یه کاربر جدید برای دیتابیس بسازیم و بهش دسترسی بدیم. دستورهای زیر رو دونه‌دونه وارد کن و اینتر بزن (رمز عبور password رو به چیزی که دوست داری تغییر بده): CREATE USER 'logger'@'localhost' IDENTIFIED BY 'password'; و بعدش GRANT ALL PRIVILEGES ON temperatures.* TO 'logger'@'localhost'; و در نهایت FLUSH PRIVILEGES;

کاربر ساخته شد و دسترسی‌ها کامل شد. حالا با دستور quit از حساب Root خارج شو. دوباره با کاربر جدیدی که ساختی لاگین کن: sudo mysql -u logger -p -h localhost و رمزی که برای این کاربر در نظر گرفتی رو وارد کن.

حالا باید دو تا جدول (Table) بسازیم. یکی به اسم temperaturedata برای ثبت اطلاعات سنسور و یکی به اسم mailsendlog برای ثبت زمان ارسال ایمیل‌های هشدار.

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

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

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

البته خطاهایی مثل خونده نشدن سنسور همیشه بدون تأخیر ایمیل می‌شن چون نشون‌دهنده قطعی یا خرابی سیستم هستن. خب، بریم جداول رو بسازیم. اول دیتابیس رو انتخاب کن: USE temperatures;

حالا جدول داده‌های سنسور رو با این دستور ایجاد کن: CREATE TABLE temperaturedata (dateandtime DATETIME, sensor VARCHAR(32), temperature DOUBLE, humidity DOUBLE); و بعد جدول ثبت ایمیل‌ها رو بساز:

CREATE TABLE mailsendlog (mailsendtime DATETIME, triggedsensor VARCHAR(32), triggedlimit VARCHAR(10), lasttemperature VARCHAR(10)); برای اینکه مطمئن بشی جداول درست ساخته شدن دستور SELECT * FROM mailsendlog; و SELECT * FROM temperaturedata; رو وارد کن. اگه پیغام Empty Set داد یعنی همه‌چیز عالیه.

کارمون با دیتابیس تموم شد. با quit بیا بیرون و سرویس مای‌اس‌کیوال رو با دستور sudo /etc/init.d/mysql restart ری‌استارت کن. حالا زیرساخت پایگاه داده آماده‌ست و باید بریم سراغ کدهای پایتون تا اطلاعات رو بخونیم و تو این جداول ذخیره کنیم.

مرحله ۱۰

تنظیم اسکریپت دیتالاگر و هشدار ایمیلی

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

اما قبلش حتما فایل config.json و بکاپ‌های SQL رو یه جای امن کپی کن. اگه می‌خوای نسخه تمیز نصب کنی با cd /home/pi برو به روت.

و پوشه قدیمی رو با sudo rm -r DHT22-TemperatureLogger/ پاک کن تا بتونی مخزن رو دوباره کلون کنی. حواست باشه فایل کانفیگ قدیمی رو مستقیم روی نسخه جدید کپی نکنی چون ممکنه ساختارش عوض شده باشه. روش آپدیت از طریق خود گیت هم خیلی ساده‌ست. برو تو پوشه برنامه و با دستورات git fetch --all و git reset --hard فایل‌ها رو به آخرین نسخه همگام‌سازی کن.

برای دوستانی که بار اولشونه: اول مطمئن شو تو پوشه /home/pi/ هستی. مخزن برنامه لاگر رو کلون کن. با دستور ls می‌تونی پوشه جدید DHT22-TemperatureLogger رو ببینی.

حالا باید این برنامه رو با دیتابیسی که ساختی همگام کنیم. وارد پوشه دیتالاگر شو: cd /home/pi/DHT22-TemperatureLogger با دستور sudo nano config.json فایل تنظیمات رو باز کن. تو این فایل باید چند تا پارامتر مهم رو تنظیم کنیم.

بخش mysql: اطلاعات دیتابیس (نام کاربری، رمز عبور و اسم دیتابیس) که تو مرحله قبل ساختی رو اینجا وارد کن. بخش sensors: اینجا باید کانفیگ مربوط به هر سنسور رو جداگانه تعریف کنی. هر سنسور یه name می‌خواد، مثلا می‌تونی بذاری livingroom (پذیرایی) یا greenhouse. شماره پین GPIO رو هم جلوی هر سنسور وارد کن. بخش بعدی حد مجازها (Trigger limits) هستن.

تو قسمت SensorType عدد 22 رو نگه دار. (احتمالا برای DHT11 هم با تغییر این عدد جواب بگیری اما تستش به عهده خودته). قسمت‌های Temperature low و high برای تعیین کف و سقف دمای مجاز هستن.

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

پارامتر Threshold خیلی جالبه؛ این بخش تغییرات ناگهانی رو بررسی می‌کنه. مثلا اگه Threshold رو روی 5 تنظیم کنی و دمای فعلی 10 باشه، اگه تو اندازه‌گیری بعدی دما یهو بشه 0، سیستم می‌فهمه یه جای کار می‌لنگه و سریعا هشدار می‌ده چون تغییرات بیشتر از حد مجاز بوده. این قابلیت برای محیط‌هایی که افت و خیز ناگهانی دما توشون خطرناکه، خیلی کاربردیه.

یادت باشه می‌تونی بلوک سنسورها رو کپی کنی و برای سنسورهای دومت یا سومت هم تنظیمات جداگانه بنویسی. بخش mailInfo همون‌طور که از اسمش پیداست برای تنظیمات ایمیله.

پیشنهاد می‌کنم یه جیمیل جدید فقط برای این پروژه بسازی. آدرس ایمیل فرستنده رو تو Senderaddress و ایمیل گیرنده رو تو Receiveraddress بنویس.

Username و Password جیمیلت رو هم وارد کن. متن‌های پیش‌فرض subjectMessage و subjectWarning رو هم می‌تونی با توجه به سلیقه خودت برای عنوان ایمیل‌های عادی و ایمیل‌های هشدار تغییر بدی. بخش sqlBackupDump هم برای اینه که دیتابیست رو هر چند وقت یک‌بار بکاپ بگیره. اگه روی y تنظیمش کنی فعال می‌شه.

می‌تونی تو قسمت backupDay مشخص کنی کدوم روز هفته (1 تا 7) بکاپ گرفته بشه یا با گذاشتن عدد 0 پشتیبان‌گیری روزانه رو فعال کنی. مقدار backupHour زمان بکاپ‌گیری رو مشخص می‌کنه و backupDumpPath مسیریه که فایل‌ها توش ذخیره می‌شن.

هر بکاپ توی یه پوشه با اسم تاریخ همون روز ذخیره می‌شه؛ فقط یادت باشه هر چند وقت یک‌بار این فایل‌ها رو روی کامپیوترت کپی کنی که فضای رزبری‌پای پر نشه.

اگه دوست داری میانگین دمای هفتگی رو هم برات ایمیل کنه تا مطمئن بشی سیستم هنوز فعاله، بخش weeklyAveragesSendingEnabled رو روی y بذار. روز و ساعت ارسال این گزارش رو هم می‌تونی تو خط‌های بعدی شخصی‌سازی کنی. پارامتر useFahrenheits هم برای تغییر واحد به فارنهایته که ما همون n می‌ذاریم تا سلسیوس بمونه.

بخش mailSendingTimeoutInFullHours برای جلوگیری از اسپم شدنه. اگه 0 باشه، با هر خطایی یه ایمیل می‌فرسته، اما اعداد بالاتر باعث می‌شن فقط هر چند ساعت یک‌بار هشدار تکراری برات بیاد. اینطوری در مواقع بروز مشکل، صندوق ورودی ایمیلت منفجر نمی‌شه! در آخر بخش adafruitPath رو چک کن که مسیر کتابخونه‌ای باشه که تو مراحل قبل نصب کردی (مثل /home/pi/Adafruit_Python_DHT/).

وقتی تنظیماتت کامل شد، با Ctrl+x و زدن Y فایل رو ذخیره کن. حالا با دستور python DHT22logger.py اسکریپت رو اجرا کن تا ببینیم کار می‌کنه یا نه. اگه همه‌چیز درست باشه، رزبری‌پای دیتای سنسورها رو می‌خونه و مستقیم تو دیتابیس می‌نویسه.

اگه خطایی ندیدی، یعنی همه‌چیز عالیه. برای اطمینان بیشتر، با دستور sudo mysql -u logger -p -h localhost وارد کنسول دیتابیس شو.

بعد از وارد کردن رمز، دیتابیس رو با دستور use temperatures; انتخاب کن و با دستور select * from temperaturedata; چک کن که دیتاها وارد جدول شده باشن. بعد از بررسی با دستور quit خارج شو.

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

مرحله ۱۱

زمان‌بندی برای خواندن خودکار سنسورها

حالا که اسکریپت به درستی کار می‌کنه، باید کاری کنیم که این پروسه به صورت خودکار و منظم اجرا بشه. برای این کار از ابزار زمان‌بندی لینوکس یا همون کرون‌جاب (CronJob) استفاده می‌کنیم. تو خط فرمان دستور crontab -e رو تایپ کن.

اگه دفعه اولت باشه، ازت می‌خواد یه ویرایشگر متنی رو انتخاب کنی. گزینه 2 یعنی nano رو انتخاب کن تا فایل باز بشه. برو به انتهای فایل و خط زیر رو اضافه کن.

این دستور باعث می‌شه اسکریپت لاگر هر 15 دقیقه یک‌بار اجرا بشه: */15 * * * * python /home/pi/DHT22-TemperatureLogger/DHT22logger.py

فایل رو با Ctrl+x ذخیره کن و بیا بیرون. حالا 15 دقیقه صبر کن و دوباره دیتابیست رو چک کن تا ببینی رکوردهای جدید به صورت خودکار ثبت شدن یا نه. اگه آمار جدید وارد شده بود، یعنی دیتالاگرت داره به صورت مستقل کار می‌کنه!

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

مرحله ۱۲

نمایش اطلاعات روی مرورگر وب

اول با دستور sudo apt-get update لیست مخازن رو به‌روز کن. حالا باید وب‌سرور آپاچی (Apache2) و پکیج‌های PHP رو نصب کنیم تا بتونیم رابط کاربری تحت وبمون رو بسازیم.

با دستور sudo apt-get install apache2 php7.0 php7.0-mysql و بقیه اکستنشن‌های مورد نیاز PHP، این استک رو کامل نصب کن. وقتی نصب تموم شد، سرویس آپاچی رو با دستور sudo /etc/init.d/apache2 restart ری‌استارت کن تا وب‌سرور آماده کار بشه. حالا مرورگر کامپیوترت رو باز کن و آدرس آی‌پی رزبری‌پای رو توش بزن. باید صفحه پیش‌فرض آپاچی رو ببینی (دقیقا مثل عکسی که گذاشتم).

این یعنی سرورت سالمه! حالا باید این صفحه پیش‌فرض رو حذف کنیم و صفحه PHP خودمون رو جاش بذاریم که دیتاها رو از دیتابیس بخونه. با دستور cd /var/www/html/ برو به مسیر اصلی وب‌سرور و با دستور ls مطمئن شو فایل index.html اونجا هست. وقتی فایل رو دیدی، حالا باید یه فایل جدید برای کدهای PHP بسازیم. دستور sudo nano index.php رو بزن تا ویرایشگر باز بشه.

کدهای PHP مربوط به خوندن اطلاعات دیتابیس و نمایش جداول رو توی این فایل پیست کن. یادت نره که اطلاعات دیتابیست (یوزر و پسوورد) رو تو بخش اتصال به دیتابیس جایگزین کنی.

حتی می‌تونی متغیر hours رو تو کدها تغییر بدی تا مشخص کنی اطلاعات چند ساعت گذشته روی صفحه وب نشون داده بشه. وقتی کارت تموم شد فایل رو ذخیره کن.

حالا با دستور sudo rm index.html صفحه پیش‌فرض آپاچی رو پاک کن تا فایل PHP که ساختی جایگزینش بشه. یک‌بار دیگه آی‌پی رزبری‌پای رو تو مرورگر وارد کن.

بوم! حالا می‌تونی جدول دما و رطوبتت رو با جزئیات کامل روی وب ببینی. تو قدم آخر می‌خوایم کاری کنیم که این صفحه رو از هر جای دنیا روی اینترنت چک کنی.

مرحله ۱۳

دسترسی اینترنتی و حرف آخر

برای اینکه بتونی از بیرون شبکه خونت به این سرور وصل بشی، باید از سرویس‌های DDNS استفاده کنی. یه سرویس خیلی خوب برای این کار No-IP هست. برو به سایت این سرویس و یه حساب کاربری بساز.

یادت باشه اطلاعات حساب کاربریت رو برای مراحل بعد نگه داری. وقتی وارد پنل کاربریت شدی باید یه هاست (Host) جدید بسازی. گزینه Add a host رو بزن و یه اسم براش انتخاب کن.

مثلا اسمی مثل mylogger.ddns.net. وقتی این آدرس تنظیم بشه، هر جای دنیا که باشی با وارد کردن این اسم تو مرورگرت، مستقیم وصل می‌شی به رزبری‌پای تو خونه و دیگه نیازی نیست آی‌پی استاتیک بخری. تنظیمات رو با زدن دکمه Add host ذخیره کن.

حالا برگرد به ترمینال رزبری‌پای. یه پوشه با دستور mkdir /home/pi/noip بساز و با cd /home/pi/noip واردش شو. کلاینت نرم‌افزاری no-ip رو دانلود کن و با دستور tar vzxf فایل رو از حالت فشرده خارج کن.

وارد پوشه اکسترکت شده بشو. چون اسم پوشه بر اساس ورژن تغییر می‌کنه، کافیه تایپ کنی cd ./n و بعد کلید Tab رو بزنی تا اسم پوشه کامل بشه و اینتر کنی. حالا باید برنامه رو کامپایل و نصب کنی. دستور sudo make && sudo make install رو وارد کن.

تو مراحل نصب ازت نام کاربری و رمز اکانت No-IP رو می‌خواد؛ واردشون کن تا نرم‌افزار به اکانتت متصل بشه. حالا مرورگرت رو باز کن و اسمی که برای هاستت ساختی رو توش وارد کن.

می‌بینی که به راحتی صفحه مانیتورینگت باز می‌شه. حالا می‌تونی این داشبورد رو روی موبایلت هم داشته باشی و همه‌چیز رو از راه دور زیر نظر بگیری.

این سرویس عالی کار می‌کنه، فقط یادت باشه هر بار که رزبری‌پای ری‌استارت می‌شه باید کلاینت رو با دستور sudo /usr/local/bin/noip2 به صورت دستی اجرا کنی. البته با یه سرچ ساده می‌تونی راهکارهایی پیدا کنی که این دستور رو تو استارتاپ لینوکس قرار بدی تا خودش به صورت اتوماتیک اجرا بشه.

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

حتما نظرات و ایده‌هات رو برای توسعه این پروژه توی اپلیکیشن آیسی‌مدار برامون بنویس و عکس پروژه‌ت رو با بقیه به اشتراک بگذار. موفق باشی!

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

TXT index.php.txt
TXT index.php_2.txt
GZ noip-duc-linux.tar.gz

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

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

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

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

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

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