目录
一、认识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,灯亮。