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

功能介绍

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

电路图

PCB

源代码

cpp 复制代码
#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单片机的智能药盒 物联网定时吃药 药品分类的设计与实现 |
| 名称 | 型号 | 数量 |
| 单片机 | STC89C52 | 1 |
| IC座 | DIP40 | 1 |
| 万能板 | 9*15cm | 1 |
| 晶振 | 11.0592M | 1 |
| 电解电容 | 10uF | 1 |
| 电解电容 | 1000uf | 1 |
| 瓷片电容 | 22pF | 2 |
| 电阻 | 10K | 3 |
| 电阻 | 1K | 4 |
| 电阻 | 2K | 1 |
| LED红 | 5MM | 1 |
| LED绿 | 5MM | 1 |
| 蜂鸣器 | 有源 | 1 |
| 三极管 | S9012 | 1 |
| 按键 | | 5 |
| 显示屏 | LCD1602 | 1 |
| 排针 | 16P | 1 |
| 排母 | 16P | 1 |
| 人体红外模块 | HC-SR501 | 1 |
| 排母 | 3P | 1 |
| 温度传感器 | DS18B20 | 1 |
| 烟雾传感器 | MQ-2 | 1 |
| 模数转换器 | ADC0832 | 1 |
| IC座 | 8P | 1 |
| GSM模块 | SIM800c | 1 |
| 电源座 | 5MM | 1 |
| 电源线 | 5V2A | 1 |
| 自锁开关 | | 1 |
| 继电器 | | 1 |
| 小水泵 | | 1 |
| 导线 | | 若干 |
| 焊锡丝 | | 若干 |

参考文献

参考文献

1\]王德保.GPS在城市控制网中的应用研究\[D\].山东:山东科技大学,2005. \[2\]何立民.从现代计算机视角看嵌入式系统(4)嵌入式系统40年发展史\[J\].单片机与嵌入式系统应用,2016,16(04):77-79. \[3\]康桂霞,刘达.FPGA应用技术教程\[M\].北京:人民邮电出版社:201306.229. \[4\]朴德慧,衣英刚.液晶显示器驱动板MCU电路介绍(上)\[J\].家电检修技术,2012(11):53. \[5\]段廷魁.全球卫星定位系统(GNSS)在工程测量中的实践运用探索0\[J\].科技创新与应用,2021(05):182-184. \[6\]宋戈,黄鹤松.51单片机应用开发范例大全\[M\].北京:人民邮电出版社:国家信息技术紧缺人才培养工程系列丛书,201206.558. \[7\]罗小青.单片机原理及应用教程\[M\].北京:人民邮电出版社,201409.180. \[8\]沈庆阳.单片机实践与应用\[M\].北京:清华大学出版社,2002. \[9\]杜深慧.温湿度检测装置的设计与实现\[M\].北京:机械工业出版社,2004. \[10\]林嘉.基于89S52的LCD1602程序设计\[J\].电脑知识与技术,2012(26):6376-6378. \[11\]刘光伟.基于单片机的温室温湿度监测系统设计与实现\[D\].秦皇岛市:燕山大学,2012. \[12\]褚福强,董学仁.单片机的网络接入技术研究\[J\].仪器仪表用户,2006(05):4-5. \[13\]陈英俊.基于单片机的温湿度监测和报警系统设计\[J\].广东石油化工学院学报,2013(04):42-46. \[14\]廖丽媛.基于应变式扭矩传感器的测量系统的设计\[D\].上海市:东华大学,2013. \[15\]刘九庆.温室环境工程技术\[M\].吉林:东北林业大学出版社,2002. \[16\]王明喜,崔世茂.大棚型日光温室光照、温度及湿度等性能的初步研究\[J\].农业工程技术(温室园艺),2008(05):19-21. \[17\]张迎辉.单片微型计算机键盘接口设计\[J\].信息技术,2004(07):68-69+91. \[18\]张友德,赵志英.单片微型机原理应用与实验\[M\].上海市:复旦大学出版社,2003. \[19\]赵芝芸.温室智能监控系统\[D\].江苏:江苏科技大学,2010. \[20\]张宏伟.基于STM32的智能环境监测系统设计与实现\[J\].大庆师范学院学报,2020(05):32-35. \[21\]王世伟,杨越.基于STM32的多型号舵机调试器设计\[J\].九江学院学报(自然科学版),2020,35(02):33-36. \[22\]Pengcheng Zhao,Meijun Ni,Chao Chen,Chenxi Wang,PingpingYang,Xiahui Wang,Chunyan Li,Yixi Xie,Junjie Fei. A Novel Self-protection Hydroquinone Electrochemical Sensor Based on Thermo -sensitive Triblock Polymer PS-PNIPAm-PS\[J\]. \[23\]Jian Wang,Jing Chen,Xiaofu Xiong,Xiaofeng Lu,ZhengLiao,Xiaobo Chen.Temperature safety analysis and backup protectionscheme improvement for overhead transmission line in poweroscillation condition\[T\].Electric Power Systems Research,2019,166. \[24\]Fuji Electric Co.Ltd.;Patent Issued for SeiconductorDevice And Method Of Outputting Temperature Alarm (USPTO10,164,626)\[J\].Electronics Newsweekly,2019. \[25\]VERSID,INC;Patent Issued for Refrigeration UnitTemperature Alarm Using Thermal Properties of Food to Eliminate FalseAlarms (USPTO 9752810)\[J\].Computers,Networks \&Communications,2017. \[26\]Fuji Electric Co.Ltd;Patent Application Titled"Semiconductor Device and Method of Outputting Teperature Alarm"Published Online (USPTO 20170077919)\[J\]. Technology \& BusinessJournal,2017. \[27\]su Yuanping,Xu Lihong,Goodman Erik D.Multi-layerhierarchical optimisation of greenhouse climate setpoints for energyconservation and improvement of crop yield\[J\].Biosystems \[28\]黄松茂.基于STM32的家庭环境监测系统的设计与实现\[D\].甘肃兰州.西北师范大学,2018.:23-30. \[29\]李大琳.智能车内温度监测系统设计\[J\].山东工业技术,2014(12):80-81. \[30\]郭雯,王海涛. 智能输液系统的发展与应用.医疗卫生装备,2012

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

相关推荐
TESmart碲视42 分钟前
HKS201-M24 大师版 8K60Hz USB 3.0 适用于 2 台 PC 1台显示器 无缝切换 KVM 切换器
单片机·嵌入式硬件·物联网·游戏·计算机外设·电脑·智能硬件
花落已飘2 小时前
STM32中实现shell控制台(shell窗口输入实现)
stm32·单片机·嵌入式硬件
花落已飘2 小时前
STM32中实现shell控制台(命令解析实现)
stm32·shell
没有钱的钱仔2 小时前
STM32低功耗模式全面指南
css·stm32·css3
TDengine (老段)3 小时前
TDengine STMT2 API 使用指南
java·大数据·物联网·时序数据库·iot·tdengine·涛思数据
牵牛老人4 小时前
Qt处理USB摄像头开发说明与QtMultimedia与V4L2融合应用
stm32·单片机·qt
宇钶宇夕5 小时前
针对工业触摸屏维修的系统指南和资源获取途径
单片机·嵌入式硬件·自动化
和风化雨6 小时前
stm32的三种开发方式
stm32·单片机·嵌入式硬件
kanhao1006 小时前
三态逻辑详解:单片机GPIO、计算机总线系统举例
单片机·嵌入式硬件
竹照煜_ysn9 小时前
STM32
stm32·单片机·嵌入式硬件