当前位置:首页 > 工业控制 > 电路设计项目集锦
[导读]官方Arduino UNO Q是一款性能强大的开发板。与传统微控制器不同,它采用“双脑”架构:搭载高通® Dragonwing™ MPU,运行Linux Debian系统,用于处理复杂的AI和计算任务;同时配备STM32U585微控制器,实现实时硬件控制。

官方Arduino UNO Q是一款性能强大的开发板。与传统微控制器不同,它采用“双脑”架构:搭载高通® Dragonwing™ MPU,运行Linux Debian系统,用于处理复杂的AI和计算任务;同时配备STM32U585微控制器,实现实时硬件控制。

但一旦你将这个板部署在远程位置,比如智能花园监测器、天花板安装的AI摄像头或远程气象站,通过插入USB-C线缆来检查状态或更改设置就会变得非常麻烦。

本项目向您展示如何将两个“大脑”连接起来,创建一个无线智能手机仪表板。您将在 Linux 端运行一个轻量级 Web 服务器,通过它可控制 STM32 的引脚,并直接在手机浏览器中查看实时硬件反馈。无需安装定制应用,设置完成后也不需要任何线缆!

详情

要使这正常运行,两个处理器需要相互通信。

•Linux MPU 运行一个 Python 网络服务器,通过 Wi-Fi 向您的智能手机提供简洁的 HTML 仪表板。

•当你在手机上点击按钮时,Python 脚本会向 STM32 微控制器发送一条串行指令。

•STM32持续监听,接收到指令后会切换硬件(例如打开继电器或在内置的8x13 LED矩阵上绘制图案)。

这种配置意味着你的手机充当遥控器,Linux MPU 作为无线路由器/网络主机,而 STM32 则充当“肌肉”。

1 — 初始设置与Wi-Fi连接

首先,我们需要将UNO Q连接到您的本地网络。

•通过USB-C端口将Arduino UNO Q连接到您的电脑。

•使用 5V 3A USB-C PD 转换器供电(也可使用电脑,但建议使用专用适配器以充分发挥 SBC 的性能)。

•通过 SSH 或串行控制台访问 Linux 终端。

•使用标准的 Debian 网络管理器或 Arduino App Lab 连接到您的 Wi-Fi。

•连接后,在终端中输入 hostname -I 以查找板子的 IP 地址(例如:192.168.1.45)。请记下这个地址!

2 — 操作STM32微控制器(肌肉)

现在我们让实时MCU监听来自Linux端的命令。

•在您的电脑上打开 Arduino IDE。

•选择 Arduino UNO Q(STM32 侧)作为你的板,并选择正确的 COM 端口。

•上传以下草图。该代码监听内部串行端口,接收特定字符(1 表示开启硬件,0 表示关闭),并返回心跳消息给 Linux 端,以便你确认它正在运行。

3 — 在 Linux 上设置 Web 服务器(大脑)

现在我们转向高通MPU端。我们将使用Flask库创建一个简单的Python Web服务器。

•登录到你的Arduino UNO Q的Linux环境。

•通过运行以下命令安装 Flask 和 PySerial:pip3 install flask pyserial

•创建一个名为 dashboard.py 的新 Python 文件,并粘贴以下代码。该脚本将生成一个适配移动端的网页,包含“开启”和“关闭”按钮。

•运行脚本:python3 dashboard.py

4 — 通过智能手机远程控制

最棒的是——无需安装应用,也无需使用数据线!

•请确保您的智能手机连接到与Arduino UNO Q相同的Wi-Fi网络。

•在手机上打开 Chrome 或 Safari 浏览器。

•您将看到一个简洁、便于移动设备访问的仪表盘。

•点击按钮!您将立即看到STM32的响应以及内置硬件的切换。

部署专业技巧

•静态IP:为避免每次都需要输入新的IP地址,请在路由器的DHCP设置中为您的UNO Q分配一个静态IP。

•扩展功能:您可以轻松扩展此仪表板,以读取通过Qwiic接口连接的温度传感器,甚至可以触发预加载在Arduino App Lab中的AI视觉模型!

•自动启动:要让 Python 仪表板在 UNO Q 启动时每次运行,请将命令 python3 /path/to/dashboard.py 添加到您的 Linux cron 表或 systemd 服务中。

代码

本文编译自hackster.io

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读

对于嵌入式Linux开发者来说,最影响开发效率的往往不是代码编写本身,而是繁琐的调试流程:更新内核要反复拔插SD卡,测试应用要每次编译后手动传输文件,看日志还要一直守着串口线。一套便捷高效的开发环境,能把调试流程从十几分...

关键字: Linux 嵌入式

当我们谈论RISC-V的设计特色,讨论得最多的往往是它开源开放的属性、模块化的指令集设计,还有灵活的特权级架构。但很少有人会深入拆解它的启动流程,去品味这套架构在启动阶段设计里藏着的巧思。我自己在做RISC-V嵌入式开发...

关键字: RISC-V Linux

在操作系统学习和后端开发面试中,“线程间共享哪些资源、又隔离哪些资源”是一个高频问题,很多人对此一知半解:只记得“线程共享进程地址空间”,但具体到哪些内存区域、哪些资源是共享的,哪些是线程私有,总是说不清楚。实际上,理解...

关键字: Linux 线程

在Linux系统的C语言开发中,字节对齐是一个绕不开的基础话题。很多开发者都遇到过这样的困惑:明明计算结构体大小时把每个成员的字节数加起来,结果实际大小却比计算值大上好几倍,甚至修改结构体成员的排列顺序,总大小还会发生变...

关键字: Linux CPU

在嵌入式Linux开发中,管脚配置与GPIO控制是驱动开发的核心基础工作。从嵌入式单板到桌面级服务器,几乎所有硬件交互都离不开对芯片管脚的配置与管理。早期Linux内核没有统一的管脚管理框架,各个厂商的BSP代码各自为政...

关键字: Linux GPIO

不管是新手入门还是开发多年的工程师,理解程序运行时的内存分布,都是读懂底层运行逻辑、排查内存问题、写出高效代码的基础。很多人只知道写代码申请变量,却不知道这些变量在内存里到底放在哪里,不同区域的特性有什么区别,遇到内存越...

关键字: 内存 Linux

GPIO(通用输入输出口)是嵌入式Linux开发中最基础也最常用的硬件资源,小到LED闪烁、按键检测,大到外设控制、引脚扩展,都离不开GPIO操作。不同于裸机开发中直接操作寄存器的方式,Linux内核提供了一套成熟的GP...

关键字: GPIO Linux

字符设备是Linux中最基础的设备类型之一,键盘、鼠标、串口、I2C设备、LED驱动这类常用的嵌入式设备,大多都属于字符设备,掌握字符设备驱动的基本框架,是学习Linux驱动开发的第一步。Linux内核从早期的2.6版本...

关键字: Linux 字符

树莓派3B凭借低成本、高性能、丰富的外设资源,一直是嵌入式爱好者和开发者学习RTOS的热门平台,而RT-Thread作为国内生态最完善的开源实时操作系统,对树莓派3B有着完善的原生支持。但很多刚接触的开发者,往往卡在环境...

关键字: RT-Thread Linux

本节演示如何使用AIE DIALECTS和AIE API,在AMD Ryzen AI Phoenix中对复杂数字信号在频域进行“相位变换”。

关键字: Linux 相位变换 AI
关闭