Arduino D1 R2 使用心得

힘센캥거루
2025년 10월 7일(수정됨)
3
88

本来用 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 时只是简单接了个温湿度传感器,所以没遇到什么困难。

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

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

관련 글

用 micro:bit 编程控制蜘蛛机器人
用 micro:bit 编程控制蜘蛛机器人
这次在一个与机器人技术相关的聚会中,开设了一门免费的讲座课程。是在再玄高等学校举行的,利用 micro:bit 来控制蜘蛛机器人的培训。一位认识的老师原本报了名,但当天和工作时间冲突,把名额让给了我,所以我就去参加了。从上溪站步行大约 10 分钟就到。校内停车场很大,开车来也不错。培训是在学校后方别...
用 Arduino 复制 RFID 卡
用 Arduino 复制 RFID 卡
今天打算写一写,如何用 Arduino 复制 RFID 卡。写下来就不容易忘,也算是复盘记录。1.RFID 卡的内部数据结构一般的 RFID 卡是 MIFARE Classic 1K 卡。这张卡的存储结构如下:- 总 1024 bytes (1KB) - 16 个 Sector (0~15...
使用 Arduino ESP32 收集温湿度数据
使用 Arduino ESP32 收集温湿度数据
今天,我们将使用 Arduino ESP32 制作一个用于测量并传输温湿度数据的 Wi-Fi 百叶箱。这篇文章是基于在学校进行的 16+1 课程的稿件编写的。1. 准备材料准备工作很简单。ESP32, DHT-22, 三根电线首先简单介绍一下 ESP32...
在 MacBook 上解决 Arduino Timed out waiting for packet header 的方法
在 MacBook 上解决 Arduino Timed out waiting for packet header 的方法
在 MacBook 上连接 Arduino Wemos D1 R2 时解决 Timed out 问题的方法
与Arduino和电子表格集成 - 构建代码
与Arduino和电子表格集成 - 构建代码
在上一篇文章中,我们了解了与Arduino和电子表格集成的表格设置。在这篇文章中,我们将了解如何通过Arduino D1板上的https通信传输数据。1. 安装Arduino D1板的库要使用Arduino D1板,首先需要安装...
Arduino与电子表格集成 - 设置Google表格
Arduino与电子表格集成 - 设置Google表格
最近,我和学生们决定使用Arduino观测学校周围的温度和湿度,进行数据分析。需要一张SD卡来存储Arduino测量的数据,而为检查数据,需要将SD卡插入和拔出。突然想到,如果将数据存储在网上会怎么样呢...

댓글을 불러오는 중...