摘要: 以Android手机为人机交互终端, 以STMicroelectronics的STM32F103C8T6为核心控制终端, 基于机智云物联网平台, 设计了一套用户通过互联网就能有效地对家中晾衣架进行操作的嵌入式智能控制系统, 避免人不在家时, 衣物被淋湿的问题。
该系统开发来自机智云开发者的毕设,具备手动和自动两种控制模式实现对晾衣架的合理控制, 并且一旦控制端与服务器失去连接, 将自动切换至自动模式工作。控制端采用FreeRTOS实时操作系统, 在实时性方面表现良好, 同时具有高稳定性能稳定地与机智云服务器进行通信。
引言
晾晒衣物是日常生活的一部分, 目前, 市面上有多种多样的晾衣架, 包括手动和电动等。但大部分的电动“智能”晾衣, 还依然需要用户站在旁边, 按下按钮进行操作, 对用户而言仅仅只是省力[1]。因此, 如何通过Internet,实现智能控制和远程控制具有现实的意义[2]。机智云物联网平台是面向开发者的一个全自动软硬件的开发平台 (Paa S)[3], 本文依托于机智云物联网平台, 设计了一套通过手机APP, 对家中的晾衣架进行远程控制的系统。
1 系统总体简介
智能晾衣控制系统以STM32F103C8T6单片机为核心控制器, 通过光强传感器、雨滴传感器、温度传感器、湿度传感器等采集环境数据, 进行分析处理后, 再通过PWM方式控制电机的运行状态来实现将晾衣架伸出阳台, 或者收回阳台。同时将当前环境数据及晾衣架状态通过esp8266 WiFi模块上传至机智云服务器, 用户端通过APP可以实时获取到该状态,并且用户可在自动控制与手动控制间任意地进行切换,实现对整个系统的有效控制。图1为智能晾衣控制系统的原理框图。
图1 系统结构框图
2 智能控制系统硬件设计
2.1 主控制器模块
智能晾衣控制系统的主控制器采用STMicroelectronics公司生产的cotex-M3系列的STM32F103C8T6微控制器。其拥有高达20KB的SRAM及64KB的闪存程序存储器,完全能够满足本系统的控制要求;其具有低功耗的特性,工作电压采用3.3 V, 能有效地驱动绝大部分现有模块器件, 适合嵌入式控制端;
具有丰富的GPIO口及多种常用外设, 如:UART(Universal AsynchronousReceiver/Transmitter, 通用异步收发传输器)、SPI (Serial Periphera Interface, 串行外设接口) 、I2C (Inter-Integrated Circuit, 串行总线) 、定时器、AD、DA等, 能与各类传感器进行良好的交互。
微控制器的时钟,由8MHz的晶振组成的震荡电路向微控制器输入, STM32F103C8T6再通过PLL (锁相环) 倍频至72 MHz作为系统时钟, 并通过分频等为外设提供不同的时钟。
2.2 环境数据采集模块
智能控制终端的温湿度采集采用DHT11温湿度传感器模块。电阻式感湿元件与NTC测温元件很好地被集成进了该温湿度传感器中, 并由内嵌的一个微控制器对感湿元件与测温元件采集到的数据进行解析。DHT11湿度精度为±5%RH, 温度为±2℃,能够将检测到的环境温湿度, 通过其DATA数据引脚, 以数字形式向外输出。在与STM32F103C8T6微控制器的硬件连接中, 需要将温湿度传感器的DATA引脚通过5kΩ的上拉电阻进行上拉, 以提高驱动力。如图2。
图2 温度传感器连接
光强数据由TSL2560传感器获取。作为性能优良的第二代周围环境光强度传感器, 能够为晾衣控制系统采集到足够精度的环境光强数据。其内部结构框图如图3所示。通道0和通道1各连接着一个光敏二极管, 其中通道0的光敏二极管对可见光和红外线都能灵敏地感知到, 而通道1则仅仅能对红外线灵敏地感知到。流过光敏二极管的电流经过积分式A/D转换器的积分, 被转化成了数字量, 并且, 转换结束后其结果被存入相应的寄存器中。整个积分、转换过程完成后, A/D积分转换器将重复进行下一转换过程。STM32F103C8T6可通过I2C总线协议对其寄存器进行访问, 从而获取光强强度。
图3 TSL2560内部结构图
雨滴采集部分由雨滴传感器获取, 其AO模拟量输出口输出雨滴收集板上的雨滴量对应的模拟值, 将其AO口与STM32F103C8T6的AD的输入引脚相连接,通过AD转换后的数字量, 即可获取到雨滴数据。
2.3 电机驱动电路
STM32F103C8T6采用脉冲宽度调制 (Pulse Width Modulation, PWM) ,对直流电机进行控制。PWM控制方式相比于模拟电流控制, 具有功耗低、抗噪能力强等特点。PWM信号由STM32F103C8T6的GPIOA0引脚输出, 输入到电机的正极, 微控制器的GPIOA1引脚与电机的负极连接, 控制电机的正转及反转。当GPIOA1引脚向外输出低电平时,控制器产生的PWM信号使电机正向运转,反之GPIOA1引脚输出高电平时,电机反向运转,从而达到控制晾衣架伸出与收回的功能。
2.4 WiFi通信电路
通信模块采用的是由乐鑫公司开发的ESP8266无线Wi Fi模块,该模块高度集成了射频balun、天线开关、过滤器、低噪放大器、功率放大器和电源管理模块, 同时内嵌了32位的TensilicaL106单片机, 能够运行在最高可达160MHz的时钟下, 具有16位RSIC和极低的运行功耗。能够使用实时操作系统, 并且只有20%的MIPS被它的Wi Fi协议栈所使用, 用户可对剩余的80%进行开发与编程。
其还能够通过配置寄存器实现3种不同的运行模式:深度睡眠模式、睡眠模式和激活模式, 使得能对其功耗更好地进行控制。本控制系统通过STM32F103C8T6的UART1与ESP8266模块进行数据交互, 实现数据由控制端上传至机智云平台的服务器, 并从机智云平台服务器获取相应的控制信息。
3 智能控制系统软件设计
3.1 控制程序设计
控制程序将采用FreeRTOS实时操作系统, 该系统是一个轻量级的、可抢占的实时操作系统, 提供了任务管理、互斥锁、信号量、消息队列等功能, 任务由系统轮询进行调度, 分别具有就绪态、运行态、挂起状态等。每个任务都具有优先级, 当系统调度时, 已经处于就绪态的高优先级的任务会优先被系统调用执行,从而保证了紧急任务的实时性。本系统的流程框图如图4。
图4 系统流程图
当控制板开机运行时,首先执行FreeRTOS实时操作系统的初时化,紧接着初始化各个外设, 然后将系统运行的任务创建出来,最终执行任务,此时,FreeRTOS实时操作系统会根据设定的参数,对任务进行相应的调度执行。其中,通信协议处理任务为最高优先级,它负责处理从机智云服务器端接收到的请求, 包括心跳、控制指令、系统状态查询、重启MCU、在线升级等。
对于外设的控制,需要根据其datasheet来编写相应的驱动实现对其正确的访问控制[4]。
对于对时序要求较高的模块(如DHT11温湿度传感器模块)进行控制时,本控制系统在操作该类前, 让FreeR-TOS进入临界量状态 (关闭所有中断),以保证时序的准确性。执行完成后,需要退出临界量状态,使系统恢复至原状态,才能实时响应外界中断。
3.2 机智云物联网平台设置
机智云平台提供了面向控制端及Android手机APP的应用程序编程接口 (Application ProgrammingInterface, API) ,开发者能够很轻松地进入机智云平台的开发者中心, 添加本控制系统的外设的设备节点,平台则会自动生成相应的通信协议, 按照此通信协议, 即可与机智云平台进行数据交互, 从而达到通过Internet即可在远程对本晾衣系统进行方便的控制。图5是在机智云物联网平台后台获取到的设备运行数据情况。
图5 服务器后台数据
3.3 手机APP程序设计
手机APP端采用机智云物联网平台提供的SDK包进行二次开发, 开发者只需对Active进行修改[5], 即可为用户提供友好的界面, 提高用户体验。在需要提供额外后台功能时, 可对后台进行改动。图6为本系统开发的APP界面。humi后面的数值表示控制板上传的环境湿度, temperature后面的数值为环境温度, light为光强, 三者都为只读状态,由控制板上传数据。
motor开关为晾衣控制开关, 当处于开启状态时, 晾衣架将伸出, 关闭时, 晾衣架将在电机控制下缩回。is_automatic为自动手动切换按钮, 开启时, 控制板将自动根据环境数据进行判别,决定是否晾衣,关闭时,为手动模式,可由用户进行控制。
图6 APP界面图
4 结论
本晾衣控制系统依托机智云AIoT平台, 通过Android手机APP与用户交互, 以STM32F103C8T6为控制板主控芯片, 实现了通过Internet网络对家中的晾衣架控制系统的有效控制, 具备自动、手动两种模式, 纵使用户身在异地, 依然能够对家中的晾衣架进行控制, 使得衣物免遭雨淋。
并且一旦控制端与网络失去连接, 该系统将自动切换至自动控制模式, 保证了系统的安全性与稳定性。经过测试, 系统控制效果良好,能实时地响应用户端的控制指令来驱动电机,环境数据采集准确。手动模式下实时性高, 自动模式下自动分析控制准确, 满足日常使用。断网测试时, 能正确执行异常处理, 切换至自动模式。