ESP32教程18/55 - 使用ESP32检测倾斜 | SunFounder的ESP32物联网学习套件
在本教程中,我们将使用SunFounder ESP32微控制器创建一个简单的项目,通过倾斜开关检测倾斜。当倾斜开关被触发时,LED将熄灭,而当其处于直立位置时,LED将亮起。这个项目不仅是使用倾斜传感器的一个很好的入门,也为各种机器人应用奠定了基础。如需详细的视觉指南,请务必观看上方链接的视频(视频中00:00处)。
倾斜开关
硬件说明
本项目使用的主要组件包括ESP32微控制器、倾斜开关和LED。ESP32是一款功能强大的微控制器,内置Wi-Fi和蓝牙,非常适合物联网应用。倾斜开关是一种简单设备,内部包含一个金属球。当倾斜时,球会移动并断开电路,从而让我们检测到倾斜状态。LED将根据开关状态直观地显示倾斜状态。除了这些组件外,我们还将使用电阻进行限流和下拉。连接到LED的220欧姆电阻确保LED安全运行,不会消耗过多电流。10k欧姆电阻作为倾斜开关的下拉电阻,确保在开关未激活时输入引脚读取到已知状态。
数据手册详情
| 制造商 |
SunFounder |
| 零件编号 |
ESP32 |
| 逻辑/IO电压 |
3.3 V |
| 电源电压 |
5 V |
| 输出电流(每通道) |
12 mA |
| 峰值电流(每通道) |
40 mA |
| PWM频率指南 |
1 kHz |
| 输入逻辑阈值 |
0.8 V(低),2.0 V(高) |
| 压降 / RDS(on) / 饱和 |
0.2 V |
| 热限制 |
85 °C |
| 封装 |
ESP32模块 |
| 备注 / 变体 |
包含Wi-Fi和蓝牙功能 |
- 确保使用正确的电阻值以防止损坏LED。
- 保持布线整洁以避免短路。
- 使用下拉电阻以确保倾斜开关的稳定读数。
- 在给电路供电前测试连接,以避免组件故障。
- 验证倾斜开关的方向以确保功能准确。
接线说明
ESP32-18_tile_wiring
要连接组件,首先从倾斜开关开始,它没有极性,因此可以任意方向连接。将倾斜开关的一个引脚连接到3.3V电源,另一个引脚连接到ESP32上的引脚14。为确保开关未激活时引脚14读取到已知状态,请从同一引脚连接一个10k欧姆电阻到地。接下来,将LED插入面包板,长腿(阳极)连接到220欧姆电阻。将电阻的另一端连接到ESP32上的引脚26。LED的短腿(阴极)应连接到地。最后,将ESP32的地引脚连接到面包板的地轨,3.3V引脚连接到电源轨。务必仔细检查所有连接,以防止短路或错误读数。如果按照这些步骤操作,您应该拥有一个功能正常的倾斜传感器设置,可以开始编程。
代码示例与讲解
代码首先定义倾斜开关和LED的引脚编号。倾斜开关连接到引脚14,LED连接到引脚26。倾斜开关的状态存储在变量tiltState中。
// 设置引脚编号
const int tiltPin = 14; // 倾斜开关
const int ledPin = 26; // LED
// 用于存储倾斜状态的变量
int tiltState = 0;
此摘录显示了引脚分配以及将跟踪倾斜状态的变量的声明。tiltPin被设置为输入以读取开关状态。在setup()函数中,初始化串行通信,并为倾斜开关和LED设置引脚模式。这确保ESP32能够读取倾斜开关的输入并相应地控制LED。
void setup() {
Serial.begin(115200);
// 将倾斜引脚初始化为输入
pinMode(tiltPin, INPUT);
// 将LED引脚初始化为输出
pinMode(ledPin, OUTPUT);
}
此部分至关重要,因为它设置了环境,使ESP32能够有效通信并根据倾斜开关状态控制输出。loop()函数持续检查倾斜开关的状态。如果开关处于直立位置,LED将亮起;如果倾斜,LED将熄灭。当前状态将打印到串行监视器以进行调试。
void loop() {
// 读取倾斜开关的状态
tiltState = digitalRead(tiltPin);
Serial.println(tiltState);
// 如果开关处于直立位置
if (tiltState == HIGH) {
// 打开LED
digitalWrite(ledPin, HIGH);
} else {
// 关闭LED
digitalWrite(ledPin, LOW);
}
}
此循环持续运行,允许实时监控倾斜开关状态并相应控制LED。输出可以在串行监视器中观察到,便于验证功能。
演示 / 预期效果
一旦所有接线正确且代码上传完成,你应该会看到当倾斜开关直立时LED亮起,倾斜时LED熄灭。倾斜状态与LED响应之间的这种直接关联有效展示了倾斜开关的功能。常见的陷阱包括确保接线正确,以及验证电阻是否适当放置以避免短路(视频中12:00处)。
视频时间戳
- 00:00 开始
- 1:44 项目介绍
- 2:49 文档说明
- 6:43 Arduino接线讲解
- 10:39 Arduino代码讲解
- 13:40 在Arduino IDE中选择ESP32开发板和COM端口
- 15:22 项目倾斜演示
图像
ESP32-18_tile_wiring
tilt_switch
ESP32-18_tile_schematic
817-ESP32 Tutorial 18/55- Arduino code for tilt sensor
语言: C++
/*
* // 设置引脚编号
*/
const int tiltPin = 14; // 倾斜开关
const int ledPin = 26; // LED
// 用于存储倾斜状态的变量
int tiltState = 0;
void setup() {
Serial.begin(115200);
// 将倾斜销初始化为输入
pinMode(tiltPin, INPUT);
// 将LED引脚初始化为输出。
pinMode(ledPin, OUTPUT);
}
void loop() {
// 读取倾斜开关的状态
tiltState = digitalRead(tiltPin);
Serial.println(tiltState);
// 如果开关是竖着的
if (tiltState == HIGH) {
// 打开LED
digitalWrite(ledPin, HIGH);
} else {
// 关闭LED
digitalWrite(ledPin, LOW);
}
}