ESP8266+STM32+TCP助手

本实验使用的WiFiSOC模组为ESP8266系列。该系列模块支持标准的IEEE802.11 b/g/n协议,内置完整的TCP/IP协议栈。用户可以使用该系列模块为现有的设备添加联网功能,也可以构建独立的网络控制器。支持UART/GPIO/IIC/PWM/ADC/HSPI等接口,支持STA/AP/STA+AP工作模式
,使用AT指令进行开发。

        图1. 管脚尺寸图

 

                                                                   图2. 典型应用图

本次实验原理为先通过UART与WiFi模块通信,传送AT指令配置WIFI模块,然后通过TCP/IP协议与主机服务器之间进行交互,完成收发数据。

int main(void)
{
  
  /* MCU Configuration--------------------------------------------------------*/
  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();
  /* Configure the system clock */
  SystemClock_Config();
  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_USART2_UART_Init();
  HAL_UART_Receive_IT(&huart2, (uint8_t *)&UartRxData, 1);//接收中断使能
  ESP8266_Init();
  while (1)
  {
		ESP8266_STA_TCPClient_Test();// TCP/IP 通讯
  }
}

 基础AT指令如下:

完整AT指令请到以下网站查看:https://docs.espressif.com/projects/esp-at/zh_CN/release-v2.2.0.0_esp8266/AT_Command_Set/index.html 以下是TCP通讯函数

void ESP8266_STA_TCPClient_Test(void)
{
    u8 res;
    char str[100]={0};
    ESP8266_AT_Test();
	printf("正在配置ESP8266\r\n");
    ESP8266_Net_Mode_Choose(STA);
    while(!ESP8266_JoinAP(User_ESP8266_SSID, User_ESP8266_PWD));//SSID为WIFI名,PWD为WIFI密码
    ESP8266_Enable_MultipleId ( DISABLE );//ESP8266 透传使能
		//ESP8266 连接服务器
		//enumE  网络类型
		//ip ,服务器IP
		//ComNum  服务器端口
		//id,连接号,确保通信不受外界干扰
		//设置成功返回true,反之fasle
    while(!ESP8266_Link_Server(enumTCP, User_ESP8266_TCPServer_IP,         
    User_ESP8266_TCPServer_PORT, Single_ID_0));
    while(!ESP8266_UnvarnishSend());
	printf("\r\n配置完成");
    while ( 1 )
    {       
				sprintf (str,"CSDN大法好IKUN" );//将要发送的字符串写入str
				//ESP8266发送字符串str
				//ENABLE使能透传模式
				//ucId 连接号
        ESP8266_SendString ( ENABLE, str, 0, Single_ID_0 );
        HAL_Delay(200);
		Uart_RecvFlag();//接收标志函数,返回0说明没收据接收,返回1说明有数据收到
        if(TcpClosedFlag) //判断是否失去连接
        {
            ESP8266_ExitUnvarnishSend(); //退出透传模式
            do
            {
                res = ESP8266_Get_LinkStatus();     //获取连接状态
            }   
            while(!res);

            if(res == 4)                     //确认失去连接,重连
            {               
                while (!ESP8266_JoinAP(User_ESP8266_SSID, User_ESP8266_PWD ) );
                while (!ESP8266_Link_Server(enumTCP, User_ESP8266_TCPServer_IP, 
                User_ESP8266_TCPServer_PORT, Single_ID_0 ) );        
            } 
            while(!ESP8266_UnvarnishSend());//透传使能,设置成功返回true, 反之false                    
        }
    }   
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值