0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

454398 来源:工程师吴畏 2019-07-26 15:27 次阅读

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

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

    关注

    2

    文章

    1238

    浏览量

    68465
  • 伺服电机
    +关注

    关注

    82

    文章

    1838

    浏览量

    56291
  • 树莓派
    +关注

    关注

    113

    文章

    1640

    浏览量

    104750
  • flask
    +关注

    关注

    0

    文章

    16

    浏览量

    3572
收藏 人收藏

    评论

    相关推荐

    使用Docker部署Go Web应用程序步骤

    大多数情况下Go应用程序被编译成单个二进制文件,web应用程序则会包括模版和配置文件。而当一个项目中有很多文件的时候,由于很多文件没有同步就会导致错误的发生并且产生很多的问题。
    发表于 04-20 09:33 230次阅读
    使用Docker部署Go <b class='flag-5'>Web</b><b class='flag-5'>应用程序</b>步骤

    鉴源实验室 | Web应用程序常见漏洞浅析

    在如今的数字化时代,Web应用程序已经渗透到我们生活的每个角落。从购物平台、社交媒体到企业级系统,无论是用户还是组织,都依赖于这些应用程序来满足各自的业务需求。
    的头像 发表于 01-26 11:33 571次阅读
    鉴源实验室 | <b class='flag-5'>Web</b><b class='flag-5'>应用程序</b>常见漏洞浅析

    web前端开发和前端开发的区别

    Web前端开发和前端开发是两个相似但略有不同的概念。本文将详细讨论这两者之间的区别。 定义和范围: Web前端开发是指开发和维护Web应用程序前端部分的过程。
    的头像 发表于 01-18 09:54 955次阅读

    怎么用eclipse创建web项目

    使用Eclipse创建Web项目是一种常见的方式,下面将分步骤详解如何使用Eclipse创建Web项目。在开始之前,请确保已经安装了Java开发工具包(JDK)和Eclipse集成开发
    的头像 发表于 12-06 13:40 878次阅读

    Python Web框架Django 5.0新特性

    根据 JetBrains 公布的 2022 Python 开发者调查结果,Python Web 框架的三巨头依旧是 Flask、Django 和 FastAPI。Django 和 Flask 的使用率排名并列第一。
    的头像 发表于 12-06 13:37 626次阅读

    Flask如何升级到 Quart 应用程序

    本文详细介绍了典型的生产环境的 CRUD 应用程序Flask 到 Quart 的转换,并展示相关的性能改进优势。 将这个 Flask-pyscopg2 应用程序升级到 Quart-
    的头像 发表于 11-01 16:23 326次阅读
    <b class='flag-5'>Flask</b>如何升级到 Quart <b class='flag-5'>应用程序</b>

    如何部署Python Web应用

    = '0.0.0.0' , port= 8080 ) 以上代码会创建一个基本的 Web 服务器,并监听** 8080 ** 端口。 2. 将应用容器化 在项目根目录下,创建一个名为 ** Dockerfile ** 的文件,内容
    的头像 发表于 11-01 09:32 268次阅读
    如何部署Python <b class='flag-5'>Web</b>应用

    如何部署Python Web应用

    hello-cloud-develop cd hello-cloud-develop 创建名为 ** main.py ** 的文件,并将以下代码粘贴到其中: import os from flask import
    的头像 发表于 10-16 11:48 343次阅读
    如何部署Python <b class='flag-5'>Web</b>应用

    HarmonyOS—使用Web组件加载页面

    ​​ohos.permission.INTERNET​​网络访问权限。 加载网络页面 开发者可以在Web组件创建的时候指定默认加载的网络页面 。在默认页面加载完成后,如果开发者需要变更此Web组件显示的网络页面,可以
    发表于 08-31 17:51

    什么是Web应用程序防火墙 (WAF) ,它和其他网络防护工具有哪些差异?

    一、什么是Web应用程序防火墙(WAF)软件?WAF软件产品被广泛应用于保护Web应用程序和网站免受威胁或攻击,它通过监控用户、应用程序和其
    的头像 发表于 08-17 09:30 678次阅读
    什么是<b class='flag-5'>Web</b><b class='flag-5'>应用程序</b>防火墙 (WAF) ,它和其他网络防护工具有哪些差异?

    什么是Web应用程序防火墙,WAF与其他网络安全工具差异在哪?

    类型的攻击。这些软件解决方案提供自动防御,并允许对规则集进行自定义管理控制,因为某些应用程序可能具有独特的流量趋势、零日威胁或 Web 应用程序漏洞,WAF一般还提供日志记录功能来记录
    的头像 发表于 08-14 14:20 1108次阅读

    Web 应用程序防火墙 (WAF) 相关知识介绍

    Web应用程序防火墙(WAF)如何工作?Web应用防护系统(也称为:网站应用级入侵防御系统。英文:WebApplicationFirewall,简称:WAF)。利用国际上公认的一种说法:Web
    的头像 发表于 07-31 17:37 860次阅读
    <b class='flag-5'>Web</b> <b class='flag-5'>应用程序</b>防火墙 (WAF) 相关知识介绍

    Ultra96 SDR第一部分:简单的射频频谱图Web应用程序

    电子发烧友网站提供《Ultra96 SDR第一部分:简单的射频频谱图Web应用程序.zip》资料免费下载
    发表于 07-05 09:32 6次下载
    Ultra96 SDR第一部分:简单的射频频谱图<b class='flag-5'>Web</b><b class='flag-5'>应用程序</b>

    通过Web服务器控制双直流电机伺服电机

    电子发烧友网站提供《通过Web服务器控制双直流电机伺服电机.zip》资料免费下载
    发表于 06-09 11:47 0次下载
    通过<b class='flag-5'>Web</b>服务器<b class='flag-5'>控制</b>双直流<b class='flag-5'>电机</b>和<b class='flag-5'>伺服</b><b class='flag-5'>电机</b>

    Java web应用程序与esp8266通信以进行硬件控制,怎么实现?

    ,Netbeans IDE 用于 java 代码;另一方面,我有一张带有 8 位 PIC 微控制器 + esp8266 模块 + 和直流电机的电子卡来控制开门;应用程序密钥将是java
    发表于 05-22 06:18