Arduino开发实例DIY双向访客计数器和自动灯光控制
Arduino开发实例-DIY双向访客计数器和自动灯光控制
双向访客计数器和自动灯光控制
1、应用介绍
本应用将使用 Arduino 创建双向访客柜台和自动灯光控制系统。该应用基于一对 IR(红外)传感器,可在出现中断时检测障碍物。实际上,该系统可以检测来自两个方向的访客。从而对进入的访客数量和离开的访客数量进行计数。
该双向访客计数器可以计算进入项目房间、购物中心、办公室、入口工程的人数。我们也可以在停车场门口等公共场所使用。该设备计算通过大门进入的总人数以及从同一大门离开的总人数。同时,它会计算当前房间内的总人数。当房间内无人时,总人数为0(零),则房间内的灯自动关闭。当房间内发现一个人时,灯再次打开。我们根据访客的存在自动化照明控制系统,从而达到节能减排目的。
2、红外传感检测障碍物传感器介绍
本应用的关键组件是红外传感器,它充当人体探测器。 当 IR 传感器检测到障碍物时,它会计算个体并添加到先前的值。

红外传感器模块对环境光的适应性非常好。 该传感器具有红外发射器和接收器。 红外线发射管发射一定的频率,当遇到障碍物时会在信号中反射出来。 然后接收管接收反射信号。 除了红外发射器和接收器外,该电路还具有运算放大器、可变电阻器(微调器)和输出 LED。

(红外)IR 传感器包含以下组件:
1)红外LED发射器
IR LED 发光,红外频率波长在 700nm – 1mm 之间。 它的发光角度几乎为20-60度,射程为5-10厘米。 IR LED 是白色或透明的颜色,因此它可以发出最大量的光。
2)光电二极管接收器
当光被释放时,光电二极管充当红外接收器作为其通信。 它看起来像一个光电二极管 LED,外面有黑色涂层。 黑光吸收最大的光。
3)LM358 运算放大器
LM358 是一个运算放大器 (Op-Amp),用作 IR 传感器中的电压比较器。 比较器电路比较使用 perst 和光电二极管的串联电阻器电压设置的阈值电压。 当光电二极管的串联电阻电压高于压降阈值电压时,运放输出较高。 类似地,当光电二极管的串联电阻电压小于压降阈值电压时,运放输出较低。
当运算放大器输出为高电平时,输出端的 LED 点亮。 它表示检测到的对象或障碍物。
4)可变电阻器
用于校准要检测的物体距离。
2、硬件接线

将 OLED 显示器的 I2C 引脚,即 SDA 和 SCL 分别连接到 Arduino A4 和 A5。 OLED 显示屏需要 3.3V VCC。 此外,将一对红外传感器分别连接到 Arduino 数字引脚 2 和 3。 现在,通过 3…3V 或 5V 为 IR 传感器供电。 要使用 Arduino 控制继电器,请将其输入引脚连接到数字引脚 5。此外,为继电器提供 5V 电源。
本次使用的硬件组件如下:
| 序号 | 组件名称 | 描述 | 数量 |
|---|---|---|---|
| 1 | Arduino Nano | Arduino Nano 开发板 | 1 |
| 2 | 红外传感器 | 红外传感器模块 | 2 |
| 3 | OLED显示器 | 0.96” I2C OLED 显示器 | 1 |
| 4 | 继电器 | 5V 1 通道继电器 | 1 |
| 5 | 连接线 | 杜邦线 | 20 |
| 6 | 面包板 | 微型面包板 | 1 |
关于SSD1306 OLED驱动请参考:
- Ardunio开发实例-OLED显示屏
- Arduino与Proteus仿真实例-OLED显示屏(SSD1306)I2C驱动仿真
- Arduino与Proteus仿真实例-OLED显示屏(SSD1306)I2C驱动仿真
- Arduino网络编程实战-OLED显示中文
- Arduino网络编程实战-OLED显示天气信息
关于红外传感器驱动,请参考:
3、代码实现
本次使用到如下驱动开源库:
- OLED驱动:https://github.com/adafruit/Adafruit\_SSD1306
- OLED图形驱动:https://github.com/adafruit/Adafruit-GFX-Library
应用代码如下:
1 | #include <Wire.h> |
文章来源: https://iotsmart.blog.csdn.net/article/details/128146563