很多人一听到“嵌入式开发”“MCU 编程”“Arduino/C++”,第一反应是:这是不是得先学很多语法?是不是得看一堆芯片手册?是不是接错一根线就完了?
这些担心都很正常。硬件开发确实比普通软件开发多了一层真实世界:有电压、有电流、有引脚、有传感器,也有可能接错线。但好消息是,你不必一开始就把所有细节都背下来。
在 aily blockly 里,我们可以先用中文把想做的东西说清楚,让 AI 帮你搭出项目、程序和连线建议。然后你再像检查作业一样,确认关键地方有没有问题,最后编译、上传到开发板,看硬件是不是真的动起来。
本章我们先认识 aily blockly 的几个主要区域,再做一件很小的事:让开发板上的 LED 每 1 秒闪烁一次。这个例子很简单,但它会带你走完整个流程:说需求、生成程序、检查、编译、上传、观察结果、再修改。
图片占位 1-1:aily blockly 主界面截图。请标注“项目管理”“Blockly 工作区”“AI 助手”“编译”“上传”“串口工具”“引脚图/连线图”等区域。
自然语言,就是我们平时说话、写字用的语言。比如下面这句话:
我想做一个桌面温湿度提醒器。使用 ESP32 和 DHT20 传感器,每 2 秒读取一次温湿度,温度超过 30 度时点亮红色 LED,并在串口输出当前温度和湿度。
这不是代码,但它已经把一个硬件项目的大致样子说出来了:
- 用什么开发板:ESP32。
- 用什么传感器:DHT20。
- 多久读取一次数据:每 2 秒。
- 什么情况触发动作:温度超过 30 度。
- 触发后做什么:点亮红色 LED。
- 怎么观察运行情况:通过串口输出温湿度。
传统做法里,你可能要先查开发板资料、找传感器库、看示例代码、选引脚、写程序。现在你可以先把目标讲给 AI 听,让它帮你把这些事情整理成一个工程草稿。
这里要注意一个词:草稿。AI 生成的内容很有用,但它不是最终答案。硬件项目一定要经过人的确认,尤其是接线、电压、电源和引脚这些地方。
简单说,自然语言硬件开发就是:
你先说清楚想做什么,AI 帮你生成初稿,你再检查并用真实硬件验证。
AI 可以帮你写程序,也可以帮你画连线图、解释错误、推荐模块。但硬件有一个特点:它接在真实电路上。
程序写错了,大多数时候只是编译失败,或者运行结果不对。线接错了,就可能让模块发热、芯片损坏,甚至让电脑 USB 口进入保护。所以我们会一直把“安全检查”放在很重要的位置。
新手最需要先记住下面几条:
- 3.3V 模块不要随便接 5V,除非模块说明它支持 5V。
- 电机、舵机、灯带这类东西通常比较耗电,不要直接靠开发板 IO 供电。
- 外接电源控制模块时,通常要和开发板共地,也就是 GND 连在一起。
- 同一个普通引脚不要同时接两个互相冲突的功能。
- UART 串口常见接法是 TX 接 RX,RX 接 TX。
- I2C 常见接法是 SDA 接 SDA,SCL 接 SCL。
- 外接普通 LED 时要串联电阻,常见用 220 欧姆或 330 欧姆。
不用一下子全背下来。你可以把它们当成检查清单。每次 AI 给出接线建议后,就拿这几条对一遍。
图片占位 1-2:硬件安全检查示意图。左侧展示“AI 生成的程序和连线建议”,右侧展示“人工检查清单”,重点标出电压、电源、GND、引脚、限流电阻。
你可以把整个过程想成六步。以后做更复杂的项目,也基本离不开这六步。
先不用急着说代码怎么写。先说结果,比如:
我想让开发板上的 LED 每 1 秒闪烁一次,并在串口输出 LED 当前是亮还是灭。
这句话已经够 AI 开始工作了。它知道你要控制 LED,知道时间间隔是 1 秒,也知道你希望通过串口看到状态。
硬件条件越清楚,AI 越不容易猜错。比如:
我使用 Arduino Uno。优先使用板载 LED。如果需要外接 LED,请告诉我怎么接线,并提醒我串联电阻。
如果你还没有确定开发板,也可以让 AI 先推荐:
我还没有开发板。请推荐一块适合新手入门、容易购买、适合做 LED 和传感器练习的开发板,并说明理由。
AI 可能会生成 Blockly 积木、Arduino/C++ 代码、库依赖、引脚说明和连线图。你不用急着全部看懂,先抓住三个问题:
- 它做的是不是我刚才说的事?
- 它用的开发板和引脚对不对?
- 它的接线有没有明显风险?
编译就像是让电脑先检查一遍项目:库有没有装好,代码有没有明显语法错误,开发板配置有没有问题。
编译通过,不代表硬件一定能跑;但编译不通过,后面肯定还要先修。遇到编译错误时,先打开报错详情查看完整日志。aily blockly 支持把日志中的报错内容提交到 AI 输入框,你可以双击关键报错,再发送给 AI,不要只说“它报错了”。
编译通过后,再连接开发板,选择正确端口,点击上传。上传失败很常见,不要慌。常见原因有:端口选错、数据线只能充电不能传数据、开发板型号选错、驱动没装好。
硬件开发最有意思的地方就在这里:你能真的看到灯亮、听到蜂鸣器响、看到屏幕显示、读到传感器数据。
如果结果不对,就把看到的现象说给 AI,例如:
程序上传成功了,但 LED 一直亮,不会闪烁。串口每秒都有输出。请帮我按顺序排查可能原因。
这里说得越具体,AI 越容易帮你判断问题在哪。
图片占位 1-3:自然语言硬件开发六步流程图。节点依次为“说需求”“补充硬件”“生成程序/连线”“编译”“上传”“观察并修改”。
现在我们正式开始第一个小项目。你可以把下面这段话复制到 AI 助手里。
请帮我创建一个入门硬件项目:让开发板上的 LED 每 1 秒闪烁一次。
硬件条件:
1. 我使用 Arduino Uno。
2. 优先使用板载 LED,也就是常见的 LED_BUILTIN。
3. 如果需要外接 LED,请说明接线方式,并提醒我串联 220 欧姆或 330 欧姆电阻。
程序要求:
1. 初始化串口,波特率使用 9600。
2. LED 点亮时在串口输出“LED ON”。
3. LED 熄灭时在串口输出“LED OFF”。
4. 请生成适合 Blockly 的程序逻辑,并说明对应的 Arduino/C++ 代码思路。
验证要求:
1. 告诉我编译前应该检查什么。
2. 告诉我上传成功后应该看到什么现象。
3. 如果 LED 不闪烁,请列出排查顺序。
这段话看起来有点长,但它比“帮我写个闪灯程序”靠谱得多。因为它告诉了 AI 四件重要的事:
- 我用的是 Arduino Uno。
- 我想优先用板载 LED。
- 我需要串口输出,方便观察程序是否在运行。
- 我希望你告诉我怎么验证和排查。
写硬件需求时,不是越复杂越好,而是关键条件要说清楚。开发板、模块、引脚、供电、想看到的现象,这些都很重要。
图片占位 1-4:AI 助手输入上述需求后的界面截图。请标注“需求输入区”“AI 回复区”“生成项目/应用修改按钮”等关键位置。
AI 回复以后,不要马上点编译,也不要马上接线。先花一点时间看内容。新手可以按下面的顺序检查。
你要的是“LED 每 1 秒闪烁一次”。如果 AI 写成了“按键控制 LED”,或者间隔变成了 5 秒,那就先让它改。
你可以这样说:
我的需求是 LED 每 1 秒自动闪烁,不需要按键。请按这个目标重新整理程序。
本章例子使用 Arduino Uno 和板载 LED。对于 Arduino Uno,板载 LED 通常可以用 LED_BUILTIN 表示。这样你不用先接外部 LED,就能完成第一次测试。
如果 AI 建议你外接 LED,也没问题,但要确认它提醒了电阻。外接普通 LED 时,常见接法是:数字引脚接电阻,电阻再接 LED 长脚,LED 短脚接 GND。
图片占位 1-5:外接 LED 安全接线图。展示“数字引脚 -> 220 欧姆电阻 -> LED 长脚,LED 短脚 -> GND”。旁边补充“如果使用板载 LED,此图可跳过”。
就算你还不会写代码,也可以看懂程序的大概顺序。这个项目应该像下面这样运行:
- 启动串口,设置波特率为 9600。
- 把 LED 引脚设置成输出。
- 点亮 LED。
- 串口输出
LED ON。 - 等待 1000 毫秒。
- 熄灭 LED。
- 串口输出
LED OFF。 - 再等待 1000 毫秒。
- 回到第 3 步继续重复。
这就是最基本的“循环”。开发板会一直重复执行这段动作,所以你会看到 LED 一亮一灭。
你可以主要使用 Blockly,但了解一点生成代码很有帮助。LED 闪烁项目大概会长这样:
void setup() {
Serial.begin(9600);
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH);
Serial.println("LED ON");
delay(1000);
digitalWrite(LED_BUILTIN, LOW);
Serial.println("LED OFF");
delay(1000);
}先不用背这些函数。你只要记住:
setup():开发板启动后先运行一次,常用来做初始化。loop():会一直重复运行,主要逻辑一般写在这里。delay(1000):等待 1000 毫秒,也就是 1 秒。
一个好的 AI 回复,不应该只给程序,还应该告诉你怎么判断成功。这个项目的成功现象很简单:
- LED 大约每 1 秒亮一次、灭一次。
- 串口工具中交替出现
LED ON和LED OFF。
如果你只看到串口输出,但 LED 不闪,可能是 LED 引脚不对,或者板载 LED 的逻辑和预期不同。如果 LED 闪了但串口没输出,可能是串口波特率不对,或者你打开的端口不对。
下面按实际操作走一遍。界面可能会随着版本有一些变化,但大体流程是一样的。
第一次打开 aily blockly 时,你不需要马上记住所有按钮。先知道下面几个地方是做什么的就够了:
- 项目管理:用来新建、打开和管理项目。
- 开发板选择:告诉软件你手里用的是哪一块板。
- 库管理器:安装传感器、显示屏、通信模块等硬件需要用到的库。
- Blockly 工作区:用积木方式查看和编辑程序逻辑。
- AI 助手:主界面右上工具栏中的 AI 按钮,用自然语言提出需求、修改程序、解释错误和生成连线建议。
- 编译和上传:先让电脑检查程序,再把程序写入开发板。
- 串口工具:查看开发板运行时输出的信息。
- 引脚图和连线图:帮助你确认模块应该接到哪里,接线前要重点看。
把这些区域认识一遍后,再开始做 LED 闪烁项目,后面的操作会顺很多。
AI 助手下方有模式切换按钮。刚开始可以这样理解:
- 问答模式:AI 主要读取当前项目和工作区信息,用来解释问题、分析现象、回答“为什么”。
- 代理模式:AI 可以读写项目,并调用工具完成项目分析、自动编程、错误修复和库转换等操作。让 AI 创建或修改项目时,需要切换到代理模式,但它会消耗更多 token。
本章的 LED 闪烁项目需要 AI 生成或修改程序,所以建议使用代理模式。只想让 AI 解释一段代码、分析一条串口日志,通常用问答模式就够了。
在项目管理区域新建一个项目,开发板选择 Arduino Uno。如果你手里不是 Arduino Uno,就选择自己的开发板,并把前面的提示词改成对应型号。
点击主界面右上工具栏里的 AI 按钮,打开 AI 助手。确认下方模式已经切换到代理模式,然后把第 1.4 节那段需求粘贴进去并发送。
发送前再看一眼开发板型号。很多问题都是从“型号写错了”开始的。
重点看三件事:开发板对不对,LED 引脚对不对,串口波特率是不是 9600。
如果它给了外接 LED 的方案,也要确认有没有限流电阻。
在 Blockly 工作区里找到初始化部分和循环部分。你可以不懂每个积木的细节,但要能看出“点亮、等待、熄灭、等待”这个节奏。
图片占位 1-6:LED 闪烁项目的 Blockly 工作区截图。请标注“初始化串口”“设置 LED 引脚为输出”“点亮 LED”“等待 1000ms”“熄灭 LED”“串口输出”等积木。
先编译。编译通过后再上传。
如果编译失败,不要只发一句“编译失败了”。点击查看详情,在日志中找到关键报错。你可以双击报错内容,把它提交到 AI 输入框,再补充当前项目目标,并且这样问:
这是我编译 LED 闪烁项目时的报错。请先解释报错原因,再给出最小修改方案,不要重写整个项目:
(在这里粘贴完整编译错误)
“最小修改方案”很重要。这样 AI 更倾向于修当前问题,而不是把整个项目重新写一遍。
编译通过后,连接开发板,选择正确端口,点击上传。上传完成后,观察板载 LED 是否闪烁。
如果上传失败,先检查:
- USB 线是不是数据线。
- 端口有没有选对。
- 开发板型号有没有选对。
- 串口工具有没有占用同一个端口。
打开串口工具,波特率选择 9600。如果一切正常,你会看到 LED ON 和 LED OFF 交替出现。
图片占位 1-7:串口工具输出截图。展示
LED ON和LED OFF交替输出,并标注波特率为 9600。
当 LED 能正常闪烁后,不要急着做很复杂的项目。先练习“改需求”。这一步非常重要,因为真实项目很少一次就做好,通常都是一边测试一边改。
比如你想让 LED 闪得更快,可以说:
请把当前 LED 闪烁项目的间隔从 1000 毫秒改成 300 毫秒。请保留原来的项目结构,只修改必要部分。
如果你想让串口输出更详细,可以说:
请在当前项目中增加一个闪烁计数器。每次 LED 点亮时计数加 1,并在串口输出“第 N 次闪烁”。请解释需要增加哪些变量和积木。
如果你想理解程序,可以说:
请用新手能理解的话解释当前 Blockly 程序。按运行顺序说明每个积木的作用,并指出哪些积木对应 Arduino/C++ 的 setup 和 loop。
注意这里一直在说“当前项目”。当你已经有一个能运行的版本时,最好让 AI 在这个基础上小步修改。这样更容易发现问题,也更容易回退。
以后你做自己的项目时,可以从这个模板开始。不用每次都填满,但重要信息尽量写清楚。
我想做的项目:
(用一两句话说明你希望硬件最终做什么)
我手里的硬件:
1. 开发板:
2. 传感器、执行器或显示屏:
3. 供电方式:
4. 已经确定的引脚:
我希望程序这样运行:
1. 开机后先做什么:
2. 平时循环做什么:
3. 检测到某个条件时做什么:
4. 出现异常时怎么提示我:
我希望你输出:
1. 项目方案
2. Blockly 程序逻辑
3. 必要的 Arduino/C++ 代码说明
4. 连线说明或连线图
5. 编译、上传和测试步骤
6. 可能的风险和排查清单
如果你只做很小的功能,可以简化成三句话:
我使用什么开发板。
我接了什么模块,想实现什么效果。
请生成 Blockly 程序,并告诉我怎么接线和验证。
写提示词的目的不是把 AI “考倒”,而是让它少猜一点。你给的信息越清楚,它越容易给出能用的方案。
完成 LED 闪烁后,可以做下面三个小练习。每个练习都不难,但能帮你熟悉“说需求、生成、验证、修改”的节奏。
先把 LED 改成每 200 毫秒闪烁一次,再改成每 2 秒闪烁一次。观察一下,闪得太快和闪得太慢时,肉眼看到的感觉有什么不同。
参考提示词:
请把当前 LED 闪烁项目改成可以通过变量控制闪烁间隔。先设置为 200 毫秒,并在串口输出当前间隔。请只修改必要的积木和代码说明。
如果你手边有 LED 和电阻,可以试试外接 LED。记住,普通 LED 需要串联电阻。
参考提示词:
我想把板载 LED 改成外接 LED。请使用 Arduino Uno 的 D8 引脚,说明 LED 长脚、短脚、电阻和 GND 的连接方式,然后修改程序。请特别检查这个接线是否安全。
让串口输出闪烁次数、当前状态或运行时间。串口输出越清楚,你后面排查问题就越方便。
参考提示词:
请在当前项目中增加一个计数器,每次 LED 点亮时计数加 1,并在串口输出“第 N 次闪烁”。请解释需要增加哪些变量和积木。
这一章你完成了一个很小但很完整的硬件项目:让 LED 闪起来,并通过串口看到程序状态。
更重要的是,你走完了自然语言硬件开发的基本流程:
- 先用中文说清楚想做什么。
- 让 AI 生成项目、程序和接线建议。
- 人工检查开发板、引脚、电压和接线。
- 编译、上传、观察真实硬件。
- 根据结果继续小步修改。
以后做传感器、屏幕、电机、联网设备,本质上也是这个流程。项目会变复杂,但方法不会变:先说清楚,再生成,再检查,再验证。
下一章我们会专门练习如何把一个模糊想法改写成清晰的硬件任务,让 AI 更容易生成可检查、可运行、可验证的项目草稿。