09.15 Arduino 制造用水量智能监测仪

Arduino 制造用水量智能监测仪

智能家居系列已经出过不同的项目。例如帮你管理衣物的《MAKER的衣柜:树莓派+RFID实现智能衣柜》,一手操作的《炫酷的「灭霸手套」家电控制终端》,看家护院的《猫咪走开!计算机视觉喷水驱猫装备》。本期我们来做一个环保节能的项目——喷头水量监测仪。在喷头上安装流器传感器,通过记录用水量、实时水费等信息,鼓励人们节约用水、提高用水效率。

Arduino 制造用水量智能监测仪

项目将显示每次洗澡所用水量,水的流量以及水费等数据,是个实用性很强的项目,制作思路也非常严谨。这个功能当然也可以被用在其他需要用水的地方。

材料清单

Arduino 制造用水量智能监测仪

Arduino Nano × 1

流量传感器 × 1

液晶屏显示器 × 1

升压转换器 × 1

锂电池充电器 × 1

防水开关 × 1

防水按钮 × 1

M3 螺丝 × 若干

M3 螺母 × 若干

铜锣柱 × 4

铜锣柱带螺栓 × 4

3.5mm 母头插座 × 2

3.5mm 公头插头 × 1

3.5mm 3英寸电缆组件 × 若干

USB电缆组件 × 若干

1/2英寸 NPS 母对母连接器 × 1

500mAh 3.7V 锂电池 × 1

烙铁×1 × 1

焊锡 × 1

线 × 若干

钳子 × 1

双面胶 × 1

十字螺丝刀 × 1

3D打印机(可选) × 1

3D 打印外壳

外壳的防水处理应该是这个项目最难的部分。因为节水装置要安装在喷头旁,必须防潮以及偶尔飞溅的水花。你可以有两种选择,自己定制一款 3D 打印外壳或者直接买现成的外壳。我选择自制外壳。

Arduino 制造用水量智能监测仪

Arduino 制造用水量智能监测仪

使用 Fusion 360 软件对外壳进行设计。

所有材料 100% 填充。

Arduino 制造用水量智能监测仪

外壳底部:三个圆形孔用于安装两个母头 3.5mm 的插孔和一个开关。

Arduino 制造用水量智能监测仪

外壳盖子:一个 16mm 的孔用于瞬时按钮,一个矩形窗口用于安装屏幕,四个孔用于固定屏幕以及角落上的另外四个孔用于固定外壳的盖子。使用 3M 螺丝。

Arduino 制造用水量智能监测仪

用于安装屏幕的矩形窗口需要添加防水薄膜防止水分从缝隙中流入。如果你使用的是透明盖子的外壳,则不需要此步骤。

Arduino 制造用水量智能监测仪

防水薄膜的尺寸大约为 5mm 厚,27x77mm 大的透明塑料矩形。安装时要修剪一下边角,以便不妨碍四周的孔。用强力胶水将防水薄膜粘贴在窗口上。

温馨提示:胶水封口时,用小风扇帮助吹干,最后静置十二个小时,确保它完全干燥。

安装 LCD 屏幕

液晶显示器是 16×2 字符显示器,支持 I2C,接线很简单,两根电源线和两根信号线。

Arduino 制造用水量智能监测仪

使用了四个 10mm 的铜锣柱来安装屏幕。每个铜锣柱的一端是公头螺丝,另一端是母头螺丝。如图所示逐步安装。

1、将公头螺丝穿过 LCD 并用 M3 螺母柠紧。

Arduino 制造用水量智能监测仪

2、用四个 M3 螺钉将支座的一端固定在外壳的盖子上。

3、固定好螺柱。注意不要过度拧紧螺丝,以免塑料盖变形。安装 LCD 时,要注意方向,要将带有十六根排针的放于顶部。

Arduino 制造用水量智能监测仪

安装瞬时按钮

采用的是瞬时按钮,镀铬材质并带有橡胶圈防止湿气通过螺丝进入外壳。

Arduino 制造用水量智能监测仪

如图所示安装按钮。

1、松开螺母,但橡胶圈要套在上面。

Arduino 制造用水量智能监测仪

2、将按钮插入盖子上的孔中,然后从背面拧紧螺母。注意不要过度拧紧螺母,防止橡胶圈被破坏而起不到防水的作用。

Arduino 制造用水量智能监测仪

电源和充电电路

这一步要将电池组件放在一起。包括电池,主开关,锂电池保护板和升压转换器。使用 3.7V 1500 mAh 的单节锂电池,它的大小刚好与外壳匹配。你也可以使用 18650 电池,不过外壳的大小要进行调整。

Arduino 制造用水量智能监测仪

1、将电池焊接到 TP4056 充电板上。将 JST RCY 连接器焊接到电池和充电器(此步骤可选)。焊接时请注意电池的正负极性,确保安装正确。

Arduino 制造用水量智能监测仪

2、将电线从充电器的正极输出端口(位于正极电池线旁边)焊接到升压转换器的正极输入端口。然后将负极输出(位于负极电池线旁边)的电线焊接到主开关的公共(中心)针脚。最后,将电线从开关的常开引脚焊接到升压转换器的负极输入。如果将万用表连接到升压转换器的输出并打开主开关,则会显示电压。

3、Arduino、LCD 屏幕和流量传感器都需要 5V 电源,所以升压转换器的输出设置为 5V。使用螺丝刀转动电位器上的按钮来调整。打开主开关,连接电池,让万用表连接到升压转换器的输出,慢慢转动电位器,直到输出读数为 5V。

Arduino 制造用水量智能监测仪

4、使用 3.5mm 耳机插座用于充电,避免每次打开外壳。将连接器插入外壳最底部的孔中(因为充电的插头,大部分时间会被拔掉,为了防止水溅到里面,孔必须在下方)。安装锁紧垫圈并拧紧螺母后,将两根电线分别焊接到连接器上的“头”和“地”线上。

Arduino 制造用水量智能监测仪

5、连接器的引脚分布如图所示。将“地”线的另一端焊接到充电器的负极输入端口(在微型 USB 端口旁)。将“头”的线焊接到 USB 端口另一侧的 +5V 焊盘上。不使用充电器上的 USB 端口,因为不能保证防水。

Arduino 制造用水量智能监测仪

制作充电线

Arduino 制造用水量智能监测仪

Arduino 制造用水量智能监测仪

如图所示,自制一根电源适配器,使用一根带有 USB A 插头的线和一根带有 3.5mm 插孔的线,最后将 3.5mm 音频插孔作为充电端口,USB A 作为插头。

1、处理 USB 线。从白色电线上剥下白色线管,露出红线和黑线,然后剥开红线和黑线的绝缘层。有些 USB 线里面有四根线:红线、黑线、绿线和白线。绿线和白线用于数据传输,可以不用管。

Arduino 制造用水量智能监测仪

2、将 3.5mm 插头连接到 USB 线上。将 USB 的红线连接到中间的焊接脚上,黑线连接到接地端的焊接脚上。

Arduino 制造用水量智能监测仪

Arduino 制造用水量智能监测仪

Arduino 制造用水量智能监测仪

流量传感器

Arduino 制造用水量智能监测仪

Arduino 制造用水量智能监测仪

1、流量传感器的工作原理:

流量传感器十分简洁、小巧且防水。传感器带有一个转子组件,根据水流的大小而转动。转子组件上带有磁铁。在传感器的外部带有一个小型 PCB 板并附带一个电阻器、一个霍尔效应传感器。每当磁铁经过霍尔效应传感器时,就会高低切换。也就是说,每当转子组件旋转时,它在 5V 和 0V 之间切换。

为了读取传感器,将红线连在 +5V 上,将黑线连到负极上,从黄线读取数字信号。

Arduino 制造用水量智能监测仪

如图所示,流量打开时,信号的变化。起初信号始终为零。当流量开始时,脉冲频率快速上升并趋于稳定。

编写程序时需要注意,根据数据显示,传感器每升输出450个脉冲。

2、流量传感器接线

流量传感器配有三针 JST-XH 连接器。由于连接器的导线太短并且带有容易引起短路的暴露点,所以要连到一个带有 3.5mm 音频插头的线上。大约三英寸长,是镀锡线,易于焊接。

Arduino 制造用水量智能监测仪

打开流量传感器盖子取出电路板,用烙铁加热三根电线并将它们分别焊接到三根电线上。

Arduino 制造用水量智能监测仪

再将 3.5mm 音频电线焊接到焊盘上。按照电线的颜色来焊接。+5V 在顶端,信号在环上,接地线在地上。与充电端口的设置相同。如果你不小心将充电器插入传感器端口,也不会对设备造成伤害。

Arduino 制造用水量智能监测仪

3、安装流量传感器

Arduino 制造用水量智能监测仪

取下喷头,将流量传感器与喷头导管相连,由于传感器两端都是公头,需要制作一个母对母联轴器。用1/2英寸黄铜管制作一个联轴器,其他材质亦可(确保管道与传感器端口的尺寸相匹配)。

Arduino 制造用水量智能监测仪

将联轴器的一端与流量传感器相连,另一端与管道相连。流量传感器有个箭头代表水流流动的方向。确保不要反向安装,否则测量结果会不准确。最后,将喷头安装到流量传感器的末端。

Arduino 制造用水量智能监测仪

安装时,为防止漏水,管道之间可以缠绕生胶带。

将 Arduino 安装到电路板

Arduino 制造用水量智能监测仪

1、取一块 1×2英寸的矩形电路板,将 Arduino Nano 安装到电路板中间并标记了针脚穿过的位置。

Arduino 制造用水量智能监测仪

2、取两个母头针头,每个带十五个针头。将其焊接到电路板上。Arduino 可以移除便于编程。

Arduino 制造用水量智能监测仪

Arduino 制造用水量智能监测仪

注意标记 Arduino USB 端口的方向,以同样的方向插入到电路板上。

组装

Arduino 制造用水量智能监测仪

组件连接方法如图所示。

Arduino 制造用水量智能监测仪

1、切割了一些公头排针并将它们焊接到电路板的 +5V 和接地导轨上。再焊接两个排针分别连接到 Arduino 的 A4 引脚和 A5 引脚。使用母对母跳线连接 LCD 屏幕。

2、将升压转换器输出端口的两根线分别焊接到 +5V 和接地导轨上。为 Arduino、LCD 和流量传感器供电。切割两根电线并将它们连接到按钮的端口上。一根电线接到地线,另一根线接到数字引脚 3。

Arduino 制造用水量智能监测仪

3、焊接流量传感器。由于传感器上已经安装 3.5mm 插头,只需要再安装一个 3.5mm 的母头插孔。首先焊接了三根电线,每一根都标记好。然后将插头插入外壳并用螺母固定到位。将地(sleeve)焊接到接地端,头(tip)焊接到 +5V,环(ring)焊接到数字引脚 2。我将数字引脚 2 和 3 分别连接到按钮和流量传感器,因为它们是中断引脚,易于编程。

Arduino 制造用水量智能监测仪

4、固定 LCD。需要四根母对母的跳线。将“Vcc”引脚连接到 +5V,将“Gnd”引脚连接到接地端,将“SCL”引脚连接到 A5,将“SDA”引脚连接到 A4。为了使 LCD 屏幕更好的与外壳相吻合,需要向后弯曲引脚。操作时需要小心处理,不要重复弯曲引脚。

Arduino 编程

Arduino 制造用水量智能监测仪

通过编程实现以下几个功能:

1、LCD 第一行显示水量的总升数,第二行显示水的总成本或流速。

2、打开喷头时,切换按钮时可以别分显示成本和流速。

3、喷头关闭时,按钮清除所有数据并重置屏幕。

4、使用中断程序读取传感器,避免计数误差。

5、更新屏幕时,只更新已改变的值,而不是每次刷新整个屏幕(这会导致闪屏)。

该程序遵循一个简单的结构。通过使用 millis() 函数,创建一个延迟,但不会停止程序的执行。请点击参考这个教程https://www.arduino.cc/en/tutorial/BlinkWithoutDelay ,这是一个关于不使用 delay() 函数的情况下闪烁 LED 的案例。

Arduino 打开后,millis() 函数将返回其毫秒数。通过创建变量“previousMillis”并减去 Millis() -previousMillis(),就可以看到 previous Millis 更新用的时间。

如果希望每秒发生一次,可以编写以下代码:

Arduino 制造用水量智能监测仪

这将帮助检查 millis()(当前时间)和 previous Millis(最后一次)之间的差异是否大于或等于 1000 毫秒。如果是,将 previous Millis 设置为当前时间。然后再进行其他步骤。

在该项目中,接下来切换 LED。然后退出这段代码并完成 loop() 函数的其余部分,然后再回到开始并重复。使用这种方式比简单 delay() 函数要好。因为 delay() 在指令之间设置了时间间隔,但没有考虑执行 loop() 函数中的运行其他指令所花费的时间。如果你要做的事情比闪烁 LED 更费时,例如更新 LCD 屏幕,那么它所花费的时间是不可忽视的并且运行几个周期之后它会累积。如果你准备更新时钟上的 LCD 屏幕,它将会出现延迟。

整个程序的结构介绍完毕,现在可以插入指令。请认真查看流程图。每一段 Arduino 代码都有说明,请认真阅读。相关文件请在项目文件库中下载。

https://make.quwj.com/project/137

因为每个城市的水费存在差异,请根据事情情况进行更改,修改每升水的成本。在本市水费每升为0.2523¢。请自行更改:

1const float COST_PER_LITRE = 0.2523; // cost per litre, in cents, from city website

如果你选择计量水的单位是加仑而不是升,请将所有“LCD.print()”行中的“L”或“L/s”更改为“G”或“G/s”。然后删除以下行:

1const float CONVERSION = 450.0; // keep this uncommented for litres

并取消注释这一行。

1

const float CONVERSION = 1703.0; // uncomment this and delete the line above for gallons

你会注意到“¢”字符,我不想使用美元,因为大多数情况下成本会显示为“$ 0.01”或更低。因此,我自定义一个特性。以下字节数组用于表示此符号:

Arduino 制造用水量智能监测仪

创建此数组后,必须“创建”并存储这个特性。

1

lcd.createChar(0, cent_sign);

完成后,打印自定义特性,使用以下行:

1

lcd.write(byte(0)); // print cents sign (¢)

显示屏最多可包含8个自定义特性。

同时使用在线工具,它帮助你使用图形界面绘制自定义特性并自动生成自定义字节数组。

封闭外壳

到目前为止,项目快要完成。将所有电子设备放入壳中并合上外壳。

Arduino 制造用水量智能监测仪

1、取四根 30mm 连接的铜螺柱。我用四个 M3 螺丝将其固定到外壳底部的孔中。

Arduino 制造用水量智能监测仪

2、检查所有电子设备是否固定好。将充电器和升压转换器连接到带有双面胶的盖子上。

3、在两个 3.5mm 插孔的外部的金属周围缠上一些胶带,确保连到连接器上不短路。

Arduino 制造用水量智能监测仪

4、将 Arduino 安装至侧面的左下角,USB 端口朝右。使用双面胶将电池固定在 LCD 屏幕下方,朝向外壳底部。

Arduino 制造用水量智能监测仪

5、所有组件安装好后,用四个 M3 合上外壳。

测试

Arduino 制造用水量智能监测仪

1、将 3.5mm 连接器插入流量传感器。再打开设备请进行操作。

2、打开主电源开关。没有水流入时,除了清除总数和清屏外,前板按钮不会执行任何操作。默认总数为零,按钮不会执行任何操作。

Arduino 制造用水量智能监测仪

3、如果打开喷头时,总量就会开始增加。默认情况下,会显示成本。如果按下前板按钮,水的流量将显示在最后一行。按下前板按钮将切换显示流速和成本。关闭喷头时,按下前按钮将重新测量并清除屏幕。

注意事项

1、如何安装设备将取决于你浴室的布局。可以放置在浴室的铁架上,如果没有可以使用吸盘,但只适合于表面光滑的外壳。

2、故障排除

屏幕打开,背光关闭——确保跳线安装在 I2C 模块侧面的两个引脚上。

屏幕空白,背光打开——通过 I2C 扫描仪检查 I2C 地址是否正确。

屏幕打开,数值为零——通过测量引脚 2 上的电压来检查传感器是否有信号。如果没有信号,请检查传感器是否连接正确。

屏幕空白,背光关闭——检查 Arduino 上的电源的 LED 是否亮起,并检查屏幕是否有电。

屏幕闪开,然后一切都停止——你可能将升压转换器的电压设置得太高(组件无法承受超过 5V 的电压)。

设备工作,数值不正确——确保你使用的流量传感器具有相同的转换系数,即每升450个脉冲。不同的传感器具有不同的值。

改进方向

目前,该软件运行良好,但还可以添加不同用户(如家庭其他成员,室友等)的能力。该设备将存储每个人的统计数据(总水量和淋浴总数)并显示每个人的平均用水量。这可以鼓励更多人节约用水。

1、添加安装 EEPROM,Arduino 的内置非易失存储器。这样即使在设备关闭后也可以保留数据。我们可以创建一些特定的电子表格,通过查看数据并绘制成图形,这样就可以更清楚明了的看出,一年中人们哪个季节更频繁洗澡和用更长的时间沐浴。

2、添加电池指示器。目前,设备需要充电的唯一指示是电池管理器板切断电源。连接额外的模拟输入以测量电池电压非常的简单。由于电池电压始终小于 5V,不需要安装分压器。


分享到:


相關文章: