概要
最近在跟着几个大佬的教学视频做项目。陆续会更新记录一些要点,便于后期总结笔记的时候进行引用。
也可以帮助有心跟着一起复刻的宝子们,更好地捋清思路。
【本系列教程 - 总目标】:
使用ESP系列板卡,通过MQTT进行数据通信,达到远程控制多个传感器的效果。
◆配置说明
硬件板卡:ESP系列板卡 <本系列教程以ESP32
和 ESP8266
为例>
硬件元件:
- 一颗LED灯
- 一个5v驱动的继电器
- 一个按键开关
- 杜邦线若干
◆需求概述
:
使用代码,简单点亮一个LED,同时附上代码(ESP32和ESP8266通用)
ESP芯片官方技术文档链接:
https://www.espressif.com.cn/zh-hans/support/documents/technical-documents
技术名词简介
● ESP系列简介
ESP芯片是一种由乐鑫科技(Espressif Systems)开发的低功耗无线通信芯片。【PS】
ESP芯片官方技术文档
ESP芯片系列包括ESP8266和ESP32两个主要型号。这些芯片具有强大的处理能力和丰富的外设接口,适用于物联网(IoT)应用和嵌入式系统开发。
◆ESP8266
是一款高度集成的Wi-Fi芯片,具有低功耗和低成本的特点。它支持TCP/IP协议栈,可以通过Wi-Fi连接到互联网,并与其他设备进行通信。ESP8266可以作为主控芯片,与传感器、执行器等设备进行通信,实现智能家居、智能农业、智能工业等应用。
◆ESP32
是ESP8266的升级版本,除了具备Wi-Fi功能外,还增加了蓝牙(Bluetooth)功能。ESP32具有更高的处理能力和更多的外设接口,支持更复杂的应用场景。它可以作为Wi-Fi和蓝牙网关,连接多个设备并实现数据传输和控制。
ESP芯片具有开放的开发环境和丰富的开发资源,开发者可以使用Arduino IDE、MicroPython等开发工具进行编程。此外,乐鑫科技还提供了丰富的文档和示例代码,方便开发者快速上手和开发应用。
硬件连接实现
LED/开关 连接引脚为
继电器连接引脚为
PS:请注意,ESP8266
和ESP32
连接引脚不太一样,详请根据引脚图调整连线
●ESP8266 引脚图
ESP8266的GPIO_2
和 GPIO_4
分别对应的标识相反,即:
- GPIO_2 对应 D4
- GPIO_4 对应 D2
●ESP32 引脚图
图来自大佬:莽小石
代码实现
●Demo_1:控制LED闪烁
// 引入开发库
#include <Arduino.h>
// 定义LED引脚
const int ledPin = 2; // 根据实际连接的引脚进行修改
void setup() {
// 初始化串口通信
Serial.begin(115200);
// 初始化LED引脚为输出
pinMode(ledPin, OUTPUT);
}
void loop() {
// 点亮LED
digitalWrite(ledPin, HIGH);
// 打印信息到串口监视器
Serial.println("LED is ON");
// 等待一秒钟
delay(1000);
// 关闭LED
digitalWrite(ledPin, LOW);
// 打印信息到串口监视器
Serial.println("LED is OFF");
// 等待一秒钟
delay(1000);
}
●Demo_2:利用继电器驱动LED亮灭
// 引入开发库
#include <Arduino.h>
// 定义按键和继电器的引脚
const int buttonPin = 2; // 按键连接到引脚2
const int relayPin = 4; // 继电器连接到引脚4
int buttonState = 0; // 保存当前按键状态(低电平或高电平)
int lastButtonState = 0; // 保存上一次的按键状态
void setup() {
// 初始化串口通信,用于在串口监视器中打印信息
Serial.begin(115200);
// 初始化按键和继电器引脚
pinMode(buttonPin, INPUT); // 将按键引脚设置为输入模式
pinMode(relayPin, OUTPUT); // 将继电器引脚设置为输出模式
}
void loop() {
// 读取按键状态
buttonState = digitalRead(buttonPin);
// 如果按键状态发生变化(从低电平变为高电平),则切换继电器状态
if (buttonState == HIGH && lastButtonState == LOW) {
//buttonState == HIGH && lastButtonState == LOW这个条件用于检测按键是否被按下,以执行继电器状态的切换
// 切换继电器状态
if (digitalRead(relayPin) == HIGH) {
digitalWrite(relayPin, LOW); // 将继电器引脚设置为低电平
Serial.println("Relay OFF"); // 在串口监视器中打印继电器关闭的信息
} else {
digitalWrite(relayPin, HIGH); // 将继电器引脚设置为高电平
Serial.println("Relay ON"); // 在串口监视器中打印继电器打开的信息
}
}
// 保存当前按键状态,以便下一次比较
lastButtonState = buttonState;
}