亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

树莓派紧凑型 DHT 温湿度扩展板:ATtiny85 + DHT22/DHT11

硬件组件: Atmel ATTiny85 × 1、DHT22 温度传感器 × 1、DHT11 温湿度传感器 × 1、SparkFun Tiny AVR 编程器 × 1、Adafruit 4.7K Ω 电阻 × 3、Adafruit 10K Ω 电阻 × 1、Adafruit 100 Ω 电阻 × 1、Adafruit 散射蓝 3mm LED × 1、Adafruit 轻触按键开关 × 1、Adafruit 可拆 0.1″ 36-pin 排针 1 件 @ 长度 6、1 件 @ 长度 2 (共 8 pin) × 1、通用跳线 (0.1″) × 1、Arduino UNO & Genuino UNO 可选 – 用于调试测试 × 1
软件应用与在线服务: Microsoft Visual Studio 2015、Microsoft Windows 10 IoT Core、Arduino IDE

项目背景

简介

DHT11 与 DHT22 因低成本高精度广受欢迎。但它们采用专有单总线协议,要求极严格的时序。在非实时操作系统的板子上读取这些传感器一直很困难。

早前我发文《DHT11/DHT22 温度传感器》演示如何用 Microsoft C++ 样例代码从 C# 读取。该库能读数但需加重试逻辑提升可靠性。对大多数人有效,但仍有人难以稳定工作。

鉴于在运行 Windows 10 IoT Core 的树莓派上使用这类传感器的高关注度,我决定提供第二种方案:极低成本前提下极大提升读取可靠性。

方案概述

本方案将 DHT 传感器接到廉价 ATtiny85,配置为 I2C 从设备。利用 TinyWireS 库创建一组寄存器,通过读写寄存器与设备交互。

设备支持功能:

源代码组成

项目包含三套代码:主控板固件、Arduino 主机测试草图、Windows 10 IoT Core 树莓派演示应用。所有代码在关联 GitHub 仓库获取。

电路设计

电路紧凑,仅用少量廉价元件。ATtiny85 多渠道可买,建议多备几片以备他用。

电路提供六针排针,可接其他电路或直连树莓派。引脚定义:

另有一两针排针,接跳线帽启用板载 LED,移除则禁用。

集成到大型项目时,DHT Tiny 电路可合并嵌入现有电路,此时排针与 LED 可选。

也可做成独立小板,用几根导线或连接线连树莓派。

ATtiny85 烧录

用 AVR 编程器烧录 DHT_Tiny_Breakout.ino。无编程器可用 Arduino Uno 等替代。参考下列文章:

我用 SparkFun Tiny AVR Programmer 烧录。

我将芯片跑在 16 MHz。见拙作 “ATtiny @ 16MHz” 设置方法。

使用 ATtiny85 时,从机草图需安装 TinyWireS 库到 libraries 目录。可从 https://github.com/rambo/TinyWire 下载。

面包板搭建

第一步在面包板上跑通 DHT Tiny。用半尺寸面包板按原理图与面包板图接线。

小贴士:

下图为面包板版 DHT Tiny 实物图。

连接 Arduino Uno 测试

若想快速测试、演示或树莓派调试不通,可将 DHT Tiny 接 Arduino Uno:

烧录并运行 DHT_Tiny_Master.ino,串口监视器将显示输出。

I2C 连接两板间必须有上拉电阻。本电路在 SDA、SCL 与 5V 间各接 4.7K Ω。

下图为 DHT Tiny 面包板接 Arduino Uno 实物。

连接树莓派

树莓派 2/3 接线:

I2C 总线 SDA/SCL 需上拉电阻至 3V3。本电路在引脚与 3V3 间各接 4.7K Ω。

极其重要! DHT Tiny 板由树莓派 5V 引脚供电,但上拉电阻必须接树莓派 3V3 引脚(3V3 在引脚 1 和 17)。

下图为 DHT Tiny 面包板接树莓派 3 实物。

运行 Windows 10 应用

从 GitHub 仓库链接获取代码解压。用 Visual Studio 2015 打开通用应用源码,部署到树莓派从管理员控制台启动,或在 VS 中调试运行。

首次用 VS 跑 Windows 10 IoT Core 应用,参考微软文档:

观看下方视频演示树莓派 3 运行应用连接 DHT Tiny。

应用亮点

Windows 10 UWP 演示应用展示 DHT Tiny 所有功能:显示当前温度、湿度及其他寄存器值;UI 提供修改设备地址等配置项。

DHT Tiny 库

示例代码使用封装库与 DHT Tiny 交互,可直接引入你的所有应用。

从 NuGet 获取库

不想引入项目可直接 NuGet 安装:

PM> Install-Package IoT.DhtTiny

扫描 I2C 总线查找设备

DHT Tiny 库含扫描方法,搜索总线上所有 DHT Tiny 设备并返回地址列表,便于初始化。若修改过地址但忘记设值,此功能尤为有用。回调方法可选。

// ***
// *** 枚举 I2C 总线上所有 DHT Tiny 设备
// ***
IEnumerable<byte> address = await DhtTiny.FindAllDhtTinyAsync(this.FindAllDhtTinyCallback);
// ***
// *** 回调方法
// ***
private void FindAllDhtTinyCallback(I2cScanEventArgs e) {
    int percentComplete = (int)((double)e.CurrentIndex / (double)e.Total * 100.0d);
    this.Status = string.Format("Locating devices [0x{0:X2}] [{1}%] [Found = {2:##0}]...", e.CurrentAddress, percentComplete, e.Items.Count());
}

DHT Tiny 树莓派扩展板原理图

软件演示

视频演示树莓派 3 运行通用应用连接面包板上 DHT Tiny。

[视频即将推出]

制作成品设备

最简易、最具性价比的做法是用 Adafruit Perma-Proto Quarter-sized Breadboard PCB 等原型板。下图展示该原型板制作的扩展板,我用角磨机去掉了电源轨区域。

更多详情:DHT Tiny Breakout for the Raspberry Pi

制造工艺

  1. 树莓派专业温度监测:基于 DS18B20 传感器的完整指南
  2. 树莓派 2 搭建户外气象站:接入 ADS‑WS1 串口气象站
  3. 树莓派无原生 ADC 读取模拟传感器:阶跃响应法实战
  4. 树莓派连接 HC-SR04 超声波传感器实战指南
  5. 解锁树莓派全部潜力的必备配件推荐
  6. 树莓派用 MCP3008 ADC 读取模拟传感器:LDR 与 TMP36 实例
  7. SIGHT:助盲智能眼镜 — 树莓派 + TensorFlow + Android Things
  8. SparkFun Qwiic HAT 树莓派完整接线指南
  9. 树莓派 3 Model B+ 安装 Windows 10 IoT Core 完整步骤指南
  10. MonkMakes RRB2套件构建树莓派机器人:详细指南
  11. PiCy:打造您的微型树莓派机器人
  12. 医疗器械OEM数字化转型面临的四大核心挑战