虽然根本不懂电路,但经过查阅资料,总算是实现了。在这里做一个记录,以免忘记。

开发环境

硬件

  • Arduino uno r3 开发板,点我看Arduino各版本的比较,uno的第3个版本,也是目前市面上用于学习最多的板子,意大利原版的价格是20欧,淘宝山寨板的价格是20元左右。
  • 温度湿度传感器,型号DHT11,几块钱,淘宝上都有。
  • 杜邦线,1块钱10根(注意分公母,区别是插还是被插)。
  • 针排,1块钱很多根,结合杜邦线连接板子和传感器。
  • USB线,特制的,方口的一头接板子,另一头接电脑(供电和调试),板子一般都会送。

软件

  • Arduino IDE 最新版,点我下载
  • 用于MacOS的USB转串口驱动,点我下载

文档

  • DHT11说明书,点我下载
  • Arduino 原理图,点我下载
  • Arduino 板子简介

操作步骤

硬件

  1. Arduino 5V供电,直接用USB线接入电脑即可。红灯和绿灯会亮。
  2. DHT11有3个引脚,分别是VDD, DATA, GND,用3根杜邦线连接后,根据颜色连接Arduino的引脚,对应关系是VDD接5V,DATA接Digital口的任一个(2~13),GND接GND(地线)。
  3. 注意:要连接DHT11和板子,需要用到针排和杜邦线。将杜邦线扯开一点,因为板子上需要用到的3个引脚距离有点远,将要用到的3个针排一个个扯开,使劲儿将中间的黑塑料撸到中间,让两头露出的针一样多,以便两边都容易插的稳固一些。所以连接的方式是:板子的三个引脚–>针排<–>杜邦线<–>DHT11。
  4. 注意不要将VDD和GND接反了,以防板子或模块被烧。
  5. 接完的效果如图:

程序

  1. 启动Arduino IDE
  2. 设置偏好,比如语言和项目保存路径,如图:
  3. 检查驱动是否安装正确,在Tools –> Ports 下查看是否有串口,如如果下图这样:
    那可能是驱动没有安装好。否则应该出现一个类似/dev/xxxSerial的选项。这时候就需要试试fdti和USB虚拟串口的驱动了。MacOS还需要执行 nvram boot-args=”kext-dev-mode=1” 并重启。
  4. 确认Tools-> Board 选中的是 Arduino Uno 这一项。
  5. 默认的新项目是这样的,如下图:

    一个 setup()函数和一个loop()函数,分别用于初始化和主逻辑。而loop()是会一直死循环执行的。

  6. 这里提一下工具栏各项的功能:
    对号:编译代码
    向右的箭头:上传二进制文件到板子上
    文件图标:新建项目窗口
    向上的箭头:打开例子代码,IDE自带了几十个小例子。
    向下的箭头:保存代码
    右上角的放大镜:打开串口输出监视器,用于查看Serial.print()的输出,相当于debug的一种方式了。
    右上角的下拉三角的New Tab,可以添加新文件到项目中。

  7. 具体代码:
    1. 需要引用dht11的一个库,包括dht11.h和dht11.cpp,具体参考 通过New Tab的方式加入项目中。
double Fahrenheit(double celsius)
{return 1.8 * celsius + 32;
}    //摄氏温度度转化为华氏温度double Kelvin(double celsius)
{return celsius + 273.15;
}     //摄氏温度转化为开氏温度// 露点(点在此温度时,空气饱和并产生露珠)
// 参考: [url=http://wahiduddin.net/calc/density_algorithms.htm]http://wahiduddin.net/calc/density_algorithms.htm[/url]
double dewPoint(double celsius, double humidity)
{double A0= 373.15/(273.15 + celsius);double SUM = -7.90298 * (A0-1);SUM += 5.02808 * log10(A0);SUM += -1.3816e-7 * (pow(10, (11.344*(1-1/A0)))-1) ;SUM += 8.1328e-3 * (pow(10,(-3.49149*(A0-1)))-1) ;SUM += log10(1013.246);double VP = pow(10, SUM-3) * humidity;double T = log(VP/0.61078);   // temp varreturn (241.88 * T) / (17.558-T);
}// 快速计算露点,速度是5倍dewPoint()
// 参考: [url=http://en.wikipedia.org/wiki/Dew_point]http://en.wikipedia.org/wiki/Dew_point[/url]
double dewPointFast(double celsius, double humidity)
{double a = 17.271;double b = 237.7;double temp = (a * celsius) / (b + celsius) + log(humidity/100);double Td = (b * temp) / (a - temp);return Td;
}#include "dht11.h"dht11 DHT11;#define DHT11PIN 4void setup()
{Serial.begin(9600);Serial.println("DHT11 TEST PROGRAM ");Serial.print("LIBRARY VERSION: ");Serial.println(DHT11LIB_VERSION);Serial.println();
}void loop()
{Serial.println("\n");int chk = DHT11.read(DHT11PIN);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);Serial.print("Temperature (oC): ");Serial.println((float)DHT11.temperature, 2);Serial.print("Temperature (oF): ");Serial.println(Fahrenheit(DHT11.temperature), 2);Serial.print("Temperature (K): ");Serial.println(Kelvin(DHT11.temperature), 2);Serial.print("Dew Point (oC): ");Serial.println(dewPoint(DHT11.temperature, DHT11.humidity));Serial.print("Dew PointFast (oC): ");Serial.println(dewPointFast(DHT11.temperature, DHT11.humidity));delay(2000);
}

编译并上传到板子上,打开串口监视器,可以看到温度和湿度的输出,还是很快的:

可以看到温度摄氏 24度,湿度13%(北京还是挺干燥的,赶紧打开了加湿器),自制温度计就这样完成了。中午去买了一个蓝牙模块,接下来想通过蓝牙把温度传给手机。

总结

  1. 由于不懂电路知识,看不懂原理图,接哪个引脚都花了很长时间。
  2. DHT11的输出一共有40位数据,高位先出,8bit湿度整数数据+8bit湿度小数数据+8bit温度整数数据+8bit温度小数数据+8bit校验和。检验和是前4个8位数据相加结果的后8位。
  3. 没有相应的驱动导致找不到串口花费了不少时间。

参考引用

http://www.arduino.cn/thread-1429-1-2.html
http://www.arduino.cc/en/Main/arduinoBoardUno

基于 Arduino 的温度+湿度传感器相关推荐

  1. 树莓派+串口墨水电子屏幕+温度湿度传感器打造专属时钟

    前言 前两天在http://shumeipai.nxez.com/上看到一篇文章<宅男必备:配备电子纸屏幕的抽纸盒>,发现作者使用树莓派和一些硬件设备打造了一款特别有趣的东西,于是我也特别 ...

  2. Qt温度湿度传感器采样上位机源代码C++数据记录功能Windows上位机

    Qt温度湿度传感器采样上位机源代码C++数据记录功能Windows上位机 YID:765645958944466他也是来自江湖

  3. 温度湿度传感器流程图_温度传感器和湿度传感器在高铁轨道板智能养护中的应用...

    导读:近日,国内首条高智能轨道板生产线产品在天津宝坻一次性通过验收.该生产线担负京唐高速铁路40991块轨道板的生产任务,年生产轨道板可达43800块,是目前国内规模最大的智能化轨道板生产线.其中,在 ...

  4. 温度湿度传感器流程图_为什么温湿度传感器用一段时间就会漂移?

    温湿度是冷和热物体的物理量.温湿度作为衡量整体环境质量的重要标准,在生产和科学研究中,许多物理现象和化学过程在一定温度.湿度下进行.其中农业.工业.楼宇.办公室.机房等领域对温湿度传感器的需求量越来越 ...

  5. 温度湿度传感器用法笔记

    芯科科技(Silicon labs)的Gecko系列芯片内部ADC集成有内部参考电压和温度传感器,温度精度很低,误差超过±3摄氏度,优点就是在精度要求不高的Z-Wave/Zigbee系统中提供了一个免 ...

  6. Arduino IDE 开发 ESP-01S/ESP-01物联网实战检测温度湿度上传MQTT服务器

    一.硬件准备 USB转ESP8266两块.DHT11温度湿度传感器.ESP8266-01/ESP8266-01一块(如果学习的话多买几块,ESP-01/ESP-01S的区别) USB转ESP8266 ...

  7. 基于STM32单片机甲醛二氧化碳温度湿度采集系统

    实践制作DIY- GC008-甲醛二氧化碳温度湿度采集系统 一.功能说明: 基于STM32单片机设计-甲醛二氧化碳温度湿度采集系统 功能介绍: 1.基于STM32F103C系列,甲醛二氧化碳传感器,O ...

  8. Arduino与Proteus仿真实例-DHT11温度湿度传感器驱动仿真

    DHT11温度湿度传感器驱动仿真 DHT11 是一款基本的超低成本数字温度和湿度传感器. 它使用电容式湿度传感器和热敏电阻来测量周围的空气,并在数据引脚上吐出数字信号(不需要模拟输入引脚). 它使用起 ...

  9. 51单片机TTS温度湿度语音播报系统 DHT11 LCD1602

    实践制作DIY- GC0049-TS温度湿度语音播报系统 一.功能说明: 基于51单片机设计-TS温度湿度语音播报系统 功能介绍: 1.STC89C52单片机(STC89C51/52 AT89C51/ ...

最新文章

  1. Chrome 0 day漏洞利用链
  2. 【NLP】Pytorch中文语言模型bert预训练代码
  3. mount: unknown filesystem type 'smbfs' 问题解决
  4. rust的权限柜怎么做_潍坊装修知识~二胎家庭不做上下铺,把两张床靠墙放,中间做收纳柜,你感觉怎么样?...
  5. windows下使用net-snmp实现agent扩展(三)
  6. Python网络爬虫系列(一)
  7. *.exe 中的 0x0053b1f7 处未处理的异常: 0xC00000FD: Stack overflow
  8. 21天Jenkins打卡Day14-maven服务
  9. powerbi输入数据_如何用Power BI对数据建模?
  10. Xcode中的iOS工程模板
  11. python socket tcp实战_Python socket.TCP_MAXSEG属性代码示例
  12. 项目解析jsx文件_React系列二十二 云音乐项目实战
  13. js得到自定义属性和操作table表格
  14. 传统词向量nlp处理的优缺点_吴恩达深度学习笔记(126) | NLP | GloVe 词向量
  15. matlab实现扫雷小游戏
  16. 基于CarSystemUI实现左侧导航栏NavigationBar及下拉面板定制开发1——Android10智能座舱
  17. 测试人员进阶之路:成为测试专家或测试管理都需要知道什么
  18. adams怎么做往复运动_Adams设置运动函数的具体方法
  19. C++构造函数初始化列表与构造函数中的赋值的区别
  20. 我国移动支付的安全问题与完善建议

热门文章

  1. com.android.frameworks.telresources,Android 8.1 MTK6739修改文档
  2. 解决 VMware Workstation 14 Pro 安装 Mac 10.12 及以上版本的分辨率显示异常
  3. php mq死信队列,【RabbitMQ 实战指南】一 死信队列
  4. 利用python爬虫自动登录人人网
  5. 韩国Apple ID17+ 18+认证教程
  6. Kafka基础-流处理
  7. show databases没有数据
  8. 中学校园网计算机网络工程系统设计,校园计算机网络系统毕业设计
  9. vi 常用命令 zz
  10. 第三方背景调查会查几段工作经历呢?