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

    文章

    1309

    浏览量

    74940
  • 伺服电机
    +关注

    关注

    88

    文章

    2200

    浏览量

    61532
  • 树莓派
    +关注

    关注

    122

    文章

    2081

    浏览量

    110749
  • flask
    +关注

    关注

    0

    文章

    16

    浏览量

    3886
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    不限Web用户数量、更低成本 | Essentials Web无限版SCADA方案正式发布

    宏集Panorama轻量级SCADA方案正式上线!Essentials Web无限版方案,打破传统SCADA按用户收费模式,让工业数据真正实现全员共享:不限Web客户端数量,支持25,000个数据标签,内含开发环境,开箱即用,工业级网络安全保障,低门槛起步,后续可扩展。
    的头像 发表于 04-01 16:26 608次阅读
    不限<b class='flag-5'>Web</b>用户数量、更低成本 | Essentials <b class='flag-5'>Web</b>无限版SCADA方案正式发布

    VF2 Debian image 69 Web 浏览器失败,怎么修复?

    只需启动运行图像 69。 $ ip 一个 显示互联网连接已建立良好。 单击以运行默认的Web浏览器时,会弹出一条错误消息。 “无法执行默认 Web 浏览器。” 输入/输出错误。 有什么提示需要修复吗?
    发表于 03-24 06:54

    Python运行本地Web服务实现远程访问

    本文介绍使用Python搭建本地Web服务结合 ZeroNews 实现公网访问。
    的头像 发表于 02-06 11:39 310次阅读
    Python运行本地<b class='flag-5'>Web</b>服务<b class='flag-5'>并</b>实现远程访问

    伺服电机控制方式简述

    伺服电机作为自动化控制系统的核心执行元件,其控制方式直接决定了设备的动态响应、定位精度和运行效率。随着工业4.0和智能制造的发展,伺服
    的头像 发表于 12-01 07:37 1055次阅读
    <b class='flag-5'>伺服</b><b class='flag-5'>电机</b>的<b class='flag-5'>控制</b>方式简述

    伺服电机和步进电机的核心区别

    大家在运动控制的时候是用伺服电机的还是用步进电机做定位控制了?为什么有时候用伺服
    的头像 发表于 10-15 14:32 1969次阅读
    <b class='flag-5'>伺服</b><b class='flag-5'>电机</b>和步进<b class='flag-5'>电机</b>的核心区别

    如何快速在云服务器上部署Web环境?

    如何快速在云服务器上部署Web环境
    的头像 发表于 10-14 14:16 833次阅读

    如何在树莓派上安装Ubuntu MATE ?

    ,而非GNOME。在本文中,我将介绍如何轻松地在树莓派上安装它。UbuntuMATE官方支持树莓派,因此每发布一个新版本,都会为树莓派发布一个镜像。该镜像可刷入S
    的头像 发表于 08-12 18:56 3430次阅读
    如何在<b class='flag-5'>树莓</b><b class='flag-5'>派上</b>安装Ubuntu MATE ?

    技能+1!如何在树莓派上使用C++控制GPIO?

    和PiGPIO等库,C++可用于编程控制树莓派的GPIO引脚。它提供了更好的性能和控制能力,非常适合对速度和精度要求较高的硬件项目。在树莓派社区中,关于“Python
    的头像 发表于 08-06 15:33 4461次阅读
    技能+1!如何在<b class='flag-5'>树莓</b><b class='flag-5'>派上</b>使用C++<b class='flag-5'>控制</b>GPIO?

    初学者指南:树莓派上搭建虚拟环境!

    在这篇简明扼要的指南中,我们将探讨如何在树莓派上设置和使用虚拟环境(或称为Venv)——包括在终端和Thonny集成开发环境中。使用Bookworm操作系统或更高版本时,或在尝试安装Python
    的头像 发表于 07-27 13:24 1158次阅读
    初学者指南:<b class='flag-5'>树莓</b><b class='flag-5'>派上</b>搭建虚拟环境!

    如何在树莓派上设置使用VNC?远程访问完整指南!

    为什么要在树莓派上使用VNC?使用VNC与树莓派的主要优势在于其提供的灵活性。我们可以在“无头模式”(无物理显示器)下运行树莓派,同时仍能完全访问其图形用户界面(GUI)。这减少了对额
    的头像 发表于 07-26 20:42 6130次阅读
    如何在<b class='flag-5'>树莓</b><b class='flag-5'>派上</b>设置<b class='flag-5'>并</b>使用VNC?远程访问完整指南!

    C++ 与 Python:树莓派上哪种语言更优?

    Python是树莓派上的首选编程语言,我们的大部分教程都使用它。然而,C++在物联网项目中同样广受欢迎且功能强大。那么,在树莓派项目中选择哪种语言更合适呢?Python因其简洁性、丰富的库和资源而被
    的头像 发表于 07-24 15:32 1096次阅读
    C++ 与 Python:<b class='flag-5'>树莓</b><b class='flag-5'>派上</b>哪种语言更优?

    如何在树莓派上安装运行 Arduino 集成开发环境!

    使用树莓派单板计算机,你可以运行各种应用程序,包括广受欢迎的Arduino集成开发环境(IDE)。这意味着你可以用它轻松地为通过USB连接到树莓派计算机的微控制器编程,以
    的头像 发表于 07-01 17:41 4543次阅读
    如何在<b class='flag-5'>树莓</b><b class='flag-5'>派上</b>安装<b class='flag-5'>并</b>运行 Arduino 集成开发环境!

    labview如何调用web api

    同事给了一个web api 的接口地址,方法名等等。但是我不会用labview去调用。求高手指点!
    发表于 06-26 17:24

    WEB组态物联网平台是什么?有什么功能?

    、流程控制等操作,无需安装本地客户端。 核心特点 : Web化部署 :基于B/S架构,用户通过浏览器即可访问,降低部署和维护成本。 组态化配置 :提供拖拽式界面设计工具,用户可快速搭建监控画面(如工业流程图、设备状态看板等)。 物联网集成 :
    的头像 发表于 06-17 15:25 1179次阅读

    从初学到进阶:树莓派上最适合你的代码编辑器推荐!

    安装树莓派操作系统后,你就可以使用Python、Scratch、Java、C/C++等受Linux支持的多种编程语言进行编程了。其中,Python是树莓派上最受欢迎的编程语言。在树莓
    的头像 发表于 05-15 16:20 1372次阅读
    从初学到进阶:<b class='flag-5'>树莓</b><b class='flag-5'>派上</b>最适合你的代码编辑器推荐!