单片机学习小组
直播中

杨丽

7年用户 1292经验值
私信 关注

如何从嵌入式开发/云平台开发/Android端来实现一个物联网应用开发?

如何从嵌入式开发/云平台开发/Android端来实现一个物联网应用开发?

回帖(1)

郑尧

2022-1-20 14:25:43
  这是我的物联网开发系列文章,将介绍如何从嵌入式开发、云平台开发、Android端开发来实现一个简单的物联网应用开发,体验物联网全栈开发的过程,积累开发的经验。
本篇文章为系列文章的第一篇,主要介绍该系统的实现目标,硬件、软件环境,使用的协议,系统的基本框架等内容。
接下来是暑假,争取系列文章每周更新一到两篇。


一、关于物联网应用

1.物联网应用的典型架构





  • 物联网设备:物联网的终端感知设备;
  • 网关:物联网设备通常通过无线方式接入互联网。网关通过无线接收数据,并通过有线将数据传输到物联网云平台;
  • 物联网云平台:功能主要包括存储物联网感知数据,提供相应的数据查询、分析、处理、展示;物联网终端、网关设备的接入和管理;设备间通信支持;多重安全防护保障等;
  • 客户端:应用开发者开发的各类用户端应用。

2.物联网应用的分层架构

上述的物联网的典型架构实际上也可以简化为一种三层的层次架构——感知控制层、网络层、应用层。




  • 感知控制层:指物联网终端设备,包括传感设备(如温度传感器)和控制设备(如电机),是获取物联网数据的起点,同时也对某些量(如温度)进行控制的实现终端。
  • 网络层:主要指网关、物联网云平台以及相关的通信协议(如:MQTT、TCP/IP、WiFi),负责网络通信和数据的操作和存储。
  • 应用层:指Web网页、手机APP、小程序等用户端的应用程序,向用户提供管理设备、查看数据等服务。

二、关于MQTT协议

1.MQTT协议的简介

MQTT(消息队列遥测传输) 是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在 TCP/IP协议族上。
MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。1
2.MQTT协议的特点

MQTT协议具有以下主要的几项特性:


  • 使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合;
  • 对负载内容屏蔽的消息传输;
  • 使用 TCP/IP 提供网络连接;
  • 有三种消息发布服务质量(QoS):




  • “至多一次”(QoS0),消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。
  • “至少一次”(QoS1),确保消息到达,但消息重复可能会发生。
  • “只有一次”(QoS2),确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。



  • 小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量;
  • 使用 Last Will (遗嘱)和 Testament 特性通知有关各方客户端异常中断的机制。

三、系统实现目标

1.设备端



  • 设备端能够通过传感器获取温度、湿度和亮度的数据;
  • 设备端能够根据预设的条件(如:温度达到某个数值)自动开启LED或者风扇;
  • 设备端能够通过OLED屏幕显示当时的数据和时间;
  • 设备端能通过蜂鸣器提供声音反馈(例如:故障);
  • 设备端通过WiFi协议、MQTT协议等网络通信协议接入云端,实现上报数据、获取云端数据的功能;
  • 设备端能够通过按键进入近场WiFi连接模式,提供热点与手机连接,并在APP端中可以获取设备信息、设置WiFi参数;
  • 设备端能够通过阿里云物联网平台的NTP服务联网获取unix时间。

2.网页端



  • 基于阿里云物联网平台的IoT Studio开发出网页端,能够实现远程控制设备、查看设备数据和状态、查看云端历史数据;
  • 网页端能够通过域名进行外部访问。

注:阿里云物联网平台的IoT Studio开发的Web网页需要通过绑定外部域名才能实现外部访问,否则只能通过阿里云平台进行访问。
3.APP端



  • APP端通过阿里云的API获取云端的数据;
  • APP端能够远程控制设备、查看设备的数据;
  • APP端能够通过连接设备端的热点获取设备信息、控制设备。

注:由于目前阿里云物联网平台IoT Studio的移动应用可视化开发功能没有对所有用户开放,所以我这里只能在Android Studio通过阿里云的API实现APP的相关的功能。
四、硬件选择和软件环境

1.硬件

1.1设备端

[tr]项目型号用途图片[/tr]
单片机STM32F103C8T6作为设备端的主控模块
温湿度模块DHT11获取温湿度的数据
亮度模块光敏电阻传感器(4针)获取亮度的数据
通信模块ESP-12S模块(ESP8266)通过串口AT指令进行WiFi通信
显示模块0.96寸OLED显示屏(SPI IIC 7针)显示设备状态和当前的数据
声音模块有源蜂鸣器(高电平触发)当进行某些操作或者设备故障时提供一定的声音反馈
电机模块130电机马达+继电器模块风扇降温功能(文章首发时此处电机模块使用的是28BYJ-48步进电机,后来发现手头还有个130电机,所以电机模块就换成了130电机)
电源模块3.3V、5V、12V输出DC输入模块+带DC头的电池盒提供多种电源电压
1.2辅助硬件

[tr]项目型号用途图片[/tr]
下载调试器STLink V2为STM32提供下载调试程序的功能
USB转TTL模块CH340作为串口通信调试使用
ESP-12S模块转接板
为ESP-12S模块提供转接功能(从安信可官方淘宝店购买的ESP-12S模块本身没有焊接排针,所以需要自己焊接相关器件)
杜邦线母对母、公对公、公对母连接各个模块的引脚
面包板
方便一些线路(如:VCC、GND)的共享使用
面包板专用跳线
用于面包板上的线路连接
焊接工具电烙铁、松香、焊锡、镊子等用于焊接排针等
2.软件平台

2.1云平台




  • 阿里云物联网平台:阿里云官网链接
  • 阿里云域名、CDN、云解析DNS等业务
    注:以上业务仅仅用于域名的注册、备案、解析等业务,如果不需要在Web端使用域名的话可以不开通此类业务。

2.2开发软件

[tr]软件版本下载链接/安装教程[/tr]
Keil μVision5(MDK5)V5.18.0链接
STM32CubeMX5.6.1链接
Android Studio4.0链接
安信可串口调试助手v1.2.3链接
ESP Flash下载工具v3.8.5链接
字模软件PCtoLCD2002链接
阿里云物联平台配置软件v1.0.0链接
举报

更多回帖

发帖
×
20
完善资料,
赚取积分