这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » BeagleBone®Black开发板驱动

共1条 1/1 1 跳转至

BeagleBone®Black开发板驱动

高工
2026-05-17 21:42:54     打赏
硬件介绍一直期盼的 Linux 板子终于来了,Funpack3-5 提供了三块开发板供选择,第一块就是这个 BeagleBone® Black 狗板。在此之前确实没有留意过 BBB,上网查了介绍后发现,它是和 树莓派齐名 的 Linux 开发板。BeagleBone 可以运行完整的 Linux 系统,程序的编写、编译和调试都可以在板子上进行,而且支持多种编程语言,如常用的 C、C++、Python、Perl 都可以在 BeagleBone 内使用。此外,BeagleBone 还自带了基于 Web 的 Cloud9 编辑器以及对应的 BoneScript 语言,可以方便地在电脑浏览器中对 BeagleBone 进行编程。BeagleBone Black 是一款基于 TI 公司 AM3358 处理器的开发套件,处理器集成了高达 1GHz 的 ARM Cortex-A8 内核,并提供了丰富的外设接口,包括:网口、USB Host、USB OTGTF 卡接口、串口JTAG 接口(默认不焊)HDMI D Type 接口eMMC、ADC、I2C、SPI、PWM、LCD 接口板载了 512MB DDR3 SDRAM 内存和 4GB eMMC Flash 固盘。

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



升级操作系统拿到板子第一步,习惯性先升级系统。去官方主页下载最新的 Debian 镜像文件,要留意上边的文件筛选,他家的产品还是挺多的,需要选择手头这块 BeagleBone Black 开发板对应的镜像文件。这里我选择的是:

BeaglePlay Debian 12.7 2024-09-04 XFCE Flasher


image.png

烧录 SD 卡使用 Win32DiskImager 将镜像烧录到 SD 卡中,操作比较简单,选择镜像文件、选择SD卡盘符,点击写入即可。


启动与初始化

烧录完成后,将 SD 卡插入开发板,即可通过 SD 卡启动。启动后,板子上的 蓝灯会闪烁,这是系统正在将 SD 卡中的内容拷贝到板载 eMMC 固盘中,相当于把系统正式装到了板子上。

这个过程需要耐心等待,不要断电或拔卡,等蓝灯停止闪烁、恢复常亮或熄灭后,说明初始化完成,就可以正常使用了。

image.png

联网配置BBB 板子作为单板计算机,系统默认开启了 SSH 服务,通过网络即可远程登录到操作系统,对硬件进行操作,非常方便。系统将 USB 口虚拟为网口使用,默认配置如下:项目 默认值IP 地址 192.168.7.2用户名 debian密码 temppwdroot 密码 temppwd首次登录后建议修改密码,毕竟默认密码谁都知道,不太安全。


扩展网络

板子上除了 USB 虚拟网口外,还提供了一个 RJ45 有线网口,另外还有一个 USB Host 接口。

在这里,我将手头的 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"
}


联网之后,第一件事就是把系统更新到最新。打开终端,执行以下命令:bashsudo apt update && sudo apt upgrade -y

等待升级完成即可,过程中会提示一些确认信息,直接按 Y 回车就行。

image.png


image.png

任务实现本次任务目标:通过 Web 页面控制板载 LED 灯的开关状态。在单板计算机上实现这个功能,和使用单片机实现的思路区别还是蛮大的。单片机上通常需要自己搭建 HTTP 服务或者用专用的 Web 库,资源有限,操作起来比较费劲。

而在 BBB 板子上,本身就可以运行 Python,所以就计划直接使用 Python 来实现 Web 页面的管理。恰好 BBB 的 GPIO 口也有对应的 Python 库(如 Adafruit_BBIO) 可以直接调用,不需要自己去操作寄存器,整个任务用 Python 来实现就变得非常简单了,基本上就是几行代码的事。


55db736ab1eb3622a5a4b39122e4904b.png


安装对应的python包。

pip3 install --upgrade Adafruit_BBIO
pip3 install flask

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

设计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>

搭建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")  # 返回网页

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

image.png

浏览器通过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


共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]