본문 바로가기
CS/라즈베리파이

라즈베리파이/20/플라스트 웹서버 LED 제어하기

by erase-jeong 2023. 12. 10.

1. 목표 :

라즈베리파이에 플라스크 웹서버를 만들어보고 웹에 접속하여 값을 확인한다.

 

2. 플라스크란?

플라스크(Flask)란? 

파이썬 언어를 이용하여 웹을 개발할 수 있게 해주는 웹개발 프레임워크다.

프레임워크란 쉽게 개발할 수 있도록 여러 개의 라이브러리, 모듈 등을 묶어서 제공하는 기능이다.

 

웹 개발용 프레임워크는 플라스크 외에도 많지만 우리는 라즈베리파이에서 가볍게 동작이 가능하고 사용도 쉬운 플라스크를 선택해 웹을 개발한다.

 

 

1. 목표

라즈베리파이에서 플라스크 웹서버를 만들고 LED를 제어해보자

 

2, 필요한 부품

 

3. 회로도

 

 

4. 플라스크 설치

 

 

 

 

5. html 코드

 
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8:">
        <title>LED TEST</title>
    </head>
    <body>
        <h1>LED ON OFF</h1>
        <form action="/data" method="post">
            <input type="submit" name="led" value="on">
            <input type="submit" name="led" value="off">
        </form>
    </body>
</html>
 

 

 

 

6. python코드

 
from flask import Flask
import RPi.GPIO as GPIO

ledPin=21

app=Flask(__name__)

GPIO.setmode(GPIO.BCM)
GPIO.setup(ledPin,GPIO.OUT)
GPIO.output(ledPin,0)

@app.route('/')
def flask():
    return "Hello, Embeded Software"

@app.route('/ledon')
def ledOn():
    GPIO.output(ledPin,1)
    return "<h1> LED ON </h1>"

@app.route('/ledoff')
def ledOff():
    GPIO.output(ledPin,0)
    return "<h1>LED OFF </h1>"

if __name__=='__main__':
    app.run(host='0.0.0.0', port="80")
 

 

 

<주석 ver>

from flask import Flask #웹 서버 및 웹페이지를 구축하기 위한 라이브러리
import RPi.GPIO as GPIO #라즈베리파이 핀을 제어하기 위한 라이브러리

ledPin=21 #LED 연결 핀 번호

app=Flask(__name__)

GPIO.setmode(GPIO.BCM) #BCM 핀 번호 모드 설정
GPIO.setup(ledPin,GPIO.OUT) #ledPin 핀을 출력 핀으로 설정
GPIO.output(ledPin,0) #ledPin 핀 출력 초기화 (LED 끄기)

@app.route('/') #루트 경로('/')에 대한 요청 처리 함수
def flask(): #요청 처리 함수
    return "Hello, Embeded Software" #문자열 반환

@app.route('/ledon') #'/ledon' 경로에 대한 요청 처리 함수
def ledOn(): #요청 처리 함수
    GPIO.output(ledPin,1) #ledPin 핀 출력을 HIGH(LED 켜기)
    return "<h1> LED ON </h1>" #문자열 반환

@app.route('/ledoff') #'/ledoff' 경로에 대한 요청 처리 함수
def ledOff(): #요청 처리 함수
    GPIO.output(ledPin,0) #ledPin 핀 출력을 LOW(LED 끄기)
    return "<h1>LED OFF </h1>" #문자열 반환

if __name__=='__main__':
    app.run(host='0.0.0.0', port="80")
    #플라스크 앱을 0.0.0.0 주소 80 포트에서 실행

 

7. 코드 기능

  • 웹 브라우저를 통해 '/ledon' 경로에 접근하면 LED가 켜집니다.
  • 웹 브라우저를 통해 '/ledoff' 경로에 접근하면 LED가 꺼집니다.
  • 웹 브라우저를 통해 루트 경로 ('/')에 접근하면 "Hello, Embeded Software" 문자열이 표시됩니다

 

8. 참고

  • 이 코드는 Raspberry Pi를 사용하여 LED를 제어합니다.
  • 웹 브라우저는 Raspberry Pi와 동일한 네트워크에 연결되어 있어야 합니다.
  • Flask 앱은 기본적으로 80 포트에서 실행됩니다.
  • 코드의 일부 값 (예: ledPin)은 사용하는 LED 연결 핀에 맞게 조정될 수 있습니다.