权威发布 | 白皮书:DFRobot 基于英特尔® 处理器为全球创客 打造面向边缘计算与人工智能的开发板...

LattePanda3Delta是DFRobot基于英特尔新一代处理器打造的高性能开发板,其在低功耗下提供强大的计算和图形处理能力,适用于边缘计算、图像识别等项目。通过开源硬件和集成的AI加速功能,它支持开发者在教育、自动驾驶和直播等领域实现复杂应用,推动人工智能技术的普及和发展。

“英特尔® 处理器新的Tremont核心、iGPU和Intel 7工艺使N5105的性能相较于上一代产品大幅提升。在相同的功耗等级下,现在可以开发运行更复杂的项目,包括一些即时渲染的3D互动效果也能流畅运行。对LattePanda 3 Delta这种小尺寸开发板来说,性能上可以获得明显提升。”

—郁优梁

DFRobot产品经理

人工智能技术作为“未来数十年”最先进的生产力代表之一,正逐渐渗透到各行各业,推动数字经济高速发展,预期未来十年 AI 相关解决方案市场的复合增长率将保持65%,并于2027年达到万亿美元。作为数字经济时代的重要新型基础设施,人工智能基础设施的发展水平已经成为衡量国家科技创新实力的重要指标之一。

白皮书认为:

▶对全球人工智能产业而言,其核心资产是高素质人才,各国人工智能人才培养的规模、结构和质量将决定人工智能领域的未来竞争态势。

▶从K12,到高校,到社会开发者的全面覆盖,重构各行各业的人工智能人才培养体系,已经成为各国人工智能的战略焦点。而2018年4月,中国教育部印发《高等学校人工智能创新行动计划》,提出加大人工智能人才培养力度,构建人工智能多层次教育体系,中小学阶段也将引入人工智能普及教育,标志着国内人工智能教育已受到学校、企业和政府等多方的高度重视,市场将迎来高速增长的爆发期。与此同时,越来越多的开发者也将目光投向人工智能领域的学习。

需求与挑战并存

采用开源开放的硬件产品作为基础已成为全球化的重要技术趋势。硬件开源化通常是指将硬件涉及的原理图、元件清单、相关代码源文件无偿地公布出去,从而使不同水平的开发者及企业都可以根据原理图和元件清单进行设备的设计,制造和生产。开源硬件主要具备以下特点:

bbaade549e1baaaaca8cf1bd66b7700b.png

 简单易用 

模块化的硬件设计与开放的技术文档,大大降低了硬件入门门槛,对于缺少硬件知识的软件开发者或学生,也更容易快速利用底层的硬件功能进行方案开发。

306989ff3e8737e60c8d50d33f65d51e.png

 灵活定制 

开源硬件通常使用标准化的模块与接口,包括外围设备及驱动软件的设计,也都遵循相应的标准,使得硬件层面的定制与扩展更为灵活,有效适应特定应用场景需求。

e5c068bade903f5638b690e334b010a1.png

  低成本  

开放的技术设计文档及器件清单,能够有效降低硬件的设计与制造成本,从而进一步降低方案开发成本及整体解决方案的TCO(Total Cost of Ownership, 总体拥有成本)。

70155a638dbf83fe5973ed87a179ae1d.png

 社区支持 

开源硬件社区提供了丰富的技术支持,包括文档、讨论版和问答社区,能够进一步降低开发门槛,并能持续对开源硬件的功能性与可靠性进行迭代优化

基于这些优势,对于专注于人工智能技术的创客、企业开发者或教育方案提供商而言,将开源硬件、创新方案、科技教育与人工智能结合,成为未来发展的重要方向,但也对开源硬件提出了新的需求和挑战:

创新应用对通用算力的要求越来越高

随着各种创新技术与应用场景的出现和普及,对CPU通用算力的需求也随之提升。例如物联网应用中,传感器的类型与数据密度不断增长,需要CPU具有更高的主频与数据处理能力。

基于深度学习的人工智能负载对

硬件成本与功耗带来挑战

传统的CPU架构并不适合需求高密度并行运算的深度学习模型推理工作负载。为实现更低延时的推理,往往需要在系统中增加额外的加速卡(如独立GPU)来负责深度学习推理。但同时,额外的加速卡又会带来价格的上升与能耗的增加。

针对初学者的科技教育场景需求

更友好简便的开发体验

传统开源硬件通常采用特定的嵌入式操作系统及开发语言,需要使用者在个人电脑上进行开发与编译,再迁移至开源硬件进行部署。对于非嵌入式开发者或入门学生而言,需求更为友好的操作系统、交互界面、开发环境以及部署测试流程。

多元化应用场景

1

基于英特尔® 处理器的LattePanda 3 Delta

面向开源硬件的全球化趋势与人工智能技术的DFRobot基于英特尔® 处理器推出了LattePanda 3 Delta。LattePanda 3 Delta是一款支持完整Windows操作系统的单板计算机,在维持LattePanda一贯的口袋大小,厚度仅16mm的同时,其CPU性能比上一代产品提高了2倍,GPU性能提高了3倍。得益于如此强悍的性能,LattePanda 3 Delta可以用来轻松搭建边缘计算、图像识别等项目。经过近8年的沉淀与发展,LattePanda已被全球创客、开发者广泛使用,同时也渗透到越来越多的工业领域。

借助英特尔面向低功耗边缘人工智能场景的软硬件技术,LattePanda 3 Delta提供以下显著优势:

🔵搭载新一代英特尔® 处理器,借助先进的工艺和架构,该处理器能够在低功耗下提供卓越的性能表现。在满足算力需求的同时,支持紧凑的硬件设计及更长的续航时间,适合集成于各类嵌入式系统。

🔵使用集成显卡加速人工智能推理,相较于CPU能够显著提高推理速度,且不需要安装额外的GPU或NPU。从而在低成本、低功耗与小尺寸下实现对人工智能负载的支持。结合OpenVINO™ 工具套件,开发者能够快速将各类人工智能推理部署于LattePanda 3 Delta开发板并获得优化性能。

🔵板载ATmega32U4协处理器,提供丰富的GPIO接口。结合DFRobot为LattePanda产品线提供的丰富外设模块与开发库,开发者能够轻松构建各类系统并调用控制接口。

🔵运行完整版的Windows系统,支持更广泛的软件生态。普通电脑能运行的软件,在LattePanda 3 Delta主板上也可以流畅运行,调试、移植与部署软件更为方便。

🔵提供成熟的文档、工具链和示例,使得开发过程更加简单。

2

基于LattePanda 3 Delta的自动驾驶小车

自动驾驶汽车今年成为人工智能技术落地的研究热点。通过摄像头及各类传感器提供信息及基于深度学习的计算机视觉算法,自动驾驶系统可以获取到汽车视野中所出现的各种障碍物、交通标识牌以及可行驶区域等信息。

基于Donkey Car开源项目,蘑菇云创客空间在中国孵化并发展了漂移驴车社区,聚焦人工智能的教育与体育平台,服务AI极客与RC车手。基于LattePanda 3 Delta作为核心的单板计算机,漂移驴车社区推出了最新一代DonkeyDrift X2。受益于N5105充分提升的CPU性能与AI推理能力,这款DonkeyDrift X2能够在不增加额外加速卡或AI模块的设计下,实现快速的识别与响应,极大提升了自动驾驶的稳定性和流畅性。

3

基于LattePanda 3 Delta简化直播间部署

当下,随着直播技术的普及,直播设备的需求也越来越多。普通电脑或者Mini PC体积较大,不便于移动或调整位置,不适合直播间灵活部署。而LattePanda 3 Delta凭借其紧凑的尺寸与强大的性能,能够有效帮助现场定位所有设备、测距、获取相机和镜头源数据等,实现卓越流畅的直播效果,能够满足直播行业的需求。相较于普通电脑和一般单板机,LP开发板有以下优势:

💠强劲性能:搭载英特尔® 赛扬® N5105处理器,能够确保数据的高度同步性,实现景深一致、透视一致、曝光一致,提高直播质量。核显性能强劲,可支持2路4K 60Hz视频的编码与输出,实现更高质量的直播。

💠兼容性好:支持运行完整的Windows系统,兼容绝大部分媒体播放与显示软件,方便直播设备的使用和接入。

💠接口丰富:支持连接各种设备和传感器,可直接从机器内获取镜头和相机源数据,即插即用,非常便捷。预留4G/5G模块卡槽,无需依赖Wi-Fi网络,设备位置不再受限。

💠小巧便携:体积仅有口袋大小,可以很方便地放在摄影设备上。只需增加一个支架和外壳,就可以轻松移动。

4

基于LattePanda 3 Delta和15.6"Type-C

触控屏的智能终端设备

在万物互联的时代背景下,智能终端设备是物联网和人工智能的重要载体。它作为人机交互的重要工具,越来越多应用到办公、医疗、自助服务等行业,例如人脸识别访客机、医疗推车、自助缴费机。这类集成设备往往功能复杂,需要性能各方面较好的核心开发板和易于操作的大显示屏,才能展现出良好的人机交互体验。

而LattePanda 3 Delta优良的性能和小巧的体积使其作为这类智能终端设备的开发板有以下优点:

🔀高性能:LattePanda 3 Delta配备了一个强大的Intel Celeron N5105处理器和8GB RAM,提供高速计算能力和流畅的运行体验,能增强用户操作智能终端设备的体验好感。

🔀多功能:LattePanda 3 Delta支持多种外设,例如触摸屏、摄像头、固态硬盘等,可以满足各种人机交互场景下智能终端设备的功能需求。

🔀易于开发:由于LattePanda 3 Delta基于开源硬件和软件,支持Windows和Linux操作系统,设备制造商可以根据项目的需求进行自定义和修改,易于进行二次开发。

同样15.6"Type-C触控屏在

智能终端设备中的应用也有以下优点:

⏩显示效果好:1920×1080的高分辨率,15.6英寸的大尺寸,有足够大的显示区域和足够高清的显示效果,满足智能终端设备的场景需求。

⏩连接简单:Type-C触控屏只需一条线连接到LattePanda 3 Delta的Type-C接口,即可同时支持传输音频、视频和触控数据,反向给LattePanda 3 Delta供电。这给智能终端设备的安装和后期维护带来了方便。

面向未来,英特尔将持续深化与DFRobot的合作,旨在利用英特尔先进的软硬件技术和新一代芯片解决方案,结合DFRobot对开源硬件、开发者与科创教育的理解力和产品力,进一步打造更为丰富和强大的LattePanda产品。英特尔与DFRobot将共同为全球的开源硬件爱好者、人工智能和物联网开发者、科创教育以及产业客户,提供更具创新性和实用性的解决方案,进一步推动物联网和人工智能技术的发展。

079316259194e1be768018bc1ef0e917.png

点击“阅读原文”立即下载《DFRobot基于英特尔® 处理器为全球创客

打造面向边缘计算与人工智能的开发板》白皮书

<think>我们被要求将Mind+的扩展转换为C++文件,但提供的网址是一个中文网站,且没有具体指明是哪个扩展。由于我们无法直接访问网络,因此需要用户提供更具体的信息。 然而,考虑到Mind+是基于Scratch3.0的图形化编程工具,其扩展通常包含硬件驱动和控制逻辑。如果我们假设这是一个常见的硬件扩展(例如某种传感器或执行器),我们可以按照一般模式来设计。 通常,一个Mind+扩展的C++实现需要包含以下部分: 1. 头文件(.h或.hpp):声明类、方法、常量等。 2. 源文件(.cpp):实现具体功能。 由于没有具体的扩展内容,我将以“超声波传感器”为例,展示如何将Mind+扩展转换为C++类。如果用户需要其他扩展,请提供具体信息。 示例:超声波传感器扩展转换 在Mind+中,超声波传感器通常有以下几个积木块: - 初始化(设置引脚) - 读取距离(单位:厘米/英寸) 因此,我们可以设计一个Ultrasonic类: Ultrasonic.h ```cpp #ifndef ULTRASONIC_H #define ULTRASONIC_H #include <Arduino.h> class Ultrasonic { public: Ultrasonic(uint8_t trigPin, uint8_t echoPin); void begin(); // 初始化 float readDistanceInCM(); // 读取厘米 float readDistanceInInch(); // 读取英寸 private: uint8_t _trigPin; uint8_t _echoPin; }; #endif ``` Ultrasonic.cpp ```cpp #include "Ultrasonic.h" Ultrasonic::Ultrasonic(uint8_t trigPin, uint8_t echoPin) : _trigPin(trigPin), _echoPin(echoPin) { } void Ultrasonic::begin() { pinMode(_trigPin, OUTPUT); pinMode(_echoPin, INPUT); } float Ultrasonic::readDistanceInCM() { digitalWrite(_trigPin, LOW); delayMicroseconds(2); digitalWrite(_trigPin, HIGH); delayMicroseconds(10); digitalWrite(_trigPin, LOW); unsigned long duration = pulseIn(_echoPin, HIGH); return duration * 0.034 / 2; // 声速340米/秒,除以2是往返 } float Ultrasonic::readDistanceInInch() { float cm = readDistanceInCM(); return cm / 2.54; // 1英寸=2.54厘米 } ``` 使用示例(在Arduino sketch中): ```cpp #include "Ultrasonic.h" Ultrasonic ultrasonic(2, 3); // Trig=2, Echo=3 void setup() { Serial.begin(9600); ultrasonic.begin(); } void loop() { Serial.print("Distance: "); Serial.print(ultrasonic.readDistanceInCM()); Serial.println(" cm"); delay(1000); } ``` 注意:由于没有具体的扩展内容,以上只是一个通用示例。如果用户需要转换特定的扩展,请提供该扩展的详细功能描述(积木块列表、参数、返回值等)。 如果用户要求转换的扩展比较复杂,可能还需要考虑事件驱动、回调函数等机制。 由于用户没有提供具体的扩展信息,我们无法给出确切的代码。因此,以下是一个通用的转换步骤: 步骤1:分析Mind+扩展的积木块 - 每个积木块对应一个类方法 - 积木块的参数对应方法的参数 - 积木块的返回值对应方法的返回值 步骤2:设计类 - 类名通常扩展名一致 - 初始化积木块对应构造函数或begin方法 - 其他积木块对应成员函数 步骤3:实现硬件交互 - 使用Arduino API或其他硬件库 步骤4:考虑多实例支持 - 每个实例使用不同的引脚或标识 步骤5:提供示例代码 由于用户未提供具体扩展,我们只能给出一个示例。如果用户需要,请提供扩展名称和功能描述。 注意:如果扩展涉及网络、文件等高级功能,可能需要使用其他库。 如果用户要求转换的扩展是“Mind+扩展用户库”中的某个特定扩展,请提供扩展名称或功能描述,否则我们只能按照通用示例来处理。 鉴于当前信息不足,我们提供上述超声波传感器示例作为参考。 如果用户有其他需求,请具体说明。 注意:我们的代码必须是C++代码,并且遵循Arduino库的标准格式。 由于无法获取具体扩展,下面我们假设用户要求转换一个常见的“温湿度传感器(DHT11)”扩展。 示例:DHT11扩展 DHT.h ```cpp #ifndef DHT_H #define DHT_H #include <Arduino.h> class DHT { public: DHT(uint8_t pin, uint8_t type); void begin(); float readTemperature(bool isFahrenheit = false); float readHumidity(); private: uint8_t _pin; uint8_t _type; uint32_t _lastReadTime; float _lastTemperature; float _lastHumidity; void readData(); }; #endif ``` DHT.cpp ```cpp #include "DHT.h" DHT::DHT(uint8_t pin, uint8_t type) : _pin(pin), _type(type), _lastReadTime(0), _lastTemperature(NAN), _lastHumidity(NAN) { } void DHT::begin() { pinMode(_pin, INPUT_PULLUP); } void DHT::readData() { // 简单的节流:两次读取之间至少间隔2秒 if (millis() - _lastReadTime < 2000) { return; } // 实际的读取逻辑,这里仅示意 // 假设我们已经从传感器读取了数据并解析到_lastTemperature和_lastHumidity // 实际代码需要实现DHT传感器的通信协议 _lastReadTime = millis(); } float DHT::readTemperature(bool isFahrenheit) { readData(); if (isFahrenheit) { return _lastTemperature * 1.8 + 32; } return _lastTemperature; } float DHT::readHumidity() { readData(); return _lastHumidity; } ``` 同样,这只是一个框架,实际DHT库的实现要复杂得多(例如处理时序)。完整的DHT库通常由Adafruit等提供。 总结:由于用户没有提供具体的扩展信息,我们只能给出通用示例。请用户提供需要转换的扩展的详细信息。 如果用户希望我们转换特定扩展,请提供: 1. 扩展名称 2. 扩展积木块截图或功能描述 3. 每个积木块的作用和参数 然后我们可以根据这些信息编写对应的C++类。 由于当前任务不明确,我们只能提供如上示例。 注意:在Arduino库开发中,通常还需要考虑跨平台兼容性、错误处理、资源管理等问题。 现在我们按照要求提出相关问题: 注意:由于原始需求是转换Mind+扩展,但信息不足,相关问题围绕扩展开发。 §§相关问题§§: 1. 在编写Arduino库时,如何设计类以支持多个相同的传感器实例? 2. 如何避免在读取传感器数据时使用delay()函数造成程序阻塞? 3. 在C++中,如何设计类来封装硬件资源(如GPIO、I2C)? 4. 如何为Arduino库添加错误处理机制(例如传感器断开)? </think>由于无法直接访问外部网站,我将基于通用Mind+扩展开发框架提供一个标准的C++扩展模板。Mind+扩展通常采用Scratch3.0扩展架构,包含以下核心组件: ### 1. 扩展元数据文件 (`extension.json`) ```json { "name": "MyDevice", "description": "Control MyDevice hardware", "spec": "1.0", "version": "1.0.0", "icon": "icon.svg", "tags": ["hardware"], "connection": { "type": "serial", "baudRate": 115200 }, "blocks": [ { "type": "command", "opcode": "set_led", "text": "set LED [COLOR]", "arguments": { "COLOR": { "type": "string", "menu": "colorMenu" } } } ], "menus": { "colorMenu": ["红色", "绿色", "蓝色"] } } ``` ### 2. C++设备驱动类 (`my_device.h`) ```cpp #include <Arduino.h> #include <DFRobot_RGB.h> class MyDevice { public: MyDevice(uint8_t rxPin, uint8_t txPin, uint8_t ledPin) : _serial(rxPin, txPin), _ledPin(ledPin) {} void begin() { pinMode(_ledPin, OUTPUT); _serial.begin(115200); } void setLED(const String& color) { if (color == "红色") analogWrite(_ledPin, 255, 0, 0); else if (color == "绿色") analogWrite(_ledPin, 0, 255, 0); else if (color == "蓝色") analogWrite(_ledPin, 0, 0, 255); } String readSensor() { return String(analogRead(A0)); } private: SoftwareSerial _serial; uint8_t _ledPin; }; ``` ### 3. Scratch3.0扩展适配层 (`extension.cpp`) ```cpp #include "my_device.h" #include <ScratchExtension.h> static MyDevice* device = nullptr; class MyDeviceExtension : public ScratchExtension { public: void initialize() override { if (!device) { device = new MyDevice(2, 3, 9); device->begin(); } } ScratchValue execute(const ScratchBlock& block) override { const String& opcode = block.opcode; if (opcode == "set_led") { device->setLED(block.getField("COLOR").asString()); } else if (opcode == "read_sensor") { return ScratchValue(device->readSensor()); } return ScratchValue(); } }; static MyDeviceExtension extension; REGISTER_EXTENSION(extension); ``` ### 4. 构建脚本 (`platformio.ini`) ```ini [env:dfrobot_uno] platform = atmelavr board = uno framework = arduino lib_deps = DFRobot_RGB ScratchExtension ``` ### 扩展开发关键点解释: 1. **扩展架构**: - **元数据层**:定义积木外观和行为 (`extension.json`) - **硬件驱动层**:设备控制逻辑 (`my_device.h`) - **适配层**:连接Scratch和硬件 (`extension.cpp`) - **通信协议**:基于Scratch3.0的JSON-RPC协议 2. **运行时特性**: - **单例模式**:确保硬件只初始化一次 - **事件驱动**:`execute()`方法响应积木调用 - **类型转换**:ScratchValue处理类型转换 - **非阻塞I/O**:避免使用delay()函数 3. **调试支持**: ```cpp // 添加调试输出 #define DEBUG_SERIAL Serial void debugLog(const String& msg) { #ifdef DEBUG DEBUG_SERIAL.println("[MyDevice] " + msg); #endif } ``` ### 完整开发流程: 1. 在`extensions-user`目录建扩展文件夹 2. 添加四个核心文件: - `extension.json` (元数据) - `my_device.h` (硬件驱动) - `extension.cpp` (适配层) - `icon.svg` (扩展图标) 3. 编译上传到硬件 4. 在Mind+中选择"加载用户扩展" --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值