无线传感网智能水壶.doc_第1页
无线传感网智能水壶.doc_第2页
无线传感网智能水壶.doc_第3页
无线传感网智能水壶.doc_第4页
无线传感网智能水壶.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程设计任务书 学 院计算机与信息工程学院专 业物联网工程课程名称无线传感网络课程设计题 目基于物联网的厨房烧水提醒系统完成期限自2016年6月13日至2016年6月19日共1周内容及任务一、 项目的目通过Arduino Mega2560,lm35温度传感器和蓝牙通信芯片,结合运行在智能手机的蓝牙接收应用程序,实现温度数据的接收显示,最终实现对烧水时间的计时,做到对Java语言的编码设计与硬件编程,掌握传感器的基本应用,并且能够联系其他元件设计出产生成品,进行理论与实际的结合,提高应用计算机软件的有关设计能力,提高分析、解决实际问题的能力。二、项目任务的主要内容和要求选择合适的传感器、微处理器

2、、无线通信芯片,构建无线传感器节点利用传感器采集数据到ARDUINO,并通过蓝牙发送到收集,手机应用收集数据,开始计时,根据设定时间,语音提醒。三、项目设计(研究)思路本课程设计主要运用的硬件Arduino Mega2560,首先了解Arduino Mega2560的组成结构,蓝牙通信芯片的工作原理以及LM35温度传感器的输出电压与温度的转换关系。在软件部分,需要学习arduino的编程语言,在eclipse上使用Java编写手机应用程序。利用串口使电脑上的arduino IDE程序中的代码烧录进Arduino板中,将手机应用程序导入到手机。最后进行文档的整合部分。四、具体成果形式和要求LM3

3、5温度传感器将正在烧水的水温通过一同连接在arduinp板上的蓝牙模块传输到手机上,手机接收数据,显示当前水温,并开始计时,到达设定时间发出提醒 撰写课程设计说明文档。进度安排起止日期工作内容0613-06. 15部署实验环境0616-06. 17分析系统需求06. 18-06. 19实现代码编写和文档整合主要参考资料参考文献:1 余孟尝数字电子技术基础高等教育出版社,2006 2 胡向东等传感器与检测技术机械工业出版社,2009 3 余成波等传感器与自动检测技术高等教育出版社,2004 4 王兆安刘进军. 电力电子技术,机械工业出版社, 2009. 5 杨素行模拟电子技术基础简明教程高等教育

4、出版社,20066金发庆.传感器技术及其工程应用M.机械工业出版社,20107王向辉,张国印,沈洁.Android应用程序开发M.清华大学出版社,20118陈帅,钟先信,廖晓纬,石军锋.无线传感网络节点实现模型J.计算机技术与发展,2007,9唐宏,谢静.无线传感器网原理及应用M. 北京:人民邮电出版社,2010指导教师意见(签字): 年 月 日系(教研室)主任意见(签字): 年 月 日无线传感器网络课程设计说明书学院名称: 计算机与信息工程学院 班级名称: 物联网工程132 学生姓名: 王 同 学 号: 2013211691 题 目: 基于物联网的厨房烧水提醒系统 指导教师姓 名: 温卫敏

5、起止日期: 2016.6.13 -2016.6.19 第一部分:正文部分一、选题背景随着科学技术的发展和人们生活水平的提高,人们越来越注重自己生活环境的舒适、安全与便利。近年来兴起的智能家居系统满足了人们的这种需求,它有效地在家居环境中组建家庭信息网络,将各种家电产品结合成一个有机整体,对家电设备进行集中或异地的智能化控制与管理,并且能够与外界进行信息交流。 首先,在研究蓝牙SPP应用模型和我国家庭控制子网通信协议规范的基础上,经过比较当前各种家庭内部组网技术的优劣,选择了基于蓝牙协议的家庭控制子网的实现方案。该方案使用蓝牙SPP模型来承载通用设备控制协议,降低了家庭控制子网组网过程

6、中的难度,符合实际应用场景。 其次,研究并提出了智能家居系统实现过程中处于核心地位的智能家居控制器的软硬件设计方案。在硬件方面,硬件模块包括Arduino Mega2560,LM35集成蓝牙功能的芯片基本电路集合等。软件模块包括arduino的编程语言 ,JDK,Eclipse ,Android SDK ,ADT插件安装在控制器目标板上,并在Linux内核中为系统各个硬件模块添加了相应的驱动程序。 最后,对蓝牙模块进行了测试,实现了蓝牙的点对点通信,并且为系统开发了部分常用的界面。对研究工作做了总结,列出了所实现的研究成果以及有待实现的智能家居控制系统的功能智能家居是在互联

7、网影响之下物联化的体现。2、 方案论证1系统总体设计蓝牙通信芯片蓝牙接收功能温度传感器终端(手机)温度时间提示预报功能控制器图2.1系统总体设计2.1所示,当智能水壶中的水达到设定温度时,由温度传感器采集数据发送到控制器中,利用蓝牙点对点通信与手机端连接并接收信息,开通手机中的预报功能,发出预报提示主人水烧开。2相关知识介绍Arduino Mega2560是采用USB接口的核心电路板,具有54路数字输入输出,适合需要大量IO接口的设计。处理器核心是ATmega2560,同时具有54路数字输入/输出口(其中16路可作为PWM输出),16路模拟输入,4路UART接口,一个16MHz晶体振荡器,一个

8、USB口,一个电源 插座,一个ICSP header和一个复位按钮。Arduino Mega2560也能兼容为Arduino UNO设计的扩展板。LM35是由National Semiconductor所生产的温度感测器,其输出电压与摄氏温标呈线性关係,转换公式如式(1),0°C时输出为0V,每升高 1°C,输出电压增加10mV。蓝牙模块是指集成蓝牙功能的芯片基本电路集合,用于无线网络通讯,大致可分为三大类型:数据传输模块(如BLK-MD-BC04-B)远程控制模块(如BLK-MD-BC04-L)等。使用arduino的编程语言,在电脑上使用arduinoIDE编写代码,用

9、串口连接线连接电脑与Arduino板上,将arduino IDE程序中的代码烧录进芯片中。在eclipse上使用Java编写手机应用程序,实现蓝牙数据接收,时间的计时,利将手机应用程序导入到手机。三、过程论述3.1安装环境(1)arduino IDE程序安装 1)需要把Arduino IDE下载回来(IDE就是arduino的软件程序开发环境)下载后解压缩。Windows:XP、WIN7 32位需要手工更新驱动,驱动在IDE目录下driversFTDI USB Drivers目录中,指定目录为之后自动搜索即可。WIN7 64位,WIN8自动在线更新驱动即可。 2) arduino与usb数据线

10、连接到电脑,然后会开始安装系统内驱动。如果没有找到驱动,会显示这个画面。这时,需要在开始菜单,“计算机”上面点右键,点“属性”。然后点击设备管理会看到打了感叹号的未识别硬件在未识别硬件上点右键,点击“属性”,选择更新驱动程序软件。选择浏览计算机以查找驱动程序软件然后目录选择你下载好的arduino1.0所在目录的drivers目录注意,如果您的计算机提示无法找到驱动,需要将目录进一步定位到driversFTDI USB Drivers即点击下一步,就可以安装好驱动了。(2) Android 开发环境安装 第一步:安装JDK。 第二步:配置Windows上JDK的变量环境 。 第三步: 下载安装

11、Eclipse 。 第四步:下载安装Android SDK 。 第五步:为Eclipse安装ADT插件。 详情参照网络详细教程。(3)arduino模块连接了解蓝牙模块各个引脚应连接的位置,VCC:接Arduino的5V。GND:接Arduino的GND。TXD:发送端,一般表示为自己的发送端,接Arduino的RX。RXD:接收端,一般表示为自己的接收端,接Arduino的TX。如图3.1所示。图3.1 蓝牙模块了解lm35传感器的各个引脚功能,模块规格:主要芯片:LM35.工作电压:5V.传感器类型:模拟.引脚:out:输出。+:VCC DC4V6V。输入端. -:GND 接地端。如图3.

12、2所示。图3.2 lm35传感器模块在线调试时,首先是通过调试接线把节点和其底板连接起来,然后再用智能烧写器、烧写器连接线把节点连接上电脑USB口或直接用烧写器连接线直接连接上电脑USB口,进而通过串口工具进行在线调试。如图3.3所示。图3.3 arduino调试接线图3.2系统功能设计实现 首先,编写arduino板的程序,利用arduino IDE程序编写代码,将温度传感器收集到的数据通过蓝牙模块发送给接收端,arduino板作为核心连接两个模块,并通过代码实现功能,读取A0口的电压值,再装换为温度值,再发送出去,代码如图3.4所示 图3.4 arduino板程序图然后,编写手机app。在

13、手机上实现蓝牙数据接收,定时警报这两个功能。物联网的厨房烧水提醒系统,主要包括传感器采集模块,蓝牙发送模块、蓝牙接收模块、报警模块。具体如下: (1)传感器采集模块 为了实现温度传感器与控制器的数据传输,编写arduino板的程序,A0口是数据传输口,主要代码如下。(2)蓝牙发送模块 将控制器接收的数据通过蓝牙模块发送到上位机,RX与TX为数蓝牙模块的数据接收与发送引脚。通过蓝牙模块读取下位机数据缓冲区来实现数据的发送。具体代码如下。(3)蓝牙接收模块 为了实现蓝牙的通讯,需启动一个service去监听是否有数据返回。一旦有数据返回就启动一个线程去处理数据,处理完数据,通过广播去通知UI。主要

14、代码如下:public class ThreadReadWriterSocketServer implements Runnable private Socket client=null; private Context context=null; public ThreadReadWriterSocketServer(Context context,Socket client) this.context=context; this.client=client; Override public void run() Receive(); private void Receive() /处理数据

15、 (4)报警模块实现功能方法:主要使用service,便可以在程序即使后台运行的时候,也能够做出相应的提醒,并且不影响手机进行其他工作。运用AlarmManager用来计时。使用notification用作通知的显示。主要代码如下。import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.Window; import android.widget.Toast; public class MainActivity extends Activit

16、y private Intent intent; Override protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); /取消标题栏 requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); intent = new Intent(this, LongRunningService.class); /开启关闭Service startService(intent

17、); /设置一个Toast来提醒使用者提醒的功能已经开始 Toast.makeText(MainActivity.this,"提醒的功能已经开启,关闭界面则会取消提醒。",Toast.LENGTH_LONG).show(); Override protected void onDestroy() super.onDestroy(); /在Activity被关闭后,关闭Service stopService(intent); public int onStartCommand(Intent intent, int flags, int startId) AlarmManage

18、r manager = (AlarmManager) getSystemService(ALARM_SERVICE); /读者可以修改此处的Minutes从而改变提醒间隔时间 /此处是设置每隔90分钟启动一次 /这是90分钟的毫秒数 int Minutes = 90*60*1000; /SystemClock.elapsedRealtime()表示1970年1月1日0点至今所经历的时间 long triggerAtTime = SystemClock.elapsedRealtime() + Minutes; /此处设置开启AlarmReceiver这个Service Intent i = ne

19、w Intent(this, AlarmReceiver.class); PendingIntent pi = PendingIntent.getBroadcast(this, 0, i, 0); /ELAPSED_REALTIME_WAKEUP表示让定时任务的出发时间从系统开机算起,并且会唤醒CPU。 manager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, triggerAtTime, pi); return super.onStartCommand(intent, flags, startId); Override public void onD

20、estroy() super.onDestroy(); /在Service结束后关闭AlarmManager AlarmManager manager = (AlarmManager) getSystemService(ALARM_SERVICE); Intent i = new Intent(this, AlarmReceiver.class); PendingIntent pi = PendingIntent.getBroadcast(this, 0, i, 0); manager.cancel(pi); 四、结果分析APP界面图如图4.1所示。图4.2为arduino蓝牙串口数据图。 图

21、 4.1 APP界面图 图4.2 温度传感器串口数据图本课程设计实现了基于物联网的厨房烧水提醒系统,其功能是利用温度传感器等采集智能水壶内的烧水温度,并在控制器中进行处理,并通过蓝牙模块传送到手机界面中,当采集的温度超过设定的上下限值时,手机振动报警.主要包括硬件模块与软件模块,硬件模块包括Arduino Mega2560,LM35集成蓝牙功能的芯片基本电路集合等。软件模块包括arduino的编程语言 ,JDK,Eclipse ,Android SDK ,ADT插件等。系统经软硬件测试,达到所要求.我们实现LM35温度传感器将正在烧水的水温通过一同连接在arduinp板上的蓝牙模块传输到手机上

22、,手机接收数据,显示当前水温,并开始计时,到达设定时间发出提醒 。通在实验过程中出现了偶尔不能接收数据的原因,现在总结出以下结论: (1)Arduino的Serial.read()每次只能读一个字节,所以你要读字符串的时候要改一下代码在代码烧写中。 (2)串口流通的数据都是bytes而没有字符串概念,所有发送数据都会按一个byte一个byte缓存。五、结论通过本次课程设计,让我了解到更多的有关课外的知识,同时也锻炼了自己的动手实践能力。在整个课程设计的过程中,让我自己去发现问题,并分析问题和解决问题,让我真正的明白做好一件事需要的不仅仅是知识,还应当具备各方面的能力,查阅资料的能力,利用知识的能力,分析和解决问题的能力以及和他人的沟通能力,自我学习的能力等。经过前期的资料准备以及设计规划构思,中期长时间的软硬件调试和后期的完善工作。本次基于蓝牙技术的智能烧水控制系统设计圆满完成任务,实现了预期的功能:即通过手机蓝牙串口软件发出指令,控制器接收指令,并对其收到的指令作出处理,再将处理结果发送给手机终端,最后智能水壶再作出相应的反应,从而达到无线控制智能水壶的目的。不过本设计还不算完美

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论