概要

最近在跟着几个大佬的教学视频做项目。陆续会更新记录一些要点,便于后期总结笔记的时候进行引用。
也可以帮助有心跟着一起复刻的宝子们,更好地捋清思路。

【本系列教程 - 总目标】:
使用ESP系列板卡,通过MQTT进行数据通信,达到远程控制多个传感器的效果。

◆配置说明
硬件板卡:ESP系列板卡 <本系列教程以ESP32ESP8266为例>

硬件元件:

  • 一颗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:请注意,ESP8266ESP32连接引脚不太一样,详请根据引脚图调整连线

●ESP8266 引脚图

ESP8266的GPIO_2GPIO_4分别对应的标识相反,即:

  • GPIO_2 对应 D4
  • GPIO_4 对应 D2

ESP系列入门教程(一)——之用继电器简单驱动一个LED【附 ESP32 / ESP8266 通用代码】-LMLPHP

●ESP32 引脚图

图来自大佬:莽小石
ESP系列入门教程(一)——之用继电器简单驱动一个LED【附 ESP32 / ESP8266 通用代码】-LMLPHP

ESP系列入门教程(一)——之用继电器简单驱动一个LED【附 ESP32 / ESP8266 通用代码】-LMLPHP

代码实现

●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;
}

01-15 15:22