首先祝大家新年快乐

这是本人第一次写博客,希望大家多多支持,以后会尽量写出更好的文章分享给大家,谢谢

下面向大家介绍下如何在STM32平台上基于uCOS-II系统使用乐鑫的Esp8266 wifi模块对接青岛亿联客(Yeelink)物联网平台,旨在和小伙伴们一起学习如何使用基于AT指令的wifi模块对接云服务。日后还会发布基于MiCO SDK的庆科(MXCHIP)模块、乐鑫Esp8266 SDK的Esp8266无线模块的个人项目,不需要外接MCU,直接开发wifi模块内部的MCU固件,大大提高运行效率。

一、平台介绍

硬件平台:STM32F103ZET6、Esp8266

软件平台:uC/OS-II

物联网云平台:Yeelink

开发板:正点原子精英板子

本系统基于Yeelink平台,所以需要开发者先登录Yeelink后台,注册一个用户。该平台的具体使用,可参照平台提供的使用说明,在此不做过多介绍。代码已在阿里云代码托管平台http://code.aliyun.com公开,https地址:https://code.aliyun.com/chuancey/uCOS_Esp8266.git , SSH地址:git@code.aliyun.com:chuancey/uCOS_Esp8266.git ,欢迎登陆阿里云git搜索查看并下载。

二、系统框架介绍

系统创建了一个启动线程,在启动线程中创建三个主线程。

1. WiFi_Task

该任务中创建了三个子线程:

(1) AirKiss_Task

功能:使用按键触发wifi模块进入AirKiss功能,使用手机配置wifi模块连接手机所接入的路由器,避免了设备上没有用户交互界面时无法让wifi连接路由器的尴尬状况。

使用该功能时,要首先在微信上关注带有AirKiss协议支持的公众号,比如【乐鑫信息科技】、【机智云智能宠物屋】等等,有能力的可以自己将AirKiss协议移植到自己的微信平台上;然后将手机连接至目标路由器上,打开AirKiss功能,输入路由器密码;按下相关按键,设备进入AirKiss配网功能,同时手机打开AirKiss进行配网。

(2) AccessRouter_Task

功能:按下相关按键,wifi模块连接程序中写死的路由器

本线程和上面的AirKiss_Task线程是功能并列的两个线程。

(3) WiFiStatus_Task

功能:指示wifi连接过程。连接中:绿灯快速闪烁;连接成功:绿灯常亮;连接失败:红灯常亮。wifi连接OK后,通知远程任务启动其功能。

由于本人所使用的wifi模块AirKiss功能无法正常执行(单独将模块接入电脑,使用串口助手进行调试,确实不能正常进入AirKiss功能),所以只有在进入AccessRouter_Task线程时,才能指示wifi连接状态。读者下载代码后,可在AirKiss_Task线程中发送本线程所需要的相关信号量,以完善对AirKiss连接wifi时的状态指示功能。

2. Device_Task

功能:

(1) 读取参数存储区,判断是否向后台添加过设备。如果没有,则通知远程任务Remote_Task自动向后台添加设备,使设备一上电就可自动运行,不用再去登陆yeelink后台手动添加设备。向后台添加设备完成后,会自动保存后台用户账号和设备信息相关的参数信息。

(2) 新设备存在后,通知本线程进行周期性的数据采集。由于Yeelink平台要求数据上报的周期至少为10s,否则后台会报错。本系统数据采集和上报的周期为20s。数据采集完成后,通知远程任务将数据上报给后台。

3. Remote_Task

功能:接收wifi正常连接的通知后,实现以下两个功能

(1) 创建子线程AddNewDev_Task,根据需要向后台创建新设备。

(2) 接收Device_Task线程的通知,向后台上报采集的数据。

三、工程目录和简要代码说明

项目工程目录如下:

文件夹App中主要包含了和启动线程、上述三个主线程、中断处理函数、系统初始化等相关的代码文件。主要有App_StartTask.c、device.c、remote_yeelink.c、stm32f10x_it.c、yeelinkDefine.h和其他配置相关的.h文件和.c文件。

文件夹Bsp主要包含了MCU片上外设的驱动代码。

文件夹cJSON包含了设备和后台通信时的JSON格式数据解析的算法,对于JSON格式的初步了解可参考http://www.cnblogs.com/SkySoot/archive/2012/04/17/2453010.html

文件夹HardWare包含了Led、Beep、Key、wifi和传感器DHT11等硬件的驱动代码。

其余文件夹主要是Cortex-M3内核文件、STM32固件库、和uCOS源代码、项目工程等文件夹。

特殊介绍下,yeelinkDefine.h文件定义了和后台通信相关的所有变量的定义,包括后台用户名和密码、主机Host名、端口、各类URL、各类http请求格式化字符串、数据上报的Json格式化字符串等各种定义。此文件只能被工程里的一个文件调用,不能被多个文件同时调用,否则会造成变量重复定义的错误。因为此文件采用的变量定义的形式,不是宏定义的方式。

remote_yeelink.c中定义了和后台通信常用的本地接口,包括获取ApiKey、查看后台设备、向后台增加设备、向后台增加传感器等,yeelink后台提供了大量能够满足用户各种需求的API接口,开发者可根据需要自行实现更多的本地接口,本工程只作为Demo。

单片机和wifi通信的AT指令的发送和响应代码,结合了操作系统的信号量等待方式,而不是一般所用的单纯的延时等待,大大提高了程序运行效率。每发送一条指令,会立马收到wifi回应,然后发送信号量,发送指令的函数请求到信号量后就立马继续向下执行,而不是等待很长时间后再判断是否确实收到回应。

每一个函数的关键功能处都有log输出,可以根据打印的log定位程序运行时哪里出现了错误,极大方便了程序的调试。log打印不仅输出了开发者要求输出的文本内容,同时输出了此log打印语句所在的文件名称、函数名称、代码行数,一眼就能定位到错误出现在哪里,甚至可以省略JLINK工具。

四、结果

下图是设备运行后,自动在后台创建的设备并添加的湿度传感器的数据列表,展示了环境湿度曲线

基于uCOS-II系统使用STM32和Esp8266对接Yeelink物联网平台的Demo相关推荐

  1. 基于STM32L431设计的云端绿化管理系统(ESP8266+阿里云物联网平台)

    一.环境介绍 MCU: 采用意法半导体低功耗芯片 STM32L431RCT6 编译软件:  Keil5 + CubeMX 云平台: 采用阿里云物联网云平台 完整项目源代码下载地址(不懂可以私信问):  ...

  2. STM32通过ESP8266利用机智云平台实现手机远程操作

    STM32通过ESP8266利用机智云平台实现手机远程操作 将STM32作为主控芯片,ESP8266作为外设,利用串口传递信息,通过机智云平台实现STM32与手机之间的数据传输!之所以选择机智云平台, ...

  3. STM32 标准库+ESP8266+华为云物联网平台

    文章内容: STM32标准库通过串口发送AT指令完成与ESP8266的控制实现接入华为云物联网平台,并完成基本通信与控制,包括设备属性上报和命令下发解析与响应,并将相关代码打包成HuaweiIOT_a ...

  4. STM32 HAL库+ESP8266+华为云物联网平台

    文章内容: STM32 HAL库通过串口发送AT指令完成与ESP8266的控制实现接入华为云物联网平台,并完成基本通信与控制,包括设备属性上报和命令下发解析与响应. 文末获取"STM32 H ...

  5. ESP8266 接入阿里物联网平台实现远程控制LED

    上一篇我们介绍了阿里物联网平台的使用,并使用MQTT.fx软件来模拟实际的硬件设备.这一篇来实际操作如何使用esp8266接入到阿里物联网平台中,并控制一个LED灯.阿里物联网平台实际上是一个一站式的 ...

  6. IAR中移植UCOS II系统以及sourceInsight 使用

    ucos 学习笔记 1 sourceInsight 使用 CSDN参考链接 新建工程 第一步:project中new project 第二步:在高亮部分输入工程的地址,工程文件夹与IAR工程文件夹放在 ...

  7. bh1750采集流程图_重大更新:STM32空气监测仪,OneNET物联网平台实时查看(原理图、PCB源文件、程序源码等)...

    更新内容: 一.SD卡记录功能. 自动识别有无SD卡,支持4G以下SD卡. 下图为SD卡记录的数据.以日期为文件名自动创建文件. 记录格式为:时间,PM1.0,PM2.5,PM10,温度,湿度,大气压 ...

  8. 【物联网 · 嵌入式】使用 ESP8266 接入 Blinker 物联网平台

    一.介绍 Blinker 是一个简单易用的物联网平台,只需要几行代码,就可以开发出物联网应用. 这里我们使用 NodeMCU(一种基于esp8266的开发板)接入Blinker平台. NodeMCU ...

  9. ESP8266 阿里云物联网平台 (详细步骤)

    #记录一些注意事项 物联网平台必须先等数据点都上传过一次后,才开发公版APP页面,否则控件会不显示 SDK必须3.2 工具链5.2 TLS使用mbedtls选项 因为用到TLS,使用内存比较大,可以按 ...

最新文章

  1. 服务端php的更新手游客户端,PHP服务器安卓app下载|PHP服务器下载1.11.3 官方移动客户端-PHP服务器官方移动客户端1.11.3-蜻蜓手游网...
  2. 动态半导体ram依据什么存储信息_都是存储器,但RAM、ROM、闪存、硬盘怎么分?...
  3. redis java驱动_Redis学习笔记之二 :在Java项目中使用Redis
  4. rocketmq 订阅组_必须先理解的RocketMQ入门手册,才能再次深入解读
  5. php怎么取request,PHP-如何在Guzzle中获取Request对象?
  6. express使用JWT和httpOnly cookie进行安全验证
  7. ASIHTTPRequest详解
  8. bzoj3944 Sum
  9. GitHub上IOS开源项目
  10. python爬虫微信公众号文章_Python爬虫案例:爬取微信公众号文章
  11. 极速办公(word)字体如何设置为斜体
  12. Java面试宝典 Beta5.0版 (2018年最新公测版)
  13. Windows基础知识整理
  14. 红帽linux免费下载链接,redhat linux 下载大全 完全整理
  15. ue4蓝图运行顺序_UE4蓝图流程控制
  16. 高数基础_第1节_概述以及预备知识
  17. 《一年学完mit计算机课程》,用了这种学习方法,他一年学完了33门MIT计算机课程...
  18. 2021年安徽省大数据与人工智能应用竞赛 大数据-本科组赛题(省赛)
  19. debian配置网卡
  20. 电脑录屏软件哪个好用?3款屏幕录制大师分享!

热门文章

  1. CentOS下nohup命令
  2. 基于stm32微控制器的绘图机器人设计
  3. 2021年11月30日
  4. 牛奶可乐经济学之Q11:为什么地产经纪人常带客户看两栋差不多完全一样的房子,可其中一栋比另一栋既便宜、环境又好?
  5. 新书推荐 |《好设计,有方法:我们在搜狐做产品体验设计》
  6. php 实现paypal订阅
  7. 【实战】前端必会技巧 —— window.open 实现图片预览而非下载
  8. 最新国际版抖音TIKTOK下载,可换区版本! 支持IOS抖音TIKTOK 支持安卓抖音TIKTOK!
  9. 12.5.2 升12.5.3的补丁 linux下载,lolv3.2.3.2-V4.0.5.1升级-lolv3.2.3.2-V4.0.5.1升级补丁【7.12版本】下载官方最新版-西西软件下载...
  10. 7-1 Maximum Subsequence Sum