معرفی:
پروژه Home Automation Framework یک برنامه کاربردی وب است که می تواند از راه دور دستگاه های الکترونیکی در خانه را با استفاده از یک رابط وب در تلفن هوشمند، تبلت یا رایانه رومیزی کنترل کند. این پروژه سهولت دسترسی و کنترل از راه دور دستگاه های الکترونیکی را برای افرادی که مشغول هستند، دارای معلولیت هستند یا از نظر فیزیکی در محل دستگاه قرار ندارند، تسهیل می کند. نمونههایی از این دستگاههای الکترونیکی ممکن است شامل چراغها، دوربینهای امنیتی، چفتهای برقی درب، تلویزیون و رایانه باشد.
نمونه اولیه ما از Raspberry Pi کوچک و ارزان به عنوان ایستگاه پایه استفاده می کند که به صورت بی سیم با ماژول های واقع در اطراف خانه ارتباط برقرار می کند. RPi به اینترنت متصل است و یک وب سرور آپاچی را اجرا می کند. وب سرور دسترسی به یک رابط HTML/CSS با دکمه هایی را برای کاربر فراهم می کند تا آنها را فشار دهد.
با فشار دادن این دکمه ها دستورات AJAX به یک اسکریپت پایتون در RPi ارسال می شود، که سپس به صورت بی سیم برای روشن/خاموش کردن یک پریز یا باز و بسته کردن پرده های پنجره ارتباط برقرار می کند.
در حال حاضر RPi با استفاده از یک محصول تجاری موجود که ما آن را برای نمونه اولیه خود اصلاح کرده ایم، با ماژول های خروجی ارتباط برقرار می کند، اما این جزء بعداً با سخت افزار سفارشی خودمان جایگزین خواهد شد. پرده ها با استفاده از نسخه اولیه سخت افزار بی سیم جدید ما کنترل می شوند که از ماژول بی سیم nRF24L01+ و ATtiny85 استفاده می کند. یکی از موانع بعدی پروژه ما، ساخت مداری برای ارائه برق 5 ولت و 3.3 ولت DC از یک پریز دیواری 120 ولت AC است. این باید بسیار کوچک باشد و در ماژول های خروجی ما استفاده می شود.
شرح اجزای اصلی
سرور: Raspberry Pi به اینترنت متصل است و یک وب سرور آپاچی را اجرا می کند که فایل های HTML و CSS را برای ایجاد رابط در مرورگر کاربر ارائه می دهد. پلاگین Apache WSGI نصب شده است و به سرور اجازه می دهد تا کد پایتون را در پاسخ به درخواست های AJAX که با فشار دادن دکمه های رابط توسط کاربر ایجاد می شود، اجرا کند. کد پایتون سوئیچینگ پورت GPIO را کنترل می کند تا کنترل از راه دور Stanley RF و ماژول nRF24L01+ را کنترل کند. رابط وب و کد پایتون در یک مخزن GitHub میزبانی می شود .
خروجی های کنترل از راه دور استانلی: برای نمونه اولیه خود، ما از یک محصول تجاری موجود به عنوان اثبات مفهوم استفاده کردیم. محصول استنلی از یک کنترل از راه دور با 3 دکمه روشن و خاموش و سه کلید خروجی تشکیل شده است. هر سوئیچ خروجی به دیوار وصل می شود و یک لامپ یا دستگاه AC دیگر به آن وصل می شود. دکمه های روی کنترل از راه دور پریزها را روشن یا خاموش می کنند. برای پروژه خود، سیمهای لحیمشده از راه دور را روی دکمهها جدا کردیم و با استفاده از پینهای GPIO روی Raspberry Pi، فشار دادن دکمهها را شبیهسازی کردیم. این مؤلفه بعداً با سخت افزار سفارشی خودمان جایگزین خواهد شد، که نسخه اولیه آن ماژول پرده های ما را تامین می کند.
ATtiny Blinds Opener: یک برد با قدرت ATtiny85 که در بالای پرده ها قرار می گیرد و یک سروو را برای فعال کردن میله شیب کنترل می کند که باعث حرکت باز و بسته شدن پرده ها می شود. این توسط ایستگاه پایه با استفاده از ماژول های nRF24L01+ کنترل می شود. کد این ماژول در مخزن GitHub ارسال شده است .
WebApp: WebApp از نمادهایی تشکیل شده است که کاربر روی آنها کلیک یا ضربه میزند که منجر به روشن یا خاموش شدن دستگاهها میشود. تصویر سمت راست را ببینید.
AT tiny: در آداپتور سخت افزاری سفارشی خود، از میکروکنترلر 8 بیتی Atmel AVR RISC با کارایی بالا و کم مصرف استفاده می کنیم که بوت لودر آردوینو را اجرا می کند. بسته 8 پین به اندازه کافی کوچک است که به راحتی در ماژول های ما محصور شود، در حالی که هنوز هم پین های کافی برای ارتباط بی سیم از طریق ماژول های nRF24L01+ را فراهم می کند. اینها با ترانزیستورها/رلهها برای روشن و خاموش کردن پریزها استفاده میشوند و میتوانند هر ماژول سفارشی دیگری (مانند پردههای ما) را با استفاده از PWM تغذیه کنند.
رابط بی سیم: nRF24L01+ یک ماژول ارتباطی بی سیم کوچک و ارزان (کمتر از 5 دلار) 2.4 گیگاهرتز است. این قابلیت تا 2 مگابیت در ثانیه سرعت انتقال را دارد و محدوده مناسبی برای کار در فضای داخلی دارد. اینها در پروژه ما برای تسهیل ارتباط بین ایستگاه پایه و سایر ماژول ها استفاده می شوند.
برای جزئیات بیشتر: On The Fly – Prototype II گزارش نهایی: Home Automation Framework
در ادامه، متن انگلیسی این مطلب را میتوانید مشاهده نمایید:
Introduction:
The Home Automation Framework project is a web application that can remotely control the electronic devices in one’s home using a web interface on a smartphone, tablet or desktop computer. The project facilitates ease of access and remote control of electronic devices for those who are busy, have a disability, or are not physically in the location of the device. Examples of such electronic devices may include lights, security cameras, electric door latches, TVs and computers.
Our initial prototype utilizes the small and inexpensive Raspberry Pi as a base station that wirelessly communicates with modules located around the home. The RPi is connected to the internet and is running an Apache web server. The web server provides access to an HTML/CSS interface with buttons for the user to press.
Pressing those buttons sends AJAX commands to a Python script on the RPi, which then communicates wirelessly to either turn an outlet on/off or open and close window blinds.
Currently the RPi communicates with the outlet modules using an existing commercial product that we modified for our prototype, but this component will later be replaced with our own custom hardware. The blinds are controlled using an early version of our new wireless hardware, that utilizes an nRF24L01+ wireless module and an ATtiny85. One of the next hurdles for our project is building a circuit to deliver 5V and 3.3V DC power from a 120V AC wall socket. This needs to be very small and will be used in our outlet modules.
Description of Major Components
Server: A Raspberry Pi is connected to the internet and running an Apache web server, which serves HTML and CSS files to build the interface in the user’s browser. The Apache WSGI plugin is installed, allowing the server to run Python code in response to AJAX requests that are created when the user presses buttons in the interface. The python code handles the GPIO port switching to control the Stanley RF remote control and the nRF24L01+ module. The web interface and python code is hosted in a GitHub repository.
Stanley Remote Controlled Outlets: For our initial prototype, we utilized an existing commercial product as a proof of concept. The Stanley product consists of a remote control with 3 on and off buttons, and three outlet switches. Each outlet switch is plugged into the wall, with a lamp or other AC device plugged into it. The buttons on the remote turn the outlets on or off. For our project, we took apart the remote, soldered wires onto the buttons, and are simulating button presses using the GPIO pins on the Raspberry Pi. This component will later be replaced with our own custom hardware, an early version of which is powering our blinds module.
ATtiny Blinds Opener: An ATtiny85-powered board that sits on top of the blinds, controlling a servo to actuate the tilt rod, which causes an open and close movement of the blinds. This is controlled by the base station using nRF24L01+ modules. The code for this module is posted in the GitHub repository.
WebApp: The WebApp consists of icons that the user would click or tap, which will result in the devices being turned on or off. See image on the right.