基于Arduino的显示测量环境数据设计

Posted 竹骄傲

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于Arduino的显示测量环境数据设计相关的知识,希望对你有一定的参考价值。

题目: 基于Arduino的显示测量环境数据设计

目录

基于Arduino的显示测量环境数据设计... 3

第一章 课题任务... 4

1.1课题任务... 4

1.2任务分工... 4

1.3设计条件... 4

第二章 设计方案... 4

2.1总体方案... 4

2.2硬件方案... 5

2.3软件方案... 8

第三章 设计调试... 8

3.1电路设计... 8

3.2电路调试... 13

3.3软件设计... 14

3.4软件调试... 17

第四章 测试结果... 18

4.1测试情况... 18

4.2成果总评... 19

第五章 总结感想... 20

参考文献... 21

基于Arduino的显示测量环境数据设计

摘要

本次课程设计,使用Arduino开发板、超声波传感器、温湿度传感器、光敏电阻、烟雾传感器、蓝牙模块等器材,实现环境监测系统的功能。一共有三个功能模块:数据采集模块、数据处理模块、数据显示模块;数据采集模块由各个传感器感知外部环境并且采集数据,然后传送给数据处理模块;数据处理模块Arduino开发板将来自数据采集模块的数据处理后通过蓝牙传送到从机上进行显示。目前只有蓝牙模块一种通信方式,如果蓝牙出现故障,则显示模块就会停止工作。解决方法:在后续的完善中,可以加入wife模块以及4G通信模块,可以有效解决通信方式单一的问题。经过测试证明,基于Arduino的测量环境数据系统运行稳定可靠。系统采用温湿度传感器、烟雾传感器、光敏电阻、超声波等采集感应模块来监测环境状况,方便操作,具有巨大的推广价值。

关键词Arduino;传感器;物联网

第一章 课题任务

1.1课题任务

设计实现一种环境检测仪,以arduino系列单片机为核心,集成温湿度传感器、超声波测距传感器、烟雾传感器、蓝牙HC-05模块及其他器件,采用C/C++语言编程实现在从机上显示测量环境数据的功能

1.2任务分工

硬件部分:以arduino系列单片机为核心,正确连接线路,集成温湿度传感器、超声波传感器、烟雾传感器等,设计并且选择显示模块的方案。

软件部分:根据硬件部分进行编写功能代码,使得各个传感器模块能够采集信息发送到arduino开发板,再通过蓝牙模块将检测到的环境数据传送到从机上进行显示。

1.3设计条件

在本次设计中,硬件器材主要有Arduino系列单片机、温湿度传感器、超声波测距传感器、烟雾传感器、蓝牙HC-05模块。软件编程环境是Arduino IDEArduino可轻松创建微控制器项目。只需要USB连接,这些设备可以通过简单易用的程序轻松编程。由于Arduino IDE提供了广泛的库,因此复杂的部件(如显示器、传感器)以及软件平台(如Adafruit IO)易于使用

第二章 设计方案

2.1总体方案

系统总体设计方案图如图1.1所示,控制器采用Arduino开发板,温湿度传感器采用DHT11,超声波使用HC-SR04,烟雾传感器采用MQ-5,用蓝牙模块传送数据到从机实现实时显示。

                             图2.1 系统电路设计框图

2.2硬件方案

(1)、烟雾传感器

  烟雾传感器选用MQ-5(如图1.2),MQ-5适用气体:液化气、甲烷、煤气,探测范围:300~10000ppm;

                     

                          图2.2  MQ-5烟雾传感器

(2)、超声波传感器

  HC-SR04是一种超声波接近传感器,可以告诉你物体是否在它前面,并且还提供传感器和物体之间的距离。HC-SR04由触发引脚上的10微秒高信号触发。一旦它再次拉低,模块就会发出8个40kHz的声音脉冲。如果物体存在于检测范围内,则声音脉冲被该物体反射,并且模块接收回声。发送八个脉冲和接收回波之间的时间可用于计算到反射声音的物体的距离

                      

                            图2.3    HC-SR04

(3)、温湿度传感器

  DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。测量范围:湿度20-95%RH,温度0-50℃ 、分辨率:湿度1%,温度1℃ 。

                     

                             图2.4  DHT11

(4)、Arduino模块

  Arduino是一款便捷灵活、方便上手的开源电子原型平台。包含硬件(各种型号的Arduino板)和软件(Arduino IDE)。

                   

                            2.5  Arduino电路板

5)、显示模块

方案一:采用 LCD1602。LCD1602字符型液晶显示模块是专门用于显示字

母、数字元、符号等的点阵型液晶显示模块。分4 位和 8 位数据传输方式。提供 5×7 点阵+游标的显示模式。提供显示数据缓冲区 DDRAM、字符发生器 CGROM 和字符发生器 CGRAM,可以使用 CGRAM 来存储自己定义的最多 8 个 5×8 点阵的图形字符的字模数据。提供了丰富的指令设置:清显示;游标回原点;显示开/关;游标开/关;显示字符闪烁;游标移位;显示移位元等。提供内部上电自动复位电路,当外加电源电压超过+4.5V 时,自动对模块进行初始化操作,将模块设置为默认的显示工作状态。

                             图2.6   LCD1602显示屏

方案二:通过蓝牙模块将数据传送到其他设备上显示,蓝牙设备使用无线电波连接手机和电脑。蓝牙产品包含一块小小的蓝牙模块以及支持连接的蓝牙无线电和软件。当两台蓝牙设备需要相互交流时,它们需要进行配对。蓝牙设备之间的通信在短程(被称为微微网,指设备使用蓝牙技术连接而成的网络)的临时网络中进行。这种网络可容纳两至八台设备进行连接。当网络环境创建成功,一台设备作为主设备,而所有其他设备作为从设备。在蓝牙设备加入和离开无线电短程传感时动态、自动建立。

                            图2.7 蓝牙HC-05模块

下列是两者之间的一些参数对比:

(1)、连接方式:LCD屏为有线连接,且需连接多跟线,极易出现错误;蓝牙为无线连接,需要传输数据时,只需连接四根线;

(2)、可显示范围:LCD屏一次仅可显示一行,而蓝牙模块与从机连接后可同时显示多行;

(3)、对比度:LCD屏为纯白显示,蓝牙模块与从机连接后为彩色显示;

综合考虑,选取第二种的蓝牙模块方案。

2.3软件方案

由温湿度传感器、超声波、光敏电阻、烟雾传感器、蓝牙HC-05模块等单应电路组成,其中温湿度传感器、超声波、光敏电阻、烟雾传感器主要实现数据采集功能;ardunio开发板主要实现数据处理功能;蓝牙模块主要实现与从机通信功能。然后编写代码完成上述模块功能。

该环境检测仪功能的实现分为了以下几个步骤:首先由各种传感器检测环境的的各个描述值,然后将数据传送到Arduino开发板进行数据处理,最后将处理后的数据通过蓝牙模块传输到从机进行显示。

第三章 设计调试

3.1电路设计

3.1.1 arduino开发板的设计

Arduino 101/Genuino 101是一个性能出色的低功耗开发板,它基于 Intel® Curie™ 模组,价格亲民,使用简单。101不仅有着和UNO一样特性和外设,还额外增加了 Bluetooth LE 和 6轴加速计、陀螺仪。(如图3.1)

图3.1  Arduino实物图

模块包含一个x86的夸克核心和一个32bit的ARC架构核心,时钟频率都是32MHz,intel的交叉工具链可以完成两个核心的开发。intel开发的一个实时操作系统和开发框架会在2016年3月开源,但是那时并不能直接与101对接,只能通过arduino核心的动态消息盒子来操作,所以只有有限的功能可以被使用,(和PC的交互通过USB接口,下载程序到flash,使用蓝牙和PWM)。

101带有14个I/O(其中四路可用作PWM输出),6个模拟输入,一个用作串口通信和上传程序的USB接口,1个电源座,1个带SPI和IIC脚的ICSP接口。I/O电压为3.3V,但也可以承受5V的电压。101能通过USB或者外部电源接口供电。两者同时供电时,电路

能自动进行切换。外部电源接口可以接交流转直流的适配器供电,也可以使用电池供电。

电源相关引脚如下(如图3.2):

VIN: 当使用外部DC电源供电时,VIN引脚就是外部电源的电压。可以直接通过这个引脚

使用外部电源。

5V: 板载5V输出引脚,这个电源来自USB口直接供电,或者DC电源座7~12V的电源输入后降压到5V。尽可能别使用板载的电源,如果控制不好,可能会毁坏 Arduino,不建议使用它。

3.3V: 板载有 3.3V输出引脚,最大能提供 1500mA电流,Curie也是使用这个 3.3V供电。

GND:接地引脚

IOREF:IOREF脚是板载的 I/O参考电平脚,一些 Arduino扩展板能通过这个引脚判断控

制器工作电压,进而切换成合适的电压(5V或 3.3V)进行工作。

存储:Intel Curie的两个处理器共用其上的存储空间,用户能够使用 196 kB的 Flas

(总共 384 kB)和 24kB的 SRAM(总共 80 kB)

I/O:101有 20个通用 I/O引脚,通过 pinMode()、digitalWrite()和 digitalRead()函数,可以进行数字输入输出操作。能通过analogWrite()函数用作 PWM输出。所有引脚都工作在 3.3V电压下。每个引脚大概都可以通过 4ma电流。一些引脚可以使用特定的函数驱

动。

Serial:0 (RX) 和 1 (TX)。需要注意的是驱动 0、1需要使用Serial1,而不是 Serial

中断:所有引脚都可以使用外部中断,中断形式有 高电平、低电平、上升沿、下降沿、电平改变触发。(电平改变触发仅支持 2, 5, 7,8, 10, 11, 12, 13)具体可见 attachInterrupt()函数及详细说明。

PWM:3, 5, 6, 9。可通过 analogWrite()提供 8位 PWM输出。

SPI:SS, MOSI, MISO, SCK。可通过 SPI库驱动 SPI引脚。

LED:13. 板载 LED灯通过 13号引脚驱动。当引脚输出高电平时,LED是亮,当为低电平

时,LED不亮。

ADC: 20个通用 I/O中有 6个可以用于模拟输入。板上的 A0~A5即为模拟输入引脚,ADC精度为 10位。支持 GND~3.3V以内的输入。


TWI:SDA、SCL,TWI通信使用 Wire库。 

                         图3.2  Arduino引脚图

3.1.2 传感器采集系统设计

(1)、MQ-5烟雾传感器

MQ-5传感器对丁烷、丙烷、甲烷的灵敏度高,对甲烷和丙烷可较好的兼顾。这种传感器可检测多种可燃性气体,特别是天然气,是一款适合多种应用的低成本传感器。

该模块一共有四个 IO口,分别为:VCC,DOUT,AOUT,GND(如图3.3)

VCC:电源正输入

DOUT:TTL电平输出

AOUT:模拟电平输出
GND:电源负输出 

 

                        图3.3  MQ-5传感器引脚图

(2)、DHT11温湿度传感器

引脚说明:

1、VDD 供电 3.5V-5.5V DC

2、DATA 串行数据,单总线

3、GND 接地,电源负极。


DHT11data数据格式:一次传输40位数据=8bit湿度整数数据 + 8bit湿度小数数据 + 8bint温度整数数据 + 8bit温度小数数据 + 8bit校验位

                      图3.4  DHT11传感器引脚图

(3)、超声波HC-SR04传感器

基本工作原理

(1)采用 IO 口 TRIG 触发测距,给最少 10us 的高电平信呈。

(2)模块自动发送 8 个 40khz 的方波,自动检测是否有信号返回;

(3)有信号返回,通过 IO 口 ECHO 输出一个高电平,高电平持续的时间就是超声

波从发射到返回的时间。测试距离=(高电平时间*声速(340M/S))/2;

引脚说明

Vcc:+5V电源供电

Trig:输入触发信号(可以触发测距)

Echo:传出信号回响(可以传回时间差)
Gnd:接地

                     图3.5  HC-SR04传感器引脚图

(4)、光敏电阻

引脚说明:

VCC 接电源正极 3.3-5V

GND 接电源负极

DO TTL 开关信号输出

             

                  图3.6  光敏电阻引脚图

3.1.3 显示模块设计

显示模块采用的是蓝牙 HC-05模块与从机通信进行显示,该模块可连接到微控制器的串行端口,允许微控制器通过蓝牙连接与其他设备通信。模块本身可以在主模式和从模式下运行,并且可以用于各种应用。

该模块的主要工作是为项目添加双向(全双工)无线功能。它可用于两个具有串行功能的微控制器之间的通信,也可用于通过微控制器控制任何蓝牙设备。通过 TX和 RX引脚(如图3.7),支持使用标准 AT命令。

模块启动后,任何蓝牙设备都应该可以发现它。接下来可以使用标准密码连接到设备;建立连接后,数据通过 HC-05传输并转换为串行流,最后由模块连接的微控制器读取该串行流。

蓝牙 HC-05模块一共有四个引脚,分别为:RXD,TXD,GND,VCC

                   

                       图3.7  蓝牙HC-05模块引脚图

3.1.4 实物连接图

各单元器件连接方式如图 3.8所示:

                         图3.8  各单元电路实物连线图

3.2电路调试

(1)电源部分:传感器没有成功上电,检查电源问题,以及正负极是否接反。

(2)传感器部分:

遇到的问题:传感器功能模块没有工作。

解决方法:检查各个线路的引脚,是否连接正确 ,检查器件是否工作。

(3)显示部分:蓝牙是否正常工作,从机是否与蓝牙连接。

3.3软件设计

3.3.1 功能框图

如图3.9所示,由温湿度传感器、超声波、光敏电阻、烟雾传感器、蓝牙HC-05模块等单应电路组成,其中温湿度传感器、超声波、光敏电阻、烟雾传感器主要实现数据采集功能;ardunio开发板主要实现数据处理功能;蓝牙模块主要实现与从机通信功能。

                    图3.9  数据采集及处理系统设计框图

该环境检测仪功能的实现分为了以下几个步骤(如图3.10):首先由各种传感器检测环境的的各个描述值,然后将数据传送到Arduino开发板进行数据处理,最后将处理后的数据通过蓝牙模块传输到从机进行显示。

                         图3.10 环境检测仪功能框图

3.3.2 主要功能流程

主程序实现的功能:与硬件相结合实现环境检测仪的各个功能主要是检测与显示。流程图图 3.11所示。

                         

                              图3.11  系统功能流程图

首先开启启动按钮,启动开发板和蓝牙设备,同时对开发板内部进行初始化,紧接着初始化系统,初始化完毕后获取各个环境传感器的设计值,然后送入开发板处理,然后通过蓝牙将处理后的数据送到从机进行显示

3.3.3 程序源代码

#include <OneWire.h>

#include <DallasTemperature.h>

#include <SoftwareSerial.h>

#include <dht11.h>        //引用dht11库文件,使得下面可以调用相关参数

#define dht11Pin 10      //定义温湿度针脚号为10号引脚

#define Aout A1          //MQ-5 A1 接 Arduino Uno A1

#define PIN_D 4

#define ONE_WIRE_BUS 2   // 数据输出脚接开发板数字引脚2

SoftwareSerial BT(8, 9); // Pin8为RX,接HC05的TXD  Pin9为TX,接HC05的RXD

OneWire oneWire(ONE_WIRE_BUS);

DallasTemperature sensors(&oneWire);

dht11 dht;    //实例化一个对象

float yy;

char val;

int temp = 0; //临时变量,存储A1读取的数据

// 设定hr-SR04连接的Arduino引脚

const int TrigPin = 11;

const int EchoPin = 12;

unsigned long distance;



void setup()

  

  // 初始化串口通信及连接SR04的引脚

  Serial.begin(9600);

  sensors.begin();



  pinMode(TrigPin, OUTPUT);// 要检测引脚上输入的脉冲宽度,需要先设置为输入状态

  pinMode(EchoPin, INPUT);

  Serial.println("Ultrasonic sensor:");

  pinMode(dht11Pin, OUTPUT);    //通过定义将Arduino开发板上dht11Pin引脚(10号口)的工作模式转化为输出模式

  pinMode(Aout, INPUT);//定义A0为INPUT模式

  pinMode(A0,INPUT);// HC-05默认,38400

  BT.begin(9600);





void loop()



  //产生一个10us的高脉冲去触发TrigPin

  digitalWrite(TrigPin, LOW);

  delayMicroseconds(2);

  digitalWrite(TrigPin, HIGH);

  delayMicroseconds(10);

  digitalWrite(TrigPin, LOW);

  // 检测脉冲宽度,并计算出距离

  //delayMicroseconds(2);

  distance = pulseIn(EchoPin, HIGH) / 58.00;

  Serial.print("到前方障碍物的距离");

  Serial.print(distance);

  Serial.print("cm");

  BT.print("到前方障碍物的距离:");

  BT.print(distance);

  BT.print("cm");

  delay(500);



  temp = analogRead(Aout); //读取A0的模拟数据

  Serial.println("空气浓度:")

  Serial.println(temp); //串口输出temp的数据

  BT.print("空气浓度:");

  BT.print(temp);

  BT.print("ppm");

  delay(500);  //延时500毫秒



  sensors.requestTemperatures(); // 发送命令获取温度

  yy= sensors.getTempCByIndex(0);

  Serial.print("环境温度: ");

  Serial.println(yy); 

  BT.print("环境温度:");

  BT.print(yy);

  BT.print("℃");

  delay(500);



  int tol = dht.read(dht11Pin);    //将读取到的值赋给tol

  int temp1 = (float)dht.temperature; //将温度值赋值给temp

  int humi = (float)dht.humidity; //将湿度值赋给humi

  Serial.print("环境温度:");    

  Serial.print(temp1);       //在串口打印温度结果

  Serial.println("℃");    //在串口打印出℃

  Serial.print("环境湿度:");   

  Serial.print(humi);     //在串口打印出湿度结果

  Serial.println("%");     //在串口打印出%

  BT.print("环境温度:");

  BT.print(temp1);

  BT.print("℃ ");

  BT.print("环境湿度:");

  BT.print(humi);

  BT.print("%");

  delay(500);     



  int val;

  Serial.print("光照强度:");

  val=analogRead(PIN_D);

  Serial.println(val);

  BT.print("光照强度:");

  BT.print(val);

  delay(500);

3.4软件调试

1、Arduino出现上传出错的问题

解决方法:

(1)检查驱动是否安装,串口、程序是否正确 

(2)负载功率过大,导致开发板下载不了程序,先单板下载程序再安装组件调试 

(3)确认0和1号口没有被占用 

2、从机上没有反应

解决方法:

(1)检查各个线路的引脚,是否连接正确

(2)检查代码逻辑功能是否出现了问题,进行逻辑优化

(3)检查器件是否工作

3、程序编译时出现错误

解决方法:

(1)安装对应模块所需要的库

(2)查看关键字是否错误

(3)查看宏定义的内容

(4)分析逻辑功能是否正确

第四章 测试结果

4.1测试情况

程序源代码编译结果如图4.1所示:

                  

                         图4.1  程序源代码编译结果

蓝牙与从机通信数据传输如图4.2所示:

               

                        图4.2  从机数据显示结果

4.2成果总评

经过测试证明,基于Arduino的测量环境数据系统运行稳定可靠。系统采用温湿度传感器、烟雾传感器、光敏电阻、超声波等采集感应模块来监测环境状况,方便操作,具有巨大的推广价值。arduino具有便于操作,上手快,可靠性好,扩展简单,控制功能强等特点,所以,基于 arduino的天然气报警器的研究和开发生产具有十分广泛的现实市场和潜在的市场需求。

主要的不足之处:只有蓝牙模块一种通信方式,如果蓝牙出现故障,则显示模块就会停止工作。解决方法:在后续的完善中,可以加入wife模块以及4G通信模块,可以有效解决通信方式单一的问题。

第五章 总结感想

本次课程设计做的是环境检测装置实验,实现一种环境检测仪,以arduino系列单片机为核心,集成温湿度传感器、超声波测距传感器、烟雾传感器、蓝牙HC-05模块及其他器件,在从机上显示测量环境的数据。随着社会的发展,生产技术的更新,物联网理念如今已经深入人心,并随着传感器技术,通信技术和物联网技术的发展逐渐触及社会的每一个角落。在当代社会信息化,智能化快速发展的背景下,设计了“基于Arduino的智能环境监测系统。近几年,工业化进程的日益发展导致环境污染问题日益突出,随着环境状况的不断变化,各地雾霾天气日益严重,已经影响到了人们的正常出行、生活以及健康,因此人们掌握了解自身所处周边环境状况信息的需求越来越迫切。伴随着当前移动互联网技术的飞速发展,人们可以随时随地了解自己所处的环境状况信息,为出行和生活提供便捷服务,为寻求更加健康的环境提供依据。本次课程设计主要利用现有的成熟传感技术和互联网技术实现实时获取环境状况信息。

此次的课程设计使我收获颇丰,也是我上大学来难忘的一次经历,不仅增加了我自己的动手能力,还让我对这门学科更加感兴趣了。

参考文献

[1]陈权昌,李兴富.单片机原理及应用[M].广州:华南理工大学出版社,2007.8

[2]李庆亮.C语言程序设计实用教程[M].北京:机械工业出版社,2010.3

[3]杨志忠.数字电子技术[M].北京:高等教育出版社,2008.12.

[4]胡宴如.模拟电子技术[M].北京:高等教育出版社,2011.6

以上是关于基于Arduino的显示测量环境数据设计的主要内容,如果未能解决你的问题,请参考以下文章

LabVIEW控制Arduino实现模拟数据采集(基础篇—8)

LabVIEW控制Arduino实现模拟数据采集(基础篇—8)

LabVIEW控制Arduino采集DHT11温湿度数值(进阶篇—4)

LabVIEW控制Arduino采集DHT11温湿度数值(进阶篇—4)

LabVIEW控制Arduino采集DHT11温湿度数值(进阶篇—4)

LabVIEW控制Arduino实现红外测距(进阶篇—6)