Arduino D1 R2 使用心得

힘센캥거루
2025년 6월 11일(수정됨)
66
arduino

本来用 Arduino Uno 就够了,偏偏想试试带内置 Wi‑Fi 的板子,结果用 WeMos D1 R2 折腾了好一阵子。

这篇文章是写给像 D1 R2 这样,引脚映射不同的 Arduino 板子用户看的。

1. IDE 设置

Arduino 的种类很多,所以需要为每块板子安装对应的板卡包。

在 Arduino IDE 中打开 文件(file) - 首选项(Preferences)。

Arduino D1 R2 使用心得-1

然后在“附加开发板管理器网址”中加入下面这个地址。

https://arduino.esp8266.com/stable/package_esp8266com_index.json
Arduino D1 R2 使用心得-2

接着在左侧的开发板包里搜索 d1 r2,并进行安装。

Arduino D1 R2 使用心得-3

最后把 USB 端口和板子型号正确对应上就完成了。

Arduino D1 R2 使用心得-4

2. D1、D2 这样的引脚是啥?

连接 WeMos D1 R2 之后,最让我困惑的就是引脚编号。

像 Arduino Uno 这样的板子结构比较简单,板子上的引脚编号和 Arduino IDE 里使用的引脚编号是一致的。

比如,如果想把 Arduino 的 4 号引脚设为输出、5 号引脚设为输入,可以像下面这样写:

int outputPin = 4;
int inputPin = 5;

void setup(){
    pinMode(outputPin, OUTPUT);
    pinMode(inputPin, INPUT);
}

但如果照这样在 Wemos D1 R2 上直接用,是不会工作的。

原因是引脚编号体系不同

在 Wemos 板子上,D1、D2 这样的名字,与 IDE 里的数字引脚是以不同的方式映射的。

#define outputPin D4
#define inputPin D5

void setup(){
    pinMode(outputPin, OUTPUT);
    pinMode(inputPin, INPUT);
}

那么,这块 Arduino 板为什么会采用这种结构呢?

3. GPIO 引脚与 Arduino 的引脚映射

看一下 Arduino Uno,可以看到上面焊着一颗比较大的芯片。

把它理解成类似电脑里的 CPU 那样的运算装置就行了。

Arduino 两侧排列的那些引脚,可以认为是分别连接到芯片各个“脚”上的。

Arduino D1 R2 使用心得-5

从下图可以看到,每个引脚具体对应到芯片的哪一只脚。

在这些连接中,能够进行数字信号输入输出的引脚被称为 GPIO 引脚。

GPIO 是 General Purpose Input/Output(通用输入/输出)的缩写。

Arduino D1 R2 使用心得-6

在 Arduino Uno 上,GPIO 引脚与板子上的引脚编号几乎是一一对应的。

所以在 IDE 中直接使用板子上写着的引脚号,一般就能顺利运行代码。

4. Wemos D1 R2 的引脚映射

D1 R2 板子在基本芯片之外,还集成了 Wi‑Fi 模块。

这时候,芯片的部分引脚要用于和 Wi‑Fi 模块通信,因此能拿来做普通输入输出的引脚数量就有限了。

在把剩余的引脚布到 Arduino 板子上的时候,就会出现 GPIO 号码分配不按顺序的问题。

Arduino D1 R2 使用心得-7

因此,板卡厂商为了避免用户混淆,又给每个引脚重新指定了 D0、D1、D2 这样的逻辑编号,并让这些编号可以在 Arduino IDE 中直接使用。

如上图引脚映射所示,D1、D2 等编号与内部真实的 GPIO 号是不同的,所以在使用引脚时一定要参考这张映射表。

5. 那应该怎么用?

在 Arduino IDE 中安装的板卡包里,已经包含了把 D5、D6 这样的逻辑引脚名映射到实际 GPIO 号的定义。

所以如果在代码开头写 #define myPin D5,在板卡包内部其实有一条 #define D5 14 的定义,最终 myPin 就会指向 GPIO14 号引脚。

Arduino D1 R2 使用心得-8
#define myPin D5

void setup(){
    pinMode(myPin, OUTPUT);
}

之后就可以像普通引脚一样使用它了。

不过,需要注意的是,有些引脚和启动(Boot)或 Flash 有关,使用时要小心。

板上引脚(Dn)

实际 GPIO 号

备注

D0

GPIO16

D1

GPIO5

I2C SCL

D2

GPIO4

I2C SDA

D3

GPIO0

与启动相关的引脚,注意

D4

GPIO2

板载 LED

D5

GPIO14

SPI SCK

D6

GPIO12

SPI MISO

D7

GPIO13

SPI MOSI

D8

GPIO15

与启动相关的引脚,注意

RX

GPIO3

串口接收

TX

GPIO1

串口发送

6. 写在最后

Arduino D1 R2 使用心得-9

上一次用 D1 R2 时只是简单接了个温湿度传感器,所以没遇到什么困难。

这次连接的引脚多了一些,也就多学到了一些新东西。

明年想试着办一个创客社团玩一玩。

댓글을 불러오는 중...