Phần 2: Tạo ứng dụng Flask cơ bản
1. Giới thiệu về Flask và cấu trúc dự án, 2. Tạo file app.py và cấu hình Flask, 3. Định nghĩa các route cơ bản, 4. Chạy ứng dụng Flask trên Raspberry Pi, 5. Kiểm tra ứng dụng bằng trình duyệt web.
Phần 2: Tạo ứng dụng Flask cơ bản
1. Giới thiệu về Flask và cấu trúc dự án
Flask là một micro framework dành cho Python, rất phù hợp để xây dựng các ứng dụng web nhỏ gọn và nhanh chóng. Với Flask, bạn có thể dễ dàng tạo ra các REST API cho ứng dụng IoT của mình. Trong dự án này, chúng ta sẽ xây dựng một web server sử dụng Flask trên Raspberry Pi để điều khiển GPIO từ xa.
Cấu trúc dự án của chúng ta sẽ như sau:
/my_flask_app
│
├── app.py
├── templates
│ └── index.html
└── static
└── css
└── style.css
2. Tạo file app.py và cấu hình Flask
Đầu tiên, chúng ta cần tạo file app.py trong thư mục dự án. Đây là nơi chúng ta sẽ cấu hình ứng dụng Flask và định nghĩa các route.
Mở terminal và tạo file app.py:
touch app.py
Tiếp theo, mở file app.py và thêm đoạn mã sau:
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def home():
return render_template('index.html')
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
Trong đoạn mã trên:
- Flask: Chúng ta import Flask từ thư viện flask.
- app = Flask(__name__): Khởi tạo ứng dụng Flask.
- @app.route('/'): Định nghĩa route chính cho ứng dụng, khi truy cập vào địa chỉ gốc, nó sẽ trả về file index.html.
- app.run(): Chạy ứng dụng Flask trên địa chỉ IP 0.0.0.0 và cổng 5000, cho phép truy cập từ xa.
3. Định nghĩa các route cơ bản
Để ứng dụng có thể điều khiển GPIO, chúng ta cần định nghĩa thêm các route cho các hành động điều khiển. Ví dụ, chúng ta sẽ tạo hai route để bật và tắt GPIO.
Đầu tiên, chúng ta cần import thêm thư viện RPi.GPIO để điều khiển GPIO:
import RPi.GPIO as GPIO
Tiếp theo, cấu hình GPIO và thêm các route mới trong app.py:
GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.OUT)
@app.route('/on')
def turn_on():
GPIO.output(18, GPIO.HIGH)
return 'Bật GPIO'
@app.route('/off')
def turn_off():
GPIO.output(18, GPIO.LOW)
return 'Tắt GPIO'
Trong đoạn mã trên:
- Chúng ta sử dụng GPIO.setmode(GPIO.BCM) để thiết lập chế độ đánh số chân GPIO theo BCM.
- GPIO.setup(18, GPIO.OUT): Thiết lập chân GPIO 18 là chân xuất.
- Route /on: Khi truy cập vào route này, GPIO sẽ được bật.
- Route /off: Khi truy cập vào route này, GPIO sẽ được tắt.
4. Chạy ứng dụng Flask trên Raspberry Pi
Để chạy ứng dụng Flask, chúng ta cần cài đặt Flask và RPi.GPIO (nếu chưa cài).
pip install Flask RPi.GPIO
Sau khi đã cài đặt xong, bạn có thể chạy ứng dụng bằng lệnh:
python app.py
Ứng dụng sẽ bắt đầu chạy và bạn sẽ thấy thông báo như sau:
Running on http://0.0.0.0:5000/
Lưu ý: Đảm bảo rằng bạn đã cấp quyền truy cập cho chân GPIO bằng cách chạy ứng dụng với quyền root nếu cần thiết.
5. Kiểm tra ứng dụng bằng trình duyệt web
Để kiểm tra ứng dụng, mở trình duyệt web và nhập địa chỉ IP của Raspberry Pi kèm theo cổng 5000. Ví dụ:
http://<địa_chỉ_IP_Raspberry_Pi>:5000/
Bạn sẽ thấy trang web hiển thị. Để kiểm tra các route điều khiển GPIO, bạn có thể nhập:
- Bật GPIO:
http://<địa_chỉ_IP_Raspberry_Pi>:5000/on - Tắt GPIO:
http://<địa_chỉ_IP_Raspberry_Pi>:5000/off
Khi bạn truy cập vào các URL này, GPIO sẽ được bật hoặc tắt tương ứng.
Tip: Bạn có thể sử dụng công cụ như Postman để gửi yêu cầu đến các route và kiểm tra phản hồi dễ dàng hơn.
Vậy là bạn đã hoàn thành việc tạo ứng dụng Flask cơ bản trên Raspberry Pi để điều khiển GPIO từ xa. Ở phần tiếp theo, chúng ta sẽ tích hợp dashboard web responsive với real-time updates qua WebSocket.
