三行代码实现雨滴感应传感器的读取

96 篇文章 0 订阅
66 篇文章 0 订阅

雨滴感应传感器

本教程来源于 FlexLua 官网,专注于降低 IoT 硬件开发难度,零门槛 Lua 低代码编程技术开发 IoT 硬件。

一、传感器介绍

bb08e546d6067d8f0de1c64a639d82d9.jpeg

  • 雨滴感应传感器结构简单,价格便宜,可以通过暴露在电路板上的平行线路和液体的接触来测量是否有雨滴以及雨滴量大小。
  • 传感器的DO引脚用来指示是否检测到雨滴,如果检测到至少一滴雨滴DO就输出高电平,反之一直保持低电平。
  • 传感器的AO引脚输出模拟电压信号,用来指示检测的雨滴数量大小。

这里我们只检测AO输出的电压模拟量信号,因为该电压信号不仅可以反映有无雨滴,还可以看出雨量的大小。对于DO接口则使用起来更简单,如果开发者感兴趣的话可以用Core提供的GPIO库函数来实现,这里就不涉及了。

二、接线图

3dc70438a59e15d2cc9d67bc0c35a565.jpeg

三、材料清单

  • 雨滴传感器模块

四、完整代码

--配置Core的USB口以虚拟串口模式工作,这样print()输出的内容就可以在电脑串口终端上显示了
LIB_UsbConfig("CDC")
--配置AD电压采集功能,最大值采样值4096对应3.6V输入电压
--当通道采集满1个点时缓存满,每个点的采集时间间隔为300ms
LIB_ADConfig(1,300000)
--开始大循环
while(GC(1) == true)
do
--每隔300ms查询A0通道是否转换完成
--开发者也可以将传感器接至A1-A3中的任一通道,也可以多个通道接多个传感器,用法都和下面一样
LIB_DelayMs(300)
A0_full_flag, A0_buf = LIB_ADCheckBufFull("A0")
if A0_full_flag == 1 then
--打印输出A0通道的AD采样值以及对应的电压值
print(string.format("A0=%04d Voltage=%.2fv", A0_buf[1], A0_buf[1]*3.6/4096.0))
end
end

如果感兴趣,上面代码中出现的LIB开头的库函数可以在 API文档 中通过Ctrl+F查询。

五、实验过程及结论

步骤一:雨滴感应器表面无任何水分

072d81194ccb6824169b1365043cebcd.jpeg

069ae95137939d324c66b9cbed2f04c1.jpeg

上图可以看到在无水状态下时传感器输出的电压值在3.3V满压状态

步骤二:雨滴感应器表面只有1滴水

c742f7a1c561cd25f672d5c5ff672fd3.jpeg

71708d725e67a015f937e29d19c09390.jpeg

上图可以看到只有1滴水时输出的电压值在2.23V

步骤三:雨滴感应器上有5滴水

dbfdd07a353e301a9cdb270dbad252d2.jpeg

0589922318afebe525d43b48de5f7b02.jpeg

上图可以看到有5滴水时输出的电压值在1.87V

步骤四:雨滴感应器上布满雨滴

d9e075c38d99fd6aa159600c79810aed.jpeg

e4794cc01434cd5b4b432e8b8db8c303.jpeg

上图可以看到感应器上布满水滴时输出的电压值在1.45V

结论:

通过上面实验可以看出,雨滴感应器在"无水"-->"1滴"-->"5滴"-->"布满"这四个状态输出的电压值分别为:3.30V, 2.23V, 1.87V, 1.45V。

可以看出传感器的输出电压和雨滴数量是成反比关系。即雨量越大,传感器输出的电压值越低。

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值