引言
出生于互联网时代的我们,见证了智能手机和个人电脑通过计算机网络互相进行连接,把每个人紧密地连接在一起,形成了一个地球村。而今,我们即将迈入5G时代,在通信技术不断发展的今天,连接到互联网的将不仅是昂贵精密的手机电脑,身边的各种物体也可以通过物联网连接到云端,由物联网平台管理上云的物联网设备,使用者通过浏览器,小程序等接收物发出的通知并且完成想过操作。物联网不仅将物与物连接在一起,也将物与人紧密地连接在一起,让生活更加智慧便捷。这,就是即将到来的AIOT时代。
本次实验主要通过自制一个家庭物联网温湿度检测模块,学习具体的基于MQTT协议的物联网设计制作。在应用的过程中,也加深了对计算机网络各层次之间的理解。
硬件设备原代码附于文末。
需求分析
- 硬件设备可以读取温湿度信息
- 硬件设备可连接互联网上传消息
- 云端物联网平台24小时不间断工作,完成接入设备的管理,消息存储与转发
- web服务器接收物联网平台的信息,经过处理使用户通过网页访问的方式查询信息
系统设计
系统总体数据流
- 硬件设备stm32作为终端结点,通过MQTT协议将数据上传至物联网平台,同时接受物联网平台下发的信息。
- 云服务器作为与用户直接联系的平台,既作为http服务端,使用http协议向用户展示温湿度等信息接收用户发送的命令信息,又作为mqtt客户端与物联网平台交换信息。
- 物联网平台作为消息的中转站,负责物联网设备的管理与消息的转发。
- 总体计算机网络应用层协议数据流如下图
硬件设备端
各模块设计
- 为实现开发的便捷性和稳定性,使用意法半导体的STM32F103ZET6作为主控MCU,接收各传感器的消息。负责与服务器建立连接,并将消息构造成MQTT报文,上传至云端物联网平台。
- 使用DHT11温湿度传感器,可同时检测温湿度,测量范围为0-100,精度为1度,采用单总线与主控芯片完成数据传递,单总线协议不是本文主要内容,概不介绍
- 使用ESP8266模块完成硬件设备的物联网功能,ESP8266在数据链路层使用WIFI协议,适用于家庭室内这种不需要经常移动的场合。ESP8266已完整封装TCP/IP协议,只需要通过AT指令连接WIFI网络,然后进入透传模式,主控MCU发送过来的MQTT消息包就会经ESP8266发送至互联网,完成设备之间的解耦。ESP8266模块通过串口与主控MCU完成通讯。
硬件设备数据流
云端物联网服务平台和Web服务器
-
云端服务全部使用阿里云平台的服务,阿里云的服务具有稳定性强,配置便捷的特点,方便部署物联网应用,云端总体应用架构如下。
-
云端物联网平台使用阿里云物联网平台。阿里云物联网平台为设备提供安全可靠的连接通信能力,向下连接海量设备,支撑设备数据采集上云;向上提供云端API,服务端通过调用云端API将指令下发至设备端,实现远程控制。提供设备接入,设备管理,安全能力和规则引擎。其中规则引擎用来完成数据转发,负责沟通数据在设备间,设备与数据库间,设备与服务器间流转。
-
Web服务器使用阿里云服务器ECS,云服务器(Elastic Compute Service,简称ECS)是阿里云提供的性能卓越、稳定可靠、弹性扩展的IaaS(Infrastructure as a Service)级别云计算服务。云服务器ECS免去了您采购IT硬件的前期准备,让您像使用水、电、天然气等公共资源一样便捷、高效地使用服务器,实现计算资源的即开即用和弹性伸缩。阿里云ECS持续提供创新型服务器,解决多种业务需求,助力业务发展。
MQTT协议
简介
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低