如何做网站赚钱,wordpress手机登录设置,合肥政务服务网,seo服务商技术好的公司ESP8266一#xff1a;环境搭建使用Ardino框架#xff0c;在官网下载#xff0c;下载离线的支持包二#xff1a;实现简单的项目1. 点灯{pinMode(LED_PIN, OUTPUT); // 设置引脚为输出模式digitalWrite(LED_PIN, HIGH); // 点亮 LED}I/O引脚的三种模式分别为#xff1a;INPU…ESP8266一环境搭建使用Ardino框架在官网下载下载离线的支持包二实现简单的项目1. 点灯{pinMode(LED_PIN, OUTPUT); // 设置引脚为输出模式digitalWrite(LED_PIN, HIGH); // 点亮 LED}I/O引脚的三种模式分别为INPUT —— 输入模式 OUTPUT —— 输出模式INPUT _PULLUP —— 输入上拉模式2. 按键控制LED{
#define KEY_PIN D1 // 定义 KEY 引脚#define LED_PIN D2 // 定义 LED 引脚void setup() {Serial.begin(115200); //初始化波特率pinMode(LED_PIN, OUTPUT); // 设置引脚为输出模式pinMode(KEY_PIN, INPUT_PULLUP);// 输入上拉模式Serial.println(按键LED已启动);//串口打印}void loop() {int keystatedigitalRead(KEY_PIN);//读取key电平if(keystateLOW){digitalWrite(LED_PIN, LOW); // 点亮 LEDSerial.println(按键按下LED灯亮);}else {digitalWrite(LED_PIN, HIGH); //熄灭}delay(50);}}Serial.println();串口打印行3. 读取DHT11的数据{
#include DHT.h// 定义DHT11传感器连接的引脚#define DHTPIN D2 #define DHTTYPE DHT11 // 使用的是DHT11传感器// 初始化DHT传感器DHT dht(DHTPIN,DHTTYPE);void setup() {Serial.begin(115200); // 初始化串口通信波特率9600dht.begin(); // 初始化DHT传感器Serial.println(DHT11温湿度传感器测试);Serial.println(正在读取数据...);}void loop() {// 等待2秒再读取一次数据DHT传感器需要时间稳定delay(2000);// 读取湿度数据float humi dht.readHumidity();// 读取温度数据float temp dht.readTemperature();// 检查是否读取失败if (isnan(humi) || isnan(temp)) {Serial.println(读取传感器数据失败);return;}// 通过串口输出温湿度数据Serial.print(湿度: );Serial.print(humi);Serial.print(% );Serial.print(温度: );Serial.print(temp);Serial.println(°C);}}采用Arduino IDE自带的DHT11库DHT dht(DHTPIN,DHTTYPE);将传感器的引脚和型号信息传递给 DHT 类Isnan主要功能是检查一个浮点型float 或 double变量是否包含有效的数值。如果变量的值是 NaN表示无效或未定义的数值isnan() 会返回 true如果是有效的数字则返回 false。三网络连接与通信1. 连接wifi{
#include ESP8266WiFi.hconst char* ssidESP8266; //WIFI账号const char* password123456789;//密码void setup() {// put your setup code here, to run once:Serial.begin(115200); //初始化串口delay(10);Serial.println();Serial.print(正在连接到);Serial.println(ssid);WiFi.begin(ssid,password); //启动wifi连接int timeout60; //判断超时while(WiFi.status()!WL_CONNECTED timeout0){delay(500);timeout--;Serial.print(.);}if(timeout!0) //不为0就是成功{Serial.println();Serial.println(WiFi连接成功);Serial.print(IP地址);Serial.print(WiFi.localIP());}else{ //为0就是失败Serial.println();Serial.println(WiFi连接超时);}}void loop() {// put your main code here, to run repeatedly:if(WiFi.status()!WL_CONNECTED)//不是成功就是断开{Serial.println(WiFi断开尝试重新连接);WiFi.reconnect(); //重连delay(5000);}delay(10000);}}2. 创建TCP客户端和服务端TCP客户端{这段代码实现了一个基于ESP8266的TCP客户端它能够连接到指定的WiFi网络连接到指定的TCP服务器IP和端口向服务器发送消息等待并接收服务器的响应处理超时情况定期重复上述过程
/*TCP客户端*/#include ESP8266WiFi.hconst char* ssidESP8266;const char* password123456789;//服务器配置const char* host192.168.60.14;const int port8000;void setup() {// put your setup code here, to run once:Serial.begin(115200);delay(10);Serial.println();Serial.print(正在连接到);Serial.println(ssid);WiFi.begin(ssid,password);int timeout60;while(WiFi.status()!WL_CONNECTED timeout0){delay(500);timeout--;Serial.print(.);}if(timeout!0){Serial.println();Serial.println(WiFi连接成功);Serial.print(IP地址);Serial.print(WiFi.localIP());}else{Serial.println();Serial.println(WiFi连接超时);}}void loop() {// put your main code here, to run repeatedly:if(WiFi.status()!WL_CONNECTED){Serial.println(WiFi断开尝试重新连接);WiFi.reconnect();delay(5000);}Serial.print(连接到服务器);Serial.print(host);Serial.print(:);Serial.println(port);//使用WiFiClient创建TCP连接WiFiClient client;if(!client.connect(host,port)){Serial.println(连接失败);delay(500);return;}Serial.println(连接成功);//发送一条消息String messageHello from ESP8266 - String(millis());client.println(message);Serial.println(发送message);//等待服务器的恢复unsigned long timeoutmillis();while(client.available()0){if(millis()-timeout5000){Serial.println(超时服务器无响应);client.stop();delay(5000);return;}}//读取所有来自服务器的回复Serial.println(收到回复);while(client.available()){String lineclient.readStringUntil(\r);Serial.print(line);}//关闭连接client.stop();Serial.println();Serial.println(连接关闭);delay(10000); // 短暂延迟}print()仅打印内容不自动换行。println()打印内容 自动换行添加 \nmillis()获得启动时间millis() 是获取设备启动时间的 “标准工具”WiFiClient client - 创建TCP客户端对象client.connect(host, port) - 连接到服务器client.println(message) - 向服务器发送数据client.available() - 检查是否有数据可读client.readStringUntil(\r) - 读取数据直到回车符客户端启动后会每10秒执行一次以下操作尝试连接到服务器发送一条包含时间戳的消息等待服务器响应最多5秒读取并打印服务器响应关闭连接流程图}TCP服务器{这段代码实现了一个基于ESP8266的TCP服务器它能够连接到指定的WiFi网络在端口8000上启动TCP服务器监听并接受客户端的连接与客户端进行双向通信处理客户端发送的命令
#include ESP8266WiFi.hconst char* ssidESP8266;const char* password123456789;//在端口8000上创建TCP服务器WiFiServer server(8000);void setup() {// put your setup code here, to run once:Serial.begin(115200);delay(10);Serial.println();Serial.print(正在连接到);Serial.println(ssid);WiFi.begin(ssid,password);int timeout60;while(WiFi.status()!WL_CONNECTED timeout0){delay(500);timeout--;Serial.print(.);}if(timeout!0){Serial.println();Serial.println(WiFi连接成功);Serial.print(IP地址);Serial.print(WiFi.localIP());//启动TCP服务器server.begin();Serial.println(TCP服务器已启动);Serial.print(监听端口);Serial.println(8000);}else{Serial.println();Serial.println(WiFi连接超时);}}void loop() {// put your main code here, to run repeatedly:if(WiFi.status()!WL_CONNECTED){Serial.println(WiFi断开尝试重新连接);WiFi.reconnect();delay(5000);}//检查是否有客户端连接WiFiClient clientserver.available();if (client) {Serial.println(新的客户端连接);// 客户端连接时的时间String currentTime String(millis());// 向客户端发送欢迎消息client.println(欢迎连接到ESP8266 TCP服务器!);client.println(当前时间(毫秒): currentTime); // 发送连接时间client.println(输入bye断开连接);// 处理客户端数据while (client.connected()) {if (client.available()) {// 读取客户端发送的数据直到遇到回车符\rString line client.readStringUntil(\r);line.trim(); // 去除字符串前后的空格和换行符Serial.print(收到数据: );Serial.println(line);if (line bye) {client.println(再见!);break;} else if (line.length() 0) {// 回显接收到的数据client.println(回声: line);}}}// 关闭连接client.stop();Serial.println(客户端断开连接);}delay(100); // 短暂延迟}WiFiServer server(8000) - 创建在端口8000上监听的TCP服务器server.begin() - 启动TCP服务器server.available() - 检查是否有客户端连接WiFiClient client - 表示连接到服务器的客户端服务器启动后会持续监听客户端连接。当客户端连接时服务器会发送欢迎消息进入循环等待客户端输入读取并回显客户端发送的数据如果客户端发送bye则关闭连接流程图}3. 创建UDP客户端和服务端UDP客户端{
/*UDP客户端*/#include ESP8266WiFi.h#include WiFiUdp.hconst char* ssidESP8266;const char* password123456789;//upd配置WiFiUDP udp;unsigned int localPort8000;//本地监听端口unsigned int remotePort9999;//远程端口const char* remoteHost192.168.60.14;//本地主机地址void setup() {// put your setup code here, to run once:Serial.begin(115200);delay(10);Serial.println();Serial.print(正在连接到);Serial.println(ssid);WiFi.begin(ssid,password);int timeout60;while(WiFi.status()!WL_CONNECTED timeout0){delay(500);timeout--;Serial.print(.);}if(timeout!0){Serial.println();Serial.println(WiFi连接成功);Serial.print(IP地址);Serial.print(WiFi.localIP());// 启动UDPudp.begin(localPort);Serial.print(UDP客户端已启动监听端口: );Serial.println(localPort);}else{Serial.println();Serial.println(WiFi连接超时);}}void loop() {// put your main code here, to run repeatedly:if(WiFi.status()!WL_CONNECTED){Serial.println(WiFi断开尝试重新连接);WiFi.reconnect();delay(5000);}//发送UPD数据包Serial.println(发送UDP数据包...);udp.beginPacket(remoteHost,remotePort);udp.println(Hello from ESP8266 UDP Client - String(millis()));udp.endPacket();Serial.println(数据包已发送);//检查是否有收到数据包int packetSizeudp.parsePacket();//获取包的大小if(packetSize){Serial.print(接收来自);Serial.print(udp.remoteIP());Serial.print(:);Serial.print(udp.remotePort()); // 打印发送方端口Serial.print( 的数据大小);Serial.println(packetSize);//读取数据包的内容// char packetBuffer[255];// int lenupd.read(packetBuffer,255);//从 UDP 连接中读取数据并存储到缓冲区// if(len0)// {// packetBuffer[len]0;//在接收到的数据末尾添加空字符 \0// }// Serial.print(内容: );// Serial.println(packetBuffer);String reply udp.readStringUntil(\n); // 读取到换行符为止Serial.print(收到回复);Serial.println(reply);}delay(5000); // 短暂延迟}}UDP服务器{
/*ESP8266 UDP服务器功能监听8000端口接收客户端数据并回复支持WiFi重连*/#include ESP8266WiFi.h#include WiFiUdp.hconst char* ssidESP8266;const char* password123456789;//UDP配置WiFiUDP udpServer;unsigned int udpPort8000; //UDP服务器监听端口IPAddress serverIP; // 存储服务器IPvoid setup() {// put your setup code here, to run once:Serial.begin(115200);delay(10);Serial.println();Serial.print(正在连接到);Serial.println(ssid);WiFi.begin(ssid,password);int timeout60;while(WiFi.status()!WL_CONNECTED timeout0){delay(500);timeout--;Serial.print(.);}if(timeout!0){Serial.println();Serial.println(WiFi连接成功);Serial.print(IP地址);Serial.print(WiFi.localIP());serverIP WiFi.localIP();//启动UDP服务器if (udpServer.begin(udpPort)) { // 绑定端口并启动Serial.println(UDP服务器已启动);Serial.print(监听端口);Serial.println(udpPort);} else {Serial.println(UDP服务器启动失败);}}else{Serial.println();Serial.println(WiFi连接超时);}}void loop() {// put your main code here, to run repeatedly://检查是否有客户端发送UDP数据包int packetSizeudpServer.parsePacket();//获取数据包的大小if(packetSize0)//有数据{//读取客户端数据IPAddress clientIPudpServer.remoteIP();//客户端IPunsigned int clientPortudpServer.remotePort();//客户端的端口号Serial.println(\n【收到新数据】);Serial.print(客户端IP);Serial.println(clientIP);Serial.print(客户端端口);Serial.println(clientPort);Serial.print(数据大小);Serial.print(packetSize);Serial.println( 字节);char dataBuffer[255];//缓冲区int dataLenudpServer.read(dataBuffer,sizeof(dataBuffer)-1);if(dataLen0){dataBuffer[dataLen]\0;//添加结束字符Serial.print(数据内容);Serial.println(dataBuffer);}// 回复内容包含服务器信息和客户端发送的内容String replyMsg ESP8266服务器已收到 String(dataBuffer) 服务器IP serverIP.toString();// 向客户端发送回复需指定客户端的IP和端口udpServer.beginPacket(clientIP, clientPort); // 开始构建回复数据包udpServer.print(replyMsg); // 写入回复内容udpServer.endPacket(); // 发送回复UDP无连接无需建立连接Serial.print(已回复客户端);Serial.println(replyMsg);}delay(100); // 短暂延迟}}4. 创建Web服务器5. 网络客户端四物联网协议与云平台1. 使用手机APPMQTT调试APP控制ESP82662. 对接点灯科技