021_STM32程序移植之_ESP8266连接onenet
本次教程是使用STM32C8T6通过ESP8266-12F模块将数据传输到ONENET云端去,并且云端能够下发命令给单片机来实现云端控制。本次实验硬件设备:STM32C8T6最小系统,ESP8266-12F模块,wifi。下面是简单的设备传输结构图:


/********************************神奇的分割线********************************/
视频演示教程:https://v.qq.com/x/page/i0814q78no3.html
资料下载地址:https://download.csdn.net/download/xiaoguoge11/10858840
欢迎关注公众号:luxiaoguogege
/********************************神奇的分割线********************************/
/********************************神奇的分割线********************************/
实验中只是将定义的数据进行上传,具体的可以自己添加外部数据采集模块来实现数据的上传及控制。本次实验中查看到的资料网址:
OneNET -中国移动物联网开放平台:https://open.iot.10086.cn/
基于WIFI方式连接OneNET(ESP8266):https://open.iot.10086.cn/doc/art441.html#109
麒麟开发板代码、资料:https://open.iot.10086.cn/bbs/thread-863-1-1.html
机智云开发板使用方法:https://pan.baidu.com/s/1AQIpM4mJ5EimHEYCDM9McQ
/********************************神奇的分割线********************************/
/********************************神奇的分割线********************************/
关于解决连接久了之后设备断开连接玄学BUG问题,这位大佬解决了
基于STM32和ESP8266的LED灯状态上传与命令下发(附源码)
额,这个是程序上传之后第二天发现的问题,所以我程序是有BUG的,具体的额解决方法可以参考上面连接大佬的分析,
因为时间是什么时候断的,具体为什么断这个因素太不明确了,懒得再分析浪费时间,所以提出简单粗暴的方法:
1. 每隔几分钟重新调用一次与云端连接函数,假如连接失败程序就会卡死在那里,那么我们就再重新初始化ESP8266再进行重连
在程序的main.c程序中替换成这个,也就是增加重连函数,这个只是暂时解决方法测试一早上esp8266重新初始化了30次左右,
但是还是能保证掉线自动连接,具体为什么断现在原因还不太明确,等以后有时间再慢慢分析

main.c程序
#include "public.h" int main()
{
int timeCount = ; //发送间隔变量
int esp8266_rest = ;
int connect_time = ; /*连接时间*/
delay_init();
Usart1_Init(); //串口1,打印信息用
Usart2_Init(); //串口2,驱动ESP8266用
UsartPrintf(USART_DEBUG, " Hardware init OK\r\n"); ESP8266_Init(); //初始化ESP8266 while(OneNet_DevLink()) //接入OneNET
delay_ms(); send_data.Data1 = ;
send_data.Data2 = ;
while()
{
if(++timeCount >= ) //发送间隔5s
{
printf("向onenet平台发送数据:\r\n");
OneNet_SendData(); //发送数据 timeCount = ;
ESP8266_Clear();
}
esp8266_rec(); /*主程序中调用来进行接收,数据处理不用这个,这个只是调用*/ if(connect_time++ >= ) //间隔20s就重新连接一次
{
printf("重新连接平台\r\n");
connect_time = ;
while(OneNet_DevLink()) //接入OneNET
{
esp8266_rest++;
delay_ms();
if(esp8266_rest == )
{
send_data.Data1 += ;
printf("重新连接平台第 %d 次",send_data.Data1);
esp8266_rest = ;
ESP8266_Init(); //初始化ESP8266
}
} } delay_ms();
}
}
/********************************神奇的分割线********************************/

021_STM32程序移植之_ESP8266连接onenet的更多相关文章
- 019-020_STM32程序移植之_W5500连接noenet
(一)本次实验是将数据通过W5500模块传输到onenet平台上面去 (二)显示内容,onenet平台数据变化曲线 (三)相关网站: 1.onenet网站:https://open.iot.10086 ...
- STM32F407使用MFRC522射频卡调试及程序移植成功
版权声明:转载请注明出处,谢谢 https://blog.csdn.net/Kevin_8_Lee/article/details/88865556 或 https://www.cnblogs.co ...
- 014_STM32程序移植之_L298N电机驱动模块
更改注意: STM32程序移植之L298N电机驱动模块 引脚连接图 STM32引脚 L298N引脚 功能 PA6 ENA 马达A的PWM PA7 ENB 马达B的PWM PA2 IN1 控制马达A P ...
- STM32F429 LCD程序移植
STM32F429自带LCD驱动器,这一具有功能给我等纠结于屏幕驱动的程序员带来了很大的福音.有经验的读者一定有过这样的经历,用FSMC驱动带由控制器的屏幕时候,一旦驱动芯片更换,则需要重新针对此驱动 ...
- (转)ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 的解决方法
早上同事用PL/SQL连接虚拟机中的Oracle数据库,发现又报了"ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务"错误,帮其解决后,发现很多人遇到过这样的问 ...
- 关于Oracle报“ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务”错误
关于Oracle报“ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务”错误原因:listener.ora中没有指定监听服务器名. 如下是解决思路: 尝试1.通过重启服务的方式启动数 ...
- EM界面 ORA-12505: TNS: 监听程序当前无法识别连接描述符中所给出的 SID (DBD ERROR: OCIServerAttach)
我的是10g,打开EM,另外都正常,就有这个问题到实例的代理连接 状态 失败 详细资料 ORA-12505: TNS: 监听程序当前无法识别连接描述符中所给出的 SID (DBD ERROR: OCI ...
- 嵌入式linux应用程序移植方法总结
嵌入式linux应用程序移植方法总结 前段时间一直在做openCapwap的移植和调试工作,现在工作已接近尾声,编写本文档对前段工作进行一个总结,分享下openCapwap移植过程中的经验和感悟.江浩 ...
- linux第三方程序移植
摘要:在linux开发过程中经常需要用到第三方的程序,有时需要用到它们的库,有时需要它们生成的可执行文件,如何正确地编译这些第三方的程序,以方便地使用和开发自己需要的程序,将是本文要论述的内容. 1. ...
随机推荐
- Python turtle(介绍一)
关于绘制图形库turtle # 画布上,默认有一个坐标原点为画布中心的坐标轴(0,0),默认"standard"模式坐标原点上有一只面朝x轴正方向小乌龟 一:海龟箭头Turtle相 ...
- MySQL之锁、事务、优化、OLAP、OLTP
本节目录 一 锁的分类及特性 二 表级锁定(MyISAM举例) 三 行级锁定 四 查看死锁.解除锁 五 事务 六 慢日志.执行计划.sql优化 七 OLTP与OLAP的介绍和对比 八 关于autoco ...
- 2019java学习路线图
学习路线图往往是学习一样技术的入门指南.网上搜到的Java学习路线图也是一抓一大把.但是很多学习路线图总结的云里雾里,也没有配套的视频,学习效果并不好. 分享一个完整的Java学习路线图给大家,也是贴 ...
- go 数组的定义和赋值
package main import "fmt" func main() { //字符数组定义 var str [2]string str[0] = &q ...
- Asp.net core 学习笔记 ( ef core transaction scope & change level )
ef core 有 unit of work 的概念,当我们 save change 时会自动使用 transaction 确保更新的一致性. 隔离级别是默认的 read committed 不允许脏 ...
- (一)Lucene简介以及索引demo
一.百度百科 Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查 ...
- Java数据结构HashMap
java数据结构HashMap /** * <html> * <body> * <P> Copyright JasonInternational</p> ...
- Autofac 使用经验
慢慢总结 基础使用样例,在 Application_Start 中直接使用 //autofac注册 var builder = new ContainerBuilder(); //注册Controll ...
- Python考试_第一次
python基础数据类型考试题 考试时间:两个半小时 满分100分(80分以上包含80分及格) 一,基础题. 1. 简述变量命名规范(3分) 答:(1) 变量为数字,字母以及下划线的任意组合,且不能以 ...
- Python练习_购物车_day6
第一次代码 (1) 输出商品列表,用户输入序号,显示用户选中的商品. 页面显示 序号 + 商品名称,如: 1 手机 2 电脑 (2): 用户输入选择的商品序号,然后打印商品名称 (3):如果用户输入的 ...