这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界» 论坛首页» 嵌入式开发» STM32» STM32G070RB探测13-ESP8266(ESP01S)发送数据至连接云服

共8条 1/1 1 跳转至

STM32G070RB探测13-ESP8266(ESP01S)发送数据至连接云服务器(单片机控制)

高工
2020-12-31 00:21:44 打赏
上篇,我们已经用上位机控制8266连接wifi并且发送数据到云服务器,这篇我们将用我们的G070的串口直接发送指令至8266发送数据到云服务器我们不再使用串口2发送了,我们将串口2当作打印日志的串口,用串口1控制8266,首先配置串口1,前边已经写过了,现在就简单的上图吧

编写发送并判断返回信息的函数

首先是发送的函数

/* 串口发送函数 *str为指令 len为指令长度 */ void ESP_SendString(unsigned char *str, unsigned short len) { uint8_t i; for(i=0;i
        

然后发送并匹配数据

/* AT指令发送函数 *cmd为AT指令 *res为需匹配的数据 timeOut未等待时间 匹配成功返回 0 匹配失败返回 1 */ _Bool ESP8266_SendCmd(char *cmd, char *res,uint16_t timeOut) { ESP_SendString((unsigned char *)cmd, strlen((const char *)cmd));//发送AT指令 while(timeOut--)//等待 { if(usart1_rx.flag) //如果收到数据 { if(strstr((const char *)usart1_rx.rx_buff, res) != NULL) //如果匹配到数据 { Clear_Usart(&usart1_rx); //清空缓存 return 0; } else{ Clear_Usart(&usart1_rx); //清空缓存 } } HAL_Delay(1); } return 1; }
根据上篇的例程编写一个初始化过程

我们这次直接用网络调试助手来做了

首先我们根据上篇所测试的,把所需发送的指令和返回的指令做个数组

//前边是发送的指令,后边是要确定的回令 char *const esp_inti_cmd[][2] = { {"AT\r\n", "OK"}, {"ATE0\r\n", "OK"}, {"AT+CWMODE=3\r\n", "OK"}, {"AT+CWJAP=\"shr\",\"12345678\"\r\n", "GOT IP"}, {"AT+CIFSR\r\n", "OK"}, {"AT+CIPSTART=\"TCP\",\"192.168.2.4\",8080\r\n", "CONNECT"}, {"AT+CIPSEND=4\r\n", "OK"}, {"test", "SEND OK"}, {0, 0} };

然后写个函数

_Bool esp_init(void) { uint8_t i; for(i=0;i<100;i++) { if(esp_inti_cmd[i][0]) { //发送数组中的指令,并匹配数组中返回指令 if(ESP8266_SendCmd(esp_inti_cmd[i][0],esp_inti_cmd[i][1],5000)) { printf("Init:%d error\r\n",i);//失败 } else { printf("Init:%d ok\r\n",i);//成功 } } else { printf("ESP Init Success\r\n"); return 0;//初始化完成 } } return 1; }

然后我们直接可以直接把这个函数放进main函数中

Clear_Usart(&usart1_rx);//初始化串口结构体 __HAL_UART_ENABLE_IT(&huart1,UART_IT_IDLE);//使能空闲中断 HAL_UART_Receive_DMA(&huart1, (uint8_t*)usart1_rx.rx_buff, RX_BUF_MAX_LEN);//设置DMA传输,串口2的数据搬运到缓存中 esp_init();

###展示

可以说是已经迈进了物联网的门槛了



高工
2020-12-31 14:38:22 打赏
2楼

元旦假期,停止更新三天


工程师
2020-12-31 17:41:07 打赏
3楼

学习一下


工程师
2021-01-01 13:52:53 打赏
4楼

教程写的还是非常详细的


专家
2021-01-04 09:04:19 打赏
5楼

继续,加油,受益匪浅!


工程师
2021-01-05 21:35:53 打赏
6楼

学到了


工程师
2021-01-06 23:41:20 打赏
7楼

学到了


工程师
2021-03-04 17:54:05 打赏
8楼

usart1_rx为什么会显示未定义呢·?


共8条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册]