基于温湿度传感器的存储显示和透传实验-Arduino中文社区 - Powered by Discuz! Archiver

zhaxiaohuiouc 发表于 2019-3-17 16:15

基于温湿度传感器的存储显示和透传实验


一、功能概述:
1、DHT11温湿度传感器获取环境温湿度数据,传输给Arduino主板
2、Arduino主板将温湿度数据显示在Lcd1602上,实现数据显示
3、Arduino主板将温湿度数据存储在TF卡中,实现数据存储
4、Arduino主板将温湿度数据通过蓝牙HC-02透传到配有HC-05蓝牙的电脑,实现数据无线传输
5、计算机通过HID串口助手实时显示HC-05蓝牙接收到的数据
二、需要的硬件
(1)DHT11温湿度传感器   (2)Lcd1602 显示屏   (3)Arduino UNO R3主板
(3)TF卡和TF卡读卡模块 (4)蓝牙HC-02和蓝牙HC-05和HC-USB-T
三、硬件电路连接
(1)DHT11共四个针脚,三个针脚接 GND ,VCC(5V),Pin8(数据输出);
(2)Lcd1602共16个引脚,采用4条数据线接入法,共接12个引脚,对应如下:

LCDVssVccVeeRsR/WEnDB4DB5DB6DB7AK
ArduGnd5VGndPin2GndPin3Pin5Pin6Pin7Pin95VGnd

(3)TF卡,采用SPI总线连接

TF读卡GNDCSMOSICLKMISOVCC
ArduinoGndPin4Pin11Pin13Pin125V

(4)蓝牙HC-02

蓝牙HC-02RXDTXDGNDVCC
ArduinoPin1 TXPin0 RXGnd3.3V

(5)HC-05通过HC-USB-T和电脑连接,在电脑打卡HID助手,这样数据可以透传到电脑。
注:各个模块都有额定电压,额定电压连接错误或者硬件连线错误会出现各种莫名其妙的错误。比如,开始TF读卡模块接3.3V电压,部分程序可以运行,但是写文件出现乱码。如果GND接地不好,会报错 Could not find FAT16/FAT32 partition.而蓝牙HC-02和HC-05必须使用3.3V电压,否则容易烧坏器件。另外蓝牙传输要注意波特率设置。只要设置正确,HC-05和HC-02会自动配对,无需其它操作。将数据直接写入硬件串口,就可以直接通过蓝牙透传到计算机。

四、程序


#include<LiquidCrystal.h>
#include<dht11.h>
#include<SPI.h>
#include<SD.h>

dht11DHT11;

//设置 DHT 引脚 为 Pin8
#defineDHT11PIN 8
//定义液晶
constint numrows=2;
constint numcols=16;
constint chipselect=4;
LiquidCrystallcd(2,3,5,6,7,9);

voidsetup() {
//串口输出
Serial.begin(9600);
Serial.println("DHT11 TESTPROGRAM");
// output, even if you don't use it:
pinMode(10, OUTPUT);
//液晶输出
lcd.begin(numcols,numrows);
// 输出 DHT 库的版本号
   Serial.println(DHT11LIB_VERSION);
   Serial.println();
   Serial.println("Initializing SDcard");
   if(!SD.begin(chipselect))
   {
   Serial.println("initializationfailed!");
   while(1);
   }
   Serial.println("initializationdone");
}

voidloop() {
Serial.println("\n");

int chk = DHT11.read(DHT11PIN);
// 测试 DHT 是否正确连接
Serial.print("Read sensor: ");
switch (chk)
{
    case DHTLIB_OK:
    Serial.println("OK");
    break;
    case DHTLIB_ERROR_CHECKSUM:
    Serial.println("Checksum error");
    break;
    case DHTLIB_ERROR_TIMEOUT:
    Serial.println("Time out error");
    break;
    default:
    Serial.println("Unknown error");
    break;
}
// 获取测量数据
Serial.print("Humidity (%): ");
Serial.println((float)DHT11.humidity, 2);
//液晶定位到第一行第一列,输出湿度
lcd.setCursor(0,0);
lcd.print("Hum ");
lcd.print((float)DHT11.humidity, 2);
Serial.print("Temperature ): ");
Serial.println((float)DHT11.temperature, 2);
//液晶定位到第二行第一列,输出温度
lcd.setCursor(0,1);
lcd.print("T ");
lcd.print((float)DHT11.temperature, 2);
//save data to TF
Serial.println("open file and writedata");
FiledataFile=SD.open("data.txt",FILE_WRITE);
if (dataFile)
{
    dataFile.print(DHT11.humidity);
    dataFile.print(",");
    dataFile.print(DHT11.temperature);
    dataFile.close();
    Serial.println(DHT11.humidity);
    Serial.println(DHT11.temperature);
}
else
{
    Serial.println("error openingdatal.txt");
}
Serial.println("Wait for nextloop");
delay(10000);
}



页: [1]
查看完整版本: 基于温湿度传感器的存储显示和透传实验