发布日期:2024-10-06 17:30 浏览次数: 次
【毕业设计】基于机智云的智能晾衣控制系统摘要: 以Android手机为人机交互终端, 以STMicroelectronics的STM32F103C8T6为核心控制终端, 基于机智云物联网平台, 设计了一套用户通过互联网就能有效地对家中晾衣架进行操作的嵌入式智能控制系统, 避免人不在家时, 衣物被淋湿的问题。
该系统开发来自机智云开发者的毕设,具备手动和自动两种控制模式实现对晾衣架的合理控制, 并且一旦控制端与服务器失去连接, 将自动切换至自动模式工作。控制端采用FreeRTOS实时操作系统, 在实时性方面表现良好, 同时具有高稳定性能稳定地与机智云服务器进行通信。
晾晒衣物是日常生活的一部分, 目前, 市面上有多种多样的晾衣架, 包括手动和电动等。但大部分的电动“智能”晾衣, 还依然需要用户站在旁边, 按下按钮进行操作, 对用户而言仅仅只是省力[1]。因此, 如何通过Internet,实现智能控制和远程控制具有现实的意义[2]。机智云物联网平台是面向开发者的一个全自动软硬件的开发平台 (Paa S)[3], 本文依托于机智云物联网平台, 设计了一套通过手机APP, 对家中的晾衣架进行远程控制的系统。
智能晾衣控制系统以STM32F103C8T6单片机为核心, 通过光强传感器、雨滴传感器、温度传感器、湿度传感器等采集环境数据, 进行分析处理后, 再通过PWM方式控制电机的运行状态来实现将晾衣架伸出阳台, 或者收回阳台。同时将当前环境数据及晾衣架状态通过esp8266WiFi模块上传至机智云服务器, 用户端通过APP可以实时获取到该状态,并且用户可在自动控制与手动控制间任意地进行切换,实现对整个系统的有效控制。图1为智能晾衣控制系统的原理框图。
智能晾衣控制系统的主采用STMicroelectronics公司生产的cotex-M3系列的STM32F103C8T6微。其拥有高达20KB的SRAM及64KB的闪存程序存储器,完全能够满足本系统的控制要求;其具有低功耗的特性,工作电压采用3.3 V, 能有效地驱动绝大部分现有模块器件, 适合嵌入式控制端;
微的时钟,由8MHz的晶振组成的震荡电路向微输入, STM32F103C8T6再通过PLL (锁相环) 倍频至72 MHz作为系统时钟, 并通过分频等为外设提供不同的时钟。
智能控制终端的温湿度采集采用DHT11温湿度传感器模块。电阻式感湿元件与NTC测温元件很好地被集成进了该温湿度传感器中, 并由内嵌的一个微对感湿元件与测温元件采集到的数据进行解析。DHT11湿度精度为±5%RH, 温度为±2℃,能够将检测到的环境温湿度, 通过其DATA数据引脚, 以数字形式向外输出。在与STM32F103C8T6微的硬件连接中, 需要将温湿度传感器的DATA引脚通过5kΩ的上拉电阻进行上拉, 以提高驱动力。如图2。
光强数据由TSL2560传感器获取。作为性能优良的第二代周围环境光强度传感器, 能够为晾衣控制系统采集到足够精度的环境光强数据。其内部结构框图如图3所示。通道0和通道1各连接着一个光敏二极管, 其中通道0的光敏二极管对可见光和红外线都能灵敏地感知到, 而通道1则仅仅能对红外线灵敏地感知到。流过光敏二极管的电流经过积分式A/D转换器的积分, 被转化成了数字量, 并且, 转换结束后其结果被存入相应的寄存器中。整个积分、转换过程完成后, A/D积分转换器将重复进行下一转换过程。STM32F103C8T6可通过I2C总线协议对其寄存器进行访问, 从而获取光强强度。
雨滴采集部分由雨滴传感器获取, 其AO模拟量输出口输出雨滴收集板上的雨滴量对应的模拟值, 将其AO口与STM32F103C8T6的AD的输入引脚相连接,通过AD转换后的数字量, 即可获取到雨滴数据。
STM32F103C8T6采用脉冲宽度调制 (Pulse Width Modulation, PWM) ,对直流电机进行控制。PWM控制方式相比于模拟电流控制, 具有功耗低、抗噪能力强等特点。PWM信号由STM32F103C8T6的GPIOA0引脚输出, 输入到电机的正极, 微的GPIOA1引脚与电机的负极连接, 控制电机的正转及反转。当GPIOA1引脚向外输出低电平时,产生的PWM信号使电机正向运转,反之GPIOA1引脚输出高电平时,电机反向运转,从而达到控制晾衣架伸出与收回的功能。
通信模块采用的是由乐鑫公司开发的ESP8266无线Wi Fi模块,该模块高度集成了射频balun、天线开关、过滤器、低噪放大器、功率放大器和电源管理模块, 同时内嵌了32位的TensilicaL106单片机, 能够运行在最高可达160MHz的时钟下, 具有16位RSIC和极低的运行功耗。能够使用实时操作系统, 并且只有20%的MIPS被它的Wi Fi协议栈所使用, 用户可对剩余的80%进行开发与编程。
其还能够通过配置寄存器实现3种不同的运行模式:深度睡眠模式、睡眠模式和激活模式, 使得能对其功耗更好地进行控制。本控制系统通过STM32F103C8T6的UART1与ESP8266模块进行数据交互, 实现数据由控制端上传至机智云平台的服务器, 并从机智云平台服务器获取相应的控制信息。
控制程序将采用FreeRTOS实时操作系统, 该系统是一个轻量级的、可抢占的实时操作系统, 提供了任务管理、互斥锁、信号量、消息队列等功能, 任务由系统轮询进行调度, 分别具有就绪态、运行态、挂起状态等。每个任务都具有优先级, 当系统调度时, 已经处于就绪态的高优先级的任务会优先被系统调用执行,从而保证了紧急任务的实时性。本系统的流程框图如图4。
当控制板开机运行时,首先执行FreeRTOS实时操作系统的初时化,紧接着初始化各个外设, 然后将系统运行的任务创建出来,最终执行任务,此时,FreeRTOS实时操作系统会根据设定的参数,对任务进行相应的调度执行。其中,通信协议处理任务为最高优先级,它负责处理从机智云服务器端接收到的请求, 包括心跳、控制指令、系统状态查询、重启MCU、在线升级等。
对于对时序要求较高的模块(如DHT11温湿度传感器模块)进行控制时,本控制系统在操作该类前, 让FreeR-TOS进入临界量状态 (关闭所有中断),以保证时序的准确性。执行完成后,需要退出临界量状态,使系统恢复至原状态,才能实时响应外界中断。
机智云平台提供了面向控制端及Android手机APP的应用程序编程接口 (Application ProgrammingInterface, API) ,开发者能够很轻松地进入机智云平台的开发者中心, 添加本控制系统的外设的设备节点,平台则会自动生成相应的通信协议, 按照此通信协议, 即可与机智云平台进行数据交互, 从而达到通过Internet即可在远程对本晾衣系统进行方便的控制。图5是在机智云物联网平台后台获取到的设备运行数据情况。
手机APP端采用机智云物联网平台提供的SDK包进行二次开发, 开发者只需对Active进行修改[5], 即可为用户提供友好的界面, 提高用户体验。在需要提供额外后台功能时, 可对后台进行改动。图6为本系统开发的APP界面。humi后面的数值表示控制板上传的环境湿度, temperature后面的数值为环境温度, light为光强, 三者都为只读状态,由控制板上传数据。
motor开关为晾衣控制开关, 当处于开启状态时, 晾衣架将伸出, 关闭时, 晾衣架将在电机控制下缩回。is_automatic为自动手动切换按钮, 开启时, 控制板将自动根据环境数据进行判别,决定是否晾衣,关闭时,为手动模式,可由用户进行控制。
本晾衣控制系统依托机智云AIoT平台, 通过Android手机APP与用户交互, 以STM32F103C8T6为控制板主控芯片, 实现了通过Internet网络对家中的晾衣架控制系统的有效控制, 具备自动、手动两种模式, 纵使用户身在异地, 依然能够对家中的晾衣架进行控制, 使得衣物免遭雨淋。
并且一旦控制端与网络失去连接, 该系统将自动切换至自动控制模式, 保证了系统的安全性与稳定性。经过测试, 系统控制效果良好,能实时地响应用户端的控制指令来驱动电机,环境数据采集准确。手动模式下实时性高, 自动模式下自动分析控制准确, 满足日常使用。断网测试时, 能正确执行异常处理, 切换至自动模式。
1.在对GPIOx_ODR的个别位进行编程时,软件不需要禁止中断。 2.GPIO具有锁定机制。主要是在一些关键引脚上为了防止程序跑掉而引起不必要的后果。 3.GPIO的库函数问题, GPIO_SetBits:置所选端口的一个或者多个位高; GPIO_ResetBits:相应的设置相应的一个或者多个位高; GPIO_Init:设置A,B,C,D,E端口的任一个I/O的输入输出配置信息,初始化I/O芯片; GPIO_Pin:设置带选择的引脚号(GPIO_Pin_1:选中1引脚); GPIO_Speed:设置所选中的引脚的频率(GPIO_Speed_10MHz); GPIO_Mode:设置所选中的引脚的工作状态,做以上几步都必须先定
STM32提供68个中断通道,每一个中断通道对应一个中断源,这里的中断源是指引发中断的外设(例如,I2C,UART,EXTI等等)。每一个中断源又可以包括多种中断发生情况,例如UART发送数据完毕,接收到数据等情况均可能引起UART中断源向STM32内核提出中断处理请求。 STM32的中断优先级可以分为抢占式优先级和非抢占式优先级控制两部分。 为了符合COTEX-M3标准,STM32的中断源优先级寄存器采用8位的方式存储,但是只是用了高4位,低4位保留未用。高4位又被分为了两段:抢占式优先级控制段和非抢占式优先级控制段。STM32提供了一个函数 NVIC_PriorityGroupConfig(NVIC_PriorityGrou
前言:目前我觉得自己还没有能够深入用到这个SysTick的时候,只是要用到了delay_us()和delay_ms(),因为碰到了这个问题,所以想着提前了解一下,免得后来造成一脸懵逼的情况;毕竟没有社会经验的高手指点迷津,这里学习还是系统一点好; systick是个啥? 是一个24位倒记数定时器; systick的功能是什么 为操作系统提供硬件上的定时中断(滴答中断); 保证系统运行的时候不会让一个任务而占用整个系统; 可以制作精准的定时功能; …… systick定时器的特点 可以工作在芯片睡眠状态下 此定时器被在NVIC(中断向量)中,可以用于产生异常和中断; …… 编程涉及到的寄存器 SysTick_C
Systick分析 /
字符发送的过程描述:在UART的发送过程中先将数据输入到发送数据寄存器中(TDR)此时(TXE)被硬件置1,之后TDR寄存器将数据串行移入到发送移位寄存器中,将数据在TX端口发送,此时(TC)被硬件置1。 发送与接收是逆过程。 UART发送配置步骤: 1.通过USART_CR1寄存器上置位UE来激活USART。 2.编程USART_CR1的M位来定义字长。 3.在USART_CR2中编程停止位的位数。 4.如果采用多缓冲器通信,配置USART_CR3中的DMA使能位(DMAT)。按多缓冲器通信中的描述配置DMA寄存器。 5.利用USART_BRR寄存器选择要求的波特率。 6. 设
/*======================================================================================== *名 称: main.c *功 能: *入口 参数: *说 明: *范 例: *编者 时 间: *========================================================================================*/ #include stm32f10x.h #include 12864.h ErrorStatus HSEStartUp
单片机型号:STM32F091RCT6 在此文章中记录C++语言的命名规范半岛综合体育登录入口。 1、文件名均采用小写英文字母方式实现,多个英文单词之间用“_ 予以分割; 2、宏定义均采用大写英文字母方式实现,多个英文单词之间用“_ 予以分割; 3、自定义数据类型均小写英文字母方式实现,多个英文单词之间用“_ 予以分割; 4、类名首字母用C表示,后续采用匈牙利命名法,首字母大写,如遇英文缩写单词,则按照英文命名规范进行拼写,例如LED为缩写单词,但是英文规范可以写作led或Led,则类名用CLed表示,而HAL是硬件映射层的缩写,英文用全大写表示,使用时,则使用CHAL命名; 5、用类声明的类对象,去除首字母C即可,例如CLe
有时候总在想,怎么样的学习才是最好的?就像学习USB,到底只要学到会应用就可以了,还是要深入到协议内容和驱动底层呢?经常对别人说自己会某某东西,其实自己也只是一知半解的,只会些应用去糊弄别人。于是总在安慰自己:我只要会做些应用就可以了!!! 下面介绍STM32 USB工程的usb_endp.c文件和usb_istr.c两个文件。 首先是usb_endp.c,这个文件很简单,就是定义了结果几个端点输入输出函数,我的工程只有。 uint8_t USB_Receive_Buffer ; //端点接收数据的缓存 REPORT_COUNT=64 uint8_t USB_Send_Buffer ; //端点发送数据的缓存 volatile
Cortex-M 中断 Cortex-M 内核(STM32)的 MCU 提供了一个用于中断管理的嵌套向量中断(NVIC)。Cotex-M3 的 NVIC 最多支持 240 个 IRQ(中断请求)、1 个不可屏蔽中断(NMI)、1 个 Systick(滴答定时器)定时器中断和多个系统异常。 Cortex-M 处理器有多个用于管理中断和异常的可编程寄存器,这些寄存器大多数都在 NVIC 和系统控制块(SCB)中,CMSIS 将这些寄存器定义为结构体。以 STM32F103 为例,打开 core_cm3.h,有两个结构体,NVIC_Type 和 SCB_Type,就存储了这些信息。 优先级分组定义 当多个中断来临的时候处理
的交流电磁场检测实验系统设计 target=_blank
的WI-FI视频采集与传输系统设计 target=_blank
CubeMX AI 和 NanoEdge AI 的的眼动信号分类效果对比研究_禹鑫鹏 target=_blank
的频率采集方法在实时操作系统的应用 target=_blank
Follow me第二季第3期来啦!与得捷一起解锁高性能开发板【EK-RA6M5】超能力!
【新品】STM32H7R/S基于Cortex-M7,运行频率高达600 MHz,板载闪存型MCU 拥有高速的外部存储
【新品】STM32WBA54/55 支持BLE5.4、IEEE 802.15.4通信协议、Zigbee®、Thread和Matter协议
【新品】STM32MP2 最高配备双核Arm® Cortex®-A35和Cortex®-M33的STM32MP2系列微处理器
【新品】STM32H5-Arm® Cortex®-M33 内核,主频高达250MHz,提升性能与信息安全性
1 本次移植过程选择 linux-2 6 28 lcd驱动为参考移植到 linux-2 6 34 ok6410 开发板上。2 移植过程主要以给内核增加驱动的思想,在 dr ...
1 下载内核源码linux-2 6 34,解压到工作目录下。2 首先在内核中增加一个 SOC ,到 arch arm mach-s3c64xx 下将mach-smdk6410 c ...
病症:病症:arm启动后应用程序界面显示不正常(左面有部分未能正常显示)也就是左面少一块区域,右面多一部,原因:lcd显示驱动中场扫描的 ...
中断处理如果想使用中断:1初始化A设置源头查看原理图XEINT0 kpROW0 GPN0查看芯片手册使能B设置中断Thischapterdescribesthefunction ...
总体分析:你的目的是什么?你的计划是什么?你会碰到什么问题?你怎么解决的问题?你今天做了该做的事情了吗?你今天能把该做的事情做完吗 ...
站点相关:综合资讯51单片机PIC单片机AVR单片机ARM单片机嵌入式系统汽车电子消费电子数据处理视频教程电子百科其他技术STM32MSP430单片机资源下载单片机习题与教程