پروژه الکترونیکپروژه خانه هوشمندپروژه های اینترنت اشیاپروژه های رزبری پای

پروژه خانه هوشمند مبتنی بر اینترنت اشیا با رزبری پای

سلام. پروژه خانه هوشمند مبتنی بر اینترنت اشیا با رزبری پای را آماده کردیم.

کنترل وسایل منزل از اینترنت با Raspberry pi

یکی از ویژگی های خیلی خوب رزبری پای این است که به راحتی با پروژه های اینترنت اشیا و هوشمند سازی خانه هماهنگ میشود. در این پروژه Raspberry pi میخواهیم با استفاده از اینترنت ، وسایل برقی AC را از طریق دکمه های صفحه وب کنترل کنیم. با استفاده از این پروژه میتوانید وسایل منزل خود را از هر جای دنیا کنترل کنید. کنترل وسایل از طریق هر دستگاه هوشمند مثل موبایل ها، لپ تاپ ها و… قابل انجام است.

کنترل وسایل منزل از اینترنت با Raspberry pi

علاوه بر سیستم عامل Raspbian Jessie که بر روی raspberry pi کار می کند ، به فریم ورک WebIOPi و نرم افزار notepad++ نصب شده بر روی یک PC و همچنین نرم افزار Filezila برای کپی کردن فایل ها از لپ تاپ / کامپیوتر به برد رزبری پای نیاز داریم. همچنین برای این پروژه اتوماسیون خانگی نیازی به کد پایتون ندارید ، WebIOPi تمام کارها را انجام می دهد.

فیلم عملکرد پروژه در انتهای صفحه قرار داده شده است.

آماده سازی رزبری پای

بهتر است همیشه قبل از استفاده از رزبری پای، سیستم عامل آن را به آخرین نسخه بروز کنید. بخش آماده سازی شامل بروزرسانی Raspberry pi، نصب فریم ورک WebIOPi است. WebIOPi به ما در مدیریت ارتباط از صفحه وب به رزبری پای کمک میکند.

برای به روزرسانی رزبری پای از دستورات زیر استفاده میکنیم و سپس برد را راه اندازی مجدد میکنیم.

sudo apt-get update
sudo apt-get upgrade
sudo reboot

سپس ما باید فریمورک webIOPi را نصب کنیم.

اطمینان حاصل کنید که از home directory  استفاده می کنید؛

cd ~

از wget برای دریافت پرونده از صفحه منبع آن استفاده کنید.

wget http://sourceforge.net/projects/webiopi/files/WebIOPi-0.7.1.tar.gz

هنگامی که بارگیری انجام شد ، پرونده را استخراج کرده و وارد Directory شوید.

tar xvzf WebIOPi-0.7.1.tar.gz
cd WebIOPi-0.7.1/

در این مرحله قبل از راه اندازی ، باید یک پچ را نصب کنیم زیرا این نسخه از WebIOPi با تمشک pi 3 که من استفاده می کنم کار نمی کند و من نتوانستم نسخه ای از WebIOPi را پیدا کنم که به طور کامل با Pi 3 کار کند.

دستورات زیر برای نصب پچ در حالی که هنوز در directory فریم ورکWebIOPi قرار دارند ، اجرا می شوند.

wget https://raw.githubusercontent.com/doublebind/raspi/master/webiopi-pi2bplus.patch
patch -p1 -i webiopi-pi2bplus.patch

سپس می توانیم نصب را برای WebIOPi با دستور زیر آغاز کنیم.

sudo ./setup.sh

در صورت هرگونه پرسش ، Yes را انتخاب کنید و سپس برد رزبری پای را راه اندازی مجدد کنید.

اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید.
sudo reboot

تست نصب شدن WebIOPi

باید نصب WebIOPi خود را تست کنیم تا مطمئن شویم که همه چیز مطابق میلمان خوب عمل می کند.

دستور زیر را اجرا کنید؛

sudo webiopi -d -c /etc/webiopi/config

پس از صدور دستور فوق در pi ، مرورگر وب رایانه خود را که به raspberry pi متصل شده است به آدرس :

http://raspberrypi.mshome.net:8000

یا

http;//thepi’sIPaddress:8000

بروید. سپس نام کاربری و رمز عبور شما مطابق زیر است :

Username is webiopi
Password is raspberry

در صورتی که بخواهید میتوانید این مرحله را حذف کنید اما جهت جلوگیری از مزاحمت و بالابردن امنیت این مرحله بسیار مفید است.

پس از ورود به سیستم ، روی لینک GPIO Header کلیک کنید.

آماده سازی رزبری پای تست نصب شدن WebIOPi 

برای آزمایش ، ما یک LED را به GPIO 17 وصل می کنیم، بنابراین ادامه دهید و GPIO 17 را به عنوان یک خروجی تنظیم کنید.

کنترل پین های رزبری پای اینترنت اشیا

با این کار ، led را به Raspberry pi خود وصل کنید همانطور که در شماتیک زیر نشان داده شده است.

led به Raspberry pi

پس از اتصال ، به صفحه وب برگردید و روی دکمه pin 11 کلیک کنید تا LED روشن یا خاموش شود. به این ترتیب می توانیم پین های GPIO رزبری پای را در صفحه وب با استفاده از WebIOPi کنترل کنیم.

پس از تست، اگر همه چیز به به درستی انجام شده باشد، می توانیم به ترمینال برگردیم و برنامه را با استفاده از CTRL + C متوقف کنیم.

پس از تست موفقیت آمیز، به سراغ قسمت اصلی پروژه میرویم.

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

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

در اینجا ما تنظیمات پیش فرض سرویس WebIOPi را ویرایش می کنیم و کد خود را اضافه می کنیم تا هنگام فراخوانی اجرا شود. اولین کاری که ما انجام خواهیم داد این است که از filezilla یا نرم افزار کپی FTP / SCP نصب شده روی رایانه شخصی خود استفاده کنیم.

حتما ببینید :  آموزش ارتباط رادیویی آردوینو و رزبری پای با nRF24L01

قبل از شروع نوشتن کدهای اسکریپت html ، css و java برای این برنامه وب خانه هوشمند اینترنت اشیا و انتقال آنها به Raspberry Pi ، پوشه پروژه را ایجاد کنید و فایل ها را در آن قرار دهید.

مطمئن شوید که از Home Directory استفاده می کنید ، سپس پوشه را ایجاد کنید ، وارد پوشه ایجاد شده شوید و پوشه html را در آنجا ایجاد کنید:

cd ~
mkdir webapp
cd webapp
mkdir html

پوشه ای برای اسکریپت ها ، CSS و تصاویر درون پوشه html ایجاد کنید.

mkdir html/css
mkdir html/img
mkdir html/scripts

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

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

کد JavaScript صفحه وب

اولین قطعه کدی که ما خواهیم نوشت JavaScript است. این یک اسکریپت ساده برای برقراری ارتباط با سرویس WebIOPi است. ذکر این نکته حائز اهمیت است که برای این پروژه ، برنامه وب ما از چهار دکمه تشکیل شده است ، این بدان معناست که ما قصد داریم فقط چهار پین GPIO را کنترل کنیم.

 webiopi().ready(function() {
                        webiopi().setFunction(17,"out");
                        webiopi().setFunction(18,"out");
                        webiopi().setFunction(22,"out");
                        webiopi().setFunction(23,"out");
                        var content, button;
content = $("#content");
                       button = webiopi().createGPIOButton(17," Relay 1");
content.append(button);
                       button = webiopi().createGPIOButton(18,"Relay 2");
content.append(button);
                       button = webiopi().createGPIOButton(22,"Relay 3");
content.append(button);
                       button = webiopi().createGPIOButton(23,"Relay 4");
content.append(button);
                       });

کد بالا در صورت آماده شدن WebIOPi اجرا می شود.

در زیر کد JavaScript را توضیح داده ایم :

webiopi().ready(function():  این فقط به سیستم ما دستور می دهد تا این عملکرد را ایجاد کند و در صورت آماده شدن webiopi آن را اجرا کند.

webiopi().setFunction(23,”out”); این به ما کمک می کند تا به سرویس WebIOPi بگوییم که GPIO23 را به عنوان خروجی تنظیم کند. ما چهار دکمه در اینجا داریم ، اگر می خواهید دکمه های بیشتری را اجرا کنید ، می توانید تعداد بیشتری از آن را داشته باشید.

var content, button; این خط به سیستم ما می گوید که یک متغیر به نام Content ایجاد کرده و متغیر را به یک دکمه تبدیل کنیم.

content = $(“#content”);  متغیر محتوا در html و css ما استفاده می شود. بنابراین وقتی ما به #content مراجعه می کنیم ، فریم ورک WebIOPi همه چیز مرتبط با آن را ایجاد می کند.

button = webiopi().createGPIOButton(17,”Relay 1″); WebIOPi می تواند دکمه های مختلفی ایجاد کند. قطعه کد فوق به ما کمک می کند تا به سرویس WebIOPi بگوییم که یک دکمه GPIO ایجاد کند که پین ​​GPIO 17 کنترل کند.

content.append(button); این دکمه را برای دکمه ایجاد شده در پرونده html یا جاهای دیگر اضافه کنید. دکمه های بیشتری ایجاد می شود و همه این ویژگی ها یکسان است. این کد هنگام نوشتن CSS یا Script مفید است.

پس از ایجاد پرونده های JS ، آن را ذخیره می کنیم و با استفاده از filezilla در webapp/html/scripts کپی می کنیم.

کد CSS صفحه وب

CSS به ما كمک می كند تا صفحه وب اتوماسیون منازل IoT Raspberry Pi را زیبا کنیم.

در زیر ما کد CSS را توضیح داده ایم. توجه داشته باشید اسکریپت CSS بسیار بزرگ است بنابراین ما بخشی از آن را توضیح میدهیم. میتوانید فایل های پروژه را در انتهای صفحه دانلود کنید و برای کسب اطلاعات بیشتر این بخش را بخوانید.

بخش اول این اسکریپت ساختار بدنه برنامه وب است و در زیر نشان داده شده است.

 body {
         background-color:#ffffff; // رنگ پس زمینه
         background-image:url('/img/smart.png'); // تصویر پس زمینه
         background-repeat:no-repeat; // تکرار بکگراند
         background-position:center; // موقعیت بکگراند
         background-size:cover; // اندازه پس زمینه
         font: bold 18px/25px Arial, sans-serif; // فونت صفحه
         color:LightGray; // رنگ متن ها
     }

سپس ما کد CSS دکمه ها را مطابق با کد زیر مینویسیم :

button {
         display: block; // نحوه نمایش
         position: relative; // موقعیت قرار گیری
         margin: 10px; // فاصله بیرونی
         padding: 0 10px; // فاصله داخلی
         text-align: center; // موقعیت متن
         text-decoration: none; 
         width: 130px; // عرض
         height: 40px; // طول
         font: bold 18px/25px Arial, sans-serif;  color: black; // فونت
         text-shadow: 1px 1px 1px rgba(255,255,255, .22); // سایه متن
         -webkit-border-radius: 30px; // گردی گوشه های دکمه
          -moz-border-radius: 30px;
          border-radius: 30px;

کد بعدی کد برای سرویس WebIOPi است که به آن بگوید که این یک ورودی برای سرویس WebIOPi است.

input[type="range"] {
           display: block;
           width: 160px;
           height: 45px;
      }

آخرین کاری که می خواهیم انجام دهیم این است که وقتی دکمه را فشار داده اید به نوعی نشان دهید که دکمه فشار داده شده است.

#gpio17.LOW {
  background-color: Gray;
  color: Black;
             }
#gpio17.HIGH {
  background-color: Red;
  color: LightGray;
             }

خطوط کدهای بالا فقط بر اساس وضعیت فعلی آن ، رنگ دکمه را تغییر می دهند. وقتی دکمه خاموش است (LOW) رنگ پس زمینه دکمه خاکستری می شود تا غیرفعال آن را نشان دهد و هنگام روشن بودن آن (HIGH) رنگ پس زمینه دکمه قرمز شود.

حتما ببینید :  ساخت فاصله سنج التراسونیک بی سیم با STM32 و آردوینو

فایل CSS نهایی را با نام smarthome.css ذخیره کنید و سپس با استفاده از Filezila آن را به پوشه Styles در رزبری پای منتقل کنید.

کد HTML صفحه وب

کد html همه چیز را با هم ترکیب میکند.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <meta name="mobile-web-app-capable" content="yes">
        <meta name="viewport" content = "height = device-height, width = device-width, user-scalable = no" />
        <title>Smart Home</title>
        <script type="text/javascript" src="/webiopi.js"></script>
        <script type="text/javascript" src="/scripts/smarthome.js"></script>
        <link rel="stylesheet" type="text/css" href="/styles/smarthome.css">
        <link rel="shortcut icon" sizes="196x196" href="/img/smart.png" />
</head>
<body>
                        </br>
                        </br>
                        <div id="content" align="center"></div>
                        </br>
                        </br>
                        </br>
                        <p align="center">Push button; receive bacon</p>
                        </br>
                        </br>
</body>
</html>

در تگ head برخی از ویژگیهای بسیار مهم وجود دارد.

            <meta name="mobile-web-app-capable" content="yes"> 

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

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

<meta name="viewport" content = "height = device-height, width = device-width, user-scalable = no" /> 

خط بعدی عنوان صفحه در نوار بالایی مرورگر را تعیین میکند.

<title>Smart Home</title>

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

        <script type="text/javascript" src="/webiopi.js"></script>
        <script type="text/javascript" src="/scripts/smarthome.js"></script>
        <link rel="stylesheet" type="text/css" href="/styles/smarthome.css">
        <link rel="shortcut icon" sizes="196x196" href="/img/smart.png" />

ویرایش سرور WebIOPi برای خانه هوشمند

در این مرحله ، ما آماده هستیم تا برنامه های خود را ایجاد کنیم و برنامه وب خود را تست کنیم، اما قبل از آن باید فایل پیکربندی سرویس webiopi را ویرایش کنیم تا به این نکته اشاره شود که به جای فایل های پیکربندی که با آن همراه هستند، از داده های موجود در پوشه html خود استفاده کنیم.

برای ویرایش پیکربندی موارد زیر را با root اجرا کنید؛

sudo nano /etc/webiopi/config

در فایل config به دنبال بخش http باشید. بخشی شبیه به زیر را میبینید و باید با دستور زیر فایل HTML خود را جایگزین کنید.

doc-root = /home/pi/webapp/html

ذخیره کنید و خارج شوید. همچنین در صورت داشتن سرور دیگری میتوانید درگاه را از 8000 تغییر دهید.

توجه به این نکته مهم است که می توانید رمز عبور سرویس WebIOPi را با استفاده از دستور تغییر دهید.

sudo webiopi-passwd

این کار باعث می شود تا بتوانید با نام کاربری و رمزعبور جدیدی وارد شوید.

در آخر سرویس WebIOPi را با صدور دستور زیر اجرا کنید:

sudo /etc/init.d/webiopi start

وضعیت سرور را می توان با استفاده از دستور زیر بررسی کرد.

sudo /etc/init.d/webiopi status

با دستور زیر می توانید اجرای آن را متوقف کنید.

sudo /etc/init.d/webiopi stop

برای تنظیم WebIOPi برای راه اندازی در بوت ، از دستور زیر استفاده کنید.

sudo update-rc.d webiopi defaults

اگر می خواهید آن را متوقف کنید ، از دستور زیر استفاده کنید.

sudo update-rc.d webiopi remove

توضیحات شماتیک مدار

در نهایت با اتصال قطعات مدار مطابق با تصویر زیر ، کار پروژه تمام میشود.

پروژه اینترنت اشیا کنترل وسایل خانه با Raspberry pi

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

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

  1. رزبری پای 3 (یا هر نسخه دیگری)
  2. رله های 5v
  3. ترانزیستور 2n222
  4. دیودها
  5. LED
  6. لامپ AC
  7. مقاومت 220 یا 100 اهم

فیلم عملکرد پروژه

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

دانلود فیلم عملکرد پروژه کنترل وسایل با اینترنت اشیا رزبری پای

موارد موجود در فایل : شماتیک کامل مدار ، سورس کامل

برای دانلود فایل های پروژه ثبت نام کنید، تنها چند ثانیه زمان لازم است. از طریق فرم زیر اقدام کنید.

ایمیل خود را وارد کنید

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

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید را قرار دهم. (در خصوص سوال در مورد این مطلب از قسمت نظرات همین مطلب اقدام کنید)

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا
بستن
بستن