基于物联网的智能奶瓶

感知层课程设计论文

论文题目:基于物联网的智能奶瓶

学院:电子工程学院

年级:2012

专业:物联网工程

姓名:董云地

学号:20124370

指导教师:甄佳奇

2015年 12月 24日

摘要

婴儿时期是人一生中最至关重要的时期之一,但同时也是最脆弱的时期,为了照顾自己的宝贝,父母都操碎了心。奶粉,是婴儿最主要的食物,但是精准控制好温度,光靠双手去衡量显然是不够的。

随着单片机技术的飞速发展,在其推动下,现代的电子产品几乎渗透到了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高。

本文以Atmega16为核心控制芯片,人体电阻传感器,DS18B20为温度传感器,语音合成模块,通过人体电阻传感器实时监测有没有人触摸奶瓶,如果有触摸通过语音合成模块告诉主人,奶的温度。

关键词

物联网;超级奶瓶;温度;DS18B20;语音合成模块;人体电阻传感器

Abstract

The infant period is one of the most important period in life, but also the mostvulnerable period, in order to take care of their baby, parents are broken heart.The baby milk powder, is the main food, but the precise control of the temperature, light on his hands to measure is clearly not enough.

With the rapid development of SCM technology, under its impetus, the modernelectronic products, almost penetrated into all areas of society, a strong impetus to the development of social productivity and the improvement of social information-based degree, simultaneously also makes the modern electronic products to further improve the performance.

This paper takes Atmega16 as the core control chip, resistance of human bodysensor, DS18B20 as a temperature sensor, a speech synthesis module, theresistance of human body sensor for real-time monitoring of anyone touch the bottle, if there is a touch to tell the owner through the speech synthesis module,the temperature of the milk.

Key words

The Internet of things; super bottles; temperature; DS18B20; speech synthesismodule; the human body resistance sensor

目录

摘要 ............................................................................................................................................ I Abstract ................................................................................................................................... II

前言 (1)

第一章作品的整体介绍 (1)

1.1 作品的实物展示 (2)

1.2 功能和作品元件介绍 (3)

1.2.1 功能简述 (3)

1.2.2 人体电阻传感器 (3)

1.2.3 温度传感器 (3)

1.2.4 语音合成模块 (3)

1.2.5 微控制器 (4)

1.3 实现的功能 (5)

第二章硬件设计方案及分析 (5)

2.1 系统的硬件组成及框图 (5)

2.1.1 硬件组成 (5)

2.1.2 硬件系统框图 (5)

2.2 各模块介绍 (6)

2.2.1 控制模块 (6)

2.2.2 温度采集模块 (7)

2.2.3 人体电阻传感器 (7)

2.2.4 语音合成模块 (7)

第三章系统的软件设计及编程 (7)

3.1 软件框图设计 (7)

3.2 编程设计 (7)

3.2.1温度采集 (7)

3.2.2单片机串口初始化 (10)

结论 (11)

参考文献 (12)

附录一 (13)

致谢 (21)

前言

婴儿时期是人一生中最至关重要的时期之一,但同时也是最脆弱的时期,为了照顾自己的宝贝,父母都操碎了心。婴儿足月出生时已具有较好的吸吮吞咽功能,颊部有坚厚的脂肪垫,有助于吸吮活动,早产儿则较差。吸吮动作是复杂的天性反射,严重疾病可影响这一反射,使吸吮变得弱而无力。新生儿及婴幼儿口腔黏膜薄嫩,血管丰富,唾液腺发育不够完善,唾液分泌少,口腔黏膜干燥,易受损伤和细菌感染;3个月时唾液分泌开始增加;5个月时明显增多。3个月以下小儿唾液中淀粉酶含量较少,不宜喂淀粉类食物。婴儿口底浅,不会及时吞咽所分泌的全部唾液,常发生生理性流涎。食管:食管是两个主要功能:一是推进食物和液体由口入胃;二是防止吞咽期间胃内容物反流。新生儿和婴儿的食管呈漏斗状,黏膜纤弱,腺体缺乏,弹力组织及肌层尚不发达,食管下段贲门括约肌发育不成熟,控制能力差,常发生胃食管反应,绝大多数在8~10个月时症状消失。婴儿吸奶时常吞咽过多空气,易发生溢奶。胃:新生儿胃容量约为30~60毫升,后随年龄而增大,1~3个月时90~150毫升,1岁时250~300毫升,由于新生儿胃容量小,所以新生儿喂食应当少量多次,喂食的次数应较年长儿多。婴儿胃呈水平位,当开始行走时其位置变为垂直。胃平滑肌发育尚未完善,在充满液体食物后易使胃扩张。由于贲门肌张力低,幽门括约肌发育较好,且自主神经调节差,故易引起幽门痉挛出现呕吐。胃黏膜有丰富的血管,但腺体和杯状细胞较少,盐酸和各种酶的分泌均较成人少且酶活力低,消化功能差。胃排空时间随食物种类不同而异,稠厚且含凝乳块的乳汁排空慢。其中水的排空时间为1.5~2小时;母乳为2~3小时;牛乳为3~4小时。早产儿胃排空更慢,易发生胃潴留。奶粉,是婴儿最主要的食物,但是精准控制好温度,光靠双手去衡量显然是不够的。

第一章作品的整体介绍

1.1 作品实物展示

1.2 功能和组成原件介绍

1.2.1 功能简述

语音报温,简单明了

1.2.2人体电阻传感器

人体皮肤是有电阻的,能够应用此设计电路,进行人体接触检测

1.2.3 温度传感器

DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢,封装式,型号多种多样,有LTM8877,LTM8874等等。主要根据应用场合的不同而改变其外观。封装后的DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹药库测温等各种非极限温度场合。耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。

1.2.4 语音合成模块产品功能描述○文本合成功能芯片支持任意中文

文本的合成,可以采用GB2312、GBK、BIG5 和Unicode 四种编码方式。芯片支持英文字母的合成,遇到英文单词时按字母方式发音。每次合成的文本量可达200个字节。○文本智能分析处理芯片具有文本智能分析处理功能,对常见的数值、电话号码、时间日期、度量衡符号等格式的文本,芯片能够根据内置的文本匹配规则进行正确的识别和处理。例如:“2008-12-21”读作“二零零八年十二月二十一日”,“10:36:28”读作“十点三十六分二十八秒”,“28℃”读作“二十八摄氏度”,等等。○多音字处理和中文姓氏处理能力对存在多音字的文本,例如:“当前工作的重中之重是要在重重困难中保证重庆市的重点工程的顺利进行,坚决拒绝重复建设”,芯片可以自动对文本进行分析,判别文本中多音字的读法并合成正确的读音。○数字音量16级控制和6级词语语速控制芯片可实现16级数字音量控制,音量更大,更广。播放文本的前景音量和播放背景音乐的背景音量可分开控制,更加自由。○文本播音时可选择背景音乐芯片内集成了15 首背景音乐,在任何播音时均可以选择背景音乐。○提示音芯片内集成了19 首声音提示音,可用于不同场合的信息提醒、报警等功能。芯片内集成了23 首和弦音乐,可用作和弦短信提示音或者和弦铃声。○支持多种控制命令控制命令包括:合成文本、停止合成、暂停合成、恢复合成、状态查询、进入Power Down模式、改通讯波特率等控制命令。控制器通过通讯接口发送控制命令实现对芯片的控制。○支持多种文本控制标记芯片支持多种文本控制标记。可通过发

标点是否读出等。○查询芯片的工作状态支持多种方式查询芯片的工作状态,包括:查询状态管脚电平、通过读芯片自动返回的回传、发送查询命令获得芯片工作状态的回传。○支持低功耗模式芯片支持Power Down 模式。使用控制命令可以使芯片进入Power Down 模式。复位芯片可以使芯片从Power Down 模式恢复到正常工作模式。○支持三种通讯波特率芯片支持的通讯波特率:9600bps,19200bps、38400bps

1.2.5 控制器

ATmega16 AVR 内核具有丰富的指令集和32 个通用工作寄存器。所有的寄存器都直接与运算逻单元(ALU) 相连接,使得一条指令可以在一个时钟周期内同时访问两个独立的寄存器。这种结构大大提高了代码效率,并且具有比普通的CISC 微控制器最高至10 倍的数据吞吐率。

ATmega16 有如下特点:16K字节的系统内可编程Flash(具有同时读写的能力,即RWW),512 字节EEPROM,1K 字节SRAM,32 个通用I/O 口线,32 个通用工作寄存器,用于边界扫描的JTAG 接口,支持片内调试与编程,三个具有比较模式的灵活的定时器/ 计数器(T/C),片内/外中断,可编程串行USART,有起始条件检测器的通用串行接口,8路10位具有可选差分输入级可编程增益(TQFP 封装) 的ADC ,具有片内振荡器的可编程看门狗定时器,一个SPI 串行端口,以及六个可以通过软件进行选择的省电模式。

工作于空闲模式时CPU 停止工作,而USART、两线接口、A/D 转换器、SRAM、T/C、SPI 端口以及中断系统继续工作;掉电模式时晶体振荡器停止振荡,所有功能除了中断和硬件复位之外都停止工作;在省电模式下,异步定时器继续运行,允许用户保持一个时间基准,而其余功能模块处于休眠状态;ADC 噪声抑制模式时终止CPU 和除了异步定时器与ADC 以外所有I/O 模块的工作,以降低ADC 转换时的开关噪声;Standby 模式下只有晶体或谐振振荡器运行,其余功能模块处于休眠状态,使得器件只消耗极少的电流,同时具有快速启动能力;扩展Standby 模式下则允许振荡器和异步定时器继续工作。

本芯片是以Atmel 高密度非易失性存储器技术生产的。片内ISP Flash 允许程序存储器通过ISP 串行接口,或者通用编程器进行编程,也可以通过运行于AVR 内核之中的引导程序进行编程。引导程序可以使用任意接口将应用程序下载到应用Flash存储区(ApplicationFlash Memory)。在更新应用Flash存储区时引导Flash区(Boot Flash Memory)的程序继续运行,实现了RWW 操作。通过将8 位RISC CPU 与系统内可编程的Flash 集成在一个芯片内,ATmega16 成为一个功能强大的单片机,为许多嵌入式控制应用提供了灵活而低成本的解决方案。

1.3 语音自动播报水温

第二章硬件设计方案及分析

2.1 系统的硬件组成及框图

2.1.1 硬件组成

DS18B20;语音合成模块;人体电阻传感器;Atmega16单片机2.1.2 硬件系统框图

2.2各模块介绍

2.2.1 控制模块

杯子周围设置有的人体电阻传感器,当人手进行触碰时,单片机控制语音合成模块

合成温度提示语音。

2.2.2 温度采集模块

采用高精度温度传感器DS18B20准确采集温度信息

2.2.3 人体电阻传感器

精准的检测人体的触摸

2.2.4 语音合成模块

合成相应的语音

第三章统的软件设计及编程

3.1 软件框图设计

检测是否有人体触摸,是的话就有控制器控制语音合成模块合成温度提示语音,负责休眠等待

3.2 编程设计

3.2.1温度采集

void GetTemperture(void)

{

SREG=0x00;

Init_DS18B20();

if(yes0==0)

{

WriteOneByte(0xCC);

WriteOneByte(0x44);

Delay_ms(100);

Init_DS18B20();

WriteOneByte(0xCC);

WriteOneByte(0xBE);

temp_data[0] = ReadOneByte();

temp_data[1] = ReadOneByte();

//temp_TH = ReadOneByte();

//temp_TL = ReadOneByte();

temp_flag=1;

}

else temp_flag=0;

SREG=0x80;

}

void TempConv()

{

uchar sign=0;

uchar temp; //定义温度数据暂存 if(temp_data[1]>127)

{

temp_data[0]=(~temp_data[0])+1; //取反加1,将补码变成原码

if((~temp_data[0])>=0xff) //若大于或等于0xff

temp_data[1]=(~temp_data[1])+1;

else temp_data[1]=~temp_data[1];

sign=1;

}

temp =temp_data[0]&0x0f;

disp_buf[0]=(temp *10/16)+0x30;

temp_comp

=((temp_data[0]&0xf0)>>4)|((temp_data[1]&0x0f)<<4);

disp_buf[3]= temp_comp /100+0x30; //百位部分变换为ascii码

temp = temp_comp%100; //十位和个位部分

disp_buf[2]= temp /10+0x30; //分离出十位并变换为ascii码

disp_buf[1]= temp %10+0x30; //分离出个位并变换为ascii码

if(disp_buf[3]==0x30) //百位ascii码为

0x30(即数字0),不显示

{

disp_buf[3]=0x20;

if(disp_buf[2]==0x30)

disp_buf[2]=0x20;

}

if(sign) disp_buf[3]=0x2d;

}

3.2.2单片机串口初始化

/********以下是串口初始化函数********/

void uart0_init(void)

{

UCSRA = 0x00; // |(1<

UCSRB = 0x00;

UCSRC |= (1<

UBRRL=(fosc/16/(baud+1))%256;

UBRRH=(fosc/16/(baud+1))/256;

UCSRB |= (1 << TXEN)|(1 << RXEN);

}

结论

该产品能非常好的解决生活中婴幼儿被烫伤,冻着的问题,本产品无需专业训练,适用于任何人群;冷热自发电,确保了产品可以多次使用;.造价低廉,普通家庭能够接受;语音报温,简单明了。因此本产品非常适合投入市场。

参考文献

[1] 阎石. 数字电子技术基础[M]. 5版. 北京:高等教育出版社,2006.

[2] 康华光. 电子技术基础(数字部分)[M]. 5版北京:高等教育出版社,2006.

[3] 中国集成电路大全编委会. 高速CMOS集成电路[M]. 北京:国防工业出版社,1995.

[4] 孙俊人. 新编电子电路大全. 第3卷. 通用数字电路[M]. 北京:中国计量出版社,2001.

[5]百度百科A/D转换

附录一

#include

#include

#define uchar unsigned char

#define uint unsigned int

#define fosc 8000000 //晶振8MHZ

#define baud 9600 //波特率定义

#include "1602LCD_drive.h"

#include "DS18B20_drive.h"

#define beep_0 (PORTD=PORTD&0x7f)

#define beep_1 (PORTD=PORTD|0x80)

void port_init(void);

void TempDisp(void);

void beep(void);

void MenuError(void);

void MenuOk(void);

void GetTemperture(void);

void TempConv(void);

uchar temp_flag ;

uchar temp_comp; //用来存放测量温度的整数部分

uchar disp_buf[8]={0}; //显示缓冲

uchar temp_data[2] = {0x00,0x00}; //用来存放温度数据的高位和低位

uchar line1_data[] = " DS18B20 OK "; //DS18B20正常时第1行显示的信息

uchar menu1_error[] = " DS18B20 ERR "; //DS18B20出错时第1行显示的信息

uchar menu2_error[] = " TEMP: ---- "; //DS18B20出错时第2行显示的信息/********端口设置函数********/

void port_init()

{

PORTA = 0xFF;

DDRA = 0X00;

PORTC = 0xff; //输出高电平

DDRC = 0xFF; //设为输出

DDRB =(0<

DDRB=(0<

PORTB=0xff;

PORTD = 0X00;

DDRD|=(1<

}

void MenuError()

{

lcd_clr();

LCD_write_str(0,0,menu1_error);

LCD_write_str(0,1,menu2_error);

lcd_wdat(0xdf);

lcd_wdat('C');

}

void GetTemperture(void)

{

SREG=0x00;

Init_DS18B20();

if(yes0==0)

{

WriteOneByte(0xCC);

WriteOneByte(0x44);

Delay_ms(100);

Init_DS18B20();

WriteOneByte(0xCC);

WriteOneByte(0xBE);

temp_data[0] = ReadOneByte();

temp_data[1] = ReadOneByte();

//temp_TH = ReadOneByte();

//temp_TL = ReadOneByte();

temp_flag=1;

}

else temp_flag=0;

SREG=0x80;

}

void TempConv()

{

uchar sign=0;

uchar temp; //定义温度数据暂存

相关文档
最新文档