ARDUINO第四款自制温湿度计从初学者到创客领袖(翻车)
事实上,我们对此有自己的方法:这些解决方案的准确性低于我们这次所做的成本。 我们这次唯一的优势就是手工搓的成本很低
通过本教程,我们迈出了制作自己的自动气象站的第一步
上一期:ARDUINO从入门到创客。 第三部分:用微控制器开发板制作自己的MIDI音乐盒(预算15)
本期我们依然使用ARDUINO单片机开发板来制作我们自己的系列。 这次我们将使用以下内容:
ARDUINO开发板,如果只是想读取传感器模块的信息,可以使用基于AVR 8位单片机的14位UNO,免运费。 这里我们还提供先进的WIFI联网解决方案,需要使用D1 MINI或ARDUINO D1模块。 ,前者10元,后者更贵,16-18元。 NODEMCU也可以,因为我们的模块供电可以是3.3-5V范围内的任意电压,而且NODEMCU还有5V输出。
DHT11温湿度传感器模块
单个模块的成本非常便宜
运气好的话,买东西满5元就可以免运费,或者订单满9.9元就可以免运费。
当然,准确率很一般。 湿度精度为5%,温度精度为±2℃。 加上开发板和杜邦线,这套的成本是20块。你想想,小米的温湿度计自带蓝牙5.0模块,还有相当大的电子墨水屏。 卖70便宜吗?这个教程可能给你的只是成就感。
在本教程中,我们将使用世界上最好的搜索引擎来实际解决我们需要解决的问题(尚未解决)
首先我们打开TB并搜索DHT11
然后我们就可以轻松找到相关结果
默认搜索结果是第一个,点击进入
虽然这家店的产品价格昂贵,据说质量比华强北其他店里卖的便宜的要差,但这并不妨碍我们购买。
点击进入并向下滚动后,我们会看到该商店的产品信息中提供的信息。
这就是我们想要的
下载后解压DHT11数据
其中之一是原理图、说明书、测试程序等信息。 这实际上有助于理解该模块,但不是该项目所需的文档。
毕竟,知道该传感器包含电阻式湿度传感元件和 NTC 温度测量元件,并连接到高性能 8 位微控制器,并不能提高该模块令人印象深刻的精度……
这里给出的测试程序实际上是针对51单片机的。 天哪,现在谁还在用这个东西? STM32直接使用ARDUINO环境。 真的需要从51开始学习单片机吗? 你是一个成熟的图片栏垃圾佬,是时候学习如何使用现成的开源项目和调用库了。
有我们比较感兴趣的WIFI信息
看了一下WORD文档,说明使用后可以直接上网,不错。
有项目文件
可以看到项目文件中的代码注释提到了引脚11,这应该就是我们的温度传感器模块这次需要连接的引脚。
连接好电线后,我们将慢慢检查代码中可能存在的错误。
首先,这段代码提到了一个叫做 DHT.h 的东西。 只需通过搜索找到它并将其放入库中即可。
关于ESP8266WiFi.h报错,可以先通过加载库的方式解决。
事实上,这段代码的注释说不推荐使用AVR单片机。
如果此时您使用的是14包邮UNO或者D1 D1MINI,还需要CH340 CH341的驱动。 只需使用我们上次在 Akalina 中进行 CPU 温度显示项目时使用的驱动程序即可。
安装驱动并查看开发板信息。
如果有响应,则说明驱动安装成功。
然后在文件-首选项附加开发版本URL管理中添加开发板URL如图
然后开发板的选项中有UNO WIFI。
我们常说的D1的全称其实是WeMos D1。 D1 UNO 版本有 ARDUINO 兼容版本和 MINI 版本。 事实上,需要注意的一点是,它没有完整的模拟输入,这与基于AVR单片机的UNO不同。
该职位为空
这是从 UNO 到 D1 的映射。 有些地方直接修改代码就可以实现。
然后需要下载一个压缩包
解压到C:UsersAdministratorAppDataLocalArduino15stagingpackages
管理员是用户名。 如果您没有管理员权限,那么这里填写的是您的实际用户名。
或者在开发板管理器中搜索8266,找到需要的支持文件。
个人感觉ARDUINO比挂PANDOWNLOAD要快。
那里还在下雨。 就在这里完成了。
使用哪一侧更快?
正如我之前读过的书所说,钱流向哪里,人民就流向哪里。
现在开发板多了
再次尝试编译
嗯嗯
上面这行代码的意思是输入WIFI SSID和密码
至于下面的内容,有问题的删掉即可。
无法从常量类型 char* 转换为变量类型 char*
然后将 const char 替换为 char
Arduino语法详解
给开发板WeMos D1 R1编译的时候没问题。 没关系。 我吓坏了,就看了一下官网的这个信息,发现别人也在用这个解决方案:
? ? ? ? ?
忘掉它
现在我们已经有了一块现成的8266开发板。 由于现成数据的问题,不可能改变目前的计划,用面包板搭建一个简单的8266电路。 虽然上面说的东西我都有了,但是还是扔掉吧。 所有开发均使用现成的开发板。 没有人自己构建这种电路。 说实话,只有实验室的大佬们玩51单片机的时候才用过这种东西。 我从来没有见过有人自己搭建ARDUINO。 这种情况下,您还是需要自己接线USB转串口模块。
/* DHT Pro Shield – 简单
* 各种 DHT 湿度/温度传感器的测试草图示例
* 由 ladyada 撰写,公共领域
* 取决于 Adafruit DHT Arduino 库
*adafruit/DHT 传感器库
*/
#include“DHT.h”
#define DHTPIN D4//我们连接到哪个引脚
// 取消注释您正在使用的任何类型!
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22 (AM2302)
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
// 将传感器的引脚 1(左侧)连接至 +5V
// 注意:如果使用具有 3.3V 逻辑的板(例如 Arduino Due),则连接引脚 1
// 改为 3.3V,而不是 5V!
// 将传感器的引脚 2 连接到您的 DHTPIN
// 将传感器的引脚 4(右侧)接地
// 从传感器的引脚 2(数据)到引脚 1(电源)连接一个 10K 电阻
//初始化DHT传感器。
// 请注意,该库的旧版本采用了可选的第三个参数
// 调整更快处理器的时序。 不再需要此参数
// 当前的 DHT 读取算法会自我调整以适应更快的过程。
DHT dht(DHTPIN, DHTTYPE);
无效设置(){
串行.开始(9600);
Serial.println("DHTxx 测试!");
dht.begin();
无效循环(){
// 在测量之间等待几秒钟。
延迟(2000);
// 读取温度或湿度大约需要250毫秒!
// 传感器读数也可能长达 2 秒“旧”(这是一个非常慢的传感器)
浮动 h = dht.readHumidity();
// 以摄氏度读取温度(默认)
浮动t = dht.readTemperature();
// 将温度读取为华氏度 (isFahrenheit = true)
浮动 f = dht.readTemperature(true);
// 检查是否有任何读取失败并提前退出(重试)。
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println("从 DHT 传感器读取失败!");
返回;
// 计算华氏度热指数(默认值)
浮动 hif = puteHeatIndex(f, h);
// 计算摄氏温度指数 (isFahreheit = false)
浮动 hic = puteHeatIndex(t, h, false);
Serial.print("湿度:");
串行打印(h);
串行打印(“%t”);
Serial.print("温度:");
串行打印(t);
串行打印(“*C”);
串行打印(f);
Serial.print(" *Ft");
Serial.print("热度指数:");
串行打印(hic);
串行打印(“*C”);
串口.print(hif);
Serial.println(" *F");
这串代码比较简单。 使用D1开发板读取DHT温湿度模块的数据,然后直接通过串口输出。 这样一来,还是和上期的超声波模块一样。 您可以使用串口监视器来读取它。 没有WIFI,没有物联网,但简单可靠。
这里我发现我的模块好像爆炸了,快递也停了。 就算想买也没法发货,所以就直接进入下一章了。
PS:DHT22好贵啊……15元一个模块和开发板一样好。 精度确实更高,湿度2%,温度±0.5℃。 不过这个价格和精度,确实比不上价格更高的小米套装。 某物。
我还是觉得WIFI比蓝牙好。 毕竟,现在如果没有必要,谁会打开手机上的蓝牙呢? 小米的温湿度计之所以使用蓝牙,是因为需要省电。 毕竟连屏幕都采用了电子墨水屏。 两个CR2032+蓝牙5.0可以使用半年。 现在WIFI其实比蓝牙好用多了,可惜功耗低。 物联网中从来没有像蓝牙这样便宜的解决方案,所以小米的套装使用了蓝牙而不是WIFI。 相比之下,小米的台灯是ESP8266模块的经典应用方案,是非常常见的应用,成本不到10元。 该模块从事物联网解决方案。
ESP8266的性能不错。 它也是一个32位MCU并且有WIFI。 相对来说,它比蓝牙使用起来方便很多。 也许下一期我们真的可以利用这个模块的WIFI功能来搞物联网呢?