毕业设计| STM32智能婴儿床监控

发布者:温柔心绪最新更新时间:2023-04-26 来源: zhihu关键字:智能婴儿床  监控  STM32 手机看文章 扫描二维码
随时随地手机看文章

婴儿床监测主要有以下功能:

床内温度;检测婴儿状态;配置RTC实时时间;电机PWM按键三档调速;自动开关加热器;发送温度到手机终端;把所有要呈现的状态通过OLED屏幕显示。

感兴趣的小伙伴还可以加入更多的功能。

# 硬件元件清单 #

主控为STM32F103C8T6,使用最小系统板:

OLED显示屏1个,连接方式:VCC-3.3/5V;GND-GND;SCL-单片机SCL脚;SDA-单片机SDA脚

轻触按键3个,连接方式:对脚连接;一脚接GND;一脚接上拉电阻至电源、及IO口引脚

一路5v继电器模块 1个,连接方式:上面口:VCC-5V;GND-GND;PIN-单片机信号脚下面口:选择常开/常闭连接负载

L298N电机驱动板模块 1个,连接方式如下:


由于不用配置正反转可以四个口随便接 只是用来驱动电机的作用(需要与单片机共地)。

MAX声音传感模块 1个,连接方式:VCC接5V,GND-GND,OUT接信号脚

Jdy-311蓝牙模块,连接方式:VCC、GND接5V的源,TXD接单片机RXD,RXD接单片机TXD

DS18b20传感器 1个,连接方式:从左到右,GND OUT VCC 连接单片机

int main(void)

{  

    u8 ccc=99;//测试值

    u8 a;

    u8 key=0;

    u16 led0pwmval=0;

      u8 dir=1;  

    u8 t=0; 

    short temperature;         

        u8 humidity;//以上都为用作判断的变量定义

    delay_init();         //延时函数初始化    

    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);   //设置NVIC中断分组2:2位抢占优先级,2位响应优先级   LED_Init();           

      //delay_ms(8000);

    uart_init(9600);//串口初始化 波特率为9600  

    OLED_Init();      //初始化OLED  

    OLED_Clear(); //清屏

    KEY_Init(); //按键初始化

    TIM3_PWM_Init(899,0);//定时器3PWM初始化

        LED_Init();//io口初始化

    usmart_dev.init(SystemCoreClock/1000000);  //初始化USMART

    RTC_Init();//时钟初始化   

    ADC_Configuration1();//adc配置

    TIM_SetCompare2(TIM3,500);//占空比设置

    OLED_ShowCHinese(0,0,1);//oled显示文字

    OLED_ShowCHinese(18,0,15);

    OLED_ShowCHinese(36,0,16);

    OLED_ShowCHinese(54,0,17);

    OLED_ShowCHinese(110,0,6);

    OLED_ShowCHinese(0,2,11);

    OLED_ShowCHinese(18,2,12);

    OLED_ShowCHinese(36,2,13);

    OLED_ShowCHinese(54,2,14);

    OLED_ShowCHinese(0,4,18);

    OLED_ShowCHinese(18,4,19);

    OLED_ShowCHinese(36,4,20);

    OLED_ShowCHinese(54,4,21);

    //OLED_ShowCHinese(32,6,22);

    //OLED_ShowCHinese(60,6,23);

    OLED_ShowCHinese(108,4,26);

    while(DS18B20_Init())//等待ds18b20初始化完成

    {

    delay_ms(200);

    delay_ms(200);

    delay_ms(200);

    } 


    while(1)

  {            

     if(t%10==0)      //每100ms读取一次

    {                    

      temperature=DS18B20_Get_Temp();              

    OLED_ShowNum(70,0,temperature/10,2,16);  //显示温度

    //USART_SendData(USART1,ccc);

    printf("%d",temperature);//把温度通过串口发出

    if(temperature/10<23)//温度低于23摄氏度 打开加热器

    GPIO_ResetBits(GPIOB,GPIO_Pin_7);

        if(temperature/10>=30)//温度高于等于30摄氏度 关闭加热器

    GPIO_SetBits(GPIOB,GPIO_Pin_7);  

      //             

        OLED_ShowString(85,0,".",16);  

      OLED_ShowNum(90,0,temperature%10,2,16);

    }           

     delay_ms(10);

    t++;

    if(t==20)

    {

      t=0;    

    }

        

    if(a!=calendar.sec)//RTC实时时间显示

    {

    a=calendar.sec;

//    LCD_ShowNum(60,130,calendar.w_year,4,16);

        OLED_ShowNum(0,6,calendar.w_year,4,16);

        OLED_ShowString(30,6,".",16);  

        OLED_ShowString(30,6,".",16);        

//    LCD_ShowNum(100,130,calendar.w_month,2,16);

    OLED_ShowNum(33,6,calendar.w_month,1,16);

    OLED_ShowString(50,6,".",16);  

//    LCD_ShowNum(123,130,calendar.w_date,2,16);  

     // OLED_ShowString(72,6,".",16);    

    OLED_ShowNum(53,6,calendar.w_date,2,16);

//    LCD_ShowNum(60,162,calendar.hour,2,16);

        OLED_ShowString(70,6,".",16);        

    OLED_ShowNum(73,6,calendar.hour,2,16);

        

//      LCD_ShowNum(84,162,calendar.min,2,16);

        OLED_ShowNum(93,6,calendar.min,2,16);

        OLED_ShowString(88,6,".",16);        

//      LCD_ShowNum(108,162,calendar.sec,2,16);

    OLED_ShowString(108,6,".",16);  

    OLED_ShowNum(113,6,calendar.sec,2,16);

//      LED0=!LED0;

    }  

    delay_ms(10);      

    AD_value = ADC_ConvertedValue;

      AD_value = (AD_value/4096)*3.3;//算法得到电压值

//      printf("The current Sound AD value = %4.2fV rn", AD_value);

      if(AD_value>=2)//通过转化而来电压值判断婴儿状态

      { 

        OLED_ShowCHinese(90,2,31);

          OLED_ShowCHinese(108,2,32);

        delay_ms(200);      

      }

    

        if(AD_value<2)

      {

          OLED_ShowCHinese(90,2,29);    

            OLED_ShowCHinese(108,2,30);

      }


关键字:智能婴儿床  监控  STM32 引用地址:毕业设计| STM32智能婴儿床监控

上一篇:毕业设计| STM32+UART HMI,玩扫雷游戏
下一篇:毕业设计| LCD数字BOOST电路设计

推荐阅读最新更新时间:2024-11-10 18:06

多通道远程裂缝位移监测仪设计
中国是地质灾害最为严重的国家之一,滑坡、崩塌、泥石流在汛期频繁发生,造成巨大的人员和经济损失。而对裂缝位移的监测是一种公认的地质灾害监测的手段,通过对地表裂缝位移变化的监测,可以提前探测滑坡等地质灾害的发生,达到预警的目的 。本文介绍了以线性位移传感器、STM32微控制器和无线传输等技术构成的一套具有实时数据采集和处理能力的远程裂缝位移监测仪器。 1 线性位移监测仪总体方案 裂缝位移监测仪采用线性位移传感器感知裂缝的位移变化,把裂缝移动的实际位移量转换为电压信号,原始位移电压信号经滤波、放大等调理电路,送入A/D转换器,转换为数字信号,经STM32微控制器采集、处理后通过LCD显示,并将数据存储在本地U盘中。同时通过无线传输模块将
[单片机]
多通道远程裂缝位移监测仪设计
利用树莓派打造STM32无线在线调试器!
不知各位嵌入式开发者有没有遇到这样的经历:J-link的线长限制了我们编程的姿势,很多时候我们的工程都需要板子产生一些位移(比如调小车之类的),这时候J-link的线会让我们Debug的过程变得非常痛苦。。。那么有没有办法让我们解决这个数据线的痛苦呢??答案是当然有的!只要有着一颗折腾的心,办法总是会慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢想出来的。本人最近一直在弄一个相关工程,因为被线限制的非常痛苦,于是就考虑出了使用树莓派作为J-link的服务器然
[单片机]
利用树莓派打造<font color='red'>STM32</font>无线在线调试器!
STM32的ADC实测
  测试芯片:STM32F103R8T6 (双AD)   编译平台:IAR5.40   测试概述:使用片内振荡器时钟HSI,双ADC同步采样,ADC1采用DMA1存放,ADC2采用直接读取。        每读取十个采样值计数一次,定时一秒钟,通过串口将采样次数送出,测试ADC采样速率。 一、主频设为:56MHz   使用HSI,STM32F103最高频率可达72MHz,主频在56MHz时AD速率最大。   RCC_PLLConfig(RCC_PLLSource_HSI_Div2,RCC_PLLMul_14);   // 8 2 14 = 56MHz 二、ADC工作频率:14MHz   RCC_ADCCLKConfig(RC
[单片机]
<font color='red'>STM32</font>的ADC实测
基于STM32的单通道示波器制作成功
终于把基于STM32的示波器做出来啦!本来想用外部高速AD做一个1Mhz采样率的示波器,由于自己没有制作示波器经验,手头上也没现成的IC,于是就先利用STM32内部的12位AD做了一个简易示波器,小练一下示波器的制作,以后有时间再继续做一个实用性较强的便携式示波器吧。 该示波器的硬件配置为:3.7V锂电池供电,显示屏为带触摸的16位3.2寸TFT液晶,主控芯片为STM32F103VC。为了省事,信号触发采用软件触发,幅值、周期、XY轴偏移都是通过触控屏来设置。(由于宿舍没有函数发生器,下面演示图片中的波形是由LM358搭出来的简易信号发生器,波形非常不规则) 下为示波器的实物图(后面那块小小的东西为简陋的波形发生器):
[测试测量]
基于<font color='red'>STM32</font>的单通道示波器制作成功
STM32的ADC的采样时间及模拟信号的最大带宽
请看STM32技术参考手册的16.2节,和STM32F103xx数据手册的5.3.17节表44。可以在ST的中文网站下载到上述2个手册: http://www.stmicroelectronics.com.cn/stonline/mcu/MCU_Pages.htm 前面所说“STM32的ADC的采样及转换时间最小为1us”,实际上STM32的ADC采样及转换时间可以通过程序编程进行调整,共有8种选择,按 ADC模块的驱动时钟算分别为: 1.5 ADC时钟周期 7.5 ADC时钟周期 13.5 ADC时钟周期 28.5 ADC时钟周期 41.5 ADC时钟周期 55.5 ADC时钟周期 71.5 ADC时钟周期 239.5 ADC
[单片机]
宽动态监控监控多领域应用 市场前景广泛看好
    宽动态技术是在非常强烈的对比下让摄像机看到影像的特色而运用的一种技术。当在强光源(日光、灯具或反光等)照射下的高亮度区域及阴影、逆光等相对亮度较低的区域在图像中同时存在时,摄像机输出的图像会出现明亮区域因曝光过度成为白色,而黑暗区域因曝光不足成为黑色,严重影响图像质量。摄像机在同一场景中对最亮区域及较暗区域的表现是存在局限的,这种局限就是通常所讲的“动态范围”。本文就宽动态摄像机的技术、应用及产品评测进行简单罗列。       宽动态摄像机技术概念解析      ◇ 宽动态范围      广义上的“动态范围”是指某一变化的事物可能改变的跨度,即其变化值的最低端极点到最高端极点之间的区域,此区域的描述一般为最高点与最低点之间的
[安防电子]
STM32——高级定时器、通用定时器、基本定时器 的区别
TIM1和TIM8定时器的功能包括【增强型】: ● 16位向上、向下、向上/下自动装载计数器 ● 16位可编程(可以实时修改)预分频器,计数器时钟频率的分频系数为1~65535之间的任意数值 ● 多达4个独立通道: ─ 输入捕获 ─ 输出比较 ─ PWM生成(边缘或中间对齐模式) ─ 单脉冲模式输出 ● 死区时间可编程的互补输出 ● 使用外部信号控制定时器和定时器互联的同步电路 ● 允许在指定数目的计数器周期之后更新定时器寄存器的重复计数器 ● 刹车输入信号可以将定时器输出信号置于复位状态或者一个已知状态 ● 如下事件发生时产生中断/DMA: ─ 更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发) ─ 触发
[单片机]
大联大世平集团的驾驶员监控系统(DMS)方案荣获第六届“金辑奖之最佳技术实践应用”奖
近日, 致力于亚太地区市场的国际领先半导体元器件分销商 ---大联大控股(以下简称:大联大)宣布,其旗下世平集团(以下简称:世平)凭借卓越的技术能力,整合推出的汽车驾驶员监控系统(DMS)解决方案,荣获盖世汽车——第六届“金辑奖之最佳技术实践应用”奖。这一奖项既是对世平技术实力和创新能力的双重肯定,同时也是对大联大在推进智能驾驶技术应用与落地中所作贡献的高度赞誉。 “金辑奖”旨在挖掘汽车行业创新与实践中的优秀产品、技术与企业,评选内容涵盖智能驾驶、智能座舱、智能底盘、汽车软件、车规级芯片、大数据及人工智能、动力总成及充换电、热管理、车身及内外饰、新材料等十大细分领域。这些领域不仅是当前汽车科技发展的前沿热点,也是大联大长
[汽车电子]
大联大世平集团的驾驶员<font color='red'>监控</font>系统(DMS)方案荣获第六届“金辑奖之最佳技术实践应用”奖
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved