“Funpack3-5” BeagleBone® Black 的linux开发板全球网页控制与PRU点灯
该项目使用了C 语言 、 Python 语言,实现了远程控制linux开发板的设计,它的主要功能为:全球任意位置通过网页访问上位机服务器,通过上位机控制开发板,实现PRU点灯。
标签
嵌入式系统
Funpack活动
测试
开发板
接口
USB
墨非沧海
更新2025-01-13
吉林大学
6

第1章                    项目描述

1.1       项目介绍

本项目完成电子森林网站Funpack3-5”活动板卡1 BeagleBone® Black的任务二。在系统中建立一个网页,并且与LED联动,使用网线连接到设备上时,可以从网页中控制LED的开关与闪烁。本项目在网页中实现了PRU点灯的效果。

1.2       设计思路

首先借助于官方文档与例程,以及官方在gitlab的代码仓库,C语言实现PRU编译后点灯。然后借助于python paramiko 库实现上位机网络登陆 linux 开发板,然后使用 gradio 库,构建一个网页前端,包含一个点灯按钮及其他功能,实现对开发板的控制,最后退出开发板,关灯。另外,基于gradio自带的内网穿透功能,暴露这一网页到公网,实现了全球任意位置对该板卡的硬件进行控制。

 

1.3       硬件介绍

BeagleBone® Black 是一款面向开发人员和业余爱好者的低成本、高扩展、并有社区支持的开发平台。处理器选用了TI AM3358芯片,基于ARM Cortex-A8架构处理器。还配备了丰富的扩展资源,包括HDMI接口、以太网、SD 卡槽、并预留了足够多的管脚用于AD转换、LCD显示屏、PWM输出、I2C、串口等等。板卡可运行完整的 Linux 系统,且支持多种编程语言。

image.png

采用内存512 MB DDR 3 LCPUSitara AM3358BZCZ100, 1GHZ。有一个USB接口,一个micro HDMI 接口可以连接显示器,该系统也可以使用2.4 GHz 无线接收器实现键鼠操控。

存储:内置4GBeMMC闪存,用于存储操作系统和用户数据。

         I/O接口:

2x 46-pin双排扩展头,提供GPIOI2CSPIUART等多种接口。

1x 2x20-pin P8/P9扩展头,提供额外的GPIOPWM接口。

1x microSD卡槽,用于扩展存储。

视频输出:支持HDMI输出,分辨率可达1080p

电源:通过micro USB接口供电,支持5V DC

尺寸:尺寸为82mm x 50mm,便于嵌入式项目集成。

其他特性:

支持Linux操作系统,如DebianUbuntu

支持多种编程语言和开发工具,如PythonJavaC/C++等。

支持多种通信协议,如I2CSPIUARTCAN等。

该板卡出厂系统内置了cloud9 ,这是亚马逊开源的网页。

该板卡作为近十年来的国际热门 linux 开发板,拥有非常强大的官方文档支持与社区资源:

代码仓库:https://git.beagleboard.org/docs/docs.beagleboard.io/-/tree/main

文档:

https://docs.beagleboard.io/latest/boards/beaglebone/black/index.html#beagleboneblack-home

https://docs.beagleboard.org/beaglebone-black.pdf

支持外设:https://elinux.org/Beagleboard:BeagleBone_Black_Accessories

官方镜像更新:https://beagleboard.org/latest-images

综上,BeagleBone Black是一款功能强大、性价比高的单板计算机,适合用于各种嵌入式系统和物联网项目。它的硬件配置和丰富的接口使其成为教育、研究和工业应用的理想选择。

1.3.1        PRU基础概念

PRU AM335x SoC 上的双核微控制器系统。它旨在用于高速无抖动 IO 控制。PRU 独立于 linux 调度程序,可以直接访问 BeagleBone Black IO 引脚,是 IO 密集型任务的理想选择。

PRU 编写固件,编写加载程序。

PRU C 之上实现一种语言来实现。它将直接编译为 PRU C。这也可以通过在 PRU 上实现字节码引擎来解决,但这将导致 PRU 上本已有限的资源的浪费。使用这种方法,两个 PRU 内核可以彼此独立运行。

simpPRU 是一种过程编程语言

simpPRU 代码的扩展名为 `.sim`

simpPRU 提供了一个控制台应用程序来使用 Remoteproc 功能。

1.3.2        连接

注意,上电开机,关机需要按一下S3电源键。

通过 USB 连接和 Web 访问,插上官方 USB(板卡附赠,可以同时供电与交换网络数据),接入PC端,打开本地服务器。在 BeagleBone 的板载存储中其实已经存放了文档和驱动,它们可以帮助你更容易地连接 BeagleBone。注意修改以太网硬件的IP 地址(固定IP), `192.168.7.1`

http://192.168.7.2/

http://beaglebone.local/

大约 20 秒后,一个可移动存储设备会出现在你的磁盘列表中,双击其中的 START.htm

输入http://192.168.7.2/ide.html 即可联网。

image.png 

其他连接方式:VSCode远程连接sshmobaxterm连接。

使用mobaxterm软件输入 `192.168.7.2` `debian`,输入密码

image.png

1.3.3        点灯所关联的硬件与命令行

BeagleBone black wireles 上有4个可以闪的用户灯,名字为 USR 0-3

cd /sys/devices/platform/leds/leds/

# 可以看到三个灯

ls

cd beaglebone\:green\:usr1

# 可以看到设备

ls

brightness  device  max_brightness  power  subsystem  trigger  uevent

trigger:工作模式。有很多模式可以选。因为我们要手动使用,需要将其配置为 none

max_brightness : 最大亮度,因为我们的灯只有开和关两个状态,所以1为最亮,0为灭。不用配置。

brightness:亮度。输入1为亮,0为灭。


echo none >trigger #配置

cat trigger #打印

echo 1 > brightness # 点亮1

echo 0 > brightness # 关闭0

第2章                    软件流程图

image.png 

第3章                    各功能对应的主要代码片段及说明

3.1       上位机部分

创建 SSH 客户端。

ssh = paramiko.SSHClient()

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

尝试SSH连接板卡:

def connect_to_board():

    try:

        ssh.connect(ssh_host, ssh_port, ssh_username, ssh_password)

        return "Connected to the development board."

    except Exception as e:

        return f"Failed to connect: {e}"

 

驱动点灯程序:

执行 hello.pru0 ,只需要:

cd /opt/source/pru-cookbook-code/02start && make TARGET=hello.pru0

3.2       板卡PRU编译

https://github.com/VedantParanjape/simpPRU.git 下载代码库。拉入单片机即可。

如果常规PRU点灯启停:



cd /opt/source/pru-cookbook-code/06io

source setup.sh

make

bone$ make stop

-    Stopping PRU 0

stop

bone$ make start

-    Starting PRU 0

start


另外PRU还可以参考:

 https://docs.beagleboard.org/latest/books/pru-cookbook/02start/start.html#blinking-an-led

3.3       PRU代码解读

本文使用“hello.pru0.C”。

GPIO控制:

 uint32_t *gpio1 = (uint32_t *)GPIO1;         

循环控制:

         for(i=0; i<10; i++) {

                   gpio1[GPIO_SETDATAOUT]   = USR3;   // The the USR3 LED on

 

                   __delay_cycles(500000000/5);    // Wait 1/2 second

 

                   gpio1[GPIO_CLEARDATAOUT] = USR3;

 

                   __delay_cycles(500000000/5);

 

         }

 

 

第4章                    功能展示及说明

程序启动,Gradio 自动创建一个免费内网穿透远程服务器。

image.png

然后会自动打开网页,具备部分功能,点击make可以直接让USER3LED灯实现点灯。


还有output区域显示当前状态。

image.png

image.png

 

第5章                    对本活动的心得体会

本次活动接触了BeagleBone® Black 板卡,不同于常规的linux板卡,其支持PRU特性让需要工业应用成为可能,另外也是第一次了解到这个系列板卡以及非常丰富的社区支持,非常适合自学的开发板。

本次活动也设计了一版上位机SSH通讯的代码,并且完成了板卡控制任务,积累了一定的经验。

最后,感谢电子森林提供的活动与支持。

 

 

附件下载
远控命令行执行 .py
PC端运行的交互网页
hello.pru0.C
板卡调用的实际点灯程序
团队介绍
墨海纵横,鸢游四方。开启汽车智能化新纪元。
团队成员
墨非沧海
评论
0 / 100
查看更多
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号