ESP8266连接STM32创建网络服务器

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

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

所需组件

Blue Pill STM32F103C8板

ESP8266 Wi-Fi模块

笔记本电脑和Wi-Fi热点

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

工作和代码说明

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

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

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

关闭服务器连接

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

详情参阅 - 亚图跨际

  • 8
    点赞
  • 187
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
要在ESP8266STM32之间建立TCP连接,您需要在ESP8266上运行TCP服务器,并在STM32上运行TCP客户端。 以下是一个简单的示例代码,可以帮助您开始实现这种连接ESP8266 TCP服务器代码: ```c #include <ESP8266WiFi.h> #include <WiFiClient.h> #include <WiFiServer.h> WiFiServer server(80); // 创建一个TCP服务器,端口号为80 void setup() { Serial.begin(9600); WiFi.begin("SSID", "PASSWORD"); // 连接Wi-Fi网络 while (WiFi.status() != WL_CONNECTED) { // 等待连接成功 delay(1000); Serial.println("Connecting to WiFi..."); } Serial.println("Connected to WiFi"); server.begin(); // 开始监听TCP连接 } void loop() { WiFiClient client = server.available(); // 等待客户端连接 if (client) { Serial.println("New client connected."); client.println("Hello, client!"); // 向客户端发送一条消息 while (client.connected()) { // 循环接收客户端发送的消息 if (client.available()) { String request = client.readStringUntil('\r'); Serial.println(request); } } client.stop(); // 关闭连接 Serial.println("Client disconnected."); } } ``` STM32 TCP客户端代码: ```c #include "stm32f4xx.h" #include "stm32f4xx_hal.h" #include <string.h> #define SERVER_IP_ADDRESS "192.168.1.100" // ESP8266的IP地址 #define SERVER_PORT 80 // ESP8266的端口号 char message[] = "Hello, server!"; // 要发送的消息 int main(void) { HAL_Init(); __HAL_RCC_GPIOA_CLK_ENABLE(); GPIO_InitTypeDef GPIO_InitStruct; GPIO_InitStruct.Pin = GPIO_PIN_5; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); while (1) { // 创建一个TCP连接 int sock = socket(AF_INET, SOCK_STREAM, 0); struct sockaddr_in server_addr; server_addr.sin_family = AF_INET; server_addr.sin_port = htons(SERVER_PORT); server_addr.sin_addr.s_addr = inet_addr(SERVER_IP_ADDRESS); connect(sock, (struct sockaddr*)&server_addr, sizeof(server_addr)); // 发送消息给服务器 send(sock, message, strlen(message), 0); // 接收服务器的回复 char buffer[1024] = {0}; recv(sock, buffer, sizeof(buffer), 0); printf("Server response: %s\n", buffer); // 关闭连接 close(sock); HAL_Delay(1000); // 1秒钟后再次发送消息 } } ``` 请注意,以上示例代码仅供参考,您需要根据自己的实际情况进行适当的修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值