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

工作

本项目采用两种电路,一种是发射机,另一种是接收机。在发射电路中使用了超声波传感器,用于测量液位距离瓶或罐的上点的距离。距离以厘米为单位测量,并通过射频通信发送到接收电路。

Arduino水位指示器
Arduino水位指示器

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

Arduino水位指示器
Arduino水位指示器

超声波传感器有两个开口,一个是触发器,另一个是回声。触发使高频声波进行高频声波。这些声波通过顶部到底部通过罐。声波撞到水中,并以回声波的形式反射。回波开口接收回声波。水位传感器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引脚。
采用Arduino变送器电路的水位指示器
采用Arduino变送器电路的水位指示器

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

上面所示的发射机和接收机电路的电路图足以在面包板或零PCB上自己制作一个。

如果你擅长PCB蚀刻,你可以使用下面给出的图像。

水位指示器采用Arduino - PCB设计
使用Arduino - PCB设计的水位指示器

使用Arduino  -  PCB的水位指示器
水位指示器采用Arduino - PCB

RF接收器
RF接收器

射频变送器
射频变送器

程序/代码

下载- 水位控制器(变送器)程序

下载-水位控制器(接收器)程序

在该项目中,使用两个电路,两者都是通电的Arduino纳米。射频模块用于收发电路之间的通信。

如何附加库

  1. 从链接https://github.com/sui77/rc-switch下载库文件。
  2. 解压缩文件rc-switch-master。
  3. 复制rc-switch-master文件夹内的文件夹。
  4. 将文件夹粘贴在位置文档> arduino>库中。
  5. 关闭Arduino IDE软件(如果开放)。
  6. 打开Arduino IDE。
  7. 单击文件>示例
  8. 如果附加了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注释

  1. 寿司

    先生请帮。在我的项目计数从100%开始,它减少90,80....
    我在用你的代码…
    我想从0.0%开始到100%。
    我如何解决PLZ引导我…

  2. Badshah

    我需要做什么修改才能从地面接通/关闭发射电路??

  3. 弗兰克卡托纳

    有人是否提供销售完成的项目?

  4. 弗兰克卡托纳

    是否有人提供一个完整的发射器和接收器与软件加载出售?

  5. 托马斯·约瑟夫

    亲爱的先生,

    非常有趣的项目,它工作得很好…我在这个项目上有要求。

    按此代码电机打开水位低于“X”水平,好,马达开始注入水;但是如果低槽是空的或其他原因水箱水位不增加从“X”层面,我们必须关掉汽车安全的目的。

    例如:目前的水位> 60厘米,电机接通,但3分钟后水位不增加或未达到特定水平(例如:50cm),我们必须转动电机。

    所以这是我的要求,我该如何解决这个问题,你能帮助我吗?

  6. 费尔南多·雷特

    我找不到图书馆文件“Ultrasonic.h”下载。有没有人能够下载?

  7. Bringa

    很酷的项目,可惜9伏很快就空了

  8. 赫曼特

    接收程序级别百分比公式不工作0-100%请建议我

  9. 艾尔沙德

    我非常兴奋地看到这个无线监视器,并决定为我的头顶坦克。花了几块钱买了所有的零件。所有进展顺利,发射机代码给出以下错误。

    值得一提的是我只是初学者,而且一个爱好者随之而来的是逐字。

    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板编译错误。

  10. V. Hari Hara Prasad

    非常好的方法来测量水位和传感器之间的距离。发射器和接收器电路避免了不必要的布线。我们也可以保留更多的传感器来测量水压和水箱充油日志,告诉用户大约充油的时间。同样可以用来测量燃料储存在车辆和大致距离旅行为下一次加油:车辆的平均公里每小时的计算。还可以添加时钟来显示日期、时间和日历。

Ezoic报告这个广告