赞
踩
分享一下,STM32开发板连接网络的第一种方法:连接esp8266。
esp8266与STM32利用串口通信连接,esp8266连接网络,把收到的数据通过串口的方式传输给STM32,之后STM32接收到消息做出对应的反应。
使用到的开发板如图:esp-12和正点原子stm32f103zet6.
首先,我们先掌握一下什么事串口通信:
串口通信(Serial Communications)的概念非常简单,串口按位(bit)发送和接收字节。与串行通信相对的是并行通信。数据传输一般都是以字节传输的,一个字节8个位。拿一个并行通信举例来说,也就是会有8根线,每一根线代表一个位。一次传输就可以传一个字节,而串口通信,就是传数据只有一根线传输,一次只能传一个位,要传一个字节就需要传8次。
单片机的串口(USART)有接收和发送端,RX 是指串口通信的数据接收,TX是指串口通信的数据发送,两个单片机可以利用串口进行数据传输。
我们可以利用esp8266和STM32的串口进行数据传输。
esp8266与STM32接线方式如下:
esp6266 | STM32 |
RX | TX |
TX | RX |
VCC | VCC |
GND | GND |
因为想要把STM32连接上网络,所以esp8266这里我们先把它连上网络,大家可以使用AT指令,或者代码烧录的形式,这里我使用的是代码,将esp8266作为http server 接收数据。
- #include <ESP8266WiFi.h>
- const char* ssid = "改成自己的";
- const char* password = "改成自己的";
- //静态地址、网关、子网掩码
- WiFiServer server(80);
- IPAddress local_IP(192, 168, 1, 80);//固定IP地址,避免IP变化影响通信
- IPAddress gateway(192, 168, 1, 1);
- IPAddress subnet(255, 255, 255, 0);
- String ss = "";
- String httpResponse = "HTTP/1.0 200 OK\r\n"
- "Connection: close\r\n"
- "Content-Type: application/json;\r\n"
- "\r\n"
- "{\"code\":1}";
- void setup() {
- Serial.begin(115200);
- WiFi.config(local_IP, gateway, subnet);//设置静态IP
- WiFi.mode(WIFI_STA);
- WiFi.begin(ssid, password);//路由器的WiFi名称和密码
- while (WiFi.status() != WL_CONNECTED) {
- delay(500);
- Serial.print(".");
- }
- Serial.println(WiFi.localIP());
- server.begin();
- }
-
- void loop() {
- WiFiClient incomingClient = server.available();
- if (incomingClient) {
- if (incomingClient.find("\r\n\r\n")) {
- while (incomingClient.available()) {
- ss = ss + char(incomingClient.read());
- }
- }
- Serial.println(ss);
- incomingClient.print(httpResponse);
- ss = "";
- }
- }

STM32端代码,这里大家可以直接使用正点原子的串口代码,注意两种单片机的波特率必须一致
代码工程点击下方链接下载
GitHub - qq-hh/qq-hh-My_Project_stm32
连接完成,上传代码后测试,
stm32开发板可以通过串口接收esp8266收到的网络数据。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。