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

باز کردن درب پارکینگ با اینترنت اشیا و رزبری پای

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

کنترل در گاراژ مبتنی بر IoT و Raspberry pi

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

کنترل در گاراژ مبتنی بر IoT و Raspberry pi

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

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

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

همانطور که مشاهده میشود این پروژه نیازی به قطعات فرعی ندارد. فقط یک برد رزبری پای + رله مورد نظر شما !

تنظیم فلاسک برای کنترل درب گاراژ

در اینجا ما با استفاده از Flask یک وب سرور ایجاد میکنیم که راهی برای ارسال دستورات از صفحه وب به رزبری پای فراهم میکند. فلاسک به ما اجازه میدهد اسکریپت های پایتون را از طریق یک صفحه  وب اجرا کنیم. میتوانیم داده ها را از Raspberry pi به مرورگر وب و برعکس ارسال و دریافت کنیم.

شما باید با استفاده از دستورات داده شده، بسته پشتیبانی از فلسک را در Raspberry Pi نصب کند:

$ pip install Flask

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

from flask import Flask
from flask import Flask, render_template, request

تنظیم فلاسک برای کنترل درب گاراژ

اگر میخواهید آردوینو را به صورت اصولی و پروژه محور (ساخت ربات، ارتباط با اندروید، اینترنت اشیا، برنامه نویسی حرفه ای) یاد بگیرید، حتما دوره آموزش آردوینو را مشاهده کنید.

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

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

این اسکریپت با پین های GPIO برد رزبری پای ما تعامل دارد و سرور وب را تنظیم می کند. بنابراین ، این برنامه اصلی برای پروژه ماست. کد کامل پایتون پروزه در انتهای صفحه در فایل دانلودی قرار داده شده است. در اینجا بعضی از قسمت های کد را بررسی میکنیم.

ابتدا یک پوشه درست می کنیم. تمام پوشه های مورد نیاز فقط باید در این پوشه باشند. دستورات زیر را اجرا کنید تا پوشه و فایل پایتون با نام app.py در این پوشه ایجاد شود.

mkdir garage_door
cd garage_door
nano app.py

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

با فراخوانی کتابخانه های مهم شروع میکنیم.

همچنین اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید
import RPi.GPIO as GPIO
from flask import Flask, render_template, request
app = Flask(__name__, static_url_path='/static')

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

pins = {
   14 : {'name' : 'Garage Door', 'state' : GPIO.LOW}
   }

سپس ، پین را به عنوان خروجی تنظیم میکنیم و در ابتدا آن را Low قرار میدهیم.

​for pin in pins:
   GPIO.setup(pin, GPIO.OUT)
   GPIO.output(pin, GPIO.LOW)

اکنون یک عملکرد اصلی ایجاد میکنیم تا حالت پین را بخواند و آن حالت را در یک متغیر ذخیره کند.

@app.route("/")
def main():
   for pin in pins:
      pins[pin]['state'] = GPIO.input(pin)
..

ما باید این داده ها را به صفحه html خود منتقل کنیم تا بتوانیم حالت دکمه ورودی را کنترل کنیم.

   return render_template('main.html', **templateData)

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

@app.route("/<changePin>/<action>", methods=['GET', 'POST'])
def action(changePin, action):

پین را از URL به عدد صحیح تبدیل میکنیم.

   changePin = int(changePin)

اگر قسمت عملکرد URL به صورت “Open” ​​یا “Close” باشد، موارد زیر انجام میشود.

   if action == "open":
      GPIO.output(changePin, GPIO.HIGH)
   if action == "close":
      GPIO.output(changePin, GPIO.LOW)

می توانید اسکریپت کامل را از انتهای این آموزش کپی کرده و با استفاده از ctrl + x آن را ذخیره کنید و سپس enter را بزنید.

حال ، ما باید برای ایجاد تعامل با اسکریپت پایتون ، یک صفحه HTML ایجاد کنیم.

ایجاد صفحه HTML برای وب سرور Raspberry Pi

در همان پوشه garage_door ، پوشه دیگری با نام templates ایجاد کنید و در داخل این پوشه با استفاده از دستورات زیر ، یک فایل .html ایجاد کنید.

mkdir templates
cd templates
nano main.html

ایجاد صفحه HTML برای وب سرور Raspberry Pi 

در ویرایشگر متن نانو ، کد html را بنویسید.

می توانید قسمت <head> صفحه را ویرایش کنید و مطابق انتخاب خود آن را کوتاه تر کنید. کد HTML کامل در زیر آورده شده است:

<!DOCTYPE html>
<head>
   <title>IRENX.IR</title>
  <link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">
   <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
</head>
<center>
<body>
   <h1>IRENX.IR</h1>
   {% for pin in pins %}
   <h2>{{ pins[pin].name }}
   {% if pins[pin].state == true %}
      is currently <strong>Open</strong></h2><div class="row"><div class="col-md-2">
      <a href="/{{pin}}/close" class="w3-button w3-blue" role="button">Close</a></div></div>
   {% else %}
      is currently <strong>Close</strong></h2><div class="row"><div class="col-md-2">
      <a href="/{{pin}}/open" class="w3-button w3-black" role="button">Open</a></div></div>
   {% endif %}
   {% endfor %}
</body>
</center>
</html>

در اینجا بخش مهم ایجاد دکمه برای باز و بسته کردن درب و اختصاص دادن حالت به دکمه باز و بسته است. دکمه حالت پین GPIO را در کد پایتون تغییر میدهد. می توانید از کد HTML داده شده فوق در ویرایشگر استفاده کرده و آن را ذخیره کنید. اکنون سرور وب آماده راه اندازی است.

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

sudo python app.py

ایجاد صفحه HTML برای درب بازکن رزبری پای

مرورگر را باز کرده و آدرس IP رزبری پای خود را وارد کرده و Enter را بزنید. برای یافتن آدرس IP خود می توانید دستور زیر را در ترمینال اجرا کنید.

hostname -I

صفحه ای مانند این را مشاهده خواهید کرد.

تصویر نهایی پروژه بازکردن درب پارکینگ با اینترنت اشیا

اطمینان حاصل کنید که ماژول رله به raspberry pi وصل شده باشد. برای روشن کردن رله یا باز کردن درب گاراژ ، دکمه Open را فشار دهید. همچنین می توانید وضعیت رله را مشاهده کنید. به محض روشن کردن رله ، متن دکمه به Close تغییر می کند تا رله را خاموش کند. حالا وقتی دوباره روی دکمه کلیک می کنید رله خاموش می شود و متن دکمه برای به Open تغییر می کند.

برای متوقف کردن سرور ctrl + c را فشار دهید.

فیلم عملکرد پروژه درب باز کن با صفحه وب

به اینصورت میتوانید درب پارکینگ و گاراژ خود را از طریق صفحه وب و با موبایل یا لپتاپ یا … کنترل کنید. فیلم زیر به شما در درک نحوه کار این پروژه کمک میکند.

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

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

برای دانلود فایل ها باید عضو آیرنکس باشید، تنها چند ثانیه زمان لازم است.

ورود / ثبت نام

[lrm_form default_tab=”register” logged_in_message=””]

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

محمد رحیمی

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

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

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