Qualcomm Arduino UNO Q开发板入门(一)

Darth Nihilus 2026-08-26 14:21:00

(一)Qualcomm Arduino UNO Q开发板开箱及内容物

Qualcomm Arduino UNO Q开发板

开箱

本次测评的Qualcomm Arduino UNO Q开发板为2GB RAM + 16GB EMMC版本。DigiKey得捷官网售价487.91元。
Qualcomm Arduino UNO Q开发板产品外包装为印刷纸盒。盒内分为一袋,袋内为Qualcomm Arduino UNO Q开发板本体,除本体外盒内另附纸制品若干。
关于该开发板的相关技术资料可通过访问Qualcomm Arduino官网(https://www.qualcomm.com/developer/hardware/arduino-uno-q%EF%BC%89%E8%8E%B7%E5%8F%96%E3%80%82

内容物

Qualcomm Arduino UNO Q开发板所有内容物包含:

  • 开发板主体 *1
  • 纸制品 若干

    Qualcomm Arduino UNO Q开发板官方介绍

    简介

    Arduino® UNO Q 由 Arduino 设计,旨在让所有技能水平的开发者都能更轻松地进行嵌入式系统开发,并支持广泛的企业级和非企业级应用场景。

    Arduino UNO Q 官方介绍-1


    UNO Q 搭载高通® Dragonwing™ QRB2210 片上系统(SoC)/微处理器(MPU),并配备专用的 STM32U585 微控制器(MCU)。MPU 负责处理高级计算任务,如 AI 推理、媒体控制和连接功能;而 MCU 则确保对电机、传感器以及低延迟信号处理的实时控制。

    Arduino UNO Q 官方介绍-2


    UNO Q 是一款高性价比、可扩展的开发套件,专为加速创新而设计。它与 Arduino 生态系统完全兼容,支持轻松的硬件扩展。预装了 Linux Debian 和 Arduino App Lab,开发者可以即时访问示例应用和 AI 模型。UNO Q 为物联网和边缘 AI 原型开发提供了坚实的基础和灵活的扩展空间。

    Arduino UNO Q 官方介绍-3

    Arduino App Lab

    Arduino App Lab


    Arduino App Lab 是专为 UNO Q 打造的一体化开发环境,旨在改变开发者、教育工作者和创新者为嵌入式系统、Linux 和边缘 AI 创建应用的方式。无论您是在构建 AI 驱动的机器人、智能传感器仪表板,还是实时语音助手,App Lab 都能简化您的工作流程。
    作为 UNO Q 的预装软件,Arduino App Lab 将 Sketches、Python 脚本和 AI 模型整合为统一的应用程序——所有操作均可通过单一界面进行管理。您可以直接在开发板上运行,也可以通过 PC 远程访问,实现灵活的开发模式。借助预构建的示例和名为 Bricks 的直观构建模块,App Lab 让原型设计和规模扩展变得快速而简单。

    硬件概览

    Arduino UNO Q 官方介绍-4


    Arduino UNO Q 官方介绍-5

    优势

    双脑架构,具备 AI 能力

    QRB2210 MPU 负责处理计算和 AI 任务,如计算机视觉和自动化;而专用的 STM32U585 MCU 并行工作,为低处理量功能提供可靠、实时的控制。

    灵活且熟悉的端到端开发

    直接在开发板上或通过 PC 进行开发。使用 Arduino App Lab 拖拽 Arduino Bricks,它将 Arduino Sketches 与 Python 脚本、容器和 AI 模型结合在一起。

    软件支持

    在 Arduino IDE 中构建经典的 Arduino Sketches。充分利用预装的开源 Debian 操作系统工具的丰富且成熟的功能,并有即开即用的示例应用作为支撑。

    免焊且可扩展

    通过 Qwiic® 连接器或高速 GPIO 即插即用 Modulino® 节点、传感器和执行器。接入 Arduino Shield 生态系统,或使用高速 Arduino 载板扩展高级外设。内置 Wi-Fi® 和 Bluetooth®,随时保持连接。

应用场景

AI 与视觉

分析图像或视频,执行目标检测或图像分类,用于安防监控或产品质量控制;或构建能够读取条形码和二维码的扫描器。

智能感知

构建物联网解决方案,监测并记录空气质量、运动状态和天气预报等传感器数据;或在检测到环境阈值(如土壤湿度过低)时控制执行器。

实时控制系统

将基于 MCU 的快速 AI 感知与驱动,和 MPU 驱动的实时调参与可视化仪表板相结合。适用于控制理论、自动化和电机驱动系统。

AI 机器人

实现实时交互系统,结合视觉模型、仪表板以及舵机或 LED 等执行器,用于智能助手、交互式信息亭和人感知的物联网设备。

规格参数

参数规格
处理器QRB2210
微控制器STM32U585
MPU 操作系统带上游支持的 Linux Debian OS
内存2GB 或 4GB LPDDR4
存储16GB 或 32GB eMMC
无线连接带板载天线的 Wi-Fi® 5 2.4/5GHz;带板载天线的 Bluetooth® 5.1
电源通过 USB-C 接口:5 VDC,最大 3 A;输入电压(VIN):7–24 VDC

(以上内容取自Qualcomm Arduino官方网站,地址:https://www.qualcomm.com/developer/hardware/arduino-uno-q

(二)Arduino App Lab

探索用于为新一代双核 Arduino 开发板创建 Arduino 应用程序的统一开发环境。专注于应用逻辑,通过堆叠即插即用的 Arduino Bricks来构建项目。

Arduino App Lab 下载

浏览器中输入“https://www.arduino.cc/en/software/#app-lab-section%E2%80%9D%EF%BC%9B

Ardunio App Lab 下载-1

在“Arduino App Lab”下选择对应操作系统版本,点击“Download”完成下载。

Ardunio App Lab 下载-2

Arduino App Lab 安装

双击“ArduinoAppLab_installer.exe”即可完成自动安装。

Ardunio App Lab 安装-1

Arduino App Lab 配置

双击“Arduino App Lab”,打开Arduino App Lab;

Ardunio App Lab 配置-1

将 Qualcomm Arduino UNO Q开发板 使用 USB Type-C 接入,并等待 Qualcomm Arduino UNO Q开发板 启动完成,输入 Qualcomm Arduino UNO Q开发板 名称,点击“Next”;

Ardunio App Lab 配置-2

将 Qualcomm Arduino UNO Q开发板 连入无线网络,点击“Next”;

Ardunio App Lab 配置-3

输入 Qualcomm Arduino UNO Q开发板 密码,点击“Confirm”;

Ardunio App Lab 配置-4

等待 Qualcomm Arduino UNO Q开发板 配置完成,显示如下图所示,即为配置完成。

Ardunio App Lab 配置-5

(三)使用 Qualcomm Arduino UNO Q开发板 运行第一个DEMO

选择“Example”;

运行第一个DEMO-1

选择“Weather Forecast on LED matrix”;

运行第一个DEMO-2

点击“Copy and edit app”,点击“Create new”;

运行第一个DEMO-3

选择“sketch.ino”,修改“String city = "Turin"”为所在城市;

运行第一个DEMO-4

点击“Run”,等待 Qualcomm Arduino UNO Q开发板 加载完成;

运行第一个DEMO-5

Qualcomm Arduino UNO Q开发板 显示天气即为成功;

运行第一个DEMO-实物演示

点击“Stop”,停止运行。

运行第一个DEMO-6

Demo代码

main.py

# SPDX-FileCopyrightText: Copyright (C) Arduino s.r.l. and/or its affiliated companies
#
# 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()

sketch.ino

// SPDX-FileCopyrightText: Copyright (C) Arduino s.r.l. and/or its affiliated companies
//
// SPDX-License-Identifier: MPL-2.0

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

#include "weather_frames.h"

String city = "Beijing";

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();
  }
}

sketch.yaml

profiles:
  default:
    platforms:
      - platform: arduino:zephyr
default_profile: default

weather_frames.h

/*
 * SPDX-FileCopyrightText: Copyright (C) Arduino s.r.l. and/or its affiliated companies
 *
 * SPDX-License-Identifier: MPL-2.0
 */

const uint32_t sunny[][5] = {
    {0x04812805, 0x80138390, 0x03402902, 0x40000000, 500},
    {0x12005201, 0xa072009c, 0x0b009400, 0x90000000, 500},
    {0x04812805, 0x80138390, 0x03402902, 0x40000000, 500},
};

const uint32_t cloudy[][5] = {
    {0x0000380e, 0x20888404, 0x2020fe00, 0x00000000, 500},
    {0x00001c07, 0x10444202, 0x10107f00, 0x00000000, 500},
    {0x00000e03, 0x88222101, 0x08083f80, 0x00000000, 500},
    {0x00001c07, 0x10444202, 0x10107f00, 0x00000000, 500},
};

const uint32_t rainy[][5] = {
    {0x0780c208, 0x084041fc, 0x08a05100, 0xa0000000, 200},
    {0x0780c208, 0x084041fc, 0x02804502, 0x88000000, 200},
    {0x0780c208, 0x084041fc, 0x0a201402, 0x28000000, 200},
};

const uint32_t snowy[][5] = {
    {0x0780c208, 0x084041fc, 0x02004400, 0x88000000, 650},
    {0x0780c208, 0x084041fc, 0x00201002, 0x20000000, 650},
    {0x0780c208, 0x084041fc, 0x08800100, 0x80000000, 650},
};

const uint32_t foggy[][5] = {
    {0x0001fb00, 0x006fc000, 0x1f700000, 0x00000000, 660},
    {0x0001ef00, 0x0077c000, 0x1fb00000, 0x00000000, 660},
    {0x0001fb00, 0x006fc000, 0x1f700000, 0x00000000, 660},
};

(四)使用 Qualcomm Arduino UNO Q开发板 运行LLM

选择“Example”;

运行LLM-1

选择“Edge AI Assistant”;

运行LLM-2

点击“Copy and edit app”,点击“Create new”;

运行LLM-3

点击“Run”,等待 Qualcomm Arduino UNO Q开发板 加载完成;

运行LLM-4

点击“Stop”,停止运行。

运行LLM-4

Demo代码

main.py

# SPDX-FileCopyrightText: Copyright (C) Arduino s.r.l. and/or its affiliated companies
#
# SPDX-License-Identifier: MPL-2.0

from arduino.app_bricks.llm import LargeLanguageModel
from arduino.app_bricks.web_ui import WebUI
from arduino.app_utils import App
from prompts import load_system_prompt


def generate_prompt(_, data):
    try:
        prompt = data.get("prompt", "")
        # Use the plain text prompt for the LLM and stream the response
        for resp in llm.chat_stream(prompt):
            ui.send_message("response", resp)

        # Signal the end of the stream
        ui.send_message("stream_end", {})
    except Exception as e:
        ui.send_message("llm_error", {"error": str(e)})


def commands_handler(_, data):
    command = data.get("command", "")
    try:
        if command == "clear_chat":
            llm.stop_stream()
            llm.clear_memory()
            ui.send_message("command_ok", {"command": command})
        elif command == "stop_stream":
            llm.stop_stream()
            ui.send_message("command_ok", {"command": command})
        else:
            ui.send_message(
                "command_error", {"command": command, "error": "Unknown command"}
            )
    except Exception as e:
        ui.send_message("command_error", {"command": command, "error": str(e)})


llm = LargeLanguageModel(system_prompt=load_system_prompt())

llm.with_memory(10)

ui = WebUI()

ui.on_message("prompt", generate_prompt)
ui.on_message("commands", commands_handler)

App.run()

prompts.py

# SPDX-FileCopyrightText: Copyright (C) Arduino s.r.l. and/or its affiliated companies
#
# SPDX-License-Identifier: MPL-2.0

import os


def load_system_prompt():
    try:
        with open(os.path.join(os.path.dirname(__file__), "system_prompt.txt"), "r") as f:
            system_prompt = f.read()
            f.close()
    except Exception:
            system_prompt = "You are a generic AI Chatbot Assistant."
    return system_prompt
...全文
17 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

7,654

社区成员

发帖
与我相关
我的任务
社区描述
本论坛以AI、WoS 、XR、IoT、Auto、生成式AI等核心板块组成,为开发者提供便捷及高效的学习和交流平台。 高通开发者专区主页:https://qualcomm.csdn.net/
人工智能物联网机器学习 技术论坛(原bbs) 北京·东城区
社区管理员
  • csdnsqst0050
  • chipseeker
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧