news 2026/7/16 9:23:51

AI + 硬件开发:开源 IDE,支持 100 多种开发板,快速开发硬件项目

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AI + 硬件开发:开源 IDE,支持 100 多种开发板,快速开发硬件项目

还记得当年点亮的第一颗 LED 灯吗,话说你是什么时候点亮的?用的 51 单片机,还是 ARM 开发板?还是Arduino 开源硬件板?如果你搞过嵌入式硬件开发,下面这些场景你一定不陌生:

  • Arduino IDE 里装了个新库,结果把另一个项目的编译搞崩了;

  • ESP32 第一次编译,进度条能让你去泡杯茶回来还没跑完;

  • 想用某个冷门传感器,翻遍全网也没找到对应的图形化积木库;

  • 编译报错一长串英文,Google 半天才发现是引脚定义写错了。

这些"老大难"问题,最近被一个叫aily Blockly的开源项目盯上了。它的定位很直接:AI 原生的硬件开发 IDE,目标是让 AI 深度参与到硬件开发的每一个环节,而不是简单加个聊天窗口。

先上一下效果,小编使用aily Blockly,在Arduino UNO 4 WiFi 板上面搞了几个 LED 动态动画,以前还是需要自己计算所有的 16 进制,现在直接可以可视化编程,想让那个 LED 亮,直接点亮就行,代码会自动生成。

当然程序也预设了很多图形,可以直接使用。

点击代码,可以看到生成的代码,直接编辑下载,或者直接编译上传到Arduino开发板,代码直接运行。看效果!

一、它是什么

aily Blockly 是aily Project旗下的图形化硬件开发环境,基于 Electron + Angular 搭建,核心是把 Blockly 可视化编程和大模型能力揉在了一起。项目在 GitHub 上开源(GPL-3.0 协议),目前已经拿下2.1k Star,处于 Alpha 测试阶段。

它不绑定任何特定的开发板或套件,而是一个真正通用的硬件开发平台:目前已支持100+ 开发板/芯片(Arduino、ESP32、STM32、RP2040、Nrf5x 等主流型号都在列),内置400+ 预设库,并且还在持续扩展。

二、AI 到底帮你做了什么

跟很多"套壳 AI 助手"的工具不同,aily Blockly 把 AI 塞进了开发流程的每一个关键节点:

1. 项目自动生成你只需要用大白话描述需求,比如"做一个基于 ESP32 的温湿度监测器,用 DHT11 传感器,数据显示在 OLED 屏幕上",AI 就会自动分析需求、推荐开发板和模块,生成项目架构图和引脚接线图,直接把工程搭好。

2. AI 代码生成根据你的需求,AI 会自主规划任务、理解项目依赖和库的用法,然后写出可以直接跑起来的代码。Arduino 代码直接可以编辑,烧录到Arduino开发板上面。开发驱动省时省力。

3. AI 库转换——理论上"无限扩库"这是比较有意思的一个功能。如果你想用某个 Arduino 原生 C/C++ 库,但 aily Blockly 上还没有对应的图形化积木块,直接把库丢给 AI,它会自动分析头文件,生成对应的 Blockly 积木库,保存后就能像内置库一样直接拖拽使用。这意味着它的库生态理论上是可以无限扩展的。

4. 连线图生成不知道模块怎么接线?AI 可以根据你的需求和代码反推生成接线图;反过来,你也可以先把线接好,让 AI 帮你生成对应代码。

5. 自动调试编译报错、日志看不懂?交给 AI 读取报错信息,定位问题并给出修复建议。

6. AI 开发板配置生成(完善中) 以后添加新开发板,不用再手写配置文件,只要把开发板的说明文档(md 格式)丢给 AI,它就能自动分析生成配置。目前已支持 ESP32、AVR、Renesas、RP2040、STM32 内核的开发板。

三、工程化管理:解决"依赖地狱"

除了 AI,aily Blockly 还引入了一个前端开发领域很常见但嵌入式圈子里少见的思路——用 npm 做工程化管理

每个项目独立管理自己的开发板包(Core)和库(Library)版本,项目之间互不影响。这直接解决了传统 Arduino IDE 的经典痛点:换个项目、升个库,结果把之前能跑的项目搞挂了。现在你可以在不同项目里用不同版本的 ESP32 核心或传感器库,谁也不影响谁。

四、编译慢?"闪电编译"了解一下

ESP32 这类芯片首次编译动辄十几分钟到一小时,进度条能磨掉不少创作热情。aily Blockly 的闪电编译功能通过端云协同和缓存,把编译时间大幅压缩——官方给出的目标是把原本 1 小时的编译工作缩短到 1 分钟量级(目前一期功能已上线,二期正在推进)。

五、适合谁用

根据目前的功能定位,几类人会比较有感:

  • 创客/爱好者

    :不用死磕 C 语言语法和环境配置,靠拖积木 + 自然语言描述就能把想法变成能跑的硬件项目;

  • 教育场景

    :物联网、STEM 相关课程中,学生不再被编译报错和环境不一致劝退,能把精力放在硬件逻辑本身;

  • 硬件工程师做原型验证

    :新想法想快速出个 Demo,AI 生成项目骨架 + 代码框架,可以直接交给软件工程师深度开发,省掉大量前期沟通成本;

  • 平台迁移

    :项目要从 Arduino Uno 升级到 RP2040 之类更强的芯片,AI 能协助适配 SDK 和引脚映射,减少手动逐行移植的工作量。

需要提个醒:项目目前还处于Alpha 阶段,官方也明确说明不建议用于量产设备的固件开发,但用来做原型验证和教学已经完全没问题。

六、怎么获取

  • GitHub 开源仓库:github/ailyProject/aily-blockly

  • 官网 & 文档:aily.pro

项目基于 GPL-3.0 协议开源,代码、开发板配置、Block 库都是分仓库维护的,感兴趣的话可以直接去看源码,或者下载预编译安装包体验。

写在最后:这两年"AI + 硬件"的组合已经不是新鲜话题,但大多数工具还停留在"AI 帮你写一段代码片段"的阶段。aily Blockly 的思路是把 AI 真正嵌入从需求分析、选型、接线、编码到调试的完整链路,再叠加前端圈成熟的工程化管理经验,算是一次挺扎实的尝试。虽然目前还是 Alpha 版本,稳定性和功能完整度都有待打磨,但对于经常被环境配置和编译等待折磨的硬件开发者来说,这条路子值得关注。

更多transformer,VIT,swin tranformer 参考头条号:人工智能研究所 v号:人工智能研究Suo, 启示AI科技

动画详解transformer 在线视频教程

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/16 9:23:00

WinRAR 7.23安装配置全攻略:从基础压缩到高级功能详解

今天我们来详细讲解一款经典压缩解压工具——WinRAR的安装与设置。作为装机必备软件之一,WinRAR凭借其强大的压缩能力和广泛的格式支持,至今仍是文件管理的重要工具。本文将带你从下载安装到深度配置,全面掌握这款软件的使用技巧。 WinRAR最…

作者头像 李华
网站建设 2026/7/16 9:18:52

现代C++演进:从C++11到C++23核心特性解析与实战指南

1. 项目概述:为什么我们需要关注现代C的演进 如果你和我一样,是从C98/03那个“经典”时代一路走过来的开发者,那么第一次接触C11时,那种感觉就像是从黑白电视换到了4K高清。指针、手动内存管理、冗长的迭代器代码……这些曾经是C程…

作者头像 李华
网站建设 2026/7/16 9:17:21

Java多线程同步:join()方法的底层实现与wait()机制深度解析

1. join()方法的核心作用与使用场景 当你第一次看到 join() 这个方法名时,可能会联想到"加入"这个词。在Java多线程中, join() 确实扮演着让线程"加入"当前执行流程的角色。简单来说,它允许一个线程等待另一个线程执…

作者头像 李华
网站建设 2026/7/16 9:16:39

接口突然慢了 10 倍,我用这 5 个命令定位到一条 SQL

接口突然慢了 10 倍,我用这 5 个命令定位到一条 SQL一个原本 200ms 的订单接口,线上突然变成 2 秒,偶尔还会直接超时。 CPU 看起来不高,内存也没有爆,重启之后短暂恢复,过一会儿又开始变慢。 最后没有靠重启…

作者头像 李华
网站建设 2026/7/16 9:16:13

OpenCode Go接入Vscode Copilot:Go语言AI编程工作流重构指南

1. 项目概述:这不是“换模型”,而是重构本地AI编程工作流OpenCode Go 接入 Vscode Copilot——看到这个标题,很多人第一反应是“又一个换模型的教程”。但实际动手做过的人会立刻意识到:这根本不是简单改个API地址的事。它是一次对…

作者头像 李华
网站建设 2026/7/16 9:14:53

ATL的使用办法

ATL使用方法 #include <iostream> #include <atlbase.h> #include <atlwin.h>template<class T> class Edoyun { public:void show() {T* p static_cast<T*>(this);p->Name();} public:void Name() {std::cout << "Edoyun" …

作者头像 李华