查看: 1035|回复: 0
打印 上一主题 下一主题

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

[复制链接]
  • TA的每日心情
    开心
    2019-3-27 11:40
  • 签到天数: 2 天

    [LV.1]初来乍到

    跳转到指定楼层
    楼主
    发表于 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个引脚,对应如下:

    ????
    LCD
    ????
    ??
    Vss
    ??
    ??
    ??
    Vcc
    ??
    ??
    ??
    Vee
    ??
    ??
    ??
    Rs
    ??
    ??
    ??
    R/W
    ??
    ??
    ??
    En
    ??
    ??
    ??
    DB4
    ??
    ??
    ??
    DB5
    ??
    ??
    ??
    DB6
    ??
    ??
    ??
    DB7
    ??
    ??
    ??
    A
    ??
    ??
    ??
    K
    ??

    ????
    Ardu
    ????
    ??
    Gnd
    ??
    ??
    ??
    5V
    ??
    ??
    ??
    Gnd
    ??
    ??
    ??
    Pin2
    ??
    ??
    ??
    Gnd
    ??
    ??
    ??
    Pin3
    ??
    ??
    ??
    Pin5
    ??
    ??
    ??
    Pin6
    ??
    ??
    ??
    Pin7
    ??
    ??
    ??
    Pin9
    ??
    ??
    ??
    5V
    ??
    ??
    ??
    Gnd
    ??

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

    ????
    TF读卡
    ????
    ??
    GND
    ??
    ??
    ??
    CS
    ??
    ??
    ??
    MOSI
    ??
    ??
    ??
    CLK
    ??
    ??
    ??
    MISO
    ??
    ??
    ??
    VCC
    ??

    ????
    Arduino
    ????
    ??
    Gnd
    ??
    ??
    ??
    Pin4
    ??
    ??
    ??
    Pin11
    ??
    ??
    ??
    Pin13
    ??
    ??
    ??
    Pin12
    ??
    ??
    ??
    5V
    ??

    (4)蓝牙HC-02

    ????
    蓝牙HC-02
    ????
    ??
    RXD
    ??
    ??
    ??
    TXD
    ??
    ??
    ??
    GND
    ??
    ??
    ??
    VCC
    ??

    ????
    Arduino
    ????
    ??
    Pin1 TX
    ??
    ??
    ??
    Pin0 RX
    ??
    ??
    ??
    Gnd
    ??
    ??
    ??
    3.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

    #include

    #include

    #include


    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);

    }




    您需要登录后才可以回帖 登录 | 立即注册 ?

    本版积分规则

    热门推荐

    关于温湿度传感器在LCD显示上的问题
    关于温湿度传感器在LCD显
    我建立了一个程序,想要将dht11传感器得到的数据显示在LCD1602上,但是LCD显的都是乱
    【原创】全球最小口袋3D打印机mini one直播教程贴
    【原创】全球最小口袋3D打
    最近闲得蛋疼,没事搞个掌上3D打印机,先放效果图吧。 搞了半天,终于能正常打印,
    【Arduino】108种传感器模块系列实验(74)--- 4位LED数码管模块
    【Arduino】108种传感器模
    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
    (开源)ESP8266改装小风扇,app远程控制+天猫精灵控制
    (开源)ESP8266改装小风
    材料准备 [*]USB风扇一个 [*]ESP8266一块 [*]3.3继电器一块 拆解风扇 第一次,没有
    基于机器视觉的智能分拣机械臂
    基于机器视觉的智能分拣机
    本作品是一个基于机器视觉的智能机械臂操作平台,其采用atmega32单片机作为主控制系统
    Copyright ???2015-2016??Arduino中文社区??Powered by?Discuz! ??( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表