怎样创建树莓派上的Web应用程序 并使用Flask Web Framework控制伺服电机

电子说

1.3w人已加入

描述

在这篇文章中,您将学习如何创建Raspberry Pi上的Web应用程序,使用Flask Web Framework控制伺服电机,以创建Web应用程序。我们将在Web应用程序上创建两个滑块,它们将发送相应的值,导致伺服电机在按下按钮时移动。

Flask是一个用Python编写并由Armin Ronacher开发的Web应用程序框架。领导一个名为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

代码演练

让我们分析一下这个项目中使用的代码。完整的代码可以在文章的最后找到。

首先,我们导入了这个项目所需的烧瓶模块。 render_template_string 模块允许我们在项目中使用HTML。 请求模块允许我们从HTML获取数据。 RPi.GPIO 库允许我们控制Raspberry Pi的GPIO引脚。

from flask import Flask, render_template_string, request

import RPi.GPIO as GPIO

from time import sleep

现在,我们启用调试模式我们的项目。启用调试模式的优点是它可以在更改代码时自动重新加载服务器。它还提供了一个有用的调试器来跟踪应用程序中的错误。

app.config[‘DEBUG’] = True

伺服电机在不动时会抖动一下。为了阻止它,我们使用以下行:

p.ChangeDutyCycle(0)

p1.ChangeDutyCycle(0)

如何运行程序

创建Python文件并上传代码。接下来,使用sudo命令运行此文件以在端口5000 上的localhost启动服务器。

打开浏览器并输入在https://127.0.0.1:5000中,打开一个网页,如下所示。

现在,按提交按钮将发送值根据我们控制的伺服电机的滑块。

完全代码

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()

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分