ESP系列入门教程<一>

  • 概要
  • <<本系列教程>> | 全部
  • 技术名词简介
  • ● ESP系列简介
  • 硬件连接实现
  • ●ESP8266 引脚图
  • ●ESP32 引脚图
  • 代码实现
  • ●Demo_1:控制LED闪烁
  • ●Demo_2:利用继电器驱动LED亮灭

概要

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

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

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

硬件元件:

  • 一颗LED灯
  • 一个5v驱动的继电器
  • 一个按键开关
  • 杜邦线若干

◆需求概述

【本篇章目标】: 使用代码,简单点亮一个LED,同时附上代码(ESP32和ESP8266通用)

ESP芯片官方技术文档链接:https://www.espressif.com.cn/zh-hans/support/documents/technical-documents

<<本系列教程>> | 全部

▌ESP系列入门教程(一) 中,我们已经完成了ESP系列驱动继电器,通过按键达到控制LED亮灭的效果。

▌ESP系列入门教程(二)中,我们完成了DHT11温湿度传感器驱动控制。

▌ESP系列入门教程(三)中,我们完成了MQTT通信的实现按键开关灯数据的上报。

▌ESP系列入门教程(四)中,我们完成了通过指令达到远程反控ESP板卡上的LED灯亮灭的效果。

技术名词简介

● 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/开关 连接引脚为 GPIO_2 继电器连接引脚为 GPIO_4

PS:请注意,ESP8266和ESP32连接引脚不太一样,详请根据引脚图调整连线

●ESP8266 引脚图

ESP8266的GPIO_2 和 GPIO_4分别对应的标识相反,即:

  • GPIO_2 对应 D4
  • GPIO_4 对应 D2

esp8266 01S 4路继电器 esp8266wifi继电器使用入门教程_引脚

●ESP32 引脚图

图来自大佬:莽小石

esp8266 01S 4路继电器 esp8266wifi继电器使用入门教程_esp8266 01S 4路继电器_02

esp8266 01S 4路继电器 esp8266wifi继电器使用入门教程_嵌入式硬件_03

代码实现

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