无线传感网智能水壶doc汇总.docx
- 文档编号:11402077
- 上传时间:2023-02-28
- 格式:DOCX
- 页数:15
- 大小:334.08KB
无线传感网智能水壶doc汇总.docx
《无线传感网智能水壶doc汇总.docx》由会员分享,可在线阅读,更多相关《无线传感网智能水壶doc汇总.docx(15页珍藏版)》请在冰豆网上搜索。
无线传感网智能水壶doc汇总
课程设计任务书
学院
计算机与信息工程学院
专业
物联网工程
课程名称
无线传感网络课程设计
题目
基于物联网的厨房烧水提醒系统
完成期限
自2016年6月13日至2016年6月19日共1周
内
容
及
任
务
一、项目的目
通过ArduinoMega2560,lm35温度传感器和蓝牙通信芯片,结合运行在智能手机的蓝牙接收应用程序,实现温度数据的接收显示,最终实现对烧水时间的计时,做到对Java语言的编码设计与硬件编程,掌握传感器的基本应用,并且能够联系其他元件设计出产生成品,进行理论与实际的结合,提高应用计算机软件的有关设计能力,提高分析、解决实际问题的能力。
二、项目任务的主要内容和要求
选择合适的传感器、微处理器、无线通信芯片,构建无线传感器节点利用传感器采集数据到ARDUINO,并通过蓝牙发送到收集,
手机应用收集数据,开始计时,根据设定时间,语音提醒。
三、项目设计(研究)思路
本课程设计主要运用的硬件ArduinoMega2560,首先了解ArduinoMega2560的组成结构,蓝牙通信芯片的工作原理以及LM35温度传感器的输出电压与温度的转换关系。
在软件部分,需要学习arduino的编程语言,在eclipse上使用Java编写手机应用程序。
利用串口使电脑上的arduinoIDE程序中的代码烧录进Arduino板中,将手机应用程序导入到手机。
最后进行文档的整合部分。
四、具体成果形式和要求
LM35温度传感器将正在烧水的水温通过一同连接在arduinp板上的蓝牙模块传输到手机上,手机接收数据,显示当前水温,并开始计时,到达设定时间发出提醒
撰写课程设计说明文档。
进
度
安
排
起止日期
工作内容
06.13-06.15
部署实验环境
06.16-06.17
分析系统需求
06.18-06.19
实现代码编写和文档整合
主
要
参
考
资
料
参考文献:
[1]余孟尝.数字电子技术基础.高等教育出版社,2006
[2]胡向东等.传感器与检测技术.机械工业出版社,2009
[3]余成波等.传感器与自动检测技术.高等教育出版社,2004
[4]王兆安刘进军.电力电子技术,机械工业出版社,2009.
[5]杨素行.模拟电子技术基础简明教程.高等教育出版社,2006
[6]金发庆.传感器技术及其工程应用[M].机械工业出版社,2010
[7]王向辉,张国印,沈洁.Android应用程序开发[M].清华大学出版社,2011
[8]陈帅,钟先信,廖晓纬,石军锋.无线传感网络节点实现模型[J].计算机技术与发展,2007,
[9]唐宏,谢静.无线传感器网原理及应用[M].北京:
人民邮电出版社,2010
指导教师
意见
(签字):
年月日
系(教研室)主任意见
(签字):
年月日
无线传感器网络课程设计说明书
学院名称:
计算机与信息工程学院
班级名称:
物联网工程132
学生姓名:
王同
学号:
2013211691
题目:
基于物联网的厨房烧水提醒系统
指导教师
姓名:
温卫敏
起止日期:
2016.6.13-2016.6.19
第一部分:
正文部分
一、选题背景
随着科学技术的发展和人们生活水平的提高,人们越来越注重自己生活环境的舒适、安全与便利。
近年来兴起的智能家居系统满足了人们的这种需求,它有效地在家居环境中组建家庭信息网络,将各种家电产品结合成一个有机整体,对家电设备进行集中或异地的智能化控制与管理,并且能够与外界进行信息交流。
首先,在研究蓝牙SPP应用模型和我国《家庭控制子网通信协议规范》的基础上,经过比较当前各种家庭内部组网技术的优劣,选择了基于蓝牙协议的家庭控制子网的实现方案。
该方案使用蓝牙SPP模型来承载通用设备控制协议,降低了家庭控制子网组网过程中的难度,符合实际应用场景。
其次,研究并提出了智能家居系统实现过程中处于核心地位的智能家居控制器的软硬件设计方案。
在硬件方面,硬件模块包括ArduinoMega2560,LM35集成蓝牙功能的芯片基本电路集合等。
软件模块包括arduino的编程语言,JDK,Eclipse,AndroidSDK,ADT插件安装在控制器目标板上,并在Linux内核中为系统各个硬件模块添加了相应的驱动程序。
最后,对蓝牙模块进行了测试,实现了蓝牙的点对点通信,并且为系统开发了部分常用的界面。
对研究工作做了总结,列出了所实现的研究成果以及有待实现的智能家居控制系统的功能智能家居是在互联网影响之下物联化的体现。
。
2、方案论证
1系统总体设计
图2.1系统总体设计
2.1所示,当智能水壶中的水达到设定温度时,由温度传感器采集数据发送到控制器中,利用蓝牙点对点通信与手机端连接并接收信息,开通手机中的预报功能,发出预报提示主人水烧开。
2相关知识介绍
ArduinoMega2560是采用USB接口的核心电路板,具有54路数字输入输出,适合需要大量IO接口的设计。
处理器核心是ATmega2560,同时具有54路数字输入/输出口(其中16路可作为PWM输出),16路模拟输入,4路UART接口,一个16MHz晶体振荡器,一个USB口,一个电源插座,一个ICSPheader和一个复位按钮。
ArduinoMega2560也能兼容为ArduinoUNO设计的扩展板。
LM35是由NationalSemiconductor所生产的温度感测器,其输出电压与摄氏温标呈线性关係,转换公式如式
(1),0°C时输出为0V,每升高1°C,输出电压增加10mV。
蓝牙模块是指集成蓝牙功能的芯片基本电路集合,用于无线网络通讯,大致可分为三大类型:
数据传输模块(如BLK-MD-BC04-B)远程控制模块(如BLK-MD-BC04-L)等。
使用arduino的编程语言,在电脑上使用arduinoIDE编写代码,用串口连接线连接电脑与Arduino板上,将arduinoIDE程序中的代码烧录进芯片中。
在eclipse上使用Java编写手机应用程序,实现蓝牙数据接收,时间的计时,利将手机应用程序导入到手机。
三、过程论述
3.1安装环境
(1)arduinoIDE程序安装
1)需要把ArduinoIDE下载回来(IDE就是arduino的软件程序开发环境)
下载后解压缩。
Windows:
XP、WIN732位需要手工更新驱动,驱动在IDE目录下drivers\FTDIUSBDrivers目录中,指定目录为之后自动搜索即可。
WIN764位,WIN8自动在线更新驱动即可。
2)arduino与usb数据线连接到电脑,然后会开始安装系统内驱动。
如果没有找到驱动,会显示这个画面。
这时,需要在开始菜单,“计算机”上面点右键,点“属性”。
然后点击设备管理会看到打了感叹号的未识别硬件在未识别硬件上点右键,点击“属性”,选择更新驱动程序软件。
选择浏览计算机以查找驱动程序软件然后目录选择你下载好的arduino1.0所在目录的drivers目录
注意,如果您的计算机提示无法找到驱动,需要将目录进一步定位到\drivers\FTDIUSBDrivers即点击下一步,就可以安装好驱动了。
(2)Android开发环境安装
第一步:
安装JDK。
第二步:
配置Windows上JDK的变量环境。
第三步:
下载安装Eclipse。
第四步:
下载安装AndroidSDK。
第五步:
为Eclipse安装ADT插件。
详情参照网络详细教程。
(3)arduino模块连接
了解蓝牙模块各个引脚应连接的位置,VCC:
接Arduino的5V。
GND:
接Arduino的GND。
TXD:
发送端,一般表示为自己的发送端,接Arduino的RX。
RXD:
接收端,一般表示为自己的接收端,接Arduino的TX。
如图3.1所示。
图3.1蓝牙模块
了解lm35传感器的各个引脚功能,模块规格:
主要芯片:
LM35.工作电压:
5V.传感器类型:
模拟.引脚:
out:
输出。
+:
VCCDC4V~6V。
输入端.-:
GND接地端。
如图3.2所示。
图3.2lm35传感器模块
在线调试时,首先是通过调试接线把节点和其底板连接起来,然后再用智能烧写器、烧写器连接线把节点连接上电脑USB口或直接用烧写器连接线直接连接上电脑USB口,进而通过串口工具进行在线调试。
如图3.3所示。
图3.3arduino调试接线图
3.2系统功能设计实现
首先,编写arduino板的程序,利用arduinoIDE程序编写代码,将温度传感器收集到的数据通过蓝牙模块发送给接收端,arduino板作为核心连接两个模块,并通过代码实现功能,读取A0口的电压值,再装换为温度值,再发送出去,代码如图3.4所示
图3.4arduino板程序图
然后,编写手机app。
在手机上实现蓝牙数据接收,定时警报这两个功能。
物联网的厨房烧水提醒系统,主要包括传感器采集模块,蓝牙发送模块、蓝牙接收模块、报警模块。
具体如下:
(1)传感器采集模块
为了实现温度传感器与控制器的数据传输,编写arduino板的程序,A0口是数据传输口,主要代码如下。
(2)蓝牙发送模块
将控制器接收的数据通过蓝牙模块发送到上位机,RX与TX为数蓝牙模块的数据接收与发送引脚。
通过蓝牙模块读取下位机数据缓冲区来实现数据的发送。
具体代码如下。
(3)蓝牙接收模块
为了实现蓝牙的通讯,需启动一个service去监听是否有数据返回。
一旦有数据返回就启动一个线程去处理数据,处理完数据,通过广播去通知UI。
主要代码如下:
publicclassThreadReadWriterSocketServerimplementsRunnable{
privateSocketclient=null;
privateContextcontext=null;
publicThreadReadWriterSocketServer(Contextcontext,Socketclient)
{
this.context=context;
this.client=client;
}
@Override
publicvoidrun()
{
Receive();
}
privatevoidReceive(){
//处理数据
}
}
(4)报警模块
实现功能方法:
主要使用service,便可以在程序即使后台运行的时候,也能够做出相应的提醒,并且不影响手机进行其他工作。
运用AlarmManager用来计时。
使用notification用作通知的显示。
主要代码如下。
importandroid.app.Activity;
importandroid.content.Intent;
importandroid.os.Bundle;
importandroid.view.Window;
importandroid.widget.Toast;
publicclassMainActivityextendsActivity{
privateIntentintent;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
//取消标题栏
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
intent=newIntent(this,LongRunningService.class);
//开启关闭Service
startService(intent);
//设置一个Toast来提醒使用者提醒的功能已经开始
Toast.makeText(MainActivity.this,"提醒的功能已经开启,关闭界面则会取消提醒。
",Toast.LENGTH_LONG).show();
}
@Override
protectedvoidonDestroy(){
super.onDestroy();
//在Activity被关闭后,关闭Service
stopService(intent);
}
}
publicintonStartCommand(Intentintent,intflags,intstartId){
AlarmManagermanager=(AlarmManager)getSystemService(ALARM_SERVICE);
//读者可以修改此处的Minutes从而改变提醒间隔时间
//此处是设置每隔90分钟启动一次
//这是90分钟的毫秒数
intMinutes=90*60*1000;
//SystemClock.elapsedRealtime()表示1970年1月1日0点至今所经历的时间
longtriggerAtTime=SystemClock.elapsedRealtime()+Minutes;
//此处设置开启AlarmReceiver这个Service
Intenti=newIntent(this,AlarmReceiver.class);
PendingIntentpi=PendingIntent.getBroadcast(this,0,i,0);
//ELAPSED_REALTIME_WAKEUP表示让定时任务的出发时间从系统开机算起,并且会唤醒CPU。
manager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,triggerAtTime,pi);
returnsuper.onStartCommand(intent,flags,startId);
}
@Override
publicvoidonDestroy(){
super.onDestroy();
//在Service结束后关闭AlarmManager
AlarmManagermanager=(AlarmManager)getSystemService(ALARM_SERVICE);
Intenti=newIntent(this,AlarmReceiver.class);
PendingIntentpi=PendingIntent.getBroadcast(this,0,i,0);
manager.cancel(pi);
}
}
四、结果分析
APP界面图如图4.1所示。
图4.2为arduino蓝牙串口数据图。
图4.1APP界面图图4.2温度传感器串口数据图
本课程设计实现了基于物联网的厨房烧水提醒系统,其功能是利用温度传感器等采集智能水壶内的烧水温度,并在控制器中进行处理,并通过蓝牙模块传送到手机界面中,当采集的温度超过设定的上下限值时,手机振动报警.主要包括硬件模块与软件模块,硬件模块包括ArduinoMega2560,LM35集成蓝牙功能的芯片基本电路集合等。
软件模块包括arduino的编程语言,JDK,Eclipse,AndroidSDK,ADT插件等。
系统经软硬件测试,达到所要求.我们实现LM35温度传感器将正在烧水的水温通过一同连接在arduinp板上的蓝牙模块传输到手机上,手机接收数据,显示当前水温,并开始计时,到达设定时间发出提醒。
通在实验过程中出现了偶尔不能接收数据的原因,现在总结出以下结论:
(1)Arduino的Serial.read()每次只能读一个字节,所以你要读字符串的时候要改一下代码在代码烧写中。
(2)串口流通的数据都是bytes而没有字符串概念,所有发送数据都会按一个byte一个byte缓存。
五、结论
通过本次课程设计,让我了解到更多的有关课外的知识,同时也锻炼了自己的动手实践能力。
在整个课程设计的过程中,让我自己去发现问题,并分析问题和解决问题,让我真正的明白做好一件事需要的不仅仅是知识,还应当具备各方面的能力,查阅资料的能力,利用知识的能力,分析和解决问题的能力以及和他人的沟通能力,自我学习的能力等。
经过前期的资料准备以及设计规划构思,中期长时间的软硬件调试和后期的完善工作。
本次基于蓝牙技术的智能烧水控制系统设计圆满完成任务,实现了预期的功能:
即通过手机蓝牙串口软件发出指令,控制器接收指令,并对其收到的指令作出处理,再将处理结果发送给手机终端,最后智能水壶再作出相应的反应,从而达到无线控制智能水壶的目的。
不过本设计还不算完美,还有许多需要改进的地方。
例如:
在装置供电方面,由于设备数量略多以及一些元器件对电压电流消耗较大,这使得只靠将室内220V电压转换的5V电压不足以带动整个装置的正常运转。
最后不得已采用了多节电池盒对各个装置采取分别供电的方法。
此外整个装置在外观上还不够美观,内部的一些需要打胶,焊接的地方等做工有点粗糙,略微有点影响整体观感。
在完成课程设计的这些时间里,我经历了很多困难,很多焦虑,当然还有很多快乐。
但值得庆幸的是每一天我都在成长,都有收获。
特别是在由一个阶段进到下一个阶段,一个模块进到下一个模块的时候,刚开始都会有一段迷茫和疑惑期,这也应验了那句话:
万事开头难。
整个课程设计做下来让我在蓝牙链接的水平有了很大的提升,对我有着重大的意义。
因为我用心记录着这段日子中的每一天,每一个经验,每一个教训,这些不仅仅局限于一个毕业设计,它们更多的承载着我大学期间最后的记忆,也记录着我的成长,是我以后闯荡社会的资本,是一笔宝贵的财富。
第二部分:
参考文献
[1]余孟尝.数字电子技术基础.高等教育出版社,2006
[2]胡向东等.传感器与检测技术.机械工业出版社,2009
[3]余成波等.传感器与自动检测技术.高等教育出版社,2004
[4]王兆安刘进军.电力电子技术,机械工业出版社,2009.
[5]杨素行.模拟电子技术基础简明教程.高等教育出版社,2006
[6]金发庆.传感器技术及其工程应用[M].机械工业出版社,2010
[7]王向辉,张国印,沈洁.Android应用程序开发[M].清华大学出版社,2011
[8]陈帅,钟先信,廖晓纬,石军锋.无线传感网络节点实现模型[J].计算机技术与发展,2007,
[9]唐宏,谢静.无线传感器网原理及应用[M].北京:
人民邮电出版社,2010
学生签名:
日期:
第三部分:
指导教师评语
第四部分:
成绩评定
指导教师姓名:
日期:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 无线 传感 智能 水壶 doc 汇总