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

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

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

کنترل در گاراژ مبتنی بر 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 را فشار دهید.

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

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

دانلود فایل های پروژه

برای مشاهده توضیحات روی دوره مورد نظر کلیک کنید.

برای دریافت مطالب جدید در کانال تلگرام یا پیج اینستاگرام آیرنکس عضو شوید.

تصویر از محمد رحیمی

محمد رحیمی

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

4 نظر

  1. سلام خسته نباشید
    میتوان همین کار رو با برد اردوینو و ماژول سیم 800L انجام داد و از طریق سرور یا اپ کنترلش کرد

    1. سلام عزیز، بله میتونید انجام بدید.

  2. عجب سایت معرکه ایه
    هر چیزی ک خواسته باشم توش هست
    دستتون درد نکنه
    عالیه

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

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

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