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

    文章

    1255

    浏览量

    69322
  • 伺服电机
    +关注

    关注

    85

    文章

    2027

    浏览量

    57686
  • 树莓派
    +关注

    关注

    116

    文章

    1697

    浏览量

    105502
  • flask
    +关注

    关注

    0

    文章

    16

    浏览量

    3608
收藏 人收藏

    评论

    相关推荐

    伺服电机原理及控制应用

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

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

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

    鸿蒙ArkTS声明式组件:Web

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

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

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

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

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

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

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

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

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

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

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

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

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

    eclipse安装web插件步骤

    Eclipse 是一款功能强大的集成开发环境 (IDE),广泛用于 Java 开发和各种 Web 应用程序的开发。通过安装适当的插件,可以将 Eclipse 转变为一个强大的 Web 开发工具。本文
    的头像 发表于 12-06 13:48 1041次阅读

    怎么用eclipse创建web项目

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

    Python Web框架Django 5.0新特性

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

    eclipse中没有web怎么办

    Eclipse JST插件(Eclipse JST Plugins),它们提供了Web开发所需的组件和工具。 第二种方法是通过Eclipse的Marketplace来搜索添加Web开发插件。
    的头像 发表于 12-06 11:30 2501次阅读

    java web 三大组件 启动顺序

    应用中,Servlet、JSP和Filter的启动顺序如下: Servlet的启动顺序: Servlet是Java Web应用中最重要的组件之一。它用于处理客户端的请求,生成相应的响应。在应用启动时
    的头像 发表于 12-03 11:45 813次阅读

    【从0开始创建AWTK应用程序创建应用程序并在模拟器运行

    AWTK是基于C语言开发的跨平台GUI框架。本系列文章介绍如何从0开始创建AWTK应用程序,包括搭建开发调试环境、使用AWTK创建Hello工程并在模拟器上运行、将AWTK应用程序移植
    的头像 发表于 12-01 08:24 462次阅读
    【从0开始<b class='flag-5'>创建</b>AWTK<b class='flag-5'>应用程序</b>】<b class='flag-5'>创建</b><b class='flag-5'>应用程序</b>并在模拟器运行