基于物联网的智能路灯使用NodeMCU ESP8266和ThingSpeak
扫描二维码
随时随地手机看文章
大多数地方都有自动路灯,可以感知白天和黑夜,并根据昼夜自动打开和关闭。在这里,我们扩展了这个项目,增加了一个额外的限制来打开灯,路灯只会在黑暗中发光,有人穿过街道。该项目的主要目标是通过只在需要时发光路灯来减少电力消耗。在这个项目中,我们展示了智能路灯的原型,它有3个红外传感器,1个LDR传感器和3个led,每个led代表一个路灯。我们还将更新LDR传感器数据到ThingSpeak,并从世界任何地方通过互联网控制led(路灯)。
组件的要求
•USB数据线
•发光二极管
•跳线
•红外传感器
•LDR传感器
在继续之前,让我们了解一下项目中使用的组件。
ESP8266 NodeMCU
ESP8266 NodeMCU是一个开源的物联网平台。它包括运行在expressif Systems低成本支持Wi-Fi的ESP8266 Wi-Fi SoC上的固件,以及基于ESP-12模块的硬件。它具有GPIO, SPI, I2C, ADC, PWM和UART引脚,用于通信和控制附加到它的其他外设。板载NodeMCU具有提供USB到TTL功能的CP2102 IC。
红外传感器
红外传感器是一种通过感应物体反射的红外辐射来探测物体的电子设备。它主要由一个发射红外LED和一个接收光电二极管组成。它可以探测波长从700nm到1mm的红外辐射。当一个特定的正电压施加在发射LED上时,它就会发射红外线。如果这些光线落在某个物体上,那么该物体就会将接收到的红外线反射回去。接收器二极管在其两端产生电压,该电压取决于物体反射的光的强度。通常红外接收LED较暗(黑色),而发射器是透明的颜色。
LDR传感器
LDR代表光相关电阻,也称为光电阻。LDR对光很敏感,它的电阻随光照强度的变化而变化。它由高阻半导体组成,在黑暗中电阻增大,在光明中电阻减小。当入射到LDR上的光超过某个阈值时,它会吸收光子,并允许电子跃入传导带。LDR产生可变电阻,这取决于落在它上面的光的强度。主要应用于路灯、闹钟、自动亮度、对比度控制等电路中。
Thingspeak
ThingSpeak是一个基于云的数据平台,使用HTTP协议实时发送和接收数据。它用于物联网应用,通过互联网存储和监控来自世界任何地方的数据。以下是一些将ThingSpeak用作物联网云的物联网项目:
•物联网无线气象站使用Arduino, ESP8266和ThingSpeak
•基于物联网的温湿度监测,使用Arduino UNO和ESP8266
•基于物联网的树莓派气象站,使用DHT11和BMP180传感器
•基于物联网的温湿度监测使用ThingSpeak和ESP8266
智能路灯电路图及工作原理
基于物联网的智能路灯电路图如下:
该电路主要由ESP8266、LDR传感器、IR传感器和led组成。
在这里,LDR传感器用于检测是白天还是夜间。由于LDR传感器根据落在其上的光量产生可变电阻,因此它必须像电位器一样连接。LDR传感器一端接5V,另一端接固定电阻,固定电阻再接地。NodeMCU有一个ADC引脚(A0),连接到固定电阻和LDR传感器一端之间的点,如图所示。由于LDR传感器提供可变电阻,因此根据落在LDR上的光量,将在A0处产生可变电压。
红外传感器用于检测是否有人在过马路。它能探测到周围的障碍物或运动。发射机将发射红外线,如果它落在一些物体上,如人、动物、车辆等,将被反射回来。反射的光线将被接收二极管接收,因此将确认物体的存在,相应的LED将发光。这种方法可以节省大量的电力,因为路灯只有在街上有人的时候才会亮。红外传感器有3个引脚,其中两个是VCC和接地,一个是输出引脚。如果检测到某些物体的存在,红外传感器的输出会变高。该引脚连接到NodeMCU的GPIO引脚,因此每当红外传感器检测到有人穿过街道时,它就会触发路灯。在我们的例子中,一个LED将被打开。
在Arduino IDE中安装ThingSpeak库
打开Arduino IDE并转到Sketch ->包括库->管理库。
现在在库管理器中搜索ThingSpeak并安装MathWorks的ThingSpeak库。
在ThingSpeak上上传智能路灯数据
现在我们将把LDR传感器、IR传感器和led数据上传到ThingSpeak上。如果你还没有账号,就登录注册吧
现在点击新建通道,然后给你的通道命名,然后填写如下所示的字段。字段1用于LDR传感器数据,字段2至字段4用于红外传感器,字段5至字段7用于led。填写详细信息后,向下滚动并单击“保存通道”。
您的通道将被创建,现在您将能够看到字段图表。现在单击API Keys并复制通道id,读取和写入API Keys并将它们粘贴到教程末尾给出的Arduino代码中。现在将Arduino代码上传到NodeMCU。成功上传后,通过将物体放在红外传感器前测试您的项目。您将能够在ThingSpeak图表中看到LDR, ir传感器和led值的每一次变化。
使用ThingSpeak从任何地方控制路灯
现在我们必须通过互联网使用ThingSpeak来控制led。点击“分享”并选择“与所有人分享频道视图”单选按钮。
现在转到API密钥并复制“更新频道提要”中给出的URL。我们必须编辑这个URL来改变LED的状态。
我们的led字段是5,6和7。现在编辑Url。
这里我们将字段5,字段6和字段7设置为1以打开led。复制此URL并将其粘贴到新选项卡中。它会在一些延迟时间内打开led。你可以在场图中观察到变化。
代码的解释
在本教程的末尾给出了完整的代码和演示视频。代码可以通过Arduino IDE在NodeMCU中上传。这里我们将解释代码的几个重要部分。
首先包括所有必需的库。
将代码中给出的SSID和密码替换为Wi-Fi SSID和密码。
如上所示,复制通道号,从ThingSpeak读取和写入API密钥。
定义变量的GPIO引脚的led和红外传感器,ADC通道
设置NodeMCU上led和IR传感器引脚的pinMode。
初始化Wi-Fi和ThingSpeak
现在我们将红外传感器的数字值和LDR传感器的模拟值存储在变量中。
现在检查LDR传感器的低光值。这里我设置值为700意味着如果LDR的模拟值低于700,那么它将是夜间或低光,因此如果红外传感器检测到一些障碍物或运动,它将打开led。如果LDR传感器的模拟值超过700,则认为是白天,即使红外传感器检测到有人经过街道,led也不会发光。
最后,使用函数ThingSpeak. writefield()将数据上传到ThingSpeak云端。它需要通道号,字段号,数据(您想要在各自的字段中上传)和编写API密钥。在这里,我们将LDR传感器数据、IR传感器数据和led数据上传到ThingSpeak云。
下面是使用ThingSpeak改变led状态的代码。我们已经在上面展示了改变led状态的过程。Led_1, led_2, led_3使用ThingSpeak函数存储来自ThingSpeak的led的最后状态。readIntField,它接受通道号,各自的字段号和读API键。如果一些led的状态为“1”,那么我们打开相应的led,如果一些led的状态为“0”,我们关闭相应的led。
这就是智能路灯的工作原理,只有在夜间有人经过街道时,它才会发光。它也可以在世界任何地方使用ThingSpeak物联网云进行手动控制。
本文编译自iotdesignpro