Skip to content

Latest commit

 

History

History
419 lines (267 loc) · 18.8 KB

File metadata and controls

419 lines (267 loc) · 18.8 KB

第 1 章:从自然语言开始:认识工作台并点亮第一个项目

本章先解决一个问题

很多人一听到“嵌入式开发”“MCU 编程”“Arduino/C++”,第一反应是:这是不是得先学很多语法?是不是得看一堆芯片手册?是不是接错一根线就完了?

这些担心都很正常。硬件开发确实比普通软件开发多了一层真实世界:有电压、有电流、有引脚、有传感器,也有可能接错线。但好消息是,你不必一开始就把所有细节都背下来。

在 aily blockly 里,我们可以先用中文把想做的东西说清楚,让 AI 帮你搭出项目、程序和连线建议。然后你再像检查作业一样,确认关键地方有没有问题,最后编译、上传到开发板,看硬件是不是真的动起来。

本章我们先认识 aily blockly 的几个主要区域,再做一件很小的事:让开发板上的 LED 每 1 秒闪烁一次。这个例子很简单,但它会带你走完整个流程:说需求、生成程序、检查、编译、上传、观察结果、再修改。

图片占位 1-1:aily blockly 主界面截图。请标注“项目管理”“Blockly 工作区”“AI 助手”“编译”“上传”“串口工具”“引脚图/连线图”等区域。

1.1 什么叫“用自然语言开发硬件”

自然语言,就是我们平时说话、写字用的语言。比如下面这句话:

我想做一个桌面温湿度提醒器。使用 ESP32 和 DHT20 传感器,每 2 秒读取一次温湿度,温度超过 30 度时点亮红色 LED,并在串口输出当前温度和湿度。

这不是代码,但它已经把一个硬件项目的大致样子说出来了:

  • 用什么开发板:ESP32。
  • 用什么传感器:DHT20。
  • 多久读取一次数据:每 2 秒。
  • 什么情况触发动作:温度超过 30 度。
  • 触发后做什么:点亮红色 LED。
  • 怎么观察运行情况:通过串口输出温湿度。

传统做法里,你可能要先查开发板资料、找传感器库、看示例代码、选引脚、写程序。现在你可以先把目标讲给 AI 听,让它帮你把这些事情整理成一个工程草稿。

这里要注意一个词:草稿。AI 生成的内容很有用,但它不是最终答案。硬件项目一定要经过人的确认,尤其是接线、电压、电源和引脚这些地方。

简单说,自然语言硬件开发就是:

你先说清楚想做什么,AI 帮你生成初稿,你再检查并用真实硬件验证。

1.2 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、引脚、限流电阻。

1.3 一次自然语言硬件开发,大概怎么走

你可以把整个过程想成六步。以后做更复杂的项目,也基本离不开这六步。

第一步:先说你想看到什么结果

先不用急着说代码怎么写。先说结果,比如:

我想让开发板上的 LED 每 1 秒闪烁一次,并在串口输出 LED 当前是亮还是灭。

这句话已经够 AI 开始工作了。它知道你要控制 LED,知道时间间隔是 1 秒,也知道你希望通过串口看到状态。

第二步:告诉 AI 你手里有什么硬件

硬件条件越清楚,AI 越不容易猜错。比如:

我使用 Arduino Uno。优先使用板载 LED。如果需要外接 LED,请告诉我怎么接线,并提醒我串联电阻。

如果你还没有确定开发板,也可以让 AI 先推荐:

我还没有开发板。请推荐一块适合新手入门、容易购买、适合做 LED 和传感器练习的开发板,并说明理由。

第三步:让 AI 生成项目和程序

AI 可能会生成 Blockly 积木、Arduino/C++ 代码、库依赖、引脚说明和连线图。你不用急着全部看懂,先抓住三个问题:

  • 它做的是不是我刚才说的事?
  • 它用的开发板和引脚对不对?
  • 它的接线有没有明显风险?

第四步:先编译,不急着接更多硬件

编译就像是让电脑先检查一遍项目:库有没有装好,代码有没有明显语法错误,开发板配置有没有问题。

编译通过,不代表硬件一定能跑;但编译不通过,后面肯定还要先修。遇到编译错误时,先打开报错详情查看完整日志。aily blockly 支持把日志中的报错内容提交到 AI 输入框,你可以双击关键报错,再发送给 AI,不要只说“它报错了”。

第五步:上传到开发板

编译通过后,再连接开发板,选择正确端口,点击上传。上传失败很常见,不要慌。常见原因有:端口选错、数据线只能充电不能传数据、开发板型号选错、驱动没装好。

第六步:看真实结果,再继续修改

硬件开发最有意思的地方就在这里:你能真的看到灯亮、听到蜂鸣器响、看到屏幕显示、读到传感器数据。

如果结果不对,就把看到的现象说给 AI,例如:

程序上传成功了,但 LED 一直亮,不会闪烁。串口每秒都有输出。请帮我按顺序排查可能原因。

这里说得越具体,AI 越容易帮你判断问题在哪。

图片占位 1-3:自然语言硬件开发六步流程图。节点依次为“说需求”“补充硬件”“生成程序/连线”“编译”“上传”“观察并修改”。

1.4 第一个项目:让 LED 每 1 秒闪烁

现在我们正式开始第一个小项目。你可以把下面这段话复制到 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 回复区”“生成项目/应用修改按钮”等关键位置。

1.5 AI 回复后,先看这几件事

AI 回复以后,不要马上点编译,也不要马上接线。先花一点时间看内容。新手可以按下面的顺序检查。

1. 看它有没有听懂你的目标

你要的是“LED 每 1 秒闪烁一次”。如果 AI 写成了“按键控制 LED”,或者间隔变成了 5 秒,那就先让它改。

你可以这样说:

我的需求是 LED 每 1 秒自动闪烁,不需要按键。请按这个目标重新整理程序。

2. 看它有没有用对硬件

本章例子使用 Arduino Uno 和板载 LED。对于 Arduino Uno,板载 LED 通常可以用 LED_BUILTIN 表示。这样你不用先接外部 LED,就能完成第一次测试。

如果 AI 建议你外接 LED,也没问题,但要确认它提醒了电阻。外接普通 LED 时,常见接法是:数字引脚接电阻,电阻再接 LED 长脚,LED 短脚接 GND。

图片占位 1-5:外接 LED 安全接线图。展示“数字引脚 -> 220 欧姆电阻 -> LED 长脚,LED 短脚 -> GND”。旁边补充“如果使用板载 LED,此图可跳过”。

3. 看 Blockly 程序是不是能讲通

就算你还不会写代码,也可以看懂程序的大概顺序。这个项目应该像下面这样运行:

  1. 启动串口,设置波特率为 9600。
  2. 把 LED 引脚设置成输出。
  3. 点亮 LED。
  4. 串口输出 LED ON
  5. 等待 1000 毫秒。
  6. 熄灭 LED。
  7. 串口输出 LED OFF
  8. 再等待 1000 毫秒。
  9. 回到第 3 步继续重复。

这就是最基本的“循环”。开发板会一直重复执行这段动作,所以你会看到 LED 一亮一灭。

4. 看对应代码的大概样子

你可以主要使用 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 秒。

5. 看它有没有告诉你怎么验证

一个好的 AI 回复,不应该只给程序,还应该告诉你怎么判断成功。这个项目的成功现象很简单:

  • LED 大约每 1 秒亮一次、灭一次。
  • 串口工具中交替出现 LED ONLED OFF

如果你只看到串口输出,但 LED 不闪,可能是 LED 引脚不对,或者板载 LED 的逻辑和预期不同。如果 LED 闪了但串口没输出,可能是串口波特率不对,或者你打开的端口不对。

1.6 先认识工作台,再照着做一遍

下面按实际操作走一遍。界面可能会随着版本有一些变化,但大体流程是一样的。

第一次打开 aily blockly 时,你不需要马上记住所有按钮。先知道下面几个地方是做什么的就够了:

  • 项目管理:用来新建、打开和管理项目。
  • 开发板选择:告诉软件你手里用的是哪一块板。
  • 库管理器:安装传感器、显示屏、通信模块等硬件需要用到的库。
  • Blockly 工作区:用积木方式查看和编辑程序逻辑。
  • AI 助手:主界面右上工具栏中的 AI 按钮,用自然语言提出需求、修改程序、解释错误和生成连线建议。
  • 编译和上传:先让电脑检查程序,再把程序写入开发板。
  • 串口工具:查看开发板运行时输出的信息。
  • 引脚图和连线图:帮助你确认模块应该接到哪里,接线前要重点看。

把这些区域认识一遍后,再开始做 LED 闪烁项目,后面的操作会顺很多。

AI 助手下方有模式切换按钮。刚开始可以这样理解:

  • 问答模式:AI 主要读取当前项目和工作区信息,用来解释问题、分析现象、回答“为什么”。
  • 代理模式:AI 可以读写项目,并调用工具完成项目分析、自动编程、错误修复和库转换等操作。让 AI 创建或修改项目时,需要切换到代理模式,但它会消耗更多 token。

本章的 LED 闪烁项目需要 AI 生成或修改程序,所以建议使用代理模式。只想让 AI 解释一段代码、分析一条串口日志,通常用问答模式就够了。

1. 新建项目

在项目管理区域新建一个项目,开发板选择 Arduino Uno。如果你手里不是 Arduino Uno,就选择自己的开发板,并把前面的提示词改成对应型号。

2. 打开 AI 助手

点击主界面右上工具栏里的 AI 按钮,打开 AI 助手。确认下方模式已经切换到代理模式,然后把第 1.4 节那段需求粘贴进去并发送。

发送前再看一眼开发板型号。很多问题都是从“型号写错了”开始的。

3. 读一遍 AI 的回复

重点看三件事:开发板对不对,LED 引脚对不对,串口波特率是不是 9600。

如果它给了外接 LED 的方案,也要确认有没有限流电阻。

4. 看 Blockly 工作区

在 Blockly 工作区里找到初始化部分和循环部分。你可以不懂每个积木的细节,但要能看出“点亮、等待、熄灭、等待”这个节奏。

图片占位 1-6:LED 闪烁项目的 Blockly 工作区截图。请标注“初始化串口”“设置 LED 引脚为输出”“点亮 LED”“等待 1000ms”“熄灭 LED”“串口输出”等积木。

5. 点击编译

先编译。编译通过后再上传。

如果编译失败,不要只发一句“编译失败了”。点击查看详情,在日志中找到关键报错。你可以双击报错内容,把它提交到 AI 输入框,再补充当前项目目标,并且这样问:

这是我编译 LED 闪烁项目时的报错。请先解释报错原因,再给出最小修改方案,不要重写整个项目:

(在这里粘贴完整编译错误)

“最小修改方案”很重要。这样 AI 更倾向于修当前问题,而不是把整个项目重新写一遍。

6. 上传到开发板

编译通过后,连接开发板,选择正确端口,点击上传。上传完成后,观察板载 LED 是否闪烁。

如果上传失败,先检查:

  • USB 线是不是数据线。
  • 端口有没有选对。
  • 开发板型号有没有选对。
  • 串口工具有没有占用同一个端口。

7. 打开串口工具

打开串口工具,波特率选择 9600。如果一切正常,你会看到 LED ONLED OFF 交替出现。

图片占位 1-7:串口工具输出截图。展示 LED ONLED OFF 交替输出,并标注波特率为 9600。

1.7 第一次改需求:让 AI 帮你小步修改

当 LED 能正常闪烁后,不要急着做很复杂的项目。先练习“改需求”。这一步非常重要,因为真实项目很少一次就做好,通常都是一边测试一边改。

比如你想让 LED 闪得更快,可以说:

请把当前 LED 闪烁项目的间隔从 1000 毫秒改成 300 毫秒。请保留原来的项目结构,只修改必要部分。

如果你想让串口输出更详细,可以说:

请在当前项目中增加一个闪烁计数器。每次 LED 点亮时计数加 1,并在串口输出“第 N 次闪烁”。请解释需要增加哪些变量和积木。

如果你想理解程序,可以说:

请用新手能理解的话解释当前 Blockly 程序。按运行顺序说明每个积木的作用,并指出哪些积木对应 Arduino/C++ 的 setup 和 loop。

注意这里一直在说“当前项目”。当你已经有一个能运行的版本时,最好让 AI 在这个基础上小步修改。这样更容易发现问题,也更容易回退。

1.8 写提示词的小模板

以后你做自己的项目时,可以从这个模板开始。不用每次都填满,但重要信息尽量写清楚。

我想做的项目:
(用一两句话说明你希望硬件最终做什么)

我手里的硬件:
1. 开发板:
2. 传感器、执行器或显示屏:
3. 供电方式:
4. 已经确定的引脚:

我希望程序这样运行:
1. 开机后先做什么:
2. 平时循环做什么:
3. 检测到某个条件时做什么:
4. 出现异常时怎么提示我:

我希望你输出:
1. 项目方案
2. Blockly 程序逻辑
3. 必要的 Arduino/C++ 代码说明
4. 连线说明或连线图
5. 编译、上传和测试步骤
6. 可能的风险和排查清单

如果你只做很小的功能,可以简化成三句话:

我使用什么开发板。
我接了什么模块,想实现什么效果。
请生成 Blockly 程序,并告诉我怎么接线和验证。

写提示词的目的不是把 AI “考倒”,而是让它少猜一点。你给的信息越清楚,它越容易给出能用的方案。

1.9 本章练习

完成 LED 闪烁后,可以做下面三个小练习。每个练习都不难,但能帮你熟悉“说需求、生成、验证、修改”的节奏。

练习 1:改变闪烁速度

先把 LED 改成每 200 毫秒闪烁一次,再改成每 2 秒闪烁一次。观察一下,闪得太快和闪得太慢时,肉眼看到的感觉有什么不同。

参考提示词:

请把当前 LED 闪烁项目改成可以通过变量控制闪烁间隔。先设置为 200 毫秒,并在串口输出当前间隔。请只修改必要的积木和代码说明。

练习 2:尝试外接 LED

如果你手边有 LED 和电阻,可以试试外接 LED。记住,普通 LED 需要串联电阻。

参考提示词:

我想把板载 LED 改成外接 LED。请使用 Arduino Uno 的 D8 引脚,说明 LED 长脚、短脚、电阻和 GND 的连接方式,然后修改程序。请特别检查这个接线是否安全。

练习 3:让串口多说一点

让串口输出闪烁次数、当前状态或运行时间。串口输出越清楚,你后面排查问题就越方便。

参考提示词:

请在当前项目中增加一个计数器,每次 LED 点亮时计数加 1,并在串口输出“第 N 次闪烁”。请解释需要增加哪些变量和积木。

1.10 本章小结

这一章你完成了一个很小但很完整的硬件项目:让 LED 闪起来,并通过串口看到程序状态。

更重要的是,你走完了自然语言硬件开发的基本流程:

  1. 先用中文说清楚想做什么。
  2. 让 AI 生成项目、程序和接线建议。
  3. 人工检查开发板、引脚、电压和接线。
  4. 编译、上传、观察真实硬件。
  5. 根据结果继续小步修改。

以后做传感器、屏幕、电机、联网设备,本质上也是这个流程。项目会变复杂,但方法不会变:先说清楚,再生成,再检查,再验证。

下一章我们会专门练习如何把一个模糊想法改写成清晰的硬件任务,让 AI 更容易生成可检查、可运行、可验证的项目草稿。