• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

【你购物我买单】+Arduino Uno Q 开箱贴

 什么是 Arduino UNO Q?

Arduino UNO Q 是一款开发板,配备了高通 Dragonwing™ QRB2210 系统单片(称为“MPU”或“Linux 侧”)和一个 STM32U585 微控制器(MCU)。这种组合意味着我们可以像“传统”Arduino(使用 STM32U585)一样编程,同时也能运行 Linux 应用程序,比如用 Python。

核心亮点:

双核架构:Linux 处理器(MPU) + Arduino 微控制器(MCU)

AI 就绪:支持在设备端运行 AI 模型与计算机视觉

全功能无线:Wi-Fi 5 + 蓝牙 5.1

即插即用:兼容大量 Arduino Shield 与 Qwiic 生态系统

1. Linux 处理器(MPU)

芯片:Qualcomm Dragonwing™ QRB2210

核心:4 × Arm Cortex-A53 @ 2.0 GHz

系统:Debian Linux

能力:运行 Python、AI 模型、Web 服务器、摄像头处理等高级应用

2. 实时微控制器(MCU)

芯片:STMicroelectronics STM32U585

核心:Arm Cortex-M33 @ 160 MHz

环境:Arduino Core on Zephyr OS

能力:实时控制、传感器读取、PWM、ADC、CAN 通信等

两者如何通信?

通过 Arduino Bridge——一个基于 RPC(远程过程调用)的通信层,让 Linux 应用与 Arduino 草图可以轻松交换数据与指令。

 硬件规格速览

两个版本可选:

ABX00162:2 GB RAM + 16 GB 存储

ABX00173:4 GB RAM + 32 GB 存储(推荐用于 AI 与多任务)

主要接口:

USB-C:支持数据传输、5V/3A 供电、DisplayPort 视频输出

无线:双频 Wi-Fi 5(802.11ac) + 蓝牙 5.1

扩展接口

JMEDIA:MIPI 摄像头/显示屏接口(1.8V)

JMISC:混合电压接口(音频、GPIO、SDIO)

JDIGITAL / JANALOG:3.3V 数字/模拟接口(兼容 UNO Shield)

QWIIC:即插即用 I²C 接口

JSPI:专用 SPI 接口

电源输入:

USB-C:5V / 3A

VIN 引脚:7–24V DC

支持双电源输入与自动切换

 编程新体验:Arduino App Lab

UNO Q 使用 Arduino App Lab 进行开发,这是一个集成化开发环境,支持:

三种连接方式

USB 连接(桌面模式)

网络连接(SSH,同一 Wi-Fi 下)

单板计算机模式(接显示器、键鼠独立使用)

例程介绍

接下来我将用Arduino App Lab里自带的例程“Weather forecast on LED matrix”为大家介绍Arduino Uno Q的工作原理。

如何使用

在前面准备工作都做好之后就可以打开下图所示例程,点击右上角“RUN”即可开始下载库、编译运行。开始运行之后即可在LED矩阵上看到都灵此时的天气。

效果如下图

原理介绍

工程结构如下图所示

其中"python"文件夹下的"main.py"为运行在Linux端的代码,"sketch"文件夹下的"sketch.ino"为运行在stm32端的代码,下面将分别介绍。

Linux端(Python应用)

# SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc)
#
# SPDX-License-Identifier: MPL-2.0

from arduino.app_bricks.weather_forecast import WeatherForecast
from arduino.app_utils import *

forecaster = WeatherForecast()


def get_weather_forecast(city: str) -> str:
    forecast = forecaster.get_forecast_by_city(city)
    print(f"Weather forecast for {city}: {forecast.description}")
    return forecast.category


Bridge.provide("get_weather_forecast", get_weather_forecast)

App.run()

Linux端负责:

通过weather_forecast Brick处理API通信

将复杂的天气代码(如WMO代码)转换为简单的天气类别

通过Bridge向MCU端提供天气查询服务

微控制器端(Arduino草图)

// SPDX-FileCopyrightText: Copyright (C) ARDUINO SRL (http://www.arduino.cc)
//
// SPDX-License-Identifier: MPL-2.0

#include <Arduino_LED_Matrix.h>
#include <Arduino_RouterBridge.h>

#include "weather_frames.h"

String city = "Turin";

Arduino_LED_Matrix matrix;

void setup() {
  matrix.begin();
  matrix.clear();

  Bridge.begin();
}

void loop() {
  String weather_forecast;
  bool ok = Bridge.call("get_weather_forecast", city).result(weather_forecast);
  if (ok) {
    if (weather_forecast == "sunny") {
      matrix.loadSequence(sunny);
      playRepeat(10);
    } else if (weather_forecast == "cloudy") {
      matrix.loadSequence(cloudy);
      playRepeat(10);
    } else if (weather_forecast == "rainy") {
      matrix.loadSequence(rainy);
      playRepeat(20);
    } else if (weather_forecast == "snowy") {
      matrix.loadSequence(snowy);
      playRepeat(10);
    } else if (weather_forecast == "foggy") {
      matrix.loadSequence(foggy);
      playRepeat(5);
    }
  }
}

void playRepeat(int repeat_count) {
  for (int i = 0; i < repeat_count; i++) {
    matrix.playSequence();
  }
}

MCU端负责:

定时(每10秒)触发天气查询

将天气类别映射到预定义的动画序列

控制LED矩阵的逐帧显示,实现流畅动画效果

Bridge通信机制详解

项目的核心在于双核之间的高效通信。Bridge采用了RPC(远程过程调用)模式:

// MCU端:提供城市参数,接收天气类别 
String weather_category;
Bridge.call("get_weather_forecast", city).result(weather_category);
# Python端:接收参数,返回处理结果 
Bridge.provide("get_weather_forecast", get_weather_forecast)

这种通信方式让开发者无需关心底层的串口通信或网络协议细节,可以像调用本地函数一样进行跨核调用。

总结而言,Arduino UNO Q 打破了单板计算机与微控制器之间的界限,为物联网、边缘AI、机器人等需要同时处理智能与实时的应用,提供了一个高效、易用且功能强大的新一代开发平台。它不仅是硬件的升级,更是开发范式的一次进化。

后面的帖子我应该会专注于进行SSH开发,敬请期待😋

新年写的第一篇帖子,祝所有看到这个帖子的以及没有看到这个帖子的新的一年都能开开心心快快乐乐成为技术大牛✿ヽ(°▽°)ノ✿

全部回复(0)
正序查看
倒序查看
现在还没有回复呢,说说你的想法