在這篇文章中,您將學(xué)習(xí)如何創(chuàng)建Raspberry Pi上的Web應(yīng)用程序,使用Flask Web Framework控制伺服電機,以創(chuàng)建Web應(yīng)用程序。我們將在Web應(yīng)用程序上創(chuàng)建兩個滑塊,它們將發(fā)送相應(yīng)的值,導(dǎo)致伺服電機在按下按鈕時移動。
Flask是一個用Python編寫并由Armin Ronacher開發(fā)的Web應(yīng)用程序框架。領(lǐng)導(dǎo)一個名為Pocco的國際Python愛好者群體。 Flask基于Werkzeug WSGI工具包和Jinja2模板引擎。兩者都是Pocco項目。
先決條件
確保您的Raspberry Pi是最新的。要更新Raspberry Pi,請鍵入以下命令: sudo apt-get update
要安裝Flask,我們需要有pip,因此請鍵入以下命令來安裝pip: sudo apt-get install python-pip
然后輸入以下命令來安裝Flask: sudo pip install flask
必需組件
Raspberry Pi
SG90伺服電機
跳線電纜
電路圖和說明
這個項目的電路圖很簡單 - 你只需要連接你的兩個伺服電機。進行以下連接:
伺服電機1伺服電機2Raspberry Pi
黃色或橙色線
GPIO 26
Red Wire
5V
黑色或棕色線
GND
黃色或橙色線GPIO 19
紅線5V
黑色或棕色線GND
代碼演練
讓我們分析一下這個項目中使用的代碼。完整的代碼可以在文章的最后找到。
首先,我們導(dǎo)入了這個項目所需的燒瓶模塊。 render_template_string 模塊允許我們在項目中使用HTML。 請求模塊允許我們從HTML獲取數(shù)據(jù)。 RPi.GPIO 庫允許我們控制Raspberry Pi的GPIO引腳。
from flask import Flask, render_template_string, request
import RPi.GPIO as GPIO
from time import sleep
現(xiàn)在,我們啟用調(diào)試模式我們的項目。啟用調(diào)試模式的優(yōu)點是它可以在更改代碼時自動重新加載服務(wù)器。它還提供了一個有用的調(diào)試器來跟蹤應(yīng)用程序中的錯誤。
app.config[‘DEBUG’] = True
伺服電機在不動時會抖動一下。為了阻止它,我們使用以下行:
p.ChangeDutyCycle(0)
p1.ChangeDutyCycle(0)
如何運行程序
創(chuàng)建Python文件并上傳代碼。接下來,使用sudo命令運行此文件以在端口5000 上的localhost啟動服務(wù)器。
打開瀏覽器并輸入在https://127.0.0.1:5000中,打開一個網(wǎng)頁,如下所示。
現(xiàn)在,按提交按鈕將發(fā)送值根據(jù)我們控制的伺服電機的滑塊。
完全代碼
from flask import Flask, render_template_string, request # Importing the Flask modules required for this project
import RPi.GPIO as GPIO # Importing the GPIO library to control GPIO pins of Raspberry Pi
from time import sleep # Import sleep module from time library to add delays
# Pins where we have connected servos
servo_pin = 26
servo_pin1 = 19
GPIO.setmode(GPIO.BCM) # We are using the BCM pin numbering
# Declaring Servo Pins as output pins
GPIO.setup(servo_pin, GPIO.OUT)
GPIO.setup(servo_pin1, GPIO.OUT)
# Created PWM channels at 50Hz frequency
p = GPIO.PWM(servo_pin, 50)
p1 = GPIO.PWM(servo_pin1, 50)
# Initial duty cycle
p.start(0)
p1.start(0)
# Flask constructor takes the name of current module (__name__) as argument.
app = Flask(__name__)
# Enable debug mode
app.config[‘DEBUG’] = True
# Store HTML code
TPL = ‘’‘
Web Application to Control Servos
Slider 1
Slider 2
’‘’
# which URL should call the associated function.
@app.route(“/”)
def home():
return render_template_string(TPL)
@app.route(“/test”, methods=[“POST”])
def test():
# Get slider Values
slider1 = request.form[“slider1”]
slider2 = request.form[“slider2”]
# Change duty cycle
p.ChangeDutyCycle(float(slider1))
p1.ChangeDutyCycle(float(slider2))
# Give servo some time to move
sleep(1)
# Pause the servo
p.ChangeDutyCycle(0)
p1.ChangeDutyCycle(0)
return render_template_string(TPL)
# Run the app on the local development server
if __name__ == “__main__”:
app.run()
-
Web
+關(guān)注
關(guān)注
2文章
1287瀏覽量
71452 -
伺服電機
+關(guān)注
關(guān)注
88文章
2120瀏覽量
59666 -
樹莓派
+關(guān)注
關(guān)注
121文章
2009瀏覽量
107485 -
flask
+關(guān)注
關(guān)注
0文章
16瀏覽量
3762
發(fā)布評論請先 登錄
如何在樹莓派上安裝并運行 Arduino 集成開發(fā)環(huán)境!

Web Components實踐:如何搭建一個框架無關(guān)的AI組件庫

「極速探索HarmonyOS NEXT 」閱讀體驗】+Web組件
AWTK-WEB 快速入門(6) - JS WebSocket 應(yīng)用程序

AWTK-WEB 快速入門(5) - C 語言 WebSocket 應(yīng)用程序

AWTK-WEB 快速入門(4) - JS Http 應(yīng)用程序

AWTK-WEB 快速入門(3) - C 語言 Http 應(yīng)用程序

SSM框架在Java開發(fā)中的應(yīng)用 如何使用SSM進行web開發(fā)
HarmonyOS Web開發(fā)性能優(yōu)化指導(dǎo)
AWTK-WEB 快速入門(2) - JS 應(yīng)用程序

入門web安全筆記分享

AWTK-WEB 快速入門(1) - C 語言應(yīng)用程序

評論