Arduino 气候监测器





准备工作:
材料:

所需的物料清单大多简单且具有成本效益。
- Arduino Uno 开发板(入门套件中附带的开发板就可以了。)
- Arduino 温度和湿度传感器(为此我使用了 Arduino DHT 22,我也尝试过 DHT 11,效果很好)
- Arduino PIR 运动传感器(它看起来像一个半球,很常见)
- Arduino 无线蓝牙模块
- 电源(虽然我在这里使用了电池组,但您也可以轻松使用电源线。只需确保它适合您所在地区的正确瓦数和安培数即可)
你还需要很多电线,这里我把它们分开并焊接在一起,所以你还需要
- 很多电线
- 焊锡站
- 热缩。
简介

因此,生活在电费高昂的城市,我想减少每年的支出,但我真的不想住在一个不舒服的温暖或寒冷的房间里。我对房屋的被动气候设计也非常热衷,并做了一些研究。(页面下方提供了简要摘要,所以不用担心。)
我认为一个很酷的想法是通过收集一些传感器的数据来主动尝试加热和冷却我所在的房间。
上面您将找到 Arduino 的编码以及用于 3D 打印您自己的外壳的 STL 文件。
本 Instructable 中没有提供如何将 arduino 连接到蓝牙设备,虽然有这个选项但我没有提供,但有很多关于如何执行此操作的教程。
现在让我们开始吧。
设置测试硬件









我从来都不喜欢面包板,所以这对某些人来说可能有点棘手。希望情况不会那么糟糕。
看一下代码,它就很容易理解。
DHT22(或其他温度/湿度传感器)进入模拟 1,(或 A1)
运动传感器将进入数字引脚 7。
蓝牙使用数字引脚 2 作为 RX,使用数字引脚 3 作为 TX。(您可以在传感器上读取)
对于 LED,红色进入 8,绿色进入 9,蓝色进入 10。我使用相同颜色的电线以便于识别,此外在 UNO 板上,7 和 8 之间有间隙,因此在排除故障时更容易看到。
现在到了吸引人们注意的部分,我通过焊接将几根分体电缆制成了它们。
如图所示,电源 (或 VCC) 电缆需要 2 个输出 (母端口) 到 1 个输入 (公端口)。对于接地,您需要 4 个输出 (母端口) 到 1 个输入 (公端口),如果您不使用蓝牙,则输出会少 1 个。
对于接地,将每个母端口插入所有带有“GRD”或“ - ”符号的传感器,然后将公插针插入 Arduino UNO 上的 GRD 端口。
只有运动传感器和 DHT 需要电源,因此将母端口插入标有“VCC”的引脚,并将公引脚插入 Arduino UNO 上的 5V 端口。
核心内容(编码)

您可以在链接中下载代码。您可以复制并粘贴它,如果所有库和端口都正确,它应该可以正常工作。下面我将解释代码的部分内容以及如何根据您的需要进行更改。
设置之前的一切都非常简单,确保库已正确安装,确保电线插入正确的引脚(或更改代码以匹配正确的引脚)。
在变量中,您可能希望更改某些值以满足您的需要。
- “IdealTemp” 是您希望的房间理想温度,如果超出设定值,它就会采取行动。
- “changer” 是灯光变暗速度的值。默认情况下,它设置为 5(满分 100),从 0 到 100 需要 20 个刻度,完全变暗需要 40 个刻度。数字越大,变暗速度越快。
在设置中,保持大部分内容相同,如果您不使用蓝牙,则删除“BTSerial.begin(115200)”行。
- 请记住,BTSerial.begin(XXXXX) 和 Serial.begin(XXXXX) 要使用不同的频道,否则可能会出现问题。
- 这里“亮度”仅设置为 50,因为如果其为 0 或 100 也会引起问题。
在循环中,如果您不使用蓝牙,则删除 BTSendInfo 行。默认情况下,延迟为 1/2 秒(即每秒 2 个刻度)。根据需要更改此设置。
在“TempAndHumSensor”中,如果您想以华氏度工作,您可以添加一行,因为默认情况下它以摄氏度工作。有时硬件精确但不准确,需要以线性方式进行调整。对于我的代码,我必须将其更改为 666.1,以便通过将其与我知道可以工作的另一个温度计进行比较来获得精确和准确的读数。如果它在不改变它的情况下为您工作,那么将此数字更改为 0。
“setColour(int RedValue, int GreenValue, int BlueValue)” 是一个非常标准的命令,用于在一行中更改 LED 的所有值。保留这一行不变。
在“亮度设置”中将使用亮度和变换器值使 LED 变淡。
- 亮度通过变换器增加/减少,并在 0 到 100 之间不断变化
- 通过改变变量中的“改变者”,它会更快或更慢地消失。
“LightBehaviour” 很复杂,看起来很乱,但你可以真正个性化它。默认情况下,此代码适用于蓝色、红色和紫色。
- 两行“ColourValue = ((255/100) * 亮度) +130”是淡化光线的主线,255 是 arduino LED 的标准最大值,将其除以 100 即可得到百分比。当您将其乘以“亮度”时,它会将最大值更改为与 255 相关的百分比。例如,如果亮度为 50,则 ColourValue 将为 127.5,因为它是 255 的 50%。
- +130 是针对硬件问题的,有时 LED 会在达到 0 之前关闭,这样您就可以手动调整代码以匹配硬件正在执行的操作。如果您不需要这个,请将其更改为 +0。
- “比较 < -5” 行表示实际温度与理想温度相差多远,然后才会显示太热/太冷。如果您要更改此缓冲区(通过将 5 更改为您想要的任何值),则请将所有 5 改为相同的新数字。
- 记住:这些颜色很容易调整,我使用了红色、蓝色和紫色,因为它们很容易。如果您愿意花时间,您可以使用正确的代码值将它们变成您想要的任何颜色。
- 例如
- 设置颜色(255,0,0);//红色
- 设置颜色(0,255,0);//绿色
- 设置颜色(0,0,255);//蓝色
- 设置颜色(255,255,0);//黄色
- 设置颜色(80,0,80);//紫色
- setColor(0, 255, 255); // 水绿色
“SetLight”函数很混乱,似乎没有太多意义,但是在正确(或错误)的情况下,当您尝试优化它时,代码很容易被破坏。
- 由于我们不希望它一直运行,因此当您不在时,运动传感器会使其进入睡眠模式。默认情况下,如果它 10 秒内未检测到运动,则会关闭灯。这是因为我们目前每刻有 0.5 秒的延迟,并且它会每刻将“滞后”值增加 1(除了第一个刻,因为那个刻增加了 2)。
- 可以通过将“(lag > 20)”更改为更大的数字来增加此延迟。例如 120 表示 60 秒。
- 或者将延迟从 500 增加到 1000
您可以在“PrintData”行进行任何所需的故障排除。默认情况下,它只显示温度和湿度值,但您可以非常轻松地显示或隐藏您需要测试的任何内容。
仅供展示(3D 打印外壳和安装)









附件中,您将在标题为“背衬”和“外壳”的图片中找到外壳的 STL 文件。3D 打印完成后,您可以将组件安装到外壳中。(您需要微型螺丝才能获得最佳效果。理想情况下,最好使用眼镜修理套件,该套件中有数百个用于固定眼镜铰链等的小螺丝。)
所有支架都可以连接传感器,但由于空间有限,电线有时会有点棘手。
您可以在照片中看到每个传感器的拧入位置。DHT22 只需拧入底部 2 个,顶部支架用于支撑。打印外壳几次后,由于螺纹较粗,我需要打磨顶部支架以使其处于正确角度,所以请记住这一点。
由于对称性,运动传感器确实很容易安装,尽管我发现将电缆放在底部更容易安装,以节省空间。
LED 有点棘手,取决于你是想只使用一个还是使用一条,这将决定你如何安装它。对我来说,我把它连接到 Arduino 板上,这样它就会点亮运动传感器的背面,产生很酷的效果。
Arduino UNO 很容易拧上,但由于孔的尺寸,您可能需要垫圈来连接电路板。
电源背板很容易拧上,但建议使用埋头螺钉,以便仍能装入图案。
安装完所有部件后,拧上背衬并将其安装在墙上。
最后一件事




现在您已将其安装并运行。将其挂起来并进行测试。











