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

发布时间:2023-04-26  

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

床内温度;检测婴儿状态;配置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);

      }


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>