毕业设计 |
您所在的位置:网站首页 › 智能家居设计毕业论文 › 毕业设计 |
智能家具系统分为两个不同版本系列: ①系列一:手机app远程控制、远程检测温湿度显示在app,(云平台) ---------本文章 ②系列二:语音识别控制 https://blog.csdn.net/m0_59113542/article/details/123742383 硬件采购链接: 步进电机及相关驱动步进电机28BYJ48 uln2003驱动板器4相5线5V 12V减速电机马达模块-tmall.com天猫第四个套餐舵机SG90 SG90PRO MG90S 9g舵机 固定翼航模遥控飞机 9克 马达航模-淘宝网 (taobao.com)第一个风扇旗速5010风扇5V 50*50*10 5CM小电脑小风扇机箱风扇直流散热风扇-淘宝网 (taobao.com)第二个stm最小系统板原装正品ARM 核心板 STM32F103C8T6开发板 最小系统板 STM32-淘宝网 (taobao.com)esp-01sESP8266串口WIFI 无线模块 WIF收发无线模块 ESP-01 ESP-01S-淘宝网 (taobao.com)第二个dht11【优信电子】DHT11温度模块 湿度模块 温湿度模块 DHT11传感器-淘宝网 (taobao.com) 手机app及相关程序开源,百度网盘下载,放在最下方。 一、项目介绍 功能:1、手机app远程控制相应外设 APP→单片机 2、单片机采集温度远程发送到手机显示 单片机→APP3、 OLED显示万年历及外设的工作状态 实现:本设计由STM32驱动相关外设,ESP-01S(8266)连接云平台(巴法云),手机app也连接云平台,以此进行远程信息交互。 远程控制:手机app连接巴法云平台,esp-01s(esp8266)也连接平台,当手机按键按下时向云平台发送控制信息,esp8266接收到该信息,并传输给stm32,由stm32完成相应的控制功能。 温度显示:本项目使用esp-01s(esp8266)驱动dht11测温,然后直接上传云平台数据,手机订阅平台,从而显示温湿度。 (大白话就是:手机将数据放到云平台,stm32通过esp联网去云平台读数据) OLED屏显示:本项目额外开发显示功能,屏幕具有两种显示:其一显示万年历,其二显示外设的工作状态,两种显示使用按键K0切换。 ①显示万年历:上电后自动显示,当时间不对时,可点击K1按键进入时间设置界面,然后通过K2、K3按键进行时间修改。 ②显示外设工作状态:当手机端发送控制指令时,STM32完成相关驱动后,屏幕会进入定时显示界面,待定时结束后进入通体显示界面。 1、总体展示图: 2、
总体显示界面 定时显示界面 万年历显示界面 时间修改界面 了解完工作过程,接下来就和闯关游戏一样,一关关的闯,打怪升级,消灭怪兽,营救公主,最终和公主殿下过上了幸福的生活。。。。。哈哈哈,扯远了,说正事、说正事。 开始闯关:大家可以想一下万恶的新冠病毒的传播,传染源→传播途径→接收端感染人群。。。。病毒传染首先得有传染源吧,不可能和孙悟空一样从石头里蹦出来吧。(与本工程信号产生装置贴合,也就是手机app) 然后是传播途径(也就是远程传输 巴法云平台) 然后是接受端(也就是我们的stm32) 系统的开发分为以下三步: 1、手机app制作及如何向云平台发送信息。 2、联网(既然要远程控制,肯定是需要走网络的啊,让我们的信号通过网络“飞过去”,这是esp-01s的工作) 3、stm32接收到命令后的外设驱动 二、逐步闯关---分步实现接下来就是具体的闯关打怪时间。 第一关:手机app制作及如何向云平台发送信息闯关吗,肯定要有法宝啊,在这里向大家介绍一个很nice的"法宝",appinventor,一款麻省理工研发的开发安卓app的平台,是不是一听"麻省理工",感觉嘎嘎高大上,是我们能学会的吗!!!!,其实appinventor嘎嘎简单,比我们用的c语言简单一万倍。 大白话说说他的功能,就是将一些按键、文本框拖入手机界面,然后图形化编程当按键按下的时候实现什么功能就行。
右边这个图像就是编程的,用模块化编程,拼积木都会吧,嘎嘎简单吧!!!! 然后如何让这个app联网呢,这就是另一个"法宝" 巴法云平台了。 大家登录网站后,点击我标记的地方,这里有详细的介绍如何使用。 第二关:ESP-01s联网esp-01s本来就是一个wifi模块,它是通过连接周围的wifi从而上网,连接巴法云平台的。 且esp-01s可以用AT指令进行配置,也可以用arduino进行二次开发,本人选择二次开发,我会将程序放在下面,大家直接简单修改几个参数就能用了。 就修改这几个参数,就能用啦,而且以后想做远程控制的东西,都可以这么用。一劳永逸是不是YYDS。嘿嘿嘿 语言总是最无力的,说再多也不一定能解释清楚,楼主呕心沥血给大家找了一个4分钟的视频,讲解的嘎嘎清楚。https://www.bilibili.com/video/BV1zy4y1k7Mn?spm_id_from=333.337.search-card.all.click 除此之外还有一个详细的介绍文章,用一句话说就是通透: esp8266-01s接入巴法云,开源app远程控制,微信小程序控制 - 巴法云 - 博客园 (cnblogs.com) 第三关:stm32接收到命令后的外设驱动esp8266-01s接收到平台数据后,通过串口发送给stm32,stm32要做的事就是解析命令,并驱动外设。 我们做的是智能家具的模型,不可能真的去改装家具,这里采用模拟的方式,用步进电机模拟窗帘,用舵机模拟开关门,led灯,风扇,继电器。 大家可以发挥自己的想象,用别的外设,这就需要大家自己探讨了。 三、程序实现 main.c通过USART3与esp8266-01s连接,接受数据,在主函数中解析命令,并相关操作。 #include "delay.h" #include "sys.h" #include "usart.h" #include "usart3.h" #include "esp8266.h" #include "Servo_motor.h" #include "step_motor.h" #include "string.h" #include "timer.h" #include "led.h" #include #include /* 项目的主要内容:STM32配合ESP8266模块与服务器数据交互 ESP8266的连接:USART3(PB10、PB11) 如何判断数据接收完全? 1、出现了换行符; 2、如果超过10ms了都没有下一条数据(TIM7来进行10ms的定时)。 */ int main(void) { u16 rlen=0;//保存接收到的数据长度 // u16 t,len;//串口1调试 char data_tiqu[100];//将接收到的数据保存到该数组 u8 data[10];//最终提取的数据 int k=0,s=0;//保存cmd2开头的数据的下标 int i=0,j=0; char cmd[]="msg"; int flag=1;//收到正确数据标志位,默认为1, u8 timex=0;//每200发送1次心跳包的标志位 delay_init(); //延时函数初始化 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置中断优先级分组为组2:2位抢占优先级,2位响应优先级 LED_Init(); servo_init(); Step_Motor_GPIO_Init(); uart_init(115200); //串口初始化为115200 usart3_init(115200); servo_angle(80); //私服电机初始角度(关门状态) while(1) { timex++; if(USART3_RX_STA&0X8000) //接收到一次数据了 { rlen=USART3_RX_STA&0X7FFF; //得到本次接收到的数据长度 USART3_RX_BUF[rlen]=0; //添加结束符 //printf("%s",USART3_RX_BUF); //发送到串口 //数据提取 if(strncmp(USART3_RX_BUF,"cmd=2",5)==0) { for(i=0;i |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |