例如下图中的通讯关系图:
图中将ESP8266WIFi模块工作在STA模式下(即连接一个WiFi),上位机软件与ESP8266WiFi模块之间建立TCP/IP协议进行数据传输,STM32单片机与ESP8266WiFi模块之间通过串口进行数据传输。ESP8266WiFi模块的作用就是将上位机发送的数据传送给STM32单片机或者将STM32单片机发送给的数据传送给上位机软件。(比如通过上位机软件来控制STM32单片机和将STM32单片机检测到的信息在上位机软件上显示)
ESP8266WiFi进行数据传输的程序如下:
!!!!!!!!注意本程序是在arduino软件下进行开发的,在利用arduin软件开发时需要配置好ESP8266WiFi模块的开发板,否则程序无法正常编译和下载!!!!!!!!
我在实验时用的是如下的ESP8266WiFi模块:
#include<ESP8266WiFi.h>
const char* ssid =“此处需要输入连接WiFi的名称”;
const char* password =“此处需要输入连接WiFi的密码”;
WiFiServer server(333);
WiFiClient CLIENT;
void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
delay(3000);
server.begin();
server.setNoDelay(true);
Serial.println(“已连接WiFi”);
Serial.println(“本地服务器IP:”);
Serial.print(WiFi.localIP());
Serial.println(“端口:666”);
Serial.println(“等待客户端连接…”);
}
void loop(){
while (server.hasClient())
{
if (!CLIENT || !CLIENT.connected())
{
if(CLIENT) CLIENT.stop();
CLIENT= server.available();
Serial.println(“客户端已连接”);
continue;
}
WiFiClient CLIENT = server.available();
CLIENT.stop();
}
if(CLIENT.available()&&CLIENT.connected())
{
if (CLIENT.available() > 0)
{
while(CLIENT.available())
{
Serial.write(CLIENT.read());
}
}
}
if(Serial.available()&&CLIENT.connected())
{
size_t i = Serial.available();
uint8_t data[i];
Serial.readBytes(data, i);
CLIENT.write(data,i);
}
}