作者:湖北师范学院 谭海文 李绍锰 明辉
指导教师:梅斌
作品简介
开发背景
我们都知道照顾三岁以下的孩子是非常需要耐心和时间的,也是一件困难的事情。为了满足工作繁忙的人们更好地照顾年幼的小孩,我们设计了这款多功能智能婴儿车。
结构说明
作品主要由IAP15F2K61S2单片机、LCD12864、四个红外探头、两个直流电机、无线遥控、声音检测模块、湿度检测模块、GSM、键盘、指示灯、车体模型等器件组成。IAP15F2K61S2作为控制核心,LCD12864用于显示时间、温度、摇车定时时间和一些功能指示;车体四个角的红外探头检测高度落差用于防跌落;无线遥控可控制车体运动;声音检测、湿度检测和GSM结合实现远程监控。
功能与使用说明
本作品可以无线遥控车体的前后左右及转圈运动。在安全方面,车的四个角都装有一个红外探头,当有探头检测到高度落差时,车轮电机执行相应动作,起到防跌落的功能。为帮助小孩的睡眠,可以开启摇车定时功能,可以根据需要设定摇车时间,车自动前后运动并执行设定的时间,在摇车的同时防跌落功能还是有效的。当小孩睡醒并哭泣时,将自动向指定号码拨打一次电话,来提醒父母孩子醒了从而及时照顾到孩子。婴儿车还有尿湿检测功能,尿湿检测功能开启后,小孩尿湿时指示灯亮起,并向指定号码发送一条短信提示,如果关闭GSM功能则只亮指示灯。另外婴儿车有LCD12864显示实时时间、温度和进行功能指示。
作品特色
1、能无线遥控车体运动,并具有自动摇车功能;
2、安全防跌落;
3、可通过GSM网络提醒婴儿尿湿和睡醒;
4、具有实用性、娱乐性的同时,也保障了孩子的健康和安全。
平台选型说明
以STC公司IAP15F2K61S2单片机为核心的开发套件作为作品开发平台,配合声音检测模块、湿度检测模块、LCD12864显示、直流电机、无线遥控模块、GSM通信模块等传感器、显示器、执行器及通信部件,构成整个智能婴儿车系统。
设计说明
首先我们制作了一个婴儿车的车体模型;车轮由两个电极驱动的轮子和两个转向轮构成;车把手上有一个遥控指示灯和尿湿指示灯;车身有一个键盘,分别是总开关、睡醒哭声检测开关、尿湿检测开关、摇车定时加、摇车定时减和摇车定时开关。
我们用LCD12864来做显示设备,它可有四行,每行可显示8个汉字或者16个字母数字。我们用第一行来显示时间和温度,第二行显示摇车定时和摇车时间,第三行显示哭声检测开启关闭状态,第四行显示尿湿检测开启关闭状态。LCD12864显示情况如图1所示。
图1 LCD12864显示情况
温度和时间分别是采用DS18B20和DS1302芯片来获取的,18B20采用单线接口方式,测量范围广,误差1摄氏度,可满足日常生活的温度测量,而1302性能高、功耗低,具有双电源,主电源掉电保持运行。
在遥控运动方面,我们通过200米无线遥控模块与单片机结合,单片机通过读取遥控模块信号给电机驱动模块相应信号,从而控制车的前后左右及转圈的运动。为增加娱乐性,我们还设计了摇车定时的功能,用户可以通过键盘设定摇车的时间,通过液晶显示出来,车自动前后运动执行用户设定的时间。车的运动为前一秒后一秒,这样就达到了摇车目的。虽然在我们的作品中车运动时电机杂音较大,如果做出产品相信不会太大杂音。
定时摇车功能的实现,是通过单片机读取时钟模块的秒,控制电机电机运动。当我们设定摇车时间并开启摇车后,单片机读取的秒为奇数时两个电机同时做前进动作,为偶数时两个电机同时做后退动作,并且函数中的标志数自加。通过调试我们知道了标志数达到4800时,大概为一分钟,这时让设置的时间数减一,直到减到零,车停止运动。这样一来,达到了所需要的目的,而避免了其它中断模块的冲突。
为增加婴儿车的安全性,我们设计了防跌落功能。考虑成本,我们不使用雷达测距,而使用红外探头。红外探头能通过检测是否达到我们设定的距离而给出不同电平变。化考虑到车的四个角都有可能接近跌落边缘,我们给车的四个角各装一个红外探头。当有红外检测到高度落差时,通过单片机给电机驱动相应信号驱动电机做出相应动作。例如前左角检测到高度落差时,左边的轮子后退,这样就实现了防跌落的功能。防跌落功能如图2所示。
图2 智能婴儿车防跌落功能示意图
据了解三岁一下的小孩一天要睡十五个小时左右,而白天睡觉的时候,大人要守在旁边,以便当小孩醒来时得到及时的照顾。我们都知道,三岁下的小孩在睡醒时,都会哭喊。通过这些现象,我们给婴儿车设计了哭声检测功能,通过GSM远程监控小孩是否睡醒。
随着GSM的网络建设的完善,GSM模块的应用范围也越来越广。单片机通过P30、P31的串口通信实现与GSM网络的通信。我们所用到的GSM模块波特率默为9600,我们的单片机设定的频率为11.0592MHz,定时器1为模式2(8位自动重载),所以设置波特率重装值TL1=(256-(11059200/32/9600))=220,TH1=(256-(11059200/32/9600))=220。串口通信主要代码:
void Uart() interrupt 4 using 1 ///UART 中断服务程序
{ if (RI)
{ RI = 0; } //清除RI位
if (TI)
{ TI = 0; //清除TI位
busy = 0; } //清忙标志
}
void SendData(BYTE dat) ////发送串口数据
{ while (busy); //等待前面的数据发送完成
busy = 1;
SBUF = dat; } //写数据到UART数据寄存器
void SendString(char *s) ///发送字符串
{ while (*s) //检测字符串结束标志
{ SendData(*s++);} //发送当前字符
}
先用GSM模块通过与PC机的串口进行调试明确。在单片机上执行发送以下命令可进行打电话、发短信操作:
void GSM_Call(void)////打电话
{ SendString("AT\n");
Delay_ms(100);
SendString("ATD15826973731;\n");//设置接收电话号码
Delay_ms(100);
}
void GSM_Sent_Text_Message(void)//发送英文短信
{ SendString("AT\n");
Delay_ms(200);
SendString("AT+CMGF=1\n");//设置为TEXT模式,发送短信内容为英文
Delay_ms(200);
SendString("AT+CMGS=\"15826973731\"\n");//设置接收电话号码
Delay_ms(200);
SendString("bedwetting");//发送内容
SendString("\x1a\n");//结束符
}
声音检测模块直接与单片机通信,由于声音检测模块安装在车内,而且检测范围有限,并有开关控制。我们只提取车内声音的有无的数字量。当开关开启时,并检测到足够大的声音时(大小可通过灵敏度进行调节),通过单片机向GSM模块发送打电话指令,GSM执行打电话操作,达到了远程监控小孩是否睡醒的目的。这样以来,当小孩睡着时我们可以开启哭声检测,大人去做别的事或去别的房间也可以及时知道小孩是否睡醒。
我们都知道小孩尿湿是难免的,传统办法是用手去触摸感受小孩是否尿湿。为此我们为婴儿车添加了尿湿检测。主要是由湿度传感器构成,我们将湿度检测探头放于车内,若在实际使用中还可放于尿不湿内,通过湿度检测探头检测到湿度的变化,湿度模块将信号传给单片机,亮起指示灯,若开启GSM则通过GSM模块向指定号码发送短信提示,达到提醒大人及时处理的目的。
整个婴儿车系统很好地实现了以上各功能的整合,互不干扰。
此文档的视频来自:http://v.eepw.com.cn/video/play/id/13379