问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

基于ESP8266的WiFi灯控系统制作教程

创作时间:
作者:
@小白创作中心

基于ESP8266的WiFi灯控系统制作教程

引用
CSDN
1.
https://blog.csdn.net/jmqsPH/article/details/139890921

一、认识Arduino和ESP8266

Arduino

Arduino是一种开源电子原型平台,包括硬件和软件,可用于创建交互式电子项目。它的设计简单,易于使用,适合初学者和专业人士。

Arduino软件是用于编写和上传代码到Arduino板的集成开发环境(IDE)。该软件支持基于C++的编程语言,并包含许多库和示例代码,使用户能够轻松地开始编程和开发Arduino项目。用户可以在Arduino软件中编写代码、调试和上传到Arduino板上运行。该软件跨平台支持,可在Windows、Mac和Linux操作系统上运行。Arduino IDE也提供了丰富的文档和教程,帮助用户学习和掌握Arduino编程技能。

ESP8266

ESP8266是一款低成本、高性能的WiFi模块,由乐鑫技术公司设计。它集成了WiFi芯片和处理器,可实现在Arduino等开发板上轻松添加无线网络连接功能。ESP8266模块支持标准IEEE 802.11 b/g/n协议,能够通过串口或SPI通信与Arduino等主控板连接。由于其小巧、灵活和强大的特性,ESP8266模块在物联网、智能家居、传感器网络等领域得到广泛应用。用户可以通过Arduino IDE或ESP8266的专用开发环境进行编程和控制,从而实现各种基于WiFi的应用和项目。

ESP8266和Arduino的搭配优势

ESP8266和Arduino的搭配优势在于,ESP8266拥有Wi-Fi连接功能,而Arduino则具有丰富的外围设备和传感器支持,两者搭配可以实现更为复杂的物联网应用,如远程控制、数据传输和监控等。此外,Arduino的编程环境也可以很方便地支持ESP8266,使得开发人员可以更容易地进行Wi-Fi通信项目的开发。因此,ESP8266和Arduino的结合可以提供强大的功能和更丰富的应用场景。

二、材料和工具

编程软件:

Arduino IDE

开发模块:

ESP8266模块

材料:

USB数据线

三、硬件连接及原理

把准备好的ESP8266用USB数据线连接电脑。

ESP8266模块引脚图

控制ESP8266连接WiFi网络和控制灯的亮灭的原理

控制ESP8266连接WiFi网络和控制灯的亮灭的原理是通过编写代码,利用ESP8266的WiFi模块来连接指定的WiFi网络,然后通过发送指令来控制连接在ESP8266上的灯开关。

具体步骤如下:

  1. 配置ESP8266连接到WiFi网络:通过编写代码,设置ESP8266连接的WiFi网络名称和密码,并连接到WiFi网络,获取IP地址。
  2. 控制灯的亮灭:通过编写代码,在连接的WiFi网络中设定一个IP地址和端口号,用于接收控制指令。当接收到控制指令时,根据指令的内容控制连接在ESP8266上的灯的亮灭。

原理是通过WiFi模块连接网络进行通信,发送控制指令来控制设备的状态。通过这种方式,可以实现远程控制ESP8266连接的灯的亮灭,实现智能家居等应用。

四、代码

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>

#ifndef STASSID
#define STASSID "your-ssid"
#define STAPSK "your-password"
#endif

const char* ssid = STASSID;
const char* password = STAPSK;

ESP8266WebServer server(80);
const int led = 2; // led管脚

void setup() {
  pinMode(led, OUTPUT);
  digitalWrite(led, 0);
  Serial.begin(115200);
  WiFi.mode(WIFI_STA);
  WiFi.begin("灭亡迅雷站", "666666"); // 打开手机的共享热点,在第一个引号中输入热点名称,第二个引号输入热点密码
  Serial.println("");
  // Wait for connection
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
  server.on("/", HTTP_GET, handleRoot); // 主页
  server.on("/LED1", HTTP_POST, Led_ON); // led开
  server.on("/LED2", HTTP_POST, Led_OFF); // 关
  server.onNotFound(handleNotFound);
  server.begin();
  Serial.println("HTTP server started");
}

void handleRoot() {
  server.send(200, "text/html", "<form action=\"/LED1\" method=\"POST\">" // 按钮1
              "<input type=\"submit\" value=\"LED_ON\" style=\"font-size:30px; width:200px; height:100px; background-color:red\"></form>"
                                "<form action=\"/LED2\" method=\"POST\">" // 按钮2
              "<input type=\"submit\" value=\"LED_OFF\" style=\"font-size:30px; width:200px; height:100px; background-color:blue\"></form>");
}

void Led_ON() {
  digitalWrite(2, 0);
  server.sendHeader("Location", "/");
  server.send(303);
  delay(500);
}

void Led_OFF() {
  digitalWrite(2, 1);
  server.sendHeader("Location", "/");
  server.send(303);
  delay(500);
}

void handleNotFound() {
  server.send(404, "text/plain", "404:Not found");
}

void loop() {
  server.handleClient();
  MDNS.update();
}

五、效果展示

在手机上输入已经连接了ESP8266的IP地址,复制到浏览器,进入页面就可以控制灯的亮灭。

按下LED_OFF,灯灭。
按下LED_ON,灯亮。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号