Funpack3-5使用BBB板点灯
该项目使用了BeagleBone® Black 开发板,实现了控制LED灯的设计,它的主要功能为:在BBB板子上,使用python,建立http服务,通过网页控制板载LED灯的亮灭。。
标签
Funpack活动
Linux
Python
BeagleBone® Black
aramy
更新2025-01-13
132

一、硬件介绍:

image.png

一直期盼的linux板子终于来了,funpack3-5提供了三块开发板供选择,第一块就是这个BeagleBone® Black狗板啦!不过在此之前,自己确实没有留意过这个BBB的linux开发板,上网查了介绍,发现它是和树莓派齐名的linux开发板。BeagleBone 可以运行完整的 Linux 系统,程序的编写、编译和调试都可以在板子上进行,而且支持多种编程语言,如常用的 C、C++、Python、perl 都可以在 BeagleBone 内使用。此外,BeagleBone 还自带了基于 Web 的 Cloud9 编辑器以及对应的 BoneScript 语言,可以方便的在电脑浏览器中对 BeagleBone 进行编程。

BeagleBone Black 是一款基于 TI 公司 AM3358 处理器的开发套件,处理器集成了高达 1GHz 的 ARM Cortex A8 内核,并提供了丰富的外设接口,包括网口、USB Host、USB OTG、TF卡接口、串口、JTAG接口(默认不焊)、HDMI D Type 接口、eMMC、ADC、I2C、SPI 、PWM 和 LCD 接口。板载了512MB DDR3 SDRAM 内存,和4G的eMMC Flash固盘。

性能方面不算很高,但是够用,主打一个接口多。不过4G固盘,确实有点不够用,好在还有SD卡槽,可以进行扩充存储。

二、任务选择:

选择了BBB板子,我选择了任务2:在系统中建立一个网页,并且与LED联动,使用网线连接到设备上时,可以从网页中控制LED的开关与闪烁。

三、准备工作:

1、升级操作系统。拿到板子第一步,习惯性先升级系统。去官方主页下载最新的Debian的镜像文件,要留意上边的文件筛选,他家的产品还是挺多的,这里要选择手头这个BeagleBone Black开发板的镜像文件。这里我选择的是“BeaglePlay Debian 12.7 2024-09-04 XFCE Flasher”

image.png

通过Win32DiskImager进行烧录SD卡,然后插入SD卡,就可以通过SD卡启动,启动后,板子上的蓝灯会闪烁,应该是将SD卡的内容拷贝到固盘上,等待即可。

image.png

2、联网。BBB板子作为单板计算机,是提供了SSH服务,通过网络可以登录到操作系统来操作硬件的。系统将USB口作为网口进行了驱动,默认的IP为“192.168.7.2”,用户为“debian”,密码为:“temppwd”,超级用户密码也是“temppwd”。

板子上还提供了一个RJ45网口,另外还有一个USB口,在这里将手头的WAN1100网口通过USB口插入,无需安装驱动,即可可以识别到无线网卡了。

image.png

通过文件"/etc/network/interfaces"配置有线网络。

source /etc/network/interfaces.d/*
auto eth0
iface lo inet loopback
allow-hotplug eth0
iface eth0 inet static
address 100.196.128.14
netmask 255.255.255.224

通过文件“/etc/wpa_supplicant/wpa_supplicant-wlan0.conf”配置无线网络,连接自己的wifi。

ctrl_interface=DIR=/run/wpa_supplicant GROUP=netdev
update_config=1
p2p_disabled=1
#country=US

network={
ssid="Xiaomi 13"
psk="weile150"
}

然后通过命令 "sudo apt update;sudo apt upgrade"对系统做一下升级。

image.png

2.png

四、任务实现:

使用web页面控制LED灯的状态。在单板计算机上实现这个功能,和使用单片机实现区别还是蛮大的。在BBB板子上可以运行Python,所以就计划直接使用python来实现WEB页面的管理。BBB板子的GPIO口,也有python对应的库来实现管理,所以整个任务使用python来实现就变得很简单了。

image.png

1、安装对应的python包。

pip3 install --upgrade Adafruit_BBIO
pip3 install flask

Flask 是一个用 Python 编写的轻量级 Web 应用框架。使用这个框架,可以很轻易地搭建自己的WEB服务。Adafruit BBIO 是一个 API,用于从 Beaglebone 上运行的 Python 应用程序启用GPIO、PWM、ADC、UART、SPI和eQEP(正交编码器)硬件访问。

2、设计web页面。浏览器访问时,读取的内容为服务器传递的html页面,在这个页面中,添加了3个按钮,分别对应了“LED灯开”、“LED灯关”、“LED灯闪烁”三个功能。

<!Document html>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<!-- 新 Bootstrap 核心 CSS 文件 -->
<link rel="stylesheet" href="//cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap.min.css">
<!-- 可选的Bootstrap主题文件(一般不用引入) -->
<link rel="stylesheet" href="//cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap-theme.min.css">
<style>
a {
width:100%
}
</style>
<head>
<title>LED灯开关</title>
</head>
<body>
<div class="container-fluid">
<div class="row">
<a href="/on" class="btn btn-success btn-lg" role="butoon"></a>
</div>
</br>
<div class="row">
<a href="/off" class="btn btn btn-info btn-lg" role="button"></a>
</div>
</br>
<div class="row">
<a href="/sansuo" class="btn btn-danger btn-lg" role="button">闪烁</a>
</div>
</div>
<!-- jQuery文件。务必在bootstrap.min.js 之前引入 -->
<script src="//cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script>
<!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
<script src="//cdn.bootcss.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
</body>

3、搭建WEB服务。使用flask的框架。先建立文件夹BBB_led 作为项目目录。在文件夹下建立子文件夹templates,用来存放web页面,将上边的页面文件命名为"ctlled.html",最后在项目文件夹BBB_led下,建立python文件BBB_led

app = Flask(__name__)
# 进入的首个网页
@app.route('/', methods=['GET', 'POST'])
def main():
return render_template("ctlled.html") # 返回网页

4、控制LED。BBB开发板上使用两组23X2的排母,将管脚引了出来。可以通过映射去控制对应的管脚。板子上还有4颗LED灯,分别是USER0、USER1、USER2、USER3。在这里,我直接使用板子上的LED0的灯来做展示。

浏览器通过get方式访问,后台通过不同的字符串来执行相应的动作。

# 点击打开
@app.route('/on', methods=['GET'])
def on():
GPIO.output("USR0", GPIO.HIGH) # GPIO.26高电平
time.sleep(3.5) # 延时3.5s
print("555") # 打印555
return render_template("ctlled.html") # 返回一开始的页面

# 点击关闭
@app.route("/off", methods=['GET'])
def off():
GPIO.output("USR0", GPIO.LOW) # GPIO.26低电平
time.sleep(3.5)
print("666")
return render_template("ctlled.html") # #返回一开始的页面

# 点击闪烁
@app.route("/sansuo", methods=['GET'])
def sansuo():
for i in range(10):
GPIO.output("USR0", GPIO.HIGH)
time.sleep(0.2)
GPIO.output("USR0", GPIO.LOW)
time.sleep(0.2)
print("666")
return render_template("ctlled.html")

五、效果展示:

image.png

image.png

image.png

image.png

六、心得体会:

终于等到了linux的开发板,能参加这次活动超级开心。单板计算机既能很好地跑各种软件,如C、python,又能和底层硬件打交道,控制GPIO的输出、输入。在整个学习过程中,还有各位老师的耐心指导,非常感谢!

附件下载
BBB_led.zip
团队介绍
单片机业余爱好者,瞎捣鼓小能手。
团队成员
aramy
评论
0 / 100
查看更多
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号