当前位置: 代码网 > 手机>品牌>手机系统 > 基于51/STM32单片机的智能药盒 物联网定时吃药 药品分类

基于51/STM32单片机的智能药盒 物联网定时吃药 药品分类

2024年08月01日 手机系统 我要评论
以51/STM32单片机作为主控系统;LCD1602液晶显示当前时间、温湿度、药品重量3次吃药时间、药品类目和药品数量HX711压力采集当前药品重量红外感应当前药盒是否打开DS1302时钟芯片显示当前年月日、时分秒、星期DHT11采集当前环境温度和湿度手机端连接WIFI后可以显示当前温湿度、重量、吃药时间等信息手机端可以设置当前吃药时间、药品种类、药品数量等信息当吃药时间到后手机端震动提醒并且进行语音播报:“吃药时间到了,请及时吃药”

 功能介绍

 电路图

pcb


源代码

#include <reg52.h>
#include <intrins.h>
#include <stdio.h>//printf串口输出头文件

#define uchar unsigned char
#define ushort  unsigned int
#define uint  unsigned long

#include "lcd1602.h"
#include "uart_trx.h"
#include "eeprom52.h"

#define ratio 800		//系数,建议选择800-1000

sbit key1 = p1^0;//加键
sbit key2 = p1^1;//减键

sbit beep = p2^0;//蜂鸣器
sbit fan = p1^3;//风扇

unsigned char pmbuf[7] = 0;//数据接收数组
uint pm25_value = 0;     		//pm = ((pmbuf[1]<<8)+pmbuf[2])/1024*8*ratio
uint pm25_valuemax = 200; //上限初始值

void eeprom_write()//eeprom写入
{
		sectorerase(0x2000);//擦除扇区
	  byte_write(0x2001, (pm25_valuemax>>8)&0xff);//存储高8位
	  byte_write(0x2002, (pm25_valuemax>>0)&0xff);//存储低8位
	  byte_write(0x2009, 111);//存储校验值
}

void eeprom_read()//eeprom读出
{
		if(byte_read(0x2009)!=111)//开机检测单片机是不是第一次使用,如果不是第一次使用,则先把数据存储一遍,再读取,数据就不会乱码
		{
				eeprom_write();//存储
			  delay_ms(100);
		}
		pm25_valuemax = byte_read(0x2001)<<8 | byte_read(0x2002);//读取上限值
}

void get_pm(void)//读取pm2.5值,具体的数据帧意思,请自行查阅芯片手册
{
    char i = 0;
    char j = 0;
    char k = 0;

	  com.rx_cnt = 0;
    if(com.b_rx_ok == 1)//串口数据接收完成
    {
        for(i = 0; i<8; i++)
        {
            if((rx_buffer[i] == 0xaa)&&(rx_buffer[i+6]==0xff))//判断接收的数据是否正确
            {
                goto find2;
            }
        }
        goto end2;
find2:
        for(j = 0; j<7; j++)
        {
            pmbuf[j] = rx_buffer[i+j];//数据获取
        }

        pm25_value = (unsigned int)((pmbuf[1]*256)+pmbuf[2])*5/2048.0*ratio;//计算pm2.5值
        com.b_rx_ok = 0;
    }
end2:
    return;
}



void main(void)
{
    unsigned int test;

	  eeprom_read();//开机读取存储值
    lcd_init();//1602初始化
    uart_init(2400);//串口初始化波特率2400
  
    lcd_write_string(0,0,"pm2.5:    ug/m3 ");
    lcd_write_string(0,1,"pmmax:    ug/m3 ");
	  //显示上限值
	  lcd_write_char(7, 1, pm25_valuemax % 1000 / 100 + 0x30);
		lcd_write_char(8, 1, pm25_valuemax % 100 / 10 + 0x30);
		lcd_write_char(9, 1, pm25_valuemax % 10 + 0x30);
    while(1)
    {
			if (test ++ > 250)//大约250ms读取一次
			{
					test = 0 ;

					get_pm();//获取pm2.5
					if(pm25_value > 999)//限值,最大999
					 pm25_value = 999;
					//显示pm2.5
					lcd_write_char(7, 0, pm25_value % 1000 / 100 + 0x30);
					lcd_write_char(8, 0, pm25_value % 100 / 10 + 0x30);
					lcd_write_char(9, 0, pm25_value % 10 + 0x30);
					
					if(pm25_value >= pm25_valuemax)//超过上限,蜂鸣器报警
					{
							beep = ~beep;
						  fan = 0;
						  delay_ms(100);
					}
					else
					{
							beep = 1;
						  fan = 1;
					}
			}
			if(key1 == 0)//加键按下
			{
					delay_ms(10);//消抖
				  if(key1 == 0)
					{
						  beep = 0;
						  delay_ms(100);
						  beep = 1;
							while(key1 == 0);
						  if(pm25_valuemax<999)pm25_valuemax+=10;//上限最大到999,每次加10
						  //显示
						  lcd_write_char(7, 1, pm25_valuemax % 1000 / 100 + 0x30);
							lcd_write_char(8, 1, pm25_valuemax % 100 / 10 + 0x30);
							lcd_write_char(9, 1, pm25_valuemax % 10 + 0x30);
						  eeprom_write();//保存
					}
			}
			if(key2 == 0)//减键按下
			{
					delay_ms(10);
				  if(key2 == 0)
					{
						  beep = 0;
						  delay_ms(100);
						  beep = 1;
							while(key2 == 0);
						  if(pm25_valuemax>=10)pm25_valuemax-=10;//上限最小到0,每减10
						  //显示
						  lcd_write_char(7, 1, pm25_valuemax % 1000 / 100 + 0x30);
							lcd_write_char(8, 1, pm25_valuemax % 100 / 10 + 0x30);
							lcd_write_char(9, 1, pm25_valuemax % 10 + 0x30);
						  eeprom_write();//保存
					}
			}
			delay_ms(1);
    }
}


     

元器件清单

基于51/stm32单片机的智能药盒 物联网定时吃药 药品分类的设计与实现
名称型号数量
单片机stc89c521
ic座dip401
万能板9*15cm1
晶振11.0592m1
电解电容10uf1
电解电容1000uf1
瓷片电容22pf2
电阻10k3
电阻1k4
电阻2k1
led红5mm1
led绿5mm1
蜂鸣器有源1
三极管s90121
按键5
显示屏lcd16021
排针16p1
排母16p1
人体红外模块hc-sr5011
排母3p1
温度传感器ds18b201
烟雾传感器mq-21
模数转换器adc08321
ic座8p1
gsm模块sim800c1
电源座5mm1
电源线5v2a1
自锁开关1
继电器1
小水泵1
导线若干
焊锡丝若干

参考文献

 实物可做,资料齐全,其他功能也可做~ 

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com