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

在这篇文章中,您将学习如何创建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()

苹果watchOS 7.2正式版发布
预计到2021年,全球晶圆厂设备支出将创新高
HCL气体传感器在生活中有哪些应用
揭开人脸识别背后的奥秘,它都有哪些应用领域
干货:直观地解释和可视化每个复杂的 DataFrame 操作
怎样创建树莓派上的Web应用程序 并使用Flask Web Framework控制伺服电机
解决电子设备功耗?安富利有话说
12V LED与分布式恒流技术
瞬态抑制二极管为什么会有残压?是怎么产生的?
红米RedmiK20Pro拆机图解
PLC工厂流水线的实现过程示意图
人工智能令人不安的能力:预测一个人的早逝
湖北首秀第三代国产骨科手术机器人 解决了骨科手术的三大难题
诺基亚人事大调整 成立客户体验部门
电磁流量计在并联管道流量测量中的应用
APE:对CLIP进行特征提纯能够提升Few-shot性能
什么是动力电池?它与普通电池的区别
印度招商局高层密访深圳龙华,鸿海富士康印度设厂不远了
小米6/荣耀9/一加5三款新机评测对比,你买哪一款?
对大数据、AI、数据分析的投资额2021上看960亿美元