ESP8266模块示例

Electron3304个月前 (08-04)246

    乐鑫科技的ESP8266是一款非常流行的低成本Wi-Fi芯片,它可以轻松地添加到微控制器项目中以实现

互联网连接。ESP8266内部集成了Tensilica L106超低功耗32位微处理器,支持IEEE 802.11 b/g/n协议,

适合应用于物联网(IoT)项目。


### 主要特性

   - 工作电压:3.3V

   - Wi-Fi标准:IEEE 802.11 b/g/n

   - 频率:2.4 GHz

   - 最大发射功率:+4dBm

   - 接收灵敏度:-93dBm

   - 最大数据传输速率:150Mbps

   - 工作温度:-40°C 至 85°C

   - 内存:内置80kB SRAM

   - 外设:包括ADC、DAC、PWM、UART、I2C、SPI等


### 模式

   - Station模式:连接到现有的Wi-Fi网络。

   - Access Point (AP) 模式:创建自己的Wi-Fi热点。

   - Station+AP模式:同时作为客户端和热点。


### 初级示例程序


 #### 1. 闪烁LED灯

这个简单的示例程序将控制ESP8266上的一个LED灯闪烁。


void setup() {
  // 初始化串口通信
  Serial.begin(115200);
  pinMode(2, OUTPUT);  // 设置GPIO 2为输出
}
void loop() {
  digitalWrite(2, HIGH);   // 打开LED灯
  delay(1000);             // 延时1秒
  digitalWrite(2, LOW);    // 关闭LED灯
  delay(1000);             // 延时1秒
}



  #### 2. 连接到Wi-Fi网络

接下来的示例程序将连接到指定的Wi-Fi网络。


const char* ssid = "yourSSID";
const char* password = "yourPassword";
void setup() {
  Serial.begin(115200);
  // 尝试连接到Wi-Fi网络
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
}
void loop() {
  // 循环体为空,因为我们只需要在setup中完成连接
}



  #### 3. 创建Wi-Fi热点

这个示例程序将创建一个Wi-Fi热点。


void setup() {
  Serial.begin(115200);
  // 创建一个名为myAP的接入点
  WiFi.mode(WIFI_AP);
  WiFi.softAP("myAP");
  // 打印出接入点的IP地址
  Serial.print("AP IP address: ");
  Serial.println(WiFi.softAPIP());
}
void loop() {
  // 循环体为空
}


### 高级示例程序

   ### 示例 1: 发送HTTP请求

###代码

#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>

const char* ssid     = "yourSSID";
const char* password = "yourPassword";
const char* server   = "httpbin.org";

void setup() {
  Serial.begin(115200);

  // 连接Wi-Fi
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");

  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());

  // 发送HTTP GET请求
  HTTPClient http;
  http.begin("http://" + String(server) + "/get");
  int httpCode = http.GET();

  if (httpCode > 0) { // 检查HTTP响应码
    String payload = http.getString();
    Serial.println(payload);
  } else {
    Serial.printf("Error on HTTP request: %d\n", httpCode);
  }

  http.end(); // 断开HTTP连接
}

void loop() {
  // 循环体为空
}



1.导入必要的库

#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>


   - `ESP8266WiFi.h`: 提供了Wi-Fi连接的功能。

   - `ESP8266HTTPClient.h`: 用来发送HTTP请求。


2.定义变量

   const char* ssid     = "yourSSID";
   const char* password = "yourPassword";
   const char* server   = "httpbin.org";


   - `ssid`: Wi-Fi热点的名称。

   - `password`: 对应Wi-Fi热点的密码。

   - `server`: 目标服务器地址,在本例中使用了`httpbin.org`,它是一个测试HTTP请求的网站。


3.`setup()` 函数

   - 初始化串行端口(用于输出调试信息)。

   - 连接到Wi-Fi。

   - 使用`HTTPClient`类发起HTTP GET请求。


4.发送HTTP GET请求

   HTTPClient http;
   http.begin("http://" + String(server) + "/get");
   int httpCode = http.GET();


   - `http.begin()`: 设置HTTP请求的目标URL。

   - `http.GET()`: 发送GET请求并返回HTTP状态码。


5.处理HTTP响应

   if (httpCode > 0) {
     String payload = http.getString();
     Serial.println(payload);
   } else {
     Serial.printf("Error on HTTP request: %d\n", httpCode);
   }


   - 如果HTTP请求成功,读取并打印响应体。

   - 如果失败,则打印错误信息。


6.结束HTTP连接

http.end();


   - 结束HTTP客户端的连接。


   ### 示例 2: 作为Web服务器

###代码

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

const char* ssid     = "yourSSID";
const char* password = "yourPassword";
ESP8266WebServer server(80); // 创建Web服务器实例

void handleRoot() {
  server.send(200, "text/html", "<h1>Hello, World!</h1>");
}

void setup() {
  Serial.begin(115200);

  // 连接Wi-Fi
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");

  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());

  // 设置Web服务器的处理函数
  server.on("/", handleRoot);
  server.begin(); // 启动Web服务器
}

void loop() {
  server.handleClient(); // 处理客户端请求
}



1.导入必要的库

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


   - `ESP8266WiFi.h`: 提供Wi-Fi功能。

   - `ESP8266WebServer.h`: 提供Web服务器功能。


2.定义变量

   const char* ssid     = "yourSSID";
   const char* password = "yourPassword";
   ESP8266WebServer server(80);


   - `ssid`, `password`: Wi-Fi连接信息。

   - `server`: Web服务器实例,监听80端口。


3.`setup()` 函数

   - 初始化串行端口。

   - 连接到Wi-Fi。

   - 配置Web服务器路由。


4.Web服务器路由配置

   server.on("/", handleRoot);
   server.begin();


   - `server.on("/", handleRoot)`: 设置根路径的路由处理器。

   - `server.begin()`: 开始Web服务器。


5.路由处理器函数

   void handleRoot() {
     server.send(200, "text/html", "<h1>Hello, World!</h1>");
   }


   - 当客户端访问根路径时,发送包含HTML内容的HTTP响应。


6.`loop()` 函数

   - 处理客户端请求。



   ### 示例 3: MQTT通信

###代码

#include <ESP8266WiFi.h>
#include <PubSubClient.h>

const char* ssid     = "yourSSID";
const char* password = "yourPassword";
const char* mqtt_server = "mqtt.yourbroker.com";

WiFiClient espClient;
PubSubClient client(espClient);

void callback(char* topic, byte* payload, unsigned int length) {
  Serial.print("Message arrived [");
  Serial.print(topic);
  Serial.print("] ");
  for (int i = 0; i < length; i++) {
    Serial.print((char)payload[i]);
  }
  Serial.println();
}

void reconnect() {
  while (!client.connected()) {
    if (client.connect("ESP8266Client")) {
      client.subscribe("esp8266/test");
    } else {
      Serial.println("Connection failed. Retrying in 5 seconds...");
      delay(5000);
    }
  }
}

void setup() {
  Serial.begin(115200);

  // 连接Wi-Fi
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");

  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());

  // 设置MQTT服务器和回调函数
  client.setServer(mqtt_server, 1883);
  client.setCallback(callback);
}

void loop() {
  if (!client.connected()) {
    reconnect();
  }
  client.loop();

  // 每隔一段时间发布一条消息
  static unsigned long lastMessage = 0;
  if (millis() - lastMessage > 5000) {
    lastMessage = millis();
    client.publish("esp8266/output", "Hello MQTT!");
  }
}


1.导入必要的库

   #include <ESP8266WiFi.h>
   #include <PubSubClient.h>


   - `ESP8266WiFi.h`: 提供Wi-Fi功能。

   - `PubSubClient.h`: 提供MQTT客户端功能。


2.定义变量

   const char* ssid     = "yourSSID";
   const char* password = "yourPassword";
   const char* mqtt_server = "mqtt.yourbroker.com";
   WiFiClient espClient;
   PubSubClient client(espClient);


   - `ssid`, `password`: Wi-Fi连接信息。

   - `mqtt_server`: MQTT服务器地址。

   - `espClient`: 用于网络通信的客户端。

   - `client`: MQTT客户端实例。


3.定义回调函数

   void callback(char* topic, byte* payload, unsigned int length) {
     Serial.print("Message arrived [");
     Serial.print(topic);
     Serial.print("] ");
     for (int i = 0; i < length; i++) {
       Serial.print((char)payload[i]);
     }
     Serial.println();
   }


   - 当收到MQTT消息时,该函数会被调用。


4.`setup()` 函数

   - 初始化串行端口。

   - 连接到Wi-Fi。

   - 设置MQTT服务器和回调函数。


5.`loop()` 函数

   - 维护MQTT连接。

   - 定期发送消息到特定主题。



### 如何上传示例程序

1. 安装Arduino IDE。

2. 在Arduino IDE中配置ESP8266的开发板。

3. 将上述示例代码复制到Arduino IDE的新文件中。

4. 选择正确的端口和开发板类型。

5. 使用USB转串口适配器将ESP8266连接到电脑。

6. 点击上传按钮。


  


如有侵权,请联系删除。

未经允许,禁止转载,

如需使用,请注明出处


    扫描二维码推送至手机访问,

    版权声明:本文由#Electron330发布,如需转载请注明出处。

    本文链接:https://lkby.club/?id=24

    返回列表

    上一篇:ESP8266的介绍

    没有最新的文章了...

    相关文章

    使用 ESP8266 通过巴法云进行 OTA 更新

    使用 ESP8266 通过巴法云进行 OTA 更新

        要利用巴法云(Bemfa Cloud)获取固件,你需要确保你的 ESP8266 设备已经连接到巴法云并且能够接收远程更新。巴法云提供了 OTA(Over-The-Air)更...

    ESP8266的介绍

    ESP8266的介绍

        最近有一些小伙伴找到我,想了解ESP8266,那我就从科学的角度出发,给大家做一个全面而严谨的介绍。ESP8266是由乐鑫科技(Espressif Systems)推出的一...

    评论列表

    Electron330
    Electron330 IP:
    4个月前 (08-04)

    大家有什么不懂的或是文章哪里有错误的欢迎在评论区留言。

    发表评论

    访客

    ◎欢迎参与讨论,请在这里发表您的看法和观点。