刚拿到 Arduino 开发板的人,十个有九个是同样状态:板子上的小芯片和插针看得一头雾水,电脑里还没装软件,心里想的是“这玩意儿到底怎么玩”。但你只要愿意花一个小时,按我下面这条路线走完,就能亲手做出一个能感知光线、能控制灯光的小装置。Arduino 说白了就是一块“能编程的万能积木”——板上有一颗微控制器芯片,你通过电脑给它写入指令,它就能读取传感器信号、驱动 LED 和马达等外部设备。这篇文章面向的是零基础初学者,我尽量不堆术语,把每个操作步骤都交代清楚,保证你跟着做完就能上手。
1. 先搞明白:Arduino 到底是什么玩意儿
1.1 一块板子背后的设计哲学
Arduino 是一块基于微控制器的开源开发板。它把所有复杂的单片机系统,精简成一块带 USB 接口的电路板。你不需要了解芯片内部怎么工作,不需要昂贵的烧录器,只需要一根 USB 线连电脑,在配套软件里写几行代码,就能让硬件动起来。
以最常见的 Uno 型号为例,板子上核心是一颗 ATmega328P 微控制器芯片,频率 16MHz,存储空间 32KB,运行内存 2KB。这些参数在今天的电脑面前弱得不像话,但在控制 LED、读取按键、驱动小马达这类场景下绰绰有余。板子四周分布着 14 个数字引脚(编号 D0 到 D13),其中 6 个支持 PWM 模拟输出;另外还有 6 个模拟输入引脚(编号 A0 到 A5),用来读取电位器、光敏电阻这类连续变化的电压信号。
一个特别贴心的设计是:每排引脚旁边都有对应的文字标注,你几乎没有记错引脚的可能。Arduino 的整个设计哲学就是降低门槛——它不像其他单片机平台那样,要求你先啃几百页芯片手册才能点亮第一个灯。你把开发板想象成一台迷你电脑,引脚就是它伸出去的手,传感器是眼睛和耳朵,LED 和马达是嘴巴和手脚,你写的代码就是指挥这一切的大脑。
1.2 一小时上手背后的逻辑:先跑起来,再理解
一小时上手的底气,来自 Arduino 极高的抽象程度。传统单片机开发,你得先精通寄存器配置、中断向量、时钟树这些底层概念。而 Arduino 官方封装了这些底层细节,把操作引脚简化为三条指令:
pinMode(pin, mode):设置某个引脚作为输入还是输出digitalWrite(pin, value):让某个引脚输出高电平或低电平digitalRead(pin):读取某个引脚当前是高电平还是低电平
相当多的入门项目,用这三条指令就写得出来。你不需要一开始就弄懂电压、电流、电阻的计算公式,先把 LED 点亮,再回头补理论,学习曲线会平滑很多。
但这并不意味着 Arduino 只是个玩具。它是全球创客、设计师、交互艺术家的常用工具,很多智能硬件产品的原型就是用 Arduino 搭出来的。另一方面,它也非常适合作为单片机入门的第一块板子:你通过它建立了“代码控制物理世界”的直觉,后续就算转去做更复杂的嵌入式开发,这套思路依然通用。
1.3 谁适合花这一小时?谁不适合?
如果你完全没接触过硬件编程,只是一直想试试——你适合。如果你有软件编程经验但没碰过硬件,比如会写前端或后端代码,想尝试真实世界的物理交互——你非常适合,代码逻辑你早就会了,要补的只是电路连接和板子的脾气。如果你是中学生,想做学校科技节的小作品,或者在家折腾点自动化小东西——同样适合。
反过来,如果你的目标是几个月内做出量产级别的产品,或者深入理解微控制器内部架构,那 Arduino 只是你漫长学习路的起点,别指望这一个小时候面面俱到。另外有一种情况要泼冷水:如果你连“安装软件、插 USB 线”都觉得麻烦,那这一小时可能会有点煎熬。硬件开发毕竟是动手的活,电脑前看一百篇教程,不如亲手拔插一次跳线。
2. 开工前的物料与软件准备
2.1 硬件清单:别多买,这几样就够
Arduino 入门最省钱也最省心的组合,其实不超过这几样:
| 物料 | 建议型号 / 规格 | 数量 | 大致作用 |
|---|---|---|---|
| 开发板 | Arduino Uno / Nano 及其国产兼容版 | 1 块 | 核心控制板 |
| 面包板 | 400 孔或 830 孔通用面包板 | 1 块 | 免焊接连接电路 |
| 跳线 | 公对公杜邦线,长度约 20cm | 一束(至少 10 根) | 连接开发板与面包板 |
| LED | 5mm 普通发光二极管 | 5 个(红黄绿各几个) | 输出显示 |
| 电阻 | 220Ω ~ 1kΩ | 10 个 | LED 限流保护 |
| 按键 | 轻触开关 6mm×6mm | 2 个 | 数字输入 |
| 电位器 | 10kΩ 旋转电位器 | 1 个 | 模拟输入演示 |
| 光敏电阻 | 5mm 光敏电阻(5528 等) | 1 个 | 光线感知 |
| USB 线 | 对应开发板型号的 USB 线 | 1 根 | 供电和下载程序 |
新手最容易踩的第一个坑,是在淘宝上买一堆炫酷传感器模块,什么人体感应、超声波、液晶屏、舵机,结果快递到了发现连最基本的面包板都没有。面包板是硬件入门的基础设施,没有它你就只能拿杜邦线悬空接线,既不稳定也容易短路。以上清单里,开发板建议买标配的 Uno 或者 Nano 国产兼容板,十几块钱到几十块钱不等,功能上和官方板几乎没有差距,但价格便宜一大截。
还有一个容易忽略的细节:有些开发板用的是 Mini USB 口,有些是 Micro USB 口,还有 Type-C 的。买之前确认一下手头有没有对应的线,不然等到货了才发现没法连电脑,那才叫扫兴。
2.2 软件环境:下载 Arduino IDE 并识别开发板
软件方面,你只需要官方 Arduino IDE(集成开发环境)。到官网下载对应自己操作系统的版本,安装过程一路下一步即可,没有任何需要额外配置的地方。
有些国产兼容板使用了 CH340 芯片做 USB 转串口,电脑可能无法直接识别,需要装 CH340 驱动。判断方法很简单:板子插上电脑后,看“设备管理器”里端口(COM 和 LPT)下面是否出现一个带感叹号的“USB-SERIAL CH340”。如果出现了,去搜 CH340 驱动装上,重启电脑再看。这个坑十个人里至少有两个人会踩,提前说清楚,遇到别慌。
驱动没问题后,打开 IDE,在“工具”菜单里选中开发板型号(比如 Arduino Uno)以及正确的端口号(COM 号)。这一步千万不能省,很多人写好了代码却传不进去,十有八九是端口选错了。
2.3 一分钟测试:给板子做个体检
硬件软件都齐了,先做个体检,确认你的板子是健康的。插上 USB 线,观察板载 LED——有一个标着 ON 或 PWR 的电源指示灯应该常亮。有的板子还有一个标着 L 的 LED 会一闪一闪,那是出厂烧录的 Blink 程序在跑,说明板子出厂正常。
在 IDE 里打开“文件 → 示例 → 01.Basics → Blink”,点工具栏的“上传”按钮(向右箭头图标),等几秒钟,如果下方显示“上传成功”,同时板子上 L 引脚附近的 LED 开始按 1 秒间隔闪烁,那么你的开发环境和硬件链路已经完全打通。从这一刻起,剩下的 50 多分钟,纯粹是往这套链路里加入你自己的创意。
3. 从零到点亮第一盏灯:核心电路与代码逻辑
3.1 面包板接线:搞懂这一条就成功了一半
面包板是硬件入门的第一个基础设施,它的原理很简单:上下两长条是电源轨,分别接正极和负极;中间区域按列连通,每 5 个孔为一组纵向相连。你插一根跳线到一个孔,这根线默认就和同一列的另外 4 个孔连通了。中间那条凹槽把板子分成左右两半,两侧的孔互不相通。
很多新手第一次把 LED 插进面包板后发现不亮,排查半天,结果只是 LED 两个引脚插在了中间凹槽的两侧,根本没有形成回路。这个细节没有老手提醒,自己摸索可能要浪费十分钟。
点亮 LED 的电路最简单不过:开发板某个数字引脚(比如 D13)输出高电平,电流经过限流电阻,流过 LED,回到 GND 地线。LED 是有极性的,长脚接正极,短脚接负极。如果你接反了,它不会烧,只是不亮,反过来就行。
3.2 电阻为什么非加不可
如果不接限流电阻,可能发生什么?LED 正向导通后电阻很小,此时回路电流会达到几十毫安甚至更高,远超 LED 额定工作电流(通常 20mA 左右)。持续大电流会烧坏 LED,顺便可能损坏单片机引脚。不少教程为了简化,直接省略电阻,这在演示时也许能亮,但属于埋雷行为,长期跑很容易出问题。
电阻阻值的选择很简单:Arduino 引脚输出 5V,红色 LED 正向压降约 1.8V。那么限流电阻 R 可以用欧姆定律估算:
R = (Vcc - V_LED) / I_LED = (5V - 1.8V) / 10mA = 320Ω实际用 220Ω 到 330Ω 都很安全,电流在 10mA 到 15mA 之间,LED 亮度足够也远低于引脚最大输出电流。蓝色和白色 LED 正向压降高一些,用 100Ω 到 220Ω 也完全没问题。这是个典型“知其所以然”的场景:你不需要每次重新计算,但知道这个公式怎么来的,以后再遇到 3.3V 供电的设备时,就能举一反三。
3.3 代码逐行拆解:认识 Arduino 程序的固定结构
把刚才那个 Blink 示例代码打开看看:
void setup() { pinMode(LED_BUILTIN, OUTPUT); } void loop() { digitalWrite(LED_BUILTIN, HIGH); delay(1000); digitalWrite(LED_BUILTIN, LOW); delay(1000); }这段代码是全地球 Arduino 用户的共同记忆。setup()函数在板子通电后运行一次,用来做初始化;loop()函数则会一遍又一遍地反复执行,永不停止。这种结构贯穿你以后写的所有 Arduino 程序。
pinMode(LED_BUILTIN, OUTPUT)表示把板载 LED 对应的引脚设为输出模式。Arduino 的数字引脚有输入和输出两种方向,输出模式下引脚才能对外提供电压。digitalWrite让引脚输出高电平(HIGH,即 5V)或低电平(LOW,即 0V)。delay让程序暂停运行,单位是毫秒,所以delay(1000)就是停留 1 秒。
要验证循环结构,可以把延时改成 200ms,上传后你会看到 LED 闪得明显更快了。亲眼看到代码改动导致物理现象改变,这种感觉很奇妙,也是硬件编程和纯软件编程最大的不同。
3.4 第一个实操项目:让你的 LED 一亮一灭
接下来,我们把 LED 从板载的 L 移到外接面包板,完整走一遍接线流程。开发板 D13 引脚 —— 杜邦线 —— 面包板 —— 220Ω 电阻 —— LED 正极,LED 负极 —— 杜邦线 —— 开发板 GND。
接线顺序建议从电源到地,也就是先接好 GND 回路,再插信号线。这样做的好处是,万一中间接错导致短路,电流已经过了地线,不容易把芯片击穿。搭完电路后,把上面那几十行代码里的LED_BUILTIN换成13,上传。
一个非常常见的低级错误:有人会把 LED 长脚插入面包板的同一列,短脚插入另一列,看起来没问题,但中间隔着一个凹槽,实际上电路是断开的。用万用表一测就露馅,没有万用表的话,拿一根跳线短接试试也是排查思路。这些动作看似基础,但都是长期实操沉淀下来的经验。
4. 输入与控制:让代码听你的话
4.1 按键输入与上拉电阻:让板子产生“选择”
LED 自己在那儿闪,时间长了也就那样。真正的交互感来自输入设备——按键。按键按下时,两个引脚导通;松开时,两个引脚断开。把这个通断信号接到数字引脚上,程序就能做出不同反应。
接法上有一个关键点:按键断开时,引脚处于悬空状态,电平不确定性很强,可能会读到随机值。所以需要给引脚接一个上拉电阻到 5V 或 3.3V,这样按键断开时引脚稳定为高电平,按下时被拉低读到低电平。Arduino 内部自带了上拉电阻,代码里这样写即可:
pinMode(2, INPUT_PULLUP);启用内部上拉后,硬件上只需要按键一脚接数字引脚 2,另一脚接 GND,按下时读到的值是LOW,松开时是HIGH。这个逻辑反直觉,很多人第一次写按键判断会写成按下时HIGH,结果怎么调都不对。
完整的按键控制 LED 代码大概长这样:
int btnPin = 2; int ledPin = 13; void setup() { pinMode(btnPin, INPUT_PULLUP); pinMode(ledPin, OUTPUT); } void loop() { int btnState = digitalRead(btnPin); if (btnState == LOW) { digitalWrite(ledPin, HIGH); } else { digitalWrite(ledPin, LOW); } }按下时灯亮,松开时灯灭,代码逻辑一目了然。这里值得深入理解的一点是:按键按下代表一个“事件”,而读取按键的过程叫“轮询”——程序不断循环检查引脚状态。Arduino 的 loop 结构天然适合这种轮询模式,很多复杂系统的状态机底层都是这种思路的延伸。
某次我在新手营里指导一位学员,他照着接线图插好按键,按下去灯却没反应。我检查了代码、引脚、连线全都没问题,最后发现他把按键插反了方向——轻触开关的四根脚本来是对角导通的,他插成了同一侧,按钮按下时根本没触发内部接触。翻过来重新插好,一切正常。这类“看起来全对但就是不行”的故障,往往是最容易让新手崩溃的。
4.2 PWM 模拟输出:为什么能“呼吸”却不亮到一半
数字引脚只有 HIGH 和 LOW 两种状态,但实际应用里常需要调节 LED 亮度、电机转速这类“中间状态”。Arduino 靠 PWM(脉冲宽度调制)来实现。
PWM 的原理很容易理解:高速交替输出高电平和低电平,通过改变高电平在一个周期里的占比(占空比)来改变平均电压。这个切换速度非常快,肉眼看到的是亮度变化而不是闪烁。Arduino 的analogWrite(pin, value)就是 PWM 输出接口,value 范围 0 到 255,255 就相当于满功率常亮。
上面提到过,只有部分数字引脚支持 PWM,板子上这些引脚旁边都标着波浪线符号(~)。这些引脚对应芯片的定时器输出通道,硬件底层自动完成波形生成,微控制器内核不需要参与每个周期的电平翻转,所以效率很高。一个典型的“呼吸灯”效果可以实现如下:
int ledPin = 9; int brightness = 0; int fadeAmount = 5; void setup() { pinMode(ledPin, OUTPUT); } void loop() { analogWrite(ledPin, brightness); brightness = brightness + fadeAmount; if (brightness <= 0 || brightness >= 255) { fadeAmount = -fadeAmount; } delay(20); }亮度的变化速度由delay(20)决定,fadeAmount 是步进大小。调整这两个参数,呼吸的节奏就会改变,调出自己喜欢的“呼吸感”后,你会对 PWM 的威力有更直观的感受。
4.3 模拟量读取:电位器与光敏电阻的信号输入
如果说数字输入只有开关两种状态,那模拟输入则是连续可变的。Arduino 的 A0~A5 引脚接了一个 10 位的模数转换器(ADC),能把 0~5V 的电压映射为 0~1023 的整数值。电位器是最理想的演示元件:旋钮转动时,中间抽头的电压在 0 到 VCC 之间线性变化,ADC 读到的数值随之变化。
接线方法是:电位器第一脚接 5V,中间脚接 A0,第三脚接 GND。代码只需要一行:
int sensorValue = analogRead(A0);读取后可以通过map()函数映射到其他范围,比如把 0~1023 映射到 0~255,去控制 LED 亮度:
int brightness = map(analogRead(A0), 0, 1023, 0, 255); analogWrite(9, brightness);拧动电位器,LED 亮度随之变化,你会产生一种“控制物理世界”的强烈实感。基于同样的道理,光敏电阻也能用来感知光线强度。它和普通电阻不同,阻值随光照强度变化。把光敏电阻和 10kΩ 固定电阻串联,中间抽头接模拟输入引脚,就构成了一个简单的分压电路,光照强度变化会导致分压点电压变化:
A0 电压 = 5V * R1 / (R光敏 + R1)这里 R1 是那个 10kΩ 固定电阻。整个电路只需要一个光敏电阻和一只固定电阻,成本不到一两块钱,却能实现整个环境感知的最基本原型。白天和夜晚读到的数值差异非常明显,这个特性下一节就要用到。
5. 综合实战:30 行代码做一个光控夜灯
5.1 项目逻辑:把前面学到的全部串起来
集中练习了数字输出、数字输入、模拟输入和 PWM 这四类基本能力后,把它们串成一个有实际意义的作品才算真正“上手”。我建议做一个光控夜灯:天黑了灯自动亮,天亮了灯自动熄灭,亮度根据环境光线自动调整。
这个项目的逻辑拆解如下:
- 光线暗时,光敏电阻阻值升高,A0 电压降低,ADC 读数变小
- 光线亮时,ADC 读数变大
- 程序根据 ADC 读数反向控制 LED 亮度
- 读数小(环境暗)时,LED 亮度高;读数大(环境亮)时,LED 亮度低
反向映射用map()一行就能完成。
5.2 完整代码与接线图
电路连接上,A0 接光敏电阻分压点,9 号引脚接 LED 限流电阻。注意 LED 接的是 PWM 引脚,因为我们要调节亮度。
int sensorPin = A0; int ledPin = 9; void setup() { pinMode(ledPin, OUTPUT); Serial.begin(9600); } void loop() { int sensorValue = analogRead(sensorPin); int brightness = map(sensorValue, 0, 1023, 255, 0); brightness = constrain(brightness, 0, 255); analogWrite(ledPin, brightness); Serial.print("Sensor: "); Serial.print(sensorValue); Serial.print(" Brightness: "); Serial.println(brightness); delay(50); }代码里出现了调试用的串口输出。硬件开发有个铁律:程序不仅要“能跑”,还要“能诊断”。串口输出是把传感器数值打印到电脑屏幕上观察的手段,在调试阶段用处极大。初次调试时,打开“工具 → 串口监视器”,看到真实的 ADC 读数和实时计算出的亮度,你就能确认每一环是否正常。
这段代码里map()是从 0~1023 反向映射到 255~0,也就是环境越暗亮度越高。constrain把数值限制在合法范围内,防止某些极端情况下溢出。delay(50)控制采样周期为 20Hz,既不会让串口数据刷新过快,也能保持对光线变化的实时响应。
5.3 调试方法与效果验证
上传程序后,用手机手电筒照向光敏电阻,观察 LED 亮度变化。你会发现:光照强时 LED 几乎熄灭,手电筒移开后 LED 亮起,用手半遮住光敏电阻时,LED 亮度又会在中间某个位置。整个过程就是光线传感器控制系统根据环境反馈调节输出的闭环表现,虽然简单,但已经是“智能硬件”最朴素的形态。
如果发现反应方向相反(光照越强 LED 越亮),只需把map()的参数顺序对调即可。如果 LED 亮度范围不理想,可以调整map()的输入上下限,让它在你的环境里表现更符合直觉。比如你把阅读灯调暗一点,LED 就呈现出柔和的微光,这时候你就摸到了“阈值调节”的门道。
在更复杂的工程场景里,这种“传感器读值 → 逻辑判断 → 执行器动作”的闭环无处不在,空调控温、智能灌溉、自动窗帘,底层逻辑和你眼前这个小夜灯完全一致。如果你以后想往物联网方向发展,这个几十行代码的小项目就是你迈向复杂系统的起点。
5.4 给这个项目加上更多可能性
作品完成后,别急着收官,试着想想扩展空间。加一个按键切换“自动模式”和“强制点亮模式”,就是手电筒和夜灯的双模式切换;换一个功率更大的 LED 驱动模块,就能控制灯带亮灭;加上 ESP8266 / ESP32 模块,连上网络,就能用手机远程查看光线数据。
这些扩展方向不需要现在全部搞明白,但值得记住:Arduino 项目的复杂度提升,往往不是靠某一个大招,而是靠一次次小迭代——加一个输入、加一个输出、加一段逻辑,系统功能就丰富一分。项目复盘时把这些点写下来,下一次动手就会更有方向感。
6. 常见问题与排查技巧实录
6.1 编译报错与代码层面的坑
新手最常见的编译报错类型是缺少分号、括号不匹配、大小写错误。Arduino 语言基于 C/C++,对语法严格要求,漏一个分号编译器就会停止工作。好在编译器给出的提示信息足够精确,会指出错误发生在第几行。很多初学者看到一片红色英文就慌了,实际把报错信息的第一行复制进搜索框,就能找到答案。
中文注释偶尔也会引发编译问题,某些老版本 IDE 对 UTF-8 编码的中文注释支持不友好,编译报错位置和数据实际位置完全对不上。遇到这种情况,最简单的办法是把注释临时改成英文,或者用较新版本的 IDE。这不是玄学,是编码兼容性问题,老鸟几乎都遇到过。
6.2 上传失败:端口名、驱动与硬件锁死
上传是高频翻车点。如果点击“上传”后,底部状态一栏出现avrdude: stk500_getsync() attempt或者类似文字,说明 IDE 无法和开发板建立通信。按顺序排查以下三项:
- 确认“工具 → 端口”里选中了正确的 COM 口。一个容易忽略的细节:某些扩展坞或前置 USB 面板会导致识别不稳定,直接插电脑原生 USB 口成功率更高。
- 确认开发板型号选择正确。Uno 选 Arduino Uno,Nano 选 Arduino Nano,选错会直接通信失败。
- 国产兼容板很多用 CH340 芯片,驱动没装或没装对是经典问题,务必确认“设备管理器”里没有黄色感叹号。
还有一个隐蔽问题:某开发板在通电瞬间若被某些程序占用串口,IDE 会无法获取端口。此时拔掉 USB 线重新插一次,关掉串口监视器再上传,往往就能解决。
6.3 硬件不工作的排查方略
硬件故障的排查原则只有一个:逐级隔离。如果某个功能不正常,先看电源——板子上的电源指示灯亮不亮;再看信号链路——传感器有没有输出,引脚电压是否正确;最后看负载——LED 有没有接反、电阻阻值是否合适。
很多新手手头没有万用表,这就更需要分步排查的思维。比如按键按下灯不亮,你可以先写一个最简单的点亮程序,跳过按键直接输出;接好线后,再把按键换成一根杜邦线,手动触碰 GND 模拟按键按下。这一类“替换法”能快速定位故障是在代码、传感器还是接线逻辑上。
另外,面包板的氧化问题也会导致接触不良,用久了的板子插孔松动,看起来插紧了实际接触不到。这种情况换个孔位,或者把元件引脚拧歪一点增大接触面,就能解决。
6.4 常见问题速查表
| 现象 | 可能原因 | 快速排查 / 解决方法 |
|---|---|---|
| 上传卡在“上传中…” | 端口占用或驱动异常 | 关闭串口监视器,重插 USB,检查设备管理器 |
| 编译报错且乱码 | 中文注释编码问题 | 注释改英文,或升级 IDE 版本 |
| LED 完全不亮 | 接反、未接 GND、代码引脚不对 | 检查 LED 极性,确认引脚编号,用万用表测电压 |
| 按键按下无反应 | 上拉未设置 / 引脚接错 | 明确 INPUT_PULLUP,查线路导通 |
| 串口监视器乱码 | 波特率不匹配 | 统一为 9600 或其他固定值 |
| 模拟量读数一直满值或零 | 分压电路断路 | 检查传感器接入方向、GND 连接 |
| 板子发热 | 短路 | 立即断电,检查电源正负极是否接触 |
7. 一小时之后,下一步怎么走
一小时的时间表走到这里已经用完了。你手里现在有一块能跑通基础输入输出、能感知光线、能控制灯光的开发板。这时候的你已经具备了独立折腾的基本素养——知道看报错信息,知道排查硬件的思路,也知道 Arduino 的核心语法结构。
如果觉得意犹未尽,我个人推荐按这个顺序继续往下玩:先做数码管倒计时,巩固数字输出和延时逻辑;再做温湿度传感器数据读取,理解单总线协议的时序;然后加一块 OLED 屏幕显示数据,掌握 I2C 通信;最后换成 ESP32 开发板,用 Wi-Fi 把你的传感器数据传上云平台,做一个手机能看的远程监测系统。每一步都是在上一步的基础上增加一个新的抽象层次,你的硬件功底会像滚雪球一样壮实起来。
我在带新手的过程中发现一个很有意思的规律:凡是能坚持做完全部基础实验的人,几乎都不会止步于 Arduino。他们要么转向更小尺寸的裸机单片机,要么转向带无线功能的物联网芯片,要么转向机器人控制。Arduino 的好玩之处在于,它给了你一个极低门槛的起点,却为你保留了通向所有复杂方向的接口。最后一句话想送给你:硬件开发没有捷径,但确实有入口,这个入口就是一块几十块钱的蓝色小板子,你现在已经在门口了。