Arduino水位指示器
利用超声波传感器和Arduino的无线水位指示器是一个令人惊奇和非常有用的项目。这个项目的目的是通知用户在高架水箱中存在的水量。本项目可以进一步加强对水箱水位的控制,水位低时打开水箱,水位高时关闭水箱。因此Arduino水位指示器有助于防止高架水箱的水浪费。这个项目是无线的,安装方便,可以工作到100米。
本项目采用两种电路:发射电路和接收电路。发射电路利用超声波传感器来测量水位的距离。数据通过射频通信发送到接收电路。水位以百分数显示在16×2 LCD模块上,该模块与接收电路相连。
组件使用
组件 | 规格 | 数量 |
---|---|---|
Arduino | 纳米 | 2 |
超声波传感器 | HC-SR04 | 1 |
RF发射器接收器对 | 问433 | 1 |
液晶 | 16x2. | 1 |
预设 | 10 k | 1 |
开关 | DPDT (PCB)山 | 2 |
电池 | 9伏 | 2 |
电池座 | 2 |
工作
本项目采用两种电路,一种是发射机,另一种是接收机。在发射电路中使用了超声波传感器,用于测量液位距离瓶或罐的上点的距离。距离以厘米为单位测量,并通过射频通信发送到接收电路。

接收电路从发送电路接收数据,并将其按百分比转换并显示在LCD上。

超声波传感器有两个开口,一个是触发器,另一个是回声。触发使高频声波进行高频声波。这些声波通过顶部到底部通过罐。声波撞到水中,并以回声波的形式反射。回波开口接收回声波。水位传感器Arduino测量回声和触发之间的时间。这次旅行的距离与时间成比例。

水位指示器Arduino -视频演示
Arduino水位指示器电路
在这个项目中使用了两个电路
- 发射机电路-发射电路如下图所示。图1,在这个电路中,一个超声波传感器连接到Arduino的D9和D10引脚。超声波传感器由Vcc和GND引脚供电,这些引脚连接Arduino的Vcc和GND引脚。测量数据通过射频发射器发送。RF发射器的数据引脚连接Arduino Nano的D4引脚。RF发射器的Vcc和GND引脚连接Arduino的Vcc和GND引脚。该发射电路采用天线连接射频发射机的ANT引脚,整个电路由9伏电池供电。电池连接Arduino的Vin和GND引脚。

- 接收机电路,在接收电路中,射频接收器用于接收来自发射机的数据。RF Receiver的数据引脚连接Arduino的D4引脚。LCD显示水位,LCD从引脚D4到D9连接Arduino。LCD由Arduino的Vcc和GND引脚供电,通过移动预置来改变LCD的对比度,预置连接到LCD的3引脚。接收电路由9伏电池通过开关供电,开关连接在Arduino的Vcc和GND引脚之间。电路如下图所示。

上面所示的发射机和接收机电路的电路图足以在面包板或零PCB上自己制作一个。
如果你擅长PCB蚀刻,你可以使用下面给出的图像。




程序/代码
下载- 水位控制器(变送器)程序
下载-水位控制器(接收器)程序
在该项目中,使用两个电路,两者都是通电的Arduino纳米。射频模块用于收发电路之间的通信。
如何附加库
- 从链接https://github.com/sui77/rc-switch下载库文件。
- 解压缩文件rc-switch-master。
- 复制rc-switch-master文件夹内的文件夹。
- 将文件夹粘贴在位置文档> arduino>库中。
- 关闭Arduino IDE软件(如果开放)。
- 打开Arduino IDE。
- 单击文件>示例
- 如果附加了library,您可以在Example列表中看到rc-switch-master。
发射机
在发射器侧的编码中,使用两个报头文件。首先是rcswitch.h,其用于RF发射器,第二个是超声波,其用于超声波传感器。
现在超声波传感器引脚由Lime 4中的超声波显示,PIN11是Trig,PIN10是回声。在第5行中,RCSwitch按名称“MySwitch”为发射器声明。在第7行中,INTEGER由名称“I”声明。
在void setup中,发射器通过函数“mySwitch.enableTransmit(4)”启用,其中发射器的数据引脚连接到Arduino的引脚D4。
在空环中,距离是通过函数“超声波测距(CM)”来测量的,并以整数“I”来指定,这个距离的单位是厘米。
在第15行中,测量距离通过功能“MySwitch.send(i,24)”发送,其中“i”是距离和24是比特格式。在使用100毫秒的所有“延迟”之后,这意味着Arduino在每100毫秒后发送数据。
接收者
在接收端,使用两个头文件,第一个是“RCSwitch.h”,用于发送端和接收端之间的射频通信,第二个是“LiquidCrystal.h”,用于LCD显示。
在第4行中,声明了Arduino引脚,它连接到LCD。总共有6个引脚连接Arduino,分别是D4、D5、D6、D7、D8、D9。在第5行中,“RCSwitch”通过名称“mySwitch”声明。
在第7行,浮动是声明的名字“水平”,显示水位和第9和第10行声明两个整数的名字“Hval”和“Lval”,“Hval”上水位值(超声波距离传感器)和“Lval”是低价值的水位(超声波距离传感器)。蜂鸣器的所有引脚都用整数“buzzer”声明,其中10为Arduino的D10 pin。
在VOID SETUP RF接收器中通过函数“MySwitch.EnableReceiver(0)”,其中0是Arduino的D2引脚的中断引脚(INT0)。
在第16行,LCD以函数“LCD”开头。开始(16,2)",并在第17行," lcd。print”用于显示LCD第一行的“水位INDI”。
在第19行中,“pinMode(BUZZER, OUTPUT)”将BUZZER引脚声明为OUTPUT。
在求建中的“void Loop()”中,如果使用(MySwitch.Available())“,则这意味着如果从RF接收器接收到任何数据,则该程序进入循环。在第25行中,来自RF接收器的数据由函数“MySwitch.getReciveValue”解码,并保存在浮点“级别”中。
在第27和28行中,通过使用一些数学表达式处理并转换为百分比的“电平”。在第30行中,“如果”条件用于限制百分比。
在第32、33、34、35行,电平显示在LCD上,在第37行“myswitchw .reset. available()”函数用于复位射频模块。
在代码的最后,“如果”条件用于打开蜂鸣器,如果水平成为超过99%。
10注释
先生请帮。在我的项目计数从100%开始,它减少90,80....
我在用你的代码…
我想从0.0%开始到100%。
我如何解决PLZ引导我…
我需要做什么修改才能从地面接通/关闭发射电路??
有人是否提供销售完成的项目?
是否有人提供一个完整的发射器和接收器与软件加载出售?
亲爱的先生,
非常有趣的项目,它工作得很好…我在这个项目上有要求。
按此代码电机打开水位低于“X”水平,好,马达开始注入水;但是如果低槽是空的或其他原因水箱水位不增加从“X”层面,我们必须关掉汽车安全的目的。
例如:目前的水位> 60厘米,电机接通,但3分钟后水位不增加或未达到特定水平(例如:50cm),我们必须转动电机。
所以这是我的要求,我该如何解决这个问题,你能帮助我吗?
我找不到图书馆文件“Ultrasonic.h”下载。有没有人能够下载?
很酷的项目,可惜9伏很快就空了
接收程序级别百分比公式不工作0-100%请建议我
我非常兴奋地看到这个无线监视器,并决定为我的头顶坦克。花了几块钱买了所有的零件。所有进展顺利,发射机代码给出以下错误。
值得一提的是我只是初学者,而且一个爱好者随之而来的是逐字。
Arduino: 1.8.5 (Windows 7),主板:“Arduino Nano, ATmega328P”
C:\ Program Files(x86)\ arduino \ arduino-builder -dump-prefs -logger = machine-hardware c:\ program files(x86)\ arduino \ hardware -tools c:\ program files(x86)\ tools-builder -tools c:\ program files(x86)\ arduino \ hardware \ tools \ avr -built-ligraries c:\ program文件(x86)\ arduino \ libraries -libraries c:\ users \ arshad \ documents \ arduino\ libraries -fqbn = arduino:avr:nano:cpu = Atmega328-version-version = 10805 -build-path c:\ users \ arshad \ appdata \ local \ temp \ arduino_build_192362 -warnings = default -build-cache c:\ bevents -build-cache c:\ bess\ arshad \ appdata \ local \ temp \ arduino_cache_525437 -prefs = build.warn_data_percentage = 75 -prefs = runtime.tools.avr-gcc.path = c:\ program文件(x86)\ arduino \ hardware \ tools \ avr -prefs =runtime.tools.arduinoota.path = c:\ program files(x86)\ arduino \ hardware \ tools \ avr -prefs = runtime.tools.avrdude.path = c:\ program文件(x86)\ arduino \ hardware \ tools \avr -verbose c:\ users \ arshad \ appdata \ local \ temp \ arduino_modified_sketch_23154 \变送器.ino
C:\Program Files (x86)\Arduino\ arduino-builder编译记录器=机硬件C:\Program Files (x86)\Arduino\hardware工具C:\Program Files (x86)\Arduino\ tools-builder工具C:\Program Files (x86)\Arduino\hardware\tools\avr -built-in-libraries C:\Program Files (x86)\Arduino\libraries库C:\Users\Arshad\Documents\Arduino\librariesc:\用户\ arshad \ appdata \本地\ temp\ arduino_build_192362首选项= runtime.tools.avr-gcc warn_data_percentage = 75。path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA。路径=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude。C:\用户\ arshad \ appdata \本地\ temp\ arduino_modified_sketch_23154\传递器.ino
在文件夹中的平台上使用Board'Nano':C:\ Program Files(X86)\ Arduino \硬件\ Arduino \ Avr
在文件夹中的平台上使用核心'arduino':c:\ program files(x86)\ arduino \硬件\ arduino \ avr
检测库使用……
“C:\ Program Files(x86)\ arduino \硬件\ tools \ avr / bin / avr-g ++”-c-g-os -w -std = gnu ++ 11 -fpermissive -fno-fexective -function-sections -fdata-sections -fno-threadsafe-statics -flto -w-x c ++ -e -cc-mmcu = ammega328p -ddaruino = 16000000l -darduino = 10805 -darduino_avr_nano -darduino_arch_avr“-ic:\ program文件(x86)\ arduino \硬件\ arduino \ artes \ arduino“”“ - :\ program files(x86)\ arduino \硬件\ arduino \ avr \ variants \ overanaloginputs”c:\ users \ arshad \ appdata \ local \ temp \ arduino_build_192362 \ sketch \变送器.ino.cpp“-o”nul“
“C:\ Program Files(x86)\ arduino \硬件\ tools \ avr / bin / avr-g ++”-c-g-os -w -std = gnu ++ 11 -fpermissive -fno-fexective -function-sections -fdata-sections -fno-threadsafe-statics -flto -w-x c ++ -e -cc-mmcu = ammega328p -ddaruino = 16000000l -darduino = 10805 -darduino_avr_nano -darduino_arch_avr“-ic:\ program文件(x86)\ arduino \硬件\ arduino \ art \ artes \ arduino“”“ - :\ program files(x86)\ arduino \硬件\ arduino \ avr \ variants \ overanaloginputs”“ - :\ users \ arshad \ documents \ arduino \ libraries \ rc-switch-2.6.2“”C:\ Users \ Arshad \ AppData \ Local \ Temp \ Arduino_Build_192362 \ Sketch \ Transmitter.ino.cpp“-o”nul“
“C:\ Program Files(x86)\ arduino \硬件\ tools \ avr / bin / avr-g ++”-c-g-os -w -std = gnu ++ 11 -fpermissive -fno-fexective -function-sections -fdata-sections -fno-threadsafe-statics -flto -w-x c ++ -e -cc-mmcu = ammega328p -ddaruino = 16000000l -darduino = 10805 -darduino_avr_nano -darduino_arch_avr“-ic:\ program文件(x86)\ arduino \硬件\ arduino \ art \ artes \ arduino“”“ - :\ program files(x86)\ arduino \硬件\ arduino \ avr \ variants \ overanaloginputs”“ - :\ users \ arshad \ documents \ arduino \ libraries \ rc-switch-2.6.2“”c:\ users \ arshad \ appdata \ local \ temp \ arduino_build_192362 \ sketch \ transmitter.ino.cpp“-o”c:\ users \ arshad \ appdata \ local \ temp \ arduino_build_192362 \ preproc \ ctags_target_for_gcc_minus_e.cpp“
C:\ users \ arshad \ appdata \ local \ temp \ arduino_modified_sketch_23154 \变送器.ino:2:24:致命错误:Ultrasonic.h:没有这样的文件或目录
# include
^
汇编终止。
使用库rc-switch-2.6.2在2.6.2版本文件夹:c:\用户\ arshad \文档\ arduino\库
退出状态1.
Arduino Nano板编译错误。
非常好的方法来测量水位和传感器之间的距离。发射器和接收器电路避免了不必要的布线。我们也可以保留更多的传感器来测量水压和水箱充油日志,告诉用户大约充油的时间。同样可以用来测量燃料储存在车辆和大致距离旅行为下一次加油:车辆的平均公里每小时的计算。还可以添加时钟来显示日期、时间和日历。