- Kinakailangan ang Mga Bahagi
- Diagram ng Circuit
- Pag-set up ng Flask sa Raspberry Pi para sa Pagkontrol sa Pintuan ng garahe
- Paglikha ng Python Script para sa Smart Garage Door Opener
- Lumilikha ng pahina ng HTML para sa Raspberry Pi Webserver
- Ang {{pins.name}} {% kung pins.state == true%} ay kasalukuyang Bukas
Sa panahong ito ng IoT (Internet of Things) kung saan ang lahat ay maaaring makontrol nang malayuan gamit ang iyong smartphone, bakit magdadala ng mga susi sa iyo. Maraming mga teknolohiya upang suportahan ang wireless na pagkontrol ng mga aparato tulad ng RFID, Bluetooth, Wi-Fi, LoRa. Nakagawa kami dati ng ilang mga alarma sa pinto at circuit na nagkokontrol ng pinto upang buksan at isara ang pinto nang walang wireless:
- Arduino RFID Lock ng Pintuan
- Awtomatikong Opener ng Pinto gamit ang Arduino
- Magnetic Door Alarm Circuit gamit ang Hall Sensor
- Nakabatay sa IoT ang Door Security Alarm na kinokontrol ng Google Assistant
Dito sa tutorial na ito magtatayo kami ng isang Smart Garage Door Opener gamit ang Raspberry Pi. Dito malilikha ang isang web server ng Raspberry Pi upang buksan at isara ang pintuan ng garahe gamit ang iyong smartphone.
Kinakailangan ang Mga Bahagi
- Raspberry pi board na may naka-install na Raspbian dito
- Relay Module
- Mga Koneksyon sa Mga Wires
Ipinapalagay na ang iyong Raspberry Pi ay na-flash na gamit ang isang operating system at nakakonekta sa internet. Kung hindi, sundin ang Pagsisimula sa tutorial ng Raspberry Pi bago magpatuloy. Narito ginagamit namin ang Rasbian Jessie na naka-install na Raspberry Pi 3.
Dito ang Panlabas na Monitor na gumagamit ng HDMI cable ay ginagamit bilang display upang kumonekta sa Raspberry Pi. Kung wala kang monitor, maaari mong gamitin ang SSH client (Putty) o VNC server upang kumonekta sa Raspberry pi gamit ang Laptop o computer. Matuto nang higit pa tungkol sa pag-set up ng Raspberry Pi nang walang ulo dito.
Diagram ng Circuit
Ikonekta ang mekanismo ng pagbubukas ng pinto ng Garage sa output ng relay. Dito namin nakakonekta lamang ang isang LED na may relay para sa layunin ng pagpapakita.
Pag-set up ng Flask sa Raspberry Pi para sa Pagkontrol sa Pintuan ng garahe
Dito, lumikha kami ng isang web server gamit ang Flask, na nagbibigay ng isang paraan upang maipadala ang mga utos mula sa webpage sa Raspberry Pi upang makontrol ang Robot sa network. Pinapayagan kami ng Flask na patakbuhin ang aming mga script sa python sa pamamagitan ng isang webpage at maaari kaming magpadala at makatanggap ng data mula sa Raspberry Pi sa web browser at sa kabaligtaran. Ang Flask ay isang microframework para sa Python. Ang tool na ito ay batay sa Unicode pagkakaroon ng built-in na server ng pag-unlad at debugger, pagsuporta sa pagsuporta sa yunit ng yunit, suporta para sa mga ligtas na cookies at madaling gamitin, ang mga bagay na ito ay ginagawang kapaki-pakinabang para sa libangan.
Patakbuhin ang mga sumusunod na utos upang mai - install ang prasko sa iyong Raspberry Pi:
sudo apt-get update sudo apt-get install python-pip python-flask
Ngayon, patakbuhin ang utos ng pip upang mai - install ang Flask at ang mga dependency nito:
sudo pip install flask
Maaari kang matuto nang higit pa tungkol sa programa gamit ang Flask dito, suriin din ang aming mga nakaraang proyekto kung saan ginamit namin ang Flask upang makontrol ang robot sa pamamagitan ng webserver, ipadala ang mensahe mula sa Webpage sa Raspberry Pi at ipadala ang halaga ng timbang sa Raspberry Pi sa Smart Container.
Ngayon, magsusulat kami ng isang script ng sawa para sa aming web server ng pintuan ng garahe.
Paglikha ng Python Script para sa Smart Garage Door Opener
Makikipag-ugnay ang script na ito sa aming mga Raspberry Pi GPIO at i-set up ang web server. Kaya, ito ang pangunahing script para sa aming aplikasyon. Ang kumpletong Python Script para sa opener ng pinto ay ibinibigay sa dulo, narito namin ipinaliwanag ang ilang mga bahagi nito.
Una, gumawa ng isang folder. Ang lahat ng iba pang kinakailangang mga folder ay dapat nasa folder na ito lamang. Patakbuhin sa ibaba ang mga utos upang gumawa ng folder at lumikha ng python file na pinangalanang app.py sa loob ng folder na ito.
mkdir garage_door cd garage_door nano app.py
Bubuksan nito ang Nano editor kung saan kailangan naming isulat ang script.
Magsimula sa pamamagitan ng pagsasama ng mga mahahalagang aklatan.
i-import ang RPi.GPIO bilang GPIO mula sa flask import Flask, render_template, request app = Flask (__ name__, static_url_path = '/ static')
Ngayon, lumikha ng isang diksyunaryo bilang mga pin upang maiimbak ang numero ng pin, pangalan, at estado ng pin. Maaari kang gumamit ng higit sa isang pin alinsunod sa iyong pangangailangan.
mga pin = { 14: {'name': 'Garage Door', 'state': GPIO.LOW} }
Pagkatapos, itakda ang pin bilang output at gawin itong mababa nang una.
Para sa mga pin sa pin: GPIO.setup (pin, GPIO.OUT) GPIO.output (pin, GPIO.LOW)
Ngayon, gumawa ng pangunahing pagpapaandar upang mabasa ang estado ng pin at iimbak ang estado na ito sa isang variable.
@ app.route ("/") def main (): para sa pin sa mga pin: pin = GPIO.input (pin) ..
Kailangan nating ipasa ang data na ito sa aming pahina ng html kaya, upang makontrol namin ang estado ng pindutan ng pag-input.
ibalik ang render_template ('main.html', ** templateData)
Ngayon, gumawa ng isang pagpapaandar upang hawakan ang mga kahilingan mula sa URL na may pin na numero at pagkilos dito.
@ app.route ("/
I-convert ang pin mula sa URL sa isang integer.
ChangePin = int (changePin)
Kung ang bahagi ng pagkilos ng URL ay "bukas," pagkatapos ay gawin ang sumusunod.
kung ang aksyon == "bukas": GPIO.output (changePin, GPIO.HIGH) kung aksyon == "malapit": GPIO.output (changePin, GPIO.LOW)
Maaari mong kopyahin ang kumpletong script mula sa dulo ng tutorial na ito at i-save ito gamit ang ctrl + x at pagkatapos ay pindutin ang enter. Tapos na kami sa script ng sawa. Ngayon, kailangan naming gumawa ng isang pahina ng HTML upang makipag-ugnay sa script ng sawa.
Lumilikha ng pahina ng HTML para sa Raspberry Pi Webserver
Sa parehong folder na garage_door , lumikha ng isa pang folder na pinangalanang mga template at sa loob ng folder na ito gumawa ng isang.html file gamit ang mga utos sa ibaba.
mkdir template cd template nano main.html
Sa editor ng teksto ng nano , isulat ang html code. Maaari mong i-edit ang bahagi ng pahina at i-istilo ito ayon sa iyong pinili. Ginamit ko lang ang third party css scheme gamit ang link tag. Ang kumpletong HTML code ay ibinibigay sa ibaba:
Garage Door Web server
{% para sa mga pin sa pin%}Ang {{pins.name}} {% kung pins.state == true%} ay kasalukuyang Bukas
Dito ang mahalagang bahagi ay upang lumikha ng isang pindutan upang buksan at isara ang pinto at magtalaga ng isang estado upang buksan at isara ang pindutan. Ang pindutan ay magpapadala at kukuha ng estado ng GPIO mula sa script ng sawa.
Maaari mong gamitin ang nabigyan ng HTML code sa itaas sa editor at i-save ito. Ngayon ang web server ay handa nang ilunsad.
Buksan ang terminal at mag-navigate sa folder ng garage_door at patakbuhin ang utos sa ibaba
sudo python app.py
Buksan ang browser at ipasok ang iyong raspberry pi IP address at pindutin ang enter. Upang mahanap ang iyong IP address maaari mong patakbuhin ang utos sa ibaba sa terminal.
hostname -ako
Makakakita ka ng isang pahinang tulad nito.
Tiyaking nakakonekta ang module ng relay sa raspberry pi. Pindutin ang Buksan ang pindutan upang buksan ang Relay o upang buksan ang Garage Door. Maaari mo ring makita ang estado ng relay. Sa sandaling na-on mo ang Relay, mababago ang teksto ng pindutan Malapit upang patayin ang relay. Ngayon kapag na-click mo muli ang pindutan, ang relay ay papatayin at ang teksto ng pindutan ay mababago upang Buksan muli.
Upang ihinto ang server pindutin ang ctrl + c.
Kaya't ikonekta lamang ang relay na ito sa ilang mekanismo ng Opener ng Pinto, na kaagad na magagamit sa merkado, at simulang kontrolin ang pintuan ng garahe gamit ang Smartphone.
Ang isang demonstration na Video ay ibinibigay sa ibaba.