将ESP8266与STM32F103C8连接:创建Web服务器

----国外课栈

ABUIABAEGAAghvfC4QUowofi5AYw7gU4hwM.png

如果您考虑未来的技术,那么您脑海中立即出现的两个名称是人工智能(AI)和物联网(IoT)。 AI仍处于初始阶段,还有很多东西需要开发。但物联网正处于成长阶段,许多基于物联网的产品 已经在市场上销售。此外,市场上还有许多工具和硬件可以让您的产品与物在网路上“交谈”。其中 ESP8266 是最受欢迎,便宜且易于使用的模块,可以将您的硬件连接到互联网。

在本教程中,我们使用ESP8266将STM32F103C8连接到互联网。在这里,我们将 ESP8266 Wi-Fi模块与我们的Blue Pill STM32F103C8板连接 ,并将数据发送到ESP8266网络服务器上托管的网页。

所需组件

Blue Pill STM32F103C8板

ESP8266 Wi-Fi模块

笔记本电脑和Wi-Fi热点

ESP8266 Wi-Fi模块

大多数人将ESP8266称为WIFI模块,但它实际上是一个微控制器。ESP8266是由Espressif Systems开发的微控制器的名称,Espressif Systems是一家位于上海的公司。该微控制器具有执行WIFI相关活动的能力,因此被广泛用作WIFI模块。
在这里插入图片描述
在这里插入图片描述

GND,地(0 V)

TX,发送数据位X

GPIO 2,通用输入/输出2号

CH_PD,芯片掉电

GPIO 0,通用输入/输出0号

RST,复位

RX,接收数据位X

VCC,电压(+3.3 V)

AT命令用于与ESP8266通信。下表显示了一些有用的AT命令
在这里插入图片描述

电路图和连接

下图显示了 STM32和ESP8266 Wi-Fi模块之间的连接。
在这里插入图片描述

请参考下表将ESP8266引脚与STM32引脚连接:
在这里插入图片描述
在这里插入图片描述

ESP8266使用串行通信与微控制器进行交互。因此,ESP8266的TX和RX与STM32板的Serial2端口(PA2和PA3)相连。

工作和代码说明

将 ESP8266 与 STM32 接口的工作非常简单。我们使用Arduino IDE编写代码并将其上传到STM32。首先,我们需要进行如电路图中所示的电路连接。上传代码后,打开串行监视器(工具>>串行监视器)以查看发生的情况。您将在串行监视器上看到IP地址,从串行监视器复制IP地址并将其粘贴到浏览器中,然后单击Enter以查看我们的网页。请记住在同一Wi-Fi网络上连接计算机和ESP8266模块。

首先,我们使用以下两个语句开始串行监视器和ESP8266的串行通信:

Serial.println(cmd);

Serial2.println(cmd);

注意: 我使用了STM32的Serial2端口的引脚(PA2,PA3),因为它具有3.3V容差。

然后, 我们需要通过重置任何旧的连接 AP,并将 Wi-Fi 模式设置为 AP & STA 来准备 ESP8266

connect_wifi("AT",100);  //Sends AT command with time(Command for Acknowledgement)

connect_wifi("AT+CWMODE=3",100);   //Sends AT command with time (For setting mode of Wi-Fi)

connect_wifi("AT+CWQAP",100);  //Sends AT command with time (for Quit AP)

connect_wifi("AT+RST",5000);   //Sends AT command with time (For RESETTING WIFI)

然后,将ESP8266与Wi-Fi网络连接。您必须填写您的Wi-Fi详细信息,如下面的代码所示:

connect_wifi("AT+CWJAP=\"Pramo\",\"pokemon08\"",7000);  //provide your WiFi username and password here

然后,我们获取ESP8266模块的IP地址并使用下面的代码在串行监视器上显示它


Serial2.println("AT+CIFSR");           //GET IP AT COMMAND

if(Serial2.find("STAIP,"))                 //This finds the STAIP that is the STATIC IP ADDRESS of ESP8266

Serial.print(IP);                                //prints IP address in Serial monitor

接下来我们将编写网页的HTML代码。要将HTML代码转换为Arduino代码。

webpage = "<h1>Welcome to xx</h1><body bgcolor=f0f0f0>"; //This is the heading line with black font colour

String name="<p>xx</p><p>A community of electrical and electronics students, engineers and makers</p>";

String data="<p>Data Received Successfully.....</p>";     //These two lines are of two paragraph

webpage = "<a href=\"http://xx.com/\"";

webpage+="\">Click Here to get into xx.com</a>"; //At last we insert the hyperlink to link the website address

接下来在 void send() 函数中,我们使用sendwebdata 函数打印HTML 并使用AT + CIPCLOSE = 0

关闭服务器连接

void Send()                                        //This function contains data to be sent to local server

{

      webpage = "<h1>Welcome to xx</h1><body bgcolor=f0f0f0>";

      sendwebdata(webpage);

      webpage=name;

      sendwebdata(webpage);

      delay(1000);

      webpage = "<a href=\"http://circuitdigest.com/\"";

      webpage+="\">Click Here to get into xx.com</a>";

      webpage+=data;

      sendwebdata(webpage);

      Serial2.println("AT+CIPCLOSE=0");                  //Closes the server connection

}

完成所有工作后,您可以在任何Web浏览器中打开ESP8266的IP来测试工作,然后单击网页上显示的链接,“Click Here to get into xx.com”,如下所示(抱歉,涉及隐私部分被屏蔽)
在这里插入图片描述
点击链接后,您会在网页上看到“收到的数据成功…”的文字。

点击此链接查看完整代码

猜你喜欢

转载自blog.csdn.net/jiyotin/article/details/86471962