毕业设计 STM32智能衣柜(ONENET云平台)(源码+硬件+论文)

这篇具有很好参考价值的文章主要介绍了毕业设计 STM32智能衣柜(ONENET云平台)(源码+硬件+论文)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


0 前言

🔥
这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。

为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是

🚩 毕业设计 STM32智能衣柜(ONENET云平台)(源码+硬件+论文)

🥇学长这里给一个题目综合评分(每项满分5分)

  • 难度系数:3分
  • 工作量:3分
  • 创新点:4分

🧿 项目分享:

https://gitee.com/sinonfin/sharing文章来源地址https://www.toymoban.com/news/detail-789214.html

基于stm32的智能衣柜,stm32,毕业设计,单片机,智能衣柜,云平台

1 主要功能

基于STM32的智能衣柜

  • 温度监测 按键控制 紫外线消毒
  • 加热 WiFi上传云服务器 onenet

设计功能如下:

  • 采用用stm32控制ds18b20采集温度
  • 按键可以设置上下限温度
  • 采集的温度低于下限温度时候,打开加热片开始加热
  • 加热到上限温度关闭加热片停止加热
  • 采集的温度可以在oled显示
  • 按键控制一个紫外线灯模块,按下打开紫外线灯一段时间,30s后自动关闭
  • 将采集的温度上传到物联网平台onenet

基于stm32的智能衣柜,stm32,毕业设计,单片机,智能衣柜,云平台

️设计背景

在科技高速发展、日新月异的今天,人们越来越注重生活舒适度和安全卫生。一切在曾经不曾注意到的微生物也引起了人们的广泛关注,螨虫,细菌,病毒纷纷进入人们的视线,如何消灭它们让生活更安全卫生就成了人们生活中的一件大事,这就促发了智能消毒衣柜的诞生。

️资料

(含程序源码、电路原理图、元器件资料、开发工具及视频、系统框图、参考文资料、ppt模板等)

2 硬件设计(原理图)

基于stm32的智能衣柜,stm32,毕业设计,单片机,智能衣柜,云平台

3 核心软件设计

篇幅有限,不过多复述详细设计细节,详细的设计分享在论文中。。。

软件设计

本设计软件部分需要实现如下功能:

  • 1、 检测温湿度
  • 2、 控制紫外线灯和加热板
  • 3、 设置消毒时间
  • 4、 警报

主程序介绍

主程序为程序的入口函数,该函数的函数名为main();任何单片机的C语言程序都从此程序开始运行,程序将该处的地址定义为开始地址,单片机上电复位后进入main函数,首先进行初始化设置,首先初始化LCD1602,然后对压力传感器进行初始化,然后转换一次压力值,显示静态数据

基于stm32的智能衣柜,stm32,毕业设计,单片机,智能衣柜,云平台

按键扫描程序设计流程

基于stm32的智能衣柜,stm32,毕业设计,单片机,智能衣柜,云平台

DHT11 读取程序流程图

DHT11采用单总线通信极大的减少了硬件上的消耗,只需要通过一个上拉电阻与单片机端口相连就可以,但是相应的单总线读取程序较为复杂,而且对时序的要求极为严格。一次通讯时间在4ms左右,数据分为小数与整数部分,一次完整的数据传输为40bit,高位先出。

基于stm32的智能衣柜,stm32,毕业设计,单片机,智能衣柜,云平台

LCD12864 显示流程图

需要注意的是,在 LCD12864 初始化过程中, 通过写入 0x06 来设置光标的自动移位, 这就意味着在写入一个字符后光标会自动向右移动一位, 下一次的写入便直接在右侧输入, 减少了人为的移动光标。 而写入 0x3c 会把光标设置成不闪烁并且隐藏。

基于stm32的智能衣柜,stm32,毕业设计,单片机,智能衣柜,云平台

关键代码

sbit rs = P2^5;
sbit e = P2^7;
sbit rw = P2^6;
sbit MISO = P2^3;
sbit MOSI = P2^2;
sbit SCLK = P2^1;
sbit SS = P2^0;
sbit K1 = P1^0;
sbit K2 = P1^1;
sbit K3 = P1^2;
sbit K4 = P1^3;
sbit LED1 = P1^6;
sbit LED2 = P1^7;
sbit DQ = P3^3;
uchar table1[]=" 00.0 C 00.0%RH";
uchar table2[]="SET 0:00 12:00";
uchar caToneAdd[ ]={0x12,0x20,0x24,0x2e,0x33,0x3c,0x41,0x4b};
uchar t1,t2,fen,miao,hour,min,sec,sec0;
float T,RH,F;
bit flag,tt=1,al=0;
/*******************************************************************
延时函数
********************************************************************/
void delayus(uchar i) //uS 延时
{
while(i--);
}
void delayms(uchar z) //mS 延时
{
 uchar x,y;
 for(x=z;x>0;x--)
 for(y=110;y>0;y--);
}
/*******************************************************************
LCD1602 相关函数
********************************************************************/
void write_com(uchar a) //1602 写命令
{
 rs=0;
rw=0;
 P0=a;
 e=0;
 delayms(2);
 e=1;
 delayms(2);
 e=0;
}
void write_data(uchar b) //1602 写数据
{
 rs=1;
rw=0;
 P0=b;
 e=0;
 delayms(2);
 e=1;
 delayms(2);
 e=0;
}
void init_LCD() //1602 初始化
{
 write_com(0x38); //显示模式设置
 write_com(0x0c); // 显示开关及光标设置
 write_com(0x01); // 显示清零, 数据指针清零
 write_com(0x06); // 地址指针、 光标加 1
}
/*******************************************************************
DS18B20 函数
********************************************************************/
void Init18b20 ( ) //18B20 初始化
{
DQ=1;
_nop_(); //高电平短暂延时
DQ=0;
delayus(86); //delay 527 uS
DQ=1;
delayus(5); //延时 45uS
flag=DQ; //读取 DQ
delayus(80); //延时 494uS
DQ=1;
}
void WriteByte (uchar dat) //写字节
{
uchar i;
for (i=0;i<8;i++)
{
DQ = 0;
delayus(0); //延时 13uS
DQ=dat&0x01;
delayus(5); //45uS 内, 器件采样
DQ=1;
dat >>= 1;
}
}
uchar ReadByte ( ) //读字节
{
uchar i,val=0;
for(i=0;i<8;i++)
{
DQ = 0;
_nop_();
val >>= 1; //>1uS 后将总线拉高
DQ = 1;
_nop_();
_nop_();
if(DQ==1) //从低电平<15uS 采样
val |= 0x80;
delayus(5); //45uS 空闲时间
DQ=1;
}
return(val);
}
float TemperatuerResult( ) //温度转换
{
float a,b;
Init18b20 ();
WriteByte(0xcc); //跳过 ROM
WriteByte(0x44); //启动温度转换
delayms(750); //最大转换时间 750mS
Init18b20 ();
WriteByte(0xcc);
WriteByte(0xbe); //读取温度转换结果
delayus(80);
a=ReadByte(); //温度低 8 位
b=ReadByte(); //温度高 8 位
b=b*256+a;
if(b>0x8000)
{
b=(!b+1)*0.0625;
write_com(0X80);
write_data(0x2d); // 显示"-"号
}
else
{
b*=0.0625;
 write_com(0X80);
write_data(0x2d); //正号不显示
}
return b;
}
/*******************************************************************
湿度转换函数
********************************************************************/
float HumidityResult( )
{
if((F>7224)&(F<=7351)) RH=(7351-F)/12.7;
if((F>7100)&(F<=7224)) RH=10+(7224-F)/12.4;
if((F>6976)&(F<=7100)) RH=20+(7100-F)/12.4;
if((F>6853)&(F<=6976)) RH=30+(6976-F)/12.3;
if((F>6728)&(F<=6853)) RH=40+(6853-F)/12.5;
if((F>6600)&(F<=6728)) RH=50+(6728-F)/12.8;
if((F>6468)&(F<=6600)) RH=60+(6600-F)/13.2;
if((F>6330)&(F<=6468)) RH=70+(6468-F)/13.8;
if((F>6186)&(F<=6330)) RH=80+(6330-F)/14.4;
if((F>6033)&(F<=6186)) RH=90+(6186-F)/15.3;
if((F>7351)&(F<6033)) RH=101;
return RH;
}
/*******************************************************************
显示函数
********************************************************************/
void display( )
{
write_com(0x80+1); //温度显示
write_data(0x30+T/10);
 write_data(0x30+(int)T%10);
write_data(0xA5);
write_data(0x30+(int)(T*10)%10);
write_com(0x80+9); //湿度显示
write_data(0x30+RH/10);
write_data(0x30+(int)RH%10);
write_data(0xA5);
 write_data(0x30+(int)(RH*10)%10);
write_com(0xc0+4); //消毒时间显示
write_data(0x30+fen);
 write_com(0xc0+6);
 write_data(0x30+miao/10);
 write_data(0x30+miao%10);
write_com(0xc0+10); //日常时间显示
write_data(0x30+hour/10);
 write_data(0x30+hour%10);
write_com(0xc0+13);
 write_data(0x30+min/10);
 write_data(0x30+min%10);
}
/*******************************************************************
初始化函数
********************************************************************/
void init()
{
uchar i;
init_LCD();
write_com(0x80);
 for(i=0;i<16;i++)
 write_data(table1[i]);
write_com(0X80+5);
write_data(0xdf); // ℃
 write_com(0xc0);
 for(i=0;i<15;i++)
 write_data(table2[i]);
LED1=1;
LED2=1;
TMOD=0x15; //T0 计数, T1 计时
TH0=0;
TL0=0;
 TH1=(65536-50000)/256;
 TL1=(65536-50000)%256;
TH2=(65536-50000)/256;
 TL2=(65536-50000)%256;
EA=1;
ET1=1;
ET2=1;
TR0=1;
TR1=1;
 TR2=1;
}
/*******************************************************************
主函数
********************************************************************/
void main()
{
init();
 while(1)
 {
keyscan();
timing();
T=TemperatuerResult();
RH=HumidityResult();
display();
Alarm( );
 }
}
/*******************************************************************
篇幅有限,之展示部分代码
********************************************************************/

4 实现效果

基于stm32的智能衣柜,stm32,毕业设计,单片机,智能衣柜,云平台

5 最后

包含内容

基于stm32的智能衣柜,stm32,毕业设计,单片机,智能衣柜,云平台

🧿 项目分享:

https://gitee.com/sinonfin/sharing

到了这里,关于毕业设计 STM32智能衣柜(ONENET云平台)(源码+硬件+论文)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于STM32与OneNet平台的智能家居系统设计(代码开源含自制APP代码)_onenet 编程

    请求方式: GET URL: http://api.heclouds.com/devices/device_id/datapoints 服务器或上位机下发主题报文(控制下位机): API函数: 请求方式: POST URL: http://api.heclouds.com/mqtt?topic=xxx 以上2个网络通讯的 API函数 至关重要,就是实现常规情况下OneNet物联网开发的 关键性技术支持。 ( 情况允许

    2024年04月12日
    浏览(74)
  • 毕业设计 stm32智能灌溉系统(源码+硬件+论文)

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月08日
    浏览(85)
  • 毕业分享 stm32智能平衡小车设计与实现

    文章目录 0 前言 1 项目背景 2 设计思路 3 硬件设计 4 软件设计 4.2 直立控制程序设计 4.3 速度控制程序设计 4.4 方向控制程序设计 4.5 关键代码 5 最后 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这

    2024年02月02日
    浏览(54)
  • 毕业设计 stm32智能语音垃圾分类系统(项目开源)

    Hi,大家好,这里是丹成学长,今天向大家介绍一个 单片机项目 毕业设计 stm32智能语音垃圾分类系统(项目开源) 大家可用于 课程设计 或 毕业设计 🧿 项目分享: https://gitee.com/sinonfin/sharing 学长设计的系统主要使用 stm32单片机为基础设计并开发一个智能垃圾桶系统。该系

    2023年04月08日
    浏览(50)
  • 毕业设计 STM32的智能电表系统(源码+硬件+论文)

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月02日
    浏览(49)
  • 单片机毕业设计 stm32智能扫地机器人设计与实现

    Hi,大家好,学长今天向大家介绍一个 单片机项目,大家可用于 课程设计 或 毕业设计 基于stm32的智能扫地机器人设计与实现 随着人口老龄化的到来和人民对提升生活品质的需要, 人们对在现实生活场景中取代人力的服务机器人有着迫切的需要。 同时, 机电、 自动控制、

    2024年02月04日
    浏览(57)
  • 毕业设计|基于STM32单片机的语音识别控制智能停车场设计

    演示视频 https://www.bilibili.com/video/BV1bC4y1579d/?spm_id_from=333.999.0.0vd_source=0fb8a603c3cd84c0c72e5fa5d4201605 本系统采用stm32f103c8t6单片机+晶振电路+复位电路+电源电路+车位检测电路+OLED显示电路+继电器控制电路+语音识别电路构成。 1,通过红外对管模块实时检测车位是否占用,车位分为

    2024年02月04日
    浏览(86)
  • 【毕业设计】基于STM32的智能药箱系统设计与实现 - 物联网 单片机

    Hi,大家好,这里是丹成学长,今天向大家介绍一个学长做的单片机项目 基于STM32的智能药箱系统设计与实现 大家可用于 课程设计 或 毕业设计 单片机-嵌入式毕设选题大全及项目分享: https://blog.csdn.net/m0_71572576/article/details/125409052 照顾老人, 特别是提醒老人准时吃药已经成

    2024年02月01日
    浏览(85)
  • [毕业设计] 基于单片机的智能快递柜设计与实现 - stm32 物联网

    Hi,大家好,这里是丹成学长,今天向大家介绍一个 单片机项目 基于单片机的智能快递柜设计与实现 大家可用于 课程设计 或 毕业设计 单片机-嵌入式毕设选题大全及项目分享: https://blog.csdn.net/m0_71572576/article/details/125409052 一般来说,传统快递服务方式是人对人,即快递员进

    2024年01月16日
    浏览(95)
  • 毕业设计 stm32 RFID智能仓库管理系统(源码+硬件+论文)

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月03日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包