物联网感知课程设计
- 格式: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;
}
}