怎么看网站是不是用凡客做的,网站制作时间,开微信公众号流程,中国机械加工网19易5下2拉i目录 项目介绍硬件介绍项目设计开发环境功能实现控制LED外设构建Webserver 功能展示项目总结 #x1f449; 【Funpack3-5】基于BeagleBone Black的网页LED控制功能 #x1f449; Github: EmbeddedCamerata/BBB_led_flask_web_control 项目介绍
基于 BeagleBoard Black 开发板… 目录 项目介绍硬件介绍项目设计开发环境功能实现控制LED外设构建Webserver 功能展示项目总结 【Funpack3-5】基于BeagleBone Black的网页LED控制功能 Github: EmbeddedCamerata/BBB_led_flask_web_control 项目介绍
基于 BeagleBoard Black 开发板在系统中使用 Flask 建立一个网页并且与板载 LED 联动。板卡通过网线与 PC 通信与供电可以从网页中控制 LED 的开关与闪烁。 BBB Cookbook
硬件介绍
BeagleBone® Black 是一款面向开发人员和业余爱好者的低成本、高扩展、并有社区支持的开发平台。处理器选用了 TI AM3358 芯片基于 ARM Cortex-A8 架构处理器。还配备了丰富的扩展资源包括 HDMI 接口、以太网、SD 卡槽、并预留了足够多的管脚用于 AD 转换、LCD 显示屏、PWM 输出、I2C、串口等等。板卡可运行完整的 Linux 系统且支持多种编程语言。 项目设计
开发环境
本项目使用 BBB 官方提供的 Debian 11.7 镜像通过 SD 卡安装系统。而后在 linux 内用 Python flask 库进行开发可能需要将板卡联网再安装 python3-flask 、python-gpiod。
功能实现
Flask 是一个使用 Python 编写的轻量级 Web 应用框架它简洁而灵活适用于开发小型至中型的 Web 应用。本项目使用 Flask 构建一个简单的 webserver
定义路由和视图函数通过装饰器来定义 URL 路由和对应的视图函数当用户访问该 URL 时Flask 将会调用对应的视图函数进行处理编写视图函数编写视图函数来处理用户的请求并返回相应的响应结果运行 Flask 应用启动 Flask 应用运行应用并监听指定的端口等待用户请求
控制LED外设
BBB 板载4个 LED USR0~3。在 linux 板卡上一般通过 libgpiod 对 GPIO 进行控制gpiod 包对 libgpiod 进行了封装以供在 Python 调用。通过 gpioinfo 命令查看 USR0~3 对应的 GPIO 所在的 chip 与 line
gpioinfo | grep -i -e chip -e usr输出如下
gpiochip0 - 32 lines:
gpiochip1 - 32 lines:line 21: [usr0 led] beaglebone:green:usr0 output active-high [used]line 22: [usr1 led] beaglebone:green:usr1 output active-high [used]line 23: [usr2 led] beaglebone:green:usr2 output active-high [used]line 24: [usr3 led] beaglebone:green:usr3 output active-high [used]
gpiochip2 - 32 lines:
gpiochip3 - 32 lines:如下所示通过 gpiod 可以控制 USR3
import gpiod
import timeLED_CHIP gpiochip1
LED_LINE_OFFSET [24] # USR0 run: gpioinfo | grep -i -e chip -e usrchip gpiod.Chip(LED_CHIP)
lines chip.get_lines(LED_LINE_OFFSET)
lines.request(consumermain.py, typegpiod.LINE_REQ_DIR_OUT)state 0 # Start with LED off
while True:lines.set_values([state])state ~state # Toggle the statetime.sleep(0.25)在 Python 中通过 chip.get_lines([...]) 获取到 GPIO 所在的 line通过 request 设置方向为输出之后通过 lines.set_values([...]) 即可实现 GPIO 控制。 再写一个控制 USR3 闪烁的函数
def blink_led():i 5while i:state lines.get_values()[0]lines.set_values([1 - state])time.sleep(0.5)i - 1构建Webserver
先新建 static 与 templates 目录分别存放静态资源例如图片、js、css文件与模板文件。templates 下编写一个简单的 css展示 LED 状态并设置三个按键控制其亮、灭、闪烁
!DOCTYPE htmlheadtitleGPIO Control/titlelink relstylesheet href../static/style.css /
/headbodyh2BBB LED Webserver Control/h2h3 Status /h3LED {{ led }}brh3 Commands /h3LED Ctrl a href/on classbuttonTURN ON/aa href/off classbuttonTURN OFF/aa href/blink classbuttonBLINK/a
/body/html主程序上先例化一个 Flask 应用实例再为其指定路由
根 URL 显示网页与 LED 状态动作响应根据响应的具体结果on、off、或 blink 响应不同的动作通过 line.set_values() 实现 LED 亮灭通过上述 blink_led() 函数实现闪烁。最后更新网页
from flask import Flask, render_template
app Flask(__name__)app.route(/)
def index():# Read Sensors Statusstate lines.get_values()[0]templateData {title: GPIO output Status,led: state,}return render_template(index.html, **templateData)app.route(/action)
def action(action):if action on:lines.set_values([1])if action off:lines.set_values([0])if action blink:blink_led()state lines.get_values()[0]templateData {led: state,}return render_template(index.html, **templateData)最后在 0.0.0.0:8080 上运行该 webserver 即可。
if __name__ __main__:app.run(host0.0.0.0, port8080, debugTrue)功能展示
首先通过 USB 将板卡与 PC 连接板卡通过 USB 供电。在 PC 上连接板卡的有线网。此时PC IP 地址为192.168.7.1板卡地址为 192.168.7.2。 打开端口即可查看网页网页中显示 LED 状态及三个控制按键 USR3 LED 位于左下靠近以太网口。用户点击不同按键改变 LED 状态后网页会更新状态。 详细展示参见B站基于BeagleBone Black的网页LED控制功能
项目总结
本次项目基于 BeagleBoard Black、gpiod 与 Flask 实现了在系统中建立网页界面与用户进行交互与数据显示学习了 Linux 开发板上控制 GPIO 的库 gpiod 的使用方法实现了从网页中控制板载 LED 的开关与闪烁。