物联网感知课程设计

  • 格式:doc
  • 大小:229.47 KB
  • 文档页数:21

目录

物联网感知课程设计 ................................................................................ 1

一.功能分析 ............................................................................................ 1

二.概要设计 ............................................................................................ 1

1.系统组成 ........................................................................................ 1

2.传感器选型 ...................................................................................... 1

三.详细设计 ............................................................................................ 1

1. 通信模块程序设计框图 ................................................................ 1

2.程序设计........................................................................................... 2

四.系统说明 ............................................................................................ 8

五.设计总结 ............................................................................................ 9

六.附录 .................................................................................................. 10

1

物联网感知课程设计

环境监测系统

程序设计课程设计报告

题目:设计一个环境监测系统。

一.功能分析

环境监测系统主要包括对环境变量的采集和显示。

(1)选择温湿度传感器来完成温度、湿度数据的采集。

(2)选择协调器串口发送程序。

(3)采用java语言制作相应的显示界面,将采集的变量值实时显示并给出相应提示。

二.概要设计

1.系统组成

系统大体组成包括:传感器模块、数据传送模块和电机控制模块。系统框图如图1所示。由于传感器模块没有外接电路,因此需要通过中间的协调器将数据转为串口形式发送到PC机上。

图1 系统框图

2.传感器选型

选择SHT10单片数字温湿度传感器来监测环境。SHT10采用CMOSens专利技术将温度湿度传感器、A/D转换器及数字接口无缝结合,使传感器具有体积小、响应速度快、接口简单、性价比高等特点。

电路连接时,接口简单,两线连接,SHT10的两线串行接口(bidirectional 2-wire)在传感器信号读取和电源功耗方面都做了优化处理,其总线类似I2C总线但并不兼容I2C总线。

三.详细设计

1. 通信模块程序设计框图

Zigbee传输

协调器 温、湿度传感器

PC显示 串口传输

电机

1.打开串口(逻辑串口号:根据设备管理器的端口)

2. 配置串口参数(波特率、校验位、起始位、停止位)

3. 设置读写超时时间

4. 设置串口底层接收、发送缓冲区大小

5. 设置串口事件(数据可读事件、启动发送数据事件、工作线程结束事件等)

2

2.程序设计

package org.serial;

import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.util.Enumeration;

import java.util.TooManyListenersException;

import java.awt.FlowLayout;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JTextField;

import mPortIdentifier;

import gnu.io.PortInUseException;

import gnu.io.SerialPort;

import gnu.io.SerialPortEvent;

import gnu.io.SerialPortEventListener;

import gnu.io.UnsupportedCommOperationException;

/**

* @项目名称 :illegalsms

* @文件名称 :SerialPort.java

* @所在包 :org.serial

* @功能描述 :

* 串口类

* @创建者 :

* @创建日期 :2016-12-23

* @修改记录 :

*/

@SuppressWarnings("serial")

public class DSerialPort extends JFrame implements Runnable,

SerialPortEventListener {

private String appName = "协调器数据接收";

private int timeout = 2000;//open 端口时的等待时间

private int threadTime = 0;

private CommPortIdentifier commPort;

private SerialPort serialPort; 6.启动串口后台工作线程

3 private InputStream inputStream;

private OutputStream outputStream;

/**

* @方法名称 :listPort

* @功能描述 :列出所有可用的串口

* @返回值类型 :void

*/

@SuppressWarnings("rawtypes")

public void listPort(){

CommPortIdentifier cpid;

Enumeration en = CommPortIdentifier.getPortIdentifiers();

System.out.println("now to list all Port of this PC:" +en);

while(en.hasMoreElements()){

cpid = (CommPortIdentifier)en.nextElement();

if(cpid.getPortType() == CommPortIdentifier.PORT_SERIAL){

System.out.println(cpid.getName() + ", " +

cpid.getCurrentOwner());

}

}

}

/**

* @方法名称 :selectPort

* @功能描述 :选择一个端口,比如:COM1

* @返回值类型 :void

* @param portName

*/

@SuppressWarnings("rawtypes")

public void selectPort(String portName){

mPort = null;

CommPortIdentifier cpid;

Enumeration en = CommPortIdentifier.getPortIdentifiers();

while(en.hasMoreElements()){

cpid = (CommPortIdentifier)en.nextElement();

if(cpid.getPortType() == CommPortIdentifier.PORT_SERIAL

&& cpid.getName().equals(portName)){

mPort = cpid;

break;

}

}