零基础碰硬件,一条不到 60 块钱能走通的路

零基础碰硬件,一条不到 60 块钱能走通的路

上一篇写了一件事:AI 把「能不能把它做出来」这堵墙拆掉了大半,但露出了后面「系统」那堵墙。

写完有人问我:那硬件呢?

我想了想,硬件其实是同一个故事的另一个版本,而且更极端——因为你面对的不只是别人的代码,还有物理世界。

但这里有个可能反直觉的结论:对零基础的人来说,硬件反而是现在更好的入门方向。

原因有三个:

  • 反馈是物理的。灯亮了就是亮了,不需要你去理解什么是「正确的抽象」。
  • 问题空间是有限的。「LED 不亮」满打满算就那么几种原因,能把它们一个个排除掉,你就有答案了。
  • 你从一开始就知道 AI 帮不了你全部。纯软件里容易产生「AI 什么都能干」的错觉,硬件里不会——因为板子就在你桌上,它不在 AI 那儿。

下面是一条具体的路:0 元起步,不到 60 元走通。

一、先算账:入门到底要花多少钱

入门硬件的三个台阶:0 元用在线仿真起步,约 40 元让物理世界动起来,再加约 15 元做出能用的东西

答案可能比你想的便宜。

台阶一:0 元。浏览器打开 Wokwi(wokwi.com),不用装软件、不用注册账号、不用买板子,直接在里面搭电路、写代码、点运行。ESP32 的虚拟板子、LED、按钮、电阻、显示屏、各种传感器都有,连 WiFi 都能仿真。

台阶二:约 40 元。让物理世界真的动一下:

要买的东西参考价
ESP32 开发板约 25 元
面包板约 5 元
杜邦线(公对公、母对母各一把)约 5 元
LED 和 220 欧电阻约 3 元
USB 数据线家里多半就有

台阶三:再加约 15 元。一块电容式的土壤湿度传感器,大概 10 到 15 元。

全套不到 60 元。

这个数字值得对比一下。十来年前学单片机是什么流程:买一块开发板(几十到一百多)、买一个专用烧录器、买一本厚书、装一个只能在 Windows 上跑的 IDE……而且最关键的是,烧不进去的时候,没有搜索,没有 AI,只能去论坛发帖等三天。

现在同一个起步动作,成本降了一个数量级。但最大的变化其实不是钱——是你能问 AI 了。这一点第五节展开说。

二、为什么第一块板子选 ESP32

为什么新手第一块板子选 ESP32:WiFi 和蓝牙内置、二三十元、支持 MicroPython、国内资料最多

新手最容易纠结的就是选哪块板子。直接给结论:ESP32。理由三条。

第一条,WiFi 和蓝牙是烧在芯片里的。你要做任何一个联网的东西,都不用再另买通信模块。不要小看这一条——新手第一次踩坑,十有八九踩在「买了 A 发现要配 B,买了 B 发现还要配 C」上。

第二条,二三十块钱,而且能写 Python。ESP32 支持 MicroPython,语法和 Python 一样。对不是程序员的人来说,这比啃 C 语言的指针,心理门槛低得多。当然,真做复杂项目最终还是要回到 C/C++,但入门阶段不该卡在语言上。

第三条,国内资料最多。中文教程、视频、问答,ESP32 是压倒性第一。这很重要,因为新手遇到的问题,百分之九十九别人已经踩过了——你需要的不是「能解决问题」,而是「能搜到答案」。

顺便说一下另外两个常见选择,为什么不推荐给零基础:

  • Arduino UNO:非常经典,但没有网络功能,做联网项目要另买 WiFi 模块;性能也弱,跑不动现在流行的东西。
  • STM32:功能强、工业上用得很多,但工具链重(装 CubeIDE、配 HAL 库、理解时钟树),新手很容易在「配环境」这一步就卡死,还没开始学东西就先放弃了。

所以结论是:ESP32 是现在零基础入门性价比最高的入口。一块板子、一根 USB 线,就能同时学「读传感器」「控制硬件」「连网络」三件事。

三、第 0 步:不花一分钱,先在浏览器里把灯点亮

很多人卡在「我得先买板子」,结果板子到了,发现线不知道往哪插、代码不知道往哪写,就搁置了。

正确的第一步是:先在仿真里把代码和接线逻辑摸熟,再买板子。

Wokwi 的操作就六步:

  • 浏览器打开 wokwi.com
  • 点 New Project,选 ESP32 的模板
  • 左边是代码区,右边是电路区
  • 点右边的加号,从元件库里拖一个 LED 和一个电阻出来
  • 把 LED 长脚接 GPIO2,短脚经过电阻接 GND
  • 点顶部的绿色三角,运行

你会看到灯开始闪,串口监视器里也会打印出信息。整个过程不需要花一分钱。

这一步的意义在哪?你在零成本的情况下,把「代码长什么样」「引脚是什么概念」「接线是什么逻辑」这三件事过了一遍。等板子到了,你只是把屏幕里的东西搬到桌面上。

但必须说清仿真的边界——这一点很多教程不讲。

Wokwi 能验证的是:代码逻辑对不对、接线思路对不对。
Wokwi 验证不了的是:电源够不够、模拟量准不准、射频行不行、传感器在真实环境里怎么响应。

它的官方文档自己就写得很清楚:仿真结果不能替代物理验证。所以仿真解决的是「先把该会的学会」,不是「不用买板子」。

四、第 1 步:花 40 块钱,让物理世界真的动一下

板子到了,做第一件事:点亮一个 LED。

接线就三根线:LED 的长脚(正极)接 ESP32 的 GPIO2;LED 的短脚接一个 220 欧电阻;电阻的另一端接 GND。

为什么要串一个电阻?因为 LED 直接接电源会烧。220 欧是常见值,不必纠结具体数字,先能亮起来要紧。

代码用 Arduino 风格,就是最经典的那一段:

void setup() {
  pinMode(2, OUTPUT);    // 把 GPIO2 设成输出
}

void loop() {
  digitalWrite(2, HIGH);   // 给高电平,灯亮
  delay(1000);           // 等 1 秒
  digitalWrite(2, LOW);    // 给低电平,灯灭
  delay(1000);
}

上传成功后,灯应该一秒一闪。

如果它闪了——恭喜,你已经完成了从「写代码」到「改变物理世界」的跨越。这个感觉和写网页、写后台完全不一样。

如果它没闪——更好。因为学习真正开始的地方,就在这里。下一节专门讲这件事。

五、这一节最重要:有 AI 了,新人该怎么用它

先说结论:有 AI 之后,新手学硬件的路径变了,但「必须动手」这一条没变。

老路径是:看书,背寄存器,抄例程,调不通,去论坛发帖等三天,放弃。

新路径是:说清楚要做什么,AI 给代码,调不通,把现象描述给 AI,AI 帮你缩小范围。

看起来轻松了很多。但这里有个新陷阱,很多教程不会告诉你:

AI 会给你一个「能编译但不对」的代码,而你现在没有能力判断它对不对。

软件里,代码错了通常会有报错、有日志、有异常。硬件不会。硬件只会「不工作」。

所以新人真正的核心技能,从「会写代码」变成了——把物理世界发生了什么,准确地描述给 AI。

这个差别有多大,看一个例子。

同一件事两种问法:把物理世界的现象描述清楚,AI 才能帮你

没用的问法是:「我的代码为什么不工作?」

AI 能怎么办?它只能把你的代码重写一遍,再猜几种可能。因为它不知道板子上发生了什么。

有用的问法是这样的:

ESP32 接了一个 LED 在 GPIO2。代码编译上传都成功,串口也在正常打印,但 LED 不亮。我用万用表量了 GPIO2 对地的电压,一直是 0V,不变化。接线是:LED 长脚接 GPIO2,短脚通过 220 欧电阻接 GND。可能是什么原因?

看出区别了吗?第二种问法里,你把这几件事交代清楚了:

  • 环境:什么板子,接在哪个引脚
  • 预期和实际:应该是闪,实际不亮
  • 你已经排除掉的:代码能编译、能上传、串口正常——所以问题不在代码逻辑上
  • 你测量到的:GPIO2 电压一直是 0V
  • 物理连线的细节:长脚短脚、电阻串在哪

其中「量到 0V 而且不变化」这一条最关键,它直接把问题锁定在「这个引脚根本没有真正输出」这个方向上。AI 拿到这个信息,第一反应就会去问:引脚号对不对?板子上 GPIO2 是不是被板载 LED 占用了?代码真的烧进去了吗?

而如果缺了这条信息,AI 就只能泛泛地猜。

这就是硬件入门里最值钱的一句话:你要当 AI 的眼睛。

六、第 2 步:做一个真正有用的东西

前面都是练手。现在做一个能用的:土壤湿度监测。

选它的原因很实际:传感器便宜、原理好懂,而且这个东西在农业场景里是真的有用。

先说一个选型的知识点,这个坑一定要提前知道。市面上的土壤湿度传感器分两种,买错了会让你在一个月后莫名其妙:

类型长相问题
电阻式两个叉子一样的金属电极便宜,十几元。但两根金属一直通电插在湿土里,本质上是个微型电解槽,会腐蚀、长绿锈,几周后读数开始飘,然后报废
电容式一整块覆了防腐涂层的板子贵一点,10 到 15 元。导电部分被涂层封住,不参与电解,基本不腐蚀,寿命长得多

结论:想做能放住的东西,直接买电容式。电阻式只适合「接出来玩两天」。

接线还是三根:

传感器ESP32说明
VCC3.3V供电
GNDGND共地
AOGPIO34模拟输出,必须接在 ADC1 上

注意这里有两个坑,都是新手必踩的。

坑一:为什么必须接 GPIO34 这种引脚?因为ESP32 的 ADC2 在 WiFi 开启的时候是不可用的。你要做联网项目,就必须把模拟传感器接在 ADC1 上,也就是 GPIO32 到 GPIO39 这一组。接错了的典型现象是:不连 WiFi 时读数正常,一连上 WiFi 就开始乱跳。

坑二:为什么读数会一直顶到 4095 不动?因为 ESP32 的 ADC 默认量程只到大约 1.1V,而传感器输出可能到 2 到 3V。你不改衰减设置,读数早就顶满了,看起来就像「传感器坏了」。解决办法是加一句设置衰减的代码。

完整代码大致长这样:

const int PIN_SOIL = 34;     // AO 接 GPIO34(ADC1)

// 标定得到的两个端点,先用占位值,标定后改
const int RAW_DRY = 3200;    // 干透时的读数
const int RAW_WET = 1300;    // 浇透时的读数

void setup() {
  Serial.begin(115200);
  // 关键:ESP32 的 ADC 默认量程偏小
  // 加大衰减才能读到 0 到 3.3V
  analogSetPinAttenuation(PIN_SOIL, ADC_11db);
}

void loop() {
  int raw = analogRead(PIN_SOIL);
  // 注意方向:干土读数大、湿土读数小
  int pct = map(raw, RAW_DRY, RAW_WET, 0, 100);
  pct = constrain(pct, 0, 100);

  Serial.print("raw=");
  Serial.print(raw);
  Serial.print("  湿度=");
  Serial.print(pct);
  Serial.println("%");

  delay(1000);
}

还有一件事必须你自己做:标定。

代码里那两行标定值不能抄别人的。不同模块、不同土质、不同插入深度,原始值都不一样。做法很简单:

  • 把探头放在空气里(或者插进彻底干透的土里),等串口读数稳定,记下来,填进干点
  • 把同一盆土浇透,等读数稳定,记下来,填进湿点
  • 这两个值就是 0% 和 100% 的两个端点,中间的值会被线性映射成百分比

顺带一提:很多电容式模块的方向是反的——越干读数越大,越湿读数越小。如果你发现方向反了,把这两个值对调就行。

标定完,再往里加一段 WiFi 上传的代码,数据就能发到你的服务器或者云平台了。

到这一步,你已经做出了一个能用的东西。整个过程不到 60 块钱。

七、新手一定会撞上的几个坑

新手一定会撞上的几个坑:ADC 衰减、ADC2 与 WiFi 冲突、电阻式传感器腐蚀

这一节可以当手册用,遇到问题先来对一遍:

现象原因怎么办
读数恒定不动,一直是 0 或 4095AO 接错脚,接到了没有 ADC 功能的引脚对照引脚图,接到 ADC1(GPIO32 到 39)
读数顶到 4095 不动没设 ADC 衰减加一句 ADC_11db 衰减设置
湿度方向反了,越湿数字越大该模块是「越干读数越大」把干点和湿点两个值对调
干湿读数差不多,区分不开没标定,或者探头插得太浅做干湿两点标定,插够深度
埋了一段时间,读数越来越飘买到了电阻式,电极被腐蚀换成电容式
一连 WiFi 读数就乱跳AO 接到了 ADC2 引脚改接到 ADC1
WiFi 连不上,拿不到 IP密码错,或者路由器只有 5G 频段打印连接状态排查;ESP32 只支持 2.4G
读数来回跳十几点接触不良,或者电源噪声线接牢,连读十次取平均再发

注意这份表里的大部分问题,AI 光看代码是查不出来的。「线松了」「买错型号了」「插得不够深」——这些信息只有你能提供。

这就是硬件和纯软件最不一样的地方:一半的坑,不在代码里。

八、所以新人到底该怎么学

把上面整条路串起来,有三条原则。

第一条:先动起来,再求懂。

不要一开始就啃模电数电,也不要先把 C 语言从头学完再碰板子。顺序反了,大概率会放弃。正确的顺序是:先让灯亮起来,再问它为什么亮,再问这里为什么要加电阻,一点一点往下挖。

第二条:每个项目只加一个新东西。

点灯,加个按钮,加个传感器,加个 WiFi,加个云端。每次只增加一个新的、没学过的东西,其他部分都保持你已经会的。

千万不要一上来就做「智能农业大棚系统」。那个项目拆开是二十个小项目,其中任何一个卡住你,你都会觉得「我果然不适合干这个」。

第三条:别让 AI 替你做判断。

这是最重要的一条。

AI 给你的代码是候选,不是答案。它能写出看起来对的东西,但你的板子会不会烧、接线对不对、这个传感器适不适合长期埋在土里——AI 不知道,你得自己验证。

所以新人的核心能力不是「会问 AI」,是「会验证」:

  • 会量电压
  • 会看串口打印
  • 会做对照实验,换一个引脚试试、换一根线试试
  • 会把观察到的现象准确地说出来

九、再说回那堵墙

上一篇的结论是:AI 拆掉了「实现」这堵墙,露出了「系统」这堵墙。

硬件是同一个故事的另一个版本,但露出来的那堵墙更硬:

软件里,AI 拆掉「写代码」,露出「系统」。
硬件里,AI 拆掉「写代码」,露出「物理世界」。

而物理世界有个特点——它不会骗你,但它也不会替你解释。

灯不亮就是灯不亮。它不会告诉你,是因为线松了、引脚错了,还是电阻算错了。这个「翻译」的活儿,只能你来干。

所以有 AI 之后,新人入门硬件的门槛确实低了很多,代码这一关基本被抹平了。但门槛没有消失,只是换了位置:从「会不会写」,换成了「能不能观察、能不能描述、能不能验证」。

有意思的是,这三件事恰好也是 AI 最不擅长的。它在你的电脑里,而你的板子在你的桌上。

这中间的那段距离,就是你的位置。