内容
Change history
内容
1 前言
1.1 目的
2 计划
2.1 测试环境
2.2 计划
3 行动
3.1 物联网
3.1.1 什么是物联网
3.1.2 挑战与机遇
3.1.3 物联网的尝试
3.2 需求
3.3 ESP8266
3.3.1 特点
3.3.2 ESP8266如何联网
3.3.3 AT指令
3.4 微信小程序
3.4.1 介绍
3.4.2 相比于Android、IOS、PC的APP的优势
3.4.3 在实践项目中,微信小程序的作用
3.5 测试
4 优化
4.1 成本优化
4.2 功能优化
1 前言
1.1 目的
对物联网行业的一次探索与实践。
物联网从0到1的实践。
做出一款具有实际应用价值的物联网产品。产品应用场景为学校空调控制系统,通过微信小程序控制WiFi转红外硬件设备来管理所有空调的开关。
2 计划
2.1 测试环境
类别 |
要求 |
电脑 |
Win10 |
底层硬件编译软件 |
keil 5.1 |
底层试验硬件平台 |
STM32F407开发板+ESP8266 |
底层硬件产品平台 |
STM32F0+ESP8266+红外发射管 |
WIFI模块 |
ESP8266 |
应用端 |
微信小程序 |
测试工具 |
网络调试助手、串口调试助手 |
2.2 计划
1. 实现微信小程序为STM32F407开发板+ESP8266配网;
2. 实现网络调试助手与STM32F407开发板+ESP8266之间建立UDP通信;
3. 实现微信小程序与STM32F407开发板+ESP8266之间建立UDP通信;
4. 实现微信小程序控制低成本的STM32F0平台+ESP8266实现红外发送控制空调开关与调温;
3 行动
3.1 物联网
3.1.1 什么是物联网
下面这段定义摘自百度百科:
物联网(The Internet of Things,简称IOT)是指通过各种信息传感器、射频识别技术、全球定位系统、红外感应器、激光扫描器等各种装置与技术,实时采集任何需要监控、连接、互动的物体或过程,采集其声、光、热、电、力学、化学、生物、位置等各种需要的信息,通过各类可能的网络接入,实现物与物、无语人的泛在连接,实现对物品和过程的智能化感知、识别和管理。物联网是一个基于互联网、传统电信网等的信息承载体,它让所有能够独立寻址的普通物理对象形成互联互通的网络。
3.1.2 挑战与机遇
3.1.2.1 技术标准的统一与协调
目前,传统互联网的标准不适合物联网。物联网感知层的数据多源异构,不同的设备与不同的接口,不同的技术标准;网络层、应用层也由于使用的网络类型不同、行业的应用方向不同而存在不同的网络协议和体系结构。建立的统一的物联网体系架构,统一的技术标准是物联网现在正在面对的难题。
上面这段话摘自百度百科,从中不难看出,物联网行业并没有出现大统一的标准,相比于汽车行业,有更多的发展空间和活动空间,没有太多的各种标准限制。
一段关于行业生命周期分析的文字:
行业生命周期分为四个阶段:①形成期;②成长期;③成熟期;④衰退期;
(3)成熟期。进入成熟期后,一方面,行业的市场已趋于饱和,销售额已难以增长,在此阶段的后期甚至会开始下降;另一方面行业内部竞争异常激烈,企业间的合并、兼并大量出现,许多小企业退出,于是行业由分散走向集中,往往只留下少量的大企业。产品成本控制和市场营销的有效性成为企业成败的关键因素。
(2)成长期。进入成长期,行业的产品已较完善,顾客对产品已有认识,市场迅速扩大,企业的销售额和利润迅速增长。同时,有不少后续企业参加进来,行业的规模扩大,竞争日趋激烈,那些不成功的企业已开始退出。市场营销和生产管理(提高质量和降低成本)成为关键性职能。
(1)形成期。形成期是指某行业刚出现的阶段。在此阶段,有较多的小企业出现,因为企业刚建立或刚生产某种产品,忙于发展各自的技术能力而不能全力投入竞争,所以竞争压力较小。研究开发和工程技术是这个阶段的重要职能,在营销上则着重广告宣传,增进顾客对产品的了解。
观察近几年的汽车行业的发展,该行业处于成熟期是毋庸置疑的,而物联网处于成长期,价格和市场是竞争的关键。
3.1.3 物联网的尝试
最触手可及的网络即为WIFI,最触手可及的应用端程序为网页、Android、IOS、PC的APP和微信小程序。使用应用端的程序通过互联网控制一个硬件设备,这可以称作物联网。
3.2 需求
3.3 ESP8266
ESP8266系列无线模块是高性价比WIFI SOC模组,该系列模块支持标准的IEEE802.11b/g/n协议,内置完整的TCP/IP协议栈。用户可以使用该系列模块为现有的设备添加联网功能,也可以构建独立的网络控制器。
3.3.1 特点
· 体积超小的802.11b/g/n WiFi SOC模块
· 采用低功率32位CPU,可兼作应用处理器
· 主频最高可达160MHz
· 内置10bit高精度ADC
· 支持USART、GPIO、IIC、PWM、ADC、SPI等接口
· 支持多种休眠模式,深度睡眠电流低至20uA
· 内嵌LWIP协议栈
· 支持STA、AP、STA+AP工作模式
· 支持smart config、AirKiss一键配网
· 通用AT指令可快速上手
· 支持SDK二次开发
· 支持串口本地升级和远程固件升级(FOTA)
3.3.2 ESP8266如何联网
手机上连接WIFI的操作流程是先打开WIFI开关,然后选择WIFI网络,再然后输入密码即可。
对于物联网设备不会像手机这么有好的交互界面,否则成本会很高;
其次,设备数目巨大时,不可能每个每个设备单独的挨个输入账号和密码;
另外,我们希望WIFI模块适用在各种场合,那么就会有各种WIFI网络账号名和密码,密码也会不断更新,账号和密码就不能是固定的。
针对这些期望,ESP8266支持一种模式叫smartconfig,帮助用户将采用ESP8266EX和ESP32的设备连接至WiFi网络,用户只需要在手机上进行简单操作即可实现智能配置。这个过程如下图所示:
由于设备在一开始并未连接至网路,手机端 App 无法直接向设备发送信息。通过通过smartconfig通信协议,具备WiFi网络接入能力的设备(例如智能手机)就可以向接入点(AP)发送一系列UDP包,其中每一包的长度(即Length字段)都按照smartconfig通信协议进行编码,SSID和密码就包含在Length字段中,随后设备便可以获得并解析出所需的信息。数据包结构如下图所示:
更多详细的内容可以到乐鑫官网查找:
https://www.espressif.com/zh-hans/support/documents/technical-documents?keys=&field_type_tid%5B%5D=14
3.3.3 AT指令
ESP826支持AT指令,这个使用单独的MCU去控制ESP8266提供便利。
TCP/IP指令一览表
指令 |
实际响应 Actual Response |
AT+CIPSTATUS |
查询网络连接信息 |
AT+CIPDOMAIN |
域名解析功能 |
AT+CIPDNS |
自定义DNS服务器 |
AT+CIPSTAMAC |
设置ESP32 Station的MAC地址 |
AT+CIPAPMAC |
设置ESP32 SoftAP的MAC地址 |
AT+CIPSTA |
设置ESP32 Station的IP地址 |
AT+CIPAP |
设置ESP32 SoftAP的IP地址 |
AT+CIPSTART |
建立TCP连接,UDP传输或者SSL连接 |
AT+CIPSEND |
发送数据 |
AT+CIPSENDEX |
发送数据,达到设置长度,或者遇到字符\0,则发送数据 |
AT+CIPCLOSE |
关闭TCP/UDP/SSL传输 |
AT+CIFSR |
查询本地IP地址 |
AT+CIPMUX |
设置多连接模式 |
AT+CIPSERVER |
设置TCP服务器 |
AT+CIPSERVERMAXCONN |
设置TCP服务器允许的最大连接数 |
AT+CIPMODE |
设置透传模式 |
AT+SAVETRANSLINK |
保存透传连接到Flash |
AT+CIPSTO |
设置ESP32作为TCP服务器的超时时间 |
AT+CIUPDATE |
通过Wi-Fi升级软件 |
AT+CIPSNTPCFG |
设置时域和SNTP服务器 |
AT+PING |
Ping功能 |
AT指令如何使用见下一篇文章。
3.4 微信小程序
3.4.1 介绍
什么是微信小程序:小程序是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或者搜一下即可打开应用,也体现了“用完即走”的理念,用户不用关心是否安装太多应用的问题,应用将无处不在,随时可用,但又无须安装卸载。
——张小龙
3.4.2 相比于Android、IOS、PC的APP的优势
- 跨平台(对于IOS和Android两个平台只需要开发一套程序);
- 具备缓存能力;
- 上手容易,开发逻辑较为简单;
- 开发环境很干净,无需安装任何除开发工具外的其他软件。
- 发布和部署流程非常简单,几乎是“傻瓜式”,点击几下就可以将应用发布到腾讯云;
- 小程序之所以在公布后引起了互联网圈儿和开发者们极高的关注度,原因并不在技术上,无数开发者、创业者看中的是微信天然的关系链与获客能力,这也是小程序最大的优势;
更多关于微信小程序的优缺点和其他知识点,可以查阅《微信小程序开发入门与实践》等其他书籍。
3.4.3 在实践项目中,微信小程序的作用
3.4.3.1 使用AirKiss给ESP8266配网
AirKiss是微信硬件平台提供的一种WiFi设备快速入网配置技术,要使用微信客户端的方式配置设备入网,需要设备支持AirKiss技术。
AirKiss主要在如下场景中使用:
-
待接入互联网的设备不具备输入输出能力,如空调、空气净化器、烟雾报警器等;
在此,我们暂时使用安信可小程序给ESP8266配网,配网界面如下:
手机连接WiFi后,在Wi-Fi密码处填写密码,然后点击连接即可。进入AirKiss smartconfig模式的Wifi模块在接收到小程序通过局域网发送的UDP报文后自动解析,并使用接收到的SSID和密码尝试连接WiFi。具体步骤见后续文章。
3.4.3.2 小程序在WIFI局域网内与硬件设备通信
在微信官方文档小程序中提供了网络接口,选取UDP作为微信小程序与硬件设备通信的通信协议。
https://developers.weixin.qq.com/miniprogram/dev/api/network/udp/wx.createUDPSocket.html
3.5 测试
使用STM32F407+ESP8266进行前期功能验证,实现STM32F407通过AT指令控制ESP8266与网络助手通信。大致流程如下:
4 优化
4.1 成本优化
将程序都集成在一块ESP8266MCU上,本身ESP8266是一个32bit的微处理器,具备运算和控制能力,也提供编译开发环境和刷写工具,所以可以将所有控制逻辑在官方提供的编译开发环境中实现,并将烧录文件下载到ESP8266微控制器中,这样可以节省一块STM32F0系列的芯片,以及周边附属的电阻、电容、晶振等元器件,可以节省3到4元的成本。
4.2 功能优化
最终产品实现的功能是控制空调的开关,可以增加更多的功能,如升降温、设置空调模式这些几乎所有空调都具备的功能。
在这个还没被标准化的海洋里肆意的遨游。以实现功能和低成本在细分领域里觅食。