- 필요한 구성 요소
- 회로도
- 차고 문 제어를위한 Raspberry Pi의 플라스크 설정
- Smart Garage Door Opener 용 Python 스크립트 생성
- Raspberry Pi 웹 서버용 HTML 페이지 생성
- {{pins.name}} {% if pins.state == true %} 가 현재 열려 있음
스마트 폰을 사용하여 모든 것을 원격으로 제어 할 수있는 IoT (사물 인터넷) 시대에 키를 휴대해야하는 이유. RFID, Bluetooth, Wi-Fi, LoRa와 같은 장치의 무선 제어를 지원하는 많은 기술이 있습니다. 이전에는 도어를 무선으로 열고 닫을 수있는 도어 알람 및 도어 제어 회로를 구축했습니다.
- Arduino RFID 도어록
- Arduino를 사용한 자동 도어 오프너
- 홀 센서를 이용한 자기 도어 알람 회로
- Google Assistant가 제어하는 IoT 기반 도어 보안 경보
이 튜토리얼에서는 Raspberry Pi를 사용하여 Smart Garage Door Opener를 구축합니다. 여기에 스마트 폰을 사용하여 차고 문을 열고 닫을 수있는 Raspberry Pi 웹 서버가 생성됩니다.
필요한 구성 요소
- Raspbian이 설치된 Raspberry Pi 보드
- 릴레이 모듈
- 전선 연결
Raspberry Pi가 이미 운영 체제와 함께 플래시되고 인터넷에 연결할 수 있다고 가정합니다. 그렇지 않은 경우 계속하기 전에 Raspberry Pi 시작하기 자습서를 따르십시오. 여기에서는 Rasbian Jessie가 설치된 Raspberry Pi 3을 사용하고 있습니다.
여기에서 HDMI 케이블을 사용하는 외부 모니터는 Raspberry Pi와 연결하기위한 디스플레이로 사용됩니다. 모니터가없는 경우 SSH 클라이언트 (Putty) 또는 VNC 서버를 사용하여 랩톱 또는 컴퓨터를 사용하여 Raspberry pi에 연결할 수 있습니다. 여기에서 Raspberry Pi를 헤드리스로 설정하는 방법에 대해 자세히 알아보십시오.
회로도
차고 문 열림 메커니즘을 릴레이 출력에 연결합니다. 여기서 우리는 데모 목적으로 릴레이와 LED를 연결했습니다.
차고 문 제어를위한 Raspberry Pi의 플라스크 설정
여기에서는 웹 페이지에서 Raspberry Pi 로 명령 을 전송 하여 네트워크를 통해 로봇을 제어 하는 방법을 제공하는 Flask를 사용하여 웹 서버를 만들었습니다. Flask를 사용하면 웹 페이지를 통해 Python 스크립트를 실행할 수 있으며 Raspberry Pi에서 웹 브라우저로 또는 그 반대로 데이터를주고받을 수 있습니다. Flask는 Python 용 마이크로 프레임 워크입니다. 이 도구는 내장 된 개발 서버 및 디버거, 통합 된 단위 테스트 지원, 보안 쿠키 지원 및 사용하기 쉬운 유니 코드 기반으로, 이러한 것들은 애호가에게 유용합니다.
다음 명령을 실행 하여 Raspberry Pi에 플라스크 를 설치합니다.
sudo apt-get 업데이트 sudo apt-get install python-pip python-flask
이제 pip 명령을 실행하여 Flask 및 해당 종속성 을 설치합니다.
sudo pip 설치 플라스크
여기에서 Flask를 사용한 프로그래밍에 대해 자세히 알아볼 수 있으며, Flask를 사용하여 웹 서버를 통해 로봇을 제어하고, 웹 페이지에서 Raspberry Pi로 메시지를 보내고, Smart Container의 Raspberry Pi에 가중치 값을 보내는 이전 프로젝트를 확인할 수도 있습니다.
이제 차고 문 웹 서버를위한 파이썬 스크립트를 작성합니다.
Smart Garage Door Opener 용 Python 스크립트 생성
이 스크립트는 Raspberry Pi GPIO와 상호 작용하고 웹 서버를 설정합니다. 그래서 이것은 우리 애플리케이션의 핵심 스크립트입니다. 문 열기를위한 완전한 파이썬 스크립트 가 마지막에 주어지며, 여기서 우리는 그 일부를 설명했습니다.
먼저 폴더를 만드십시오. 다른 모든 필수 폴더는이 폴더에만 있어야합니다. 아래 명령을 실행 하여 폴더를 만들고이 폴더 안에 app.py 라는 파이썬 파일을 만듭니다.
mkdir garage_door cd garage_door nano app.py
그러면 스크립트를 작성해야하는 Nano 편집기가 열립니다.
중요한 라이브러리를 포함하여 시작하십시오.
플라스크에서 RPi.GPIO를 GPIO 로 가져 오기 import Flask, render_template, request app = Flask (__ name__, static_url_path = '/ static')
이제 사전을 핀 으로 만들어 핀 번호, 이름 및 핀 상태를 저장합니다. 필요에 따라 두 개 이상의 핀을 사용할 수 있습니다.
핀 = { 14: { 'name': 'Garage Door', 'state': GPIO.LOW} }
그런 다음 핀을 출력으로 설정하고 처음에는 낮게 만듭니다.
핀 인 핀: GPIO.setup (pin, GPIO.OUT) GPIO.output (pin, GPIO.LOW)
이제 핀 상태를 읽고이 상태를 변수에 저장하는 주 함수를 만듭니다.
@ app.route ("/") def main (): 핀의 핀: pins = GPIO.input (pin) ..
이 데이터를 html 페이지 에 전달해야 입력 버튼 상태를 제어 할 수 있습니다.
return render_template ('main.html', ** templateData)
이제 핀 번호와 작업이 포함 된 URL의 요청을 처리하는 함수를 만듭니다.
@ app.route ("/
URL의 핀을 정수로 변환합니다.
changePin = int (changePin)
URL의 작업 부분이 "open" 이면 다음을 수행합니다.
if action == "open": GPIO.output (changePin, GPIO.HIGH) if action == "close": GPIO.output (changePin, GPIO.LOW)
이 자습서의 끝에서 전체 스크립트를 복사하고 ctrl + x를 사용하여 저장 한 다음 Enter 키를 누를 수 있습니다. 파이썬 스크립트를 사용했습니다. 이제 파이썬 스크립트와 상호 작용할 HTML 페이지를 만들어야합니다.
Raspberry Pi 웹 서버용 HTML 페이지 생성
같은 garage_door 폴더에 templates 라는 다른 폴더를 만들고이 폴더 안에 아래 명령을 사용하여.html 파일을 만듭니다.
mkdir 템플릿 cd 템플릿 nano main.html
에서 나노 텍스트 편집기, HTML 코드를 작성합니다. 편집 할 수 있습니다. 페이지의 일부를 선택하고 원하는대로 스타일을 지정합니다. 링크 태그를 사용하여 타사 CSS 체계를 사용했습니다. 완전한 HTML 코드는 다음과 같습니다.
Garage Door 웹 서버
{% 핀 %}{{pins.name}} {% if pins.state == true %} 가 현재 열려 있음
여기서 중요한 부분은 문을 열고 닫는 버튼을 만들고 개폐 버튼에 상태를 할당하는 것 입니다. 버튼은 Python 스크립트에서 GPIO 상태를 보내고 가져옵니다.
위의 HTML 코드를 편집기에서 사용하고 저장할 수 있습니다. 이제 웹 서버를 시작할 준비가되었습니다.
터미널을 열고 garage_door 폴더로 이동 하여 아래 명령을 실행하십시오.
sudo python app.py
브라우저를 열고 라즈베리 파이 IP 주소를 입력하고 Enter 키를 누르십시오. IP 주소를 찾으려면 터미널에서 아래 명령을 실행할 수 있습니다.
호스트 이름 -I
이와 같은 페이지가 표시됩니다.
릴레이 모듈이 라즈베리 파이에 연결되어 있는지 확인하십시오. 릴레이를 켜거나 차고 문을 열려면 열기 버튼을 누르십시오. 릴레이 상태도 볼 수 있습니다. 릴레이를 켜 자마자 버튼 텍스트가 닫기 로 변경 되어 릴레이가 꺼집니다. 이제 버튼을 다시 클릭하면 릴레이가 꺼지고 버튼 텍스트가 다시 열기 로 변경 됩니다.
서버를 중지하려면 ctrl + c를 누르십시오.
따라서이 릴레이를 시중에서 쉽게 구할 수있는 일부 도어 오프너 메커니즘에 연결하고 스마트 폰을 사용하여 차고 문을 제어하기 시작 하면 됩니다.
데모 영상은 아래에 주어진다.