STM32之 ESP8266 WIFI 模块驱动代码 您所在的位置:网站首页 esp8266掌机 STM32之 ESP8266 WIFI 模块驱动代码

STM32之 ESP8266 WIFI 模块驱动代码

2024-02-05 08:48| 来源: 网络整理| 查看: 265

成品展示部分 :(ESP8266只是其中一个小部分而已)

实物图:

基于互联网的农业大棚环境监控系统设计 基于互联网的农业大棚环境监控系统设计

电路图:

农业大棚环境监控设计电路图(彩色) 农业大棚环境监控设计电路图(彩色)  调试部分:ESP8266 WIFI 模块串口调试过程-实现通过互联网实现数据远程传输(结尾含驱动代码链接)_xiaohai@Linux的博客-CSDN博客_esp8266串口调试

(在看代码之前务必先串口调试ESP8266,否则难以用单片机控制ESP8266通过互联网实现数据远程传输!!!)

 ESP8266程序流程部分:

ESP8266程序流程图 ESP8266驱动程序流程图

ESP8266 代码部分:

第一部分:ESP8266模块头文件(wifi_esp8266.h)

#ifndef WIFI_ESP8266_H #define WIFI_ESP8266_H #include #include "usart.h" #include "string.h" #include "sys.h" #include "delay.h" #include "SHT30.h" #define ESP8266_CHECK_CNT 5 //#define AZE #define TP_LINK struct ESP8266_WIFI_INFO { u32 ID1; u32 ID2; u32 ID3; u8 ESP8266_ERROR; u8 WIFI_Connect_State; u8 Server_Connect_State; u8 Server_Connect_Cnt; u8 ESP8266_State; u8 ConnectState; //保存WIFI连接状态。0表示连接成功 1表示未连接 u32 SeverPort; char MAC[20]; //保存mac地址 char IPAddr[20]; //保存IP地址 char Password[20]; //保存密码 char SSID[20]; //SSID char SeverIP[20]; }; #pragma pack(1) //以下结构体以一个字节对齐 /*--------------------------------*/ //定义socket数据传输的结构体 struct SocketPackageData { u8 FrameHead[4]; //存放帧头数据, 固定为: 0xA1 0xA2 0xA3 0xA4 u8 SrcDataBuffer[30]; //存放传输的字符串源数据 u32 id[3]; //存放 96 位 ID 号 u32 CheckSum; //存放数据位的校验和 }; extern struct ESP8266_WIFI_INFO ESP8266WIFI_Info; extern struct SocketPackageData RxTxDataPackage; extern struct ESP8266_WIFI_INFO ESP8266WIFI_Info; void ESP8266_Data_Handler(void); u8 ESP8266_TCP_ClientModeInit(char *ssid ,char * password ,char * sever_ip ,u32 sever_port); u8 ESP8266_ResponseData(char * string); u8 ESP8266_CheckDevice(void); u8 ESP8266_ATE0(void); u8 ESP8266_SetWorkMode(u8 mode); u8 ESP8266_RsetDevice(void); u8 Get_Connect_WIFI_State(void); u8 ESP8266_SetConnectWIFI(char * ssid ,char * password); u8 ESP8266_STAModeGetIpAddr(void); u8 ESP8266_ConnectServer(char * server_ip,u32 server_port); u8 ESP8266_SetTransferMode(u8 mode); u8 ESP8266_StartTransfer(void); u8 ESP8266_StoptTransfer(void); u8 ESP8266_TransferDataHander(void); u8 SetDataPackage(struct SocketPackageData *data_pack,u8 *SendBuff,u32 id1,u32 id2,u32 id3); u8 CheckDataPackage(struct SocketPackageData data); void ESP8266_STA_ErrorInfo(u8 value); u8 Restart_ConnectServer(void); #endif

 第二部分:ESP8266驱动代码文件(wifi_esp8266.c)

#include "wifi_esp8266.h" #include "led.h" #include "oled.h" struct ESP8266_WIFI_INFO ESP8266WIFI_Info; //保存ESP8266的各项数据 struct SocketPackageData RxTxDataPackage; //保存接收和发送的数据 /* 函数功能: 等待并查找ESP8266的响应数据中是否有指定的字符串(判断响应是否正常) 函数参数:要指定查找的字符串 函数返回值: 0 表示设备响应正常 1 表示设备响应不正常(没有收到ESP8266的数据或者数据里面没有指定的字符串) */ u8 ESP8266_ResponseData(char *string) { u8 cnt=0; while(cnt++SrcDataBuffer[0]);i++) { data_pack->CheckSum+=data_pack->SrcDataBuffer[i]; } return 0; } /* 函数功能: 校验数据包是否正确 函数形参: data :校验的数据包结构 函数返回值: 0表示成功 其他值表示失败 */ u8 CheckDataPackage(struct SocketPackageData data) { unsigned int checksum=0; int i; if(data.FrameHead[0]!=0xA1||data.FrameHead[1]!=0xA2||data.FrameHead[2]!=0xA3||data.FrameHead[3]!=0xA4) { printf("帧头校验错误!\n"); return 1; } for(i=0;i 设置指令 响应 : OK 连接不成功,则返回 ERROR 例如:AT+ CWJAP =“xiaohai”,“123456788” 参数说明:字符串参数,接入点名称 字符串参数,密码最长 64 字节 ASCII 参数 设置需要开启Station 模式 , 若 SSID 或 者password 中含 有’,’、 ’“’和’\’时,需要进行转义,其它字符转义无效 AT+CWQAP 退出与 AP 的连接 响应 : OK AT+CWSAP? 查询指令 响应 :返回当前 AP 的参数 + CWSAP:,,, AT+CWSAP=,,, 设置指令 响应:OK 设置失败,则返回 ERROR 参数说明:指令只有在 AP 模式 开启后有效 (本设置掉电重启设置仍保留。) 字符串参数,接入点名称 字符串参数,密码最长 64 字节 ASCII 通道号 0 OPEN 1 WEP 2 WPA_PSK 3 WPA2_PSK 4 WPA_WPA2_PSK 例如:AT+CWSAP="ATK_ESP8266","12345678",6,4 AT+CWLIF 查看已接入设备的 IP 响应:, OK AT+CWDHCP= , 设置 DHCP 开关 响应:OK (本设置掉电重启设置仍保留。) 参数说明 0:设置AP 1:设置STA 2:设置AP和STA 0:去能 DHCP 1:使能 DHCP AT+CWAUTOCONN= 设置 STA 开机自动连接 响应:OK (本设置掉电重启设置仍保留。) 参数说明 0:开机禁能 STA 自动连接 1:开机使能 STA 自动连接 AT+CIPSTAMAC? 查询STA模式的MAC地址 响应:+CIPSTAMAC: OK AT+CIPSTAMAC= 设置STA模式的MAC地址 响应:OK (本设置掉电重启设置仍保留。) 举例 : AT+CIPSTAMAC="18:fe:35:98:d3:7b" AT+CIPSTA? 查询模块 STA 模式的 IP 地址 响应:+CIPSTA: OK AT+CIPSTA= 设置模块 STA 模式的 IP 地址 例如:AT+CIPSTA="192.168.1.100" AT+CIPAP? 查询模块 AP 模式的 IP 地址 响应:+CIPAP: OK AT+CIPAP= 设置模块 AP 模式的 IP 地址 例如:AT+CIPAP="192.168.5.1" AT+SAVETRANSLINK=,,, 保存透传连接到 Falsh 举例 AT+SAVETRANSLINK=1,”192.168.1.110”,8086,”TCP” 参数说明: 0 取消上电透传 远端 IP 远端端口号 TCP 或者 UDP,缺省默认为 TCP 1 保存上电进入透传模式 AT+CIPMUX? 查询多连接模式 响应:OK 如果已经处于连接状态,则返回:Link is builded 参数说明 : 0 单路连接模式 1 多路连接模式 (只有当连接都断开后才能更改,如果开启过serve需要重启模块) AT+CIPSERVER=, 配置为服务器 响应: OK ( AT+ CIPMUX=1 时才能开启服务器 ) 参数说明 : 0 关闭 server 模式 1 开启 server 模式 : 端口号,缺省值为 333 AT+CIPMODE=? 查询模块传输模式 响应:OK AT+CIPMODE= 设置模块传输模式 响应:OK 如果已经处于连接状态,则返回 :Link is builded 参数说明:0 非透传模式 1 透传模式 AT+CIPSTO=? 查询服务器超时时间 响应:+ CIPSTO: OK AT+CIPSTO= 设置服务器超时时间 响应:OK 参数说明 :0~28800 服务器超时时间,单位为 s AT+PING= 响应:+ OK 若能 ping 通则返回 OK,否则返回 ERROR **********************************/

实物工程源码下载: 农业大棚环境监测(温湿度+二氧化碳浓度+光照强度+时间+OLED显示+ESP8266连网+EEPROM)-C文档类资源-CSDN下载



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有