- 所需组件:
- HC-SR04超声波传感器:
- ESP8266 Wi-Fi模块:
- 电路图和说明:
- 代码说明:
- “;如果(距离<5){webpage + =”垃圾桶已满“;} else {webpage + =”垃圾桶为空“;}网页+ =”
- 项目的测试和输出:
在本DIY中,我们将制作一个基于IOT的垃圾箱/垃圾监控系统,该系统将告诉我们垃圾箱是空的还是已满的Web服务器,您可以从中了解“垃圾箱”或“垃圾箱”的状态。通过Internet在世界任何地方。它会非常有用,可以安装在公共场所以及家庭中的垃圾桶中。
在该物联网项目中, 超声波传感器用于检测垃圾桶是否装满垃圾。超声波传感器安装在垃圾桶的顶部,可以测量垃圾到垃圾桶顶部的距离,我们可以根据垃圾桶的大小设置一个阈值。如果距离小于该阈值,则表示垃圾箱中已装满垃圾,如果在该页面上显示“篮子已满”消息,则该距离大于该阈值时,我们将打印消息“购物篮为空”。在这里,我们在程序代码中将阈值设置为5cm。我们将使用ESP8266 Wi-Fi模块用于将Arduino连接到Web服务器。在这里,我们已经使用本地Web服务器来演示此垃圾监控系统的工作。
所需组件:
- Arduino Uno(您可以使用其他任何一种)
- ESP8266 Wi-Fi模块
- HC-SR04超声波传感器
- 1K电阻
- 面包板
- 连接线
HC-SR04超声波传感器:
超声波传感器用于以高精度和稳定的读数来测量距离。它可以测量2厘米至400厘米或1英寸至13英尺的距离。它在空中以40KHz的频率发射超声波,如果物体挡住了物体,它将反弹回传感器。通过使用撞击对象并返回的时间,您可以计算距离。
超声波传感器有四个引脚。两个是VCC和GND,它们将连接到Arduino的5V和GND,而另外两个引脚是Trig和Echo引脚,它们将连接到Arduino的任何数字引脚。触发引脚将发送信号,而回波引脚将用于接收信号。要产生超声信号,您必须将Trig引脚设置为高电平约10us,这将以音速发送一个8周期的声爆,并且在撞击物体后,Echo引脚会接收到它。
进一步检查以下项目,以正确理解超声波传感器的工作原理并测量使用该传感器的任何物体的距离:
- 使用超声波传感器的基于Arduino的距离测量
- 使用HC-SR04和AVR单片机进行距离测量
ESP8266 Wi-Fi模块:
ESP8266是一个Wi-Fi模块,可让您的项目访问Wi-Fi或Internet。这是一种非常便宜的设备,但是它将使您的项目变得非常强大。它可以与任何微控制器通信,并使项目无线化。它是物联网平台上最领先的设备列表。它在3.3V电压下运行,如果您给它5V电压,则会损坏。
ESP8266有8个管脚; VCC和CH-PD将连接到3.3V以启用wifi。TX和RX引脚将负责ESP8266与Arduino的通信。RX引脚的工作电压为3.3V,因此您必须像我们在项目中所做的那样为其制作一个分压器。
电路图和说明:
首先,我们将ESP8266与Arduino连接。 ESP8266在3.3V电压下运行,如果您从Arduino给它提供5V电压,则它将无法正常工作,并且可能会损坏。将VCC和CH_PD连接到Arduino的3.3V引脚。 ESP8266的RX引脚工作在3.3V电压上,当我们将其直接连接到Arduino时,它将不与Arduino通信。因此,我们将不得不为其制造一个分压器。三个串联的1k电阻将为我们完成工作。如下图所示,通过电阻将RX连接到Arduino的引脚11,并将Arduino的TX连接到Arduino的引脚10。
现在是时候将HC-SR04超声波传感器与Arduino连接了。超声波传感器与Arduino的连接非常简单。将VCC和超声传感器的接地连接到5V和Arduino的接地。然后将超声波传感器的TRIG和ECHO引脚分别连接到Arduino的引脚8和9。
代码说明:
在上传代码之前,请确保您已连接到ESP8266设备的Wi-Fi。您可以在下面的“代码”部分中查看完整的代码,注释中对代码进行了很好的解释,此外,下面我们还解释了一些重要的功能。
Arduino将首先读取超声波传感器。当我们将TRIG引脚设为高电平10us时,它将以音速发送超声波信号。撞击物体后,信号将返回,我们会将行进时间持续时间存储在名为 duration 的变量中。然后,我们将通过应用公式来计算对象的距离(在本例中为垃圾),并将其存储在名为 distance 的变量中。
digitalWrite(trigPin,LOW); delayMicroseconds(2); digitalWrite(trigPin,HIGH); delayMicroseconds(10); digitalWrite(trigPin,LOW); 持续时间= pulseIn(echoPin,HIGH); 距离=持续时间* 0.034 / 2;
为了在Web浏览器中的网页上打印输出,我们将不得不使用HTML编程。因此,我们创建了一个名为 webpage 的字符串并将输出存储在其中。为了确定垃圾桶是否为空,我们在此处应用了条件。如果距离小于5厘米,则在网页上显示“篮子已满”;如果距离大于5厘米,则在网页上显示消息“篮子已空”。
if(esp8266.available()){if(esp8266.find(“ + IPD,”)){delay(1000); int connectionId = esp8266.read()-48; 字符串网页=“
物联网垃圾监控系统
“;网页+ =”“;如果(距离<5){webpage + =”垃圾桶已满“;} else {webpage + =”垃圾桶为空“;}网页+ =”
“;以下代码将发送并显示网页上的数据。我们存储在名为 'webpage'的 字符串中的数据将保存在名为 'command'的 字符串中。然后,ESP8266将从 “命令”中 逐个读取字符,并将其打印在网页上。
String sendData(String command,const int timeout,boolean debug){字符串响应=“”; esp8266.print(命令); 长整数时间= millis(); while((time + timeout)> millis()){while(esp8266.available()){char c = esp8266.read(); 响应+ = c; }} if(debug){Serial.print(response); 返回响应;}
项目的测试和输出:
上载代码后,打开串行监视器,它将为您显示IP地址,如下所示。
在浏览器中输入该IP地址,它将显示如下输出。如果您想再次查看垃圾桶是否为空,则必须再次刷新页面。
因此,通过这种垃圾监控系统的工作方式,可以通过在其中添加一些其他功能来进一步增强该项目,例如,当垃圾桶已满一半时,我们可以再设置一条消息,或者当垃圾桶时,我们可以触发电子邮件/短信提醒用户篮子已满。