STM32+esp8266,让你的STM32开发板连接网络-----esp8266
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
分享一下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收到的网络数据。