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

    文章

    1262

    浏览量

    69441
  • 伺服电机
    +关注

    关注

    85

    文章

    2044

    浏览量

    57810
  • 树莓派
    +关注

    关注

    116

    文章

    1706

    浏览量

    105609
  • flask
    +关注

    关注

    0

    文章

    16

    浏览量

    3614
收藏 人收藏

    评论

    相关推荐

    SSM框架在Java开发中的应用 如何使用SSM进行web开发

    (full-stack)的应用程序框架,它提供了全面的基础设施建设支持,能够帮助开发者构建出企业级的应用程序。Spring的核心是控制反转(I
    的头像 发表于 12-16 17:28 422次阅读

    HarmonyOS Web开发性能优化指导

    20ms收益。 | 低 | - | ArrayBuffer格式的数据传输。 | (二)预启动Web渲染进程 原理介绍 此方案适用于Web页面启动场景。开发者需额外创建一个空白的ArkWeb组件,它虽不
    发表于 12-06 08:41

    AWTK-WEB 快速入门(2) - JS 应用程序

    导读AWTK可以使用相同的技术栈开发各种平台的应用程序。有时我们需要使用Web界面与设备进行交互,本文介绍一下如何使用JS语言开发AWTK-WEB应用程序。用AWTKDesigner新
    的头像 发表于 12-05 01:04 92次阅读
    AWTK-<b class='flag-5'>WEB</b> 快速入门(2) - JS <b class='flag-5'>应用程序</b>

    AWTK-WEB 快速入门(1) - C 语言应用程序

    导读AWTK可以使用相同的技术栈开发各种平台的应用程序。有时我们需要使用Web界面与设备进行交互,本文介绍一下如何使用C语言开发AWTK-WEB应用程序。用AWTKDesigner新建
    的头像 发表于 11-27 11:46 186次阅读
    AWTK-<b class='flag-5'>WEB</b> 快速入门(1) - C 语言<b class='flag-5'>应用程序</b>

    伺服电机原理及控制应用

    伺服电机(Servo Motor)是一种高精度、高性能的电动机系统,广泛应用于需要精确控制位置、速度和加速度的场合。 一、伺服电机的工作原理
    的头像 发表于 10-22 16:58 475次阅读

    华纳云:java web和java有什么区别java web和java有什么区别

    Java Web和Java是两个不同的概念,它们在功能、用途和实现方式上存在一些区别,下面将详细介绍它们之间的区别。 1. 功能和用途: – Java是一种编程语言,它提供了一种用于开发各种应用程序
    的头像 发表于 07-16 13:35 785次阅读
    华纳云:java <b class='flag-5'>web</b>和java有什么区别java <b class='flag-5'>web</b>和java有什么区别

    通过I2C PWM IC控制伺服,可以为伺服控制进行高优先级中断吗?

    我开始运行一个具有非常简单的伺服控制Web 服务 我通过I2C PWM IC控制伺服, 我必须每 10 毫秒向 PWM IC 写入新
    发表于 07-12 06:20

    鸿蒙ArkTS声明式组件:Web

    提供具有网页显示能力的Web组件,[@ohos.web.webview]提供web控制能力。
    的头像 发表于 07-04 15:35 666次阅读
    鸿蒙ArkTS声明式组件:<b class='flag-5'>Web</b>

    鸿蒙原生应用元服务开发-Web相关说明

    Web组件用于在应用程序中显示Web页面内容,为开发者提供页面加载、页面交互、页面调试等能力。 页面加载:Web组件提供基础的前端页面加载的能力,包括加载网络页面、本地页面、Html格
    发表于 05-10 15:03

    HarmonyOS开发案例:【Web组件实现抽奖】

    基于ArkTS的声明式开发范式的样例,主要介绍了Web组件如何加载本地和云端H5小程序
    的头像 发表于 05-09 18:31 1373次阅读
    HarmonyOS开发案例:【<b class='flag-5'>Web</b>组件实现抽奖】

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

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

    边缘Web智能网关是什么?边缘Web智能网关的功能

    边缘Web智能网关是一种新型的物联网设备,主要在物联网(IoT)设备与云计算服务之间建立连接,实现数据的收集、处理和传输。 边缘Web智能网关就是边缘计算网关,通过WEB端进行网关的配置、管理 边缘
    的头像 发表于 04-07 14:42 448次阅读

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

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

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

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

    什么是web服务器?如何选择服务器配置?

    Web服务器是一种软件或硬件设备,用于托管和提供网页内容。它接收客户端(如浏览器)发送的HTTP请求,返回相应的网页内容或其他资源,以实现更高的性能和可靠性。它是网站和应用程序在互联网上构建和交付
    的头像 发表于 01-03 15:25 1092次阅读