0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用Arduino制作智能垃圾箱

科技观察员 来源:gadgetronicx 作者:gadgetronicx 2024-02-11 12:22 次阅读

在这个项目中,我将向您展示如何使用Arduino制作智能垃圾箱,当您带着垃圾接近时,垃圾箱的盖子会自动打开。

优势

这款 Arduino Nano 智能垃圾桶的主要优点是它有助于保持清洁和环保的环境。这项努力的灵感来自“Swaach BharatMission”。在这个项目中,自动垃圾桶建立在一个基于微控制器的平台上,即ArduinoNano板,该板与两个伺服电机,一个超声波传感器和一个红外传感器连接。超声波传感器放置在垃圾箱的顶部,用于检测物体或人。阈值高度设置在特定级别。这款Arduino Nano 智能垃圾箱使用超声波传感器感知人或物体,该传感器使用 Arduino Nano将消息发送到伺服电机。当人靠近这个自动智能垃圾箱时,垃圾箱盖将自动打开您的垃圾箱,一段时间后它会自动关闭。

构建Arduino智能垃圾箱所需的组件

Arduino 纳米

两个伺服电机 (MG996R)

HC-SR04 超声波传感器

红外传感器(通用)

两个 LED(用于视觉反馈)

7.4V锂离子电池

LM2596 直流/直流降压转换器

直流插座和开关

跳线

面包板或PCB(印刷电路板)

使用Arduino Nano的智能垃圾箱电路图

下图显示了带有Arduino的智能垃圾箱的电路图。这是一个非常简单的设计,因为该项目仅涉及三个主要组件(超声波传感器、红外传感器和伺服电机),而不是Arduino Nano。

使用Arduino的智能垃圾箱电路图图像

重要: 将降压转换器的输出电压调整为 8V 至 8.2V 的范围,因为 7.4V 锂离子电池的充电电压为 8.2V。通过 12V充电插座为电池充电时,此调整是必要的,因为降压转换器将有效地将电压从 12V 降低到 8V。

将 Arduino Nano 连接到面包板或 PCB。确保连接电源和接地引脚。通过开关将 7.4V 锂离子电池连接到 Arduino Nano 的Vin 引脚。此开关允许您从外部电源打开和关闭Arduino。开关、充电插座和Arduino nano编程端口如下图所示。

将正极(红色)线连接到 DC-DC 降压转换器的 7.5V 输出,并在必要时确保将其调整为 8.1V。然后,将接地(黑色)线连接到 ArduinoNano 上的接地 (GND)。数字信号(蓝色)线应连接到 Arduino Nano 上的数字引脚 2。

将正极线连接到 DC-DC 降压转换器的 7.4V 输出。如果需要,确保将其调整为 8.1V。接下来,将地线连接到 Arduino Nano 上的接地
(GND)。最后,将传感器的数据或“信号”线连接到 Arduino Nano 上的数字引脚 4。我们用来打开和关闭盖子的两个伺服电机如下所示。

首先,从伺服电机 (1&2) 中取出信号线并将它们连接到 Arduino 上的一个 PWM 引脚,例如引脚 9 和5。接下来,将伺服电机的电源线连接到DC-DC转换器的7.4V输出。最后,将伺服电机的地线连接到Arduino上的GND引脚之一。

在电源设置中,使用二极管将电池正极端子连接到 LM2596 降压转换器的输出,然后通过开关将其连接到 Arduino 的 Vin引脚。将电池负极端子连接到 Arduino、LM2596 降压转换器和其他部件上的接地 (GND)。最后,将 LM2596 的输入连接到直流插座。

根据需要使用螺钉、螺母和热胶将所有组件固定到车身框架上。确保所有连接牢固且没有松动的电线或潜在的短路。在打开电路电源之前,请务必仔细检查您的连接。

Arduino智能垃圾箱设计

我专门为这个 Arduino Nano 智能垃圾箱项目创建了自定义的开合盖子设计和超声波传感器支架,您可以在下图中看到我使用 Onshape 制作的CAD 设计的屏幕截图,以及我构建的实际垃圾箱。

如果您有兴趣重新创建这个项目或将我的设计融入您自己的作品中,我已经包含了 CAD .dxf 文件,您可以从 thingiverse 下载

使用Arduino代码的智能垃圾箱

在这个基于Arduino的智能垃圾箱的代码中,两个传感器用于物体检测。第一个传感器是超声波传感器,第二个传感器是红外传感器。当我们的手或脚进入超声波或红外传感器的范围内时,它会向Arduino发送信号。然后,Arduino将向相反方向旋转两个舵机,使垃圾箱盖打开。此外,LED指示灯将亮起。我已将超声波传感器的范围设置为40cm,但您可以根据需要进行修改。一旦我们的手离开传感器,经过 2 秒的延迟,舵机将向后旋转,盖子将关闭。

#include 《Servo.h》

该系列包括控制伺服电机所需的伺服库。

const int trigPin = 2; // Trig pin of the ultrasonic sensor

const int echoPin = 3; // Echo pin of the ultrasonic sensor

const int irSensorPin = 4; // IR sensor pin

const int ledPin = 7; // LED pin

const int lightPin = 6; // Light pin

这些行声明用于各种组件的引脚编号的常数,例如超声波传感器(trigPin 和 echoPin)、红外传感器、LED 和其他光源。

Servo servo1;

Servo servo2;

bool lidOpen = false; // Variable to track the lid status

unsigned long lastObjectTime = 0; // Timestamp to track when object was
last detected

这些行创建 Servo 类的实例,该类将用于控制两个伺服电机(servo1 和 servo2)。

这里声明了两个变量:lidOpen 是一个布尔变量,用于跟踪盖子是打开还是关闭,lastObjectTime
是一个无符号长变量,用于记录上次检测到对象的时间戳。

void setup() {

servo1.attach(9);

servo2.attach(5);

pinMode(trigPin, OUTPUT);

pinMode(echoPin, INPUT);

pinMode(irSensorPin, INPUT);

pinMode(ledPin, OUTPUT);

// Initialize the servo positions to keep the lid closed

servo1.write(90); //right

servo2.write(90); //left

// Delay for 1 second

delay(1000);

// Initialize the serial communication for debugging

Serial.begin(9600);

}

在 setup() 函数中,伺服电机连接到引脚 9 和 5。超声波传感器引脚、红外传感器引脚、LED 引脚和灯引脚配置为 OUTPUT 或INPUT。伺服电机的初始位置是保持盖子关闭(90 度)。有 1000 毫秒(1 秒)的延迟。串行通信初始化为调试,波特率为 9600。

void loop() {

// Check if an object is within a certain range using the ultrasonic
sensor

long duration;

int distance;

digitalWrite(trigPin, LOW);

delayMicroseconds(2);

digitalWrite(trigPin, HIGH);

delayMicroseconds(10);

digitalWrite(trigPin, LOW);

duration = pulseIn(echoPin, HIGH);

distance = (duration / 2) / 29.1; // Calculate distance in centimeters

Serial.println(distance);

在 loop()
函数中,代码使用超声波传感器连续测量距离。它触发传感器,记录信号返回所需的时间,并以厘米为单位计算距离,并在串行监视器上显示结果

// Check if the IR sensor is activated

int irSensorValue = digitalRead(irSensorPin);

Serial.println(irSensorValue);

该代码检查红外传感器的状态(高电平或低电平),并将该值打印到串行监视器。

// If distance is less than 40 cm or the IR sensor is activated

if (distance 《 40 || irSensorValue == LOW ) { // Change the threshold value
as needed

// If the lid is not open, open it and set the status

if (!lidOpen) {

lidOpen = true;

digitalWrite(ledPin, HIGH);

digitalWrite(lightPin, HIGH);

Serial.println(“Led On”);

该模块以 if 语句开头,该语句检查两个条件:第一个距离小于 40 cm,由超声波传感器检测到,第二个 irSensorValue 处于 LOW状态,表示 IR 传感器已激活(即检测到物体)。如果满足任一条件,代码将检查 lidOpen 变量是否为 false。如果盖子未打开(!lidOpen 为
true),则继续打开盖子 lidOpen 设置为 true,表示盖子已打开。通过将 LED (ledPin) 和灯 (lightPin)设置为高电平状态来打开它们,从而提供视觉反馈。一条消息“Led On”打印到串行监视器进行调试。

for (int angle = 90; angle 《= 180; angle++) {

servo1.write(angle);

servo2.write(180 - angle);

delay(10);

}

}

在开盖部分内,使用for循环逐渐打开盖子。此循环从 90 度的初始角度迭代到最终 180度的角度。它以协调的方式改变舵机1和舵机2的角度,以产生平稳的开盖运动。每一步增加 10 毫秒的小延迟,以控制伺服电机的速度。

lastObjectTime = millis(); // Record the time when an object was
detected

打开盖子后,代码使用 millis() 记录当前时间。此时间戳存储在 lastObjectTime 变量中,用于跟踪上次检测到对象的时间。

else {

// If the lid was open and it‘s been more than 2 seconds since an object
was detected, close it

if (lidOpen && millis() - lastObjectTime 》= 2000)

如果块 1 中的条件均不满足(即未检测到物体或物体超出范围),则代码将继续检查盖子是否打开。它验证 lidOpen 是否为true,指示盖子当前处于打开状态。它进一步检查自上次检测到对象以来是否超过 2 秒,使用 millis() 函数计算时间差。

{

for (int angle = 180; angle 》= 90; angle--) {

servo1.write(angle);

servo2.write(180 - angle);

delay(20);

}

lidOpen = false;

// Turn off the LED

digitalWrite(ledPin, LOW);

digitalWrite(lightPin,LOW);

Serial.println(“Led Off”);

}

}}

如果盖子打开并且距离上次检测到物体已经超过 2 秒,则盖子会逐渐关闭。LED 和灯已关闭,lidOpen 变量设置为 false。

总之,该代码通过在检测到物体(通过超声波传感器或红外传感器)时打开盖子并在指定的不活动时间(2秒)后关闭盖子来控制“智能垃圾箱”。伺服电机的使用确保了盖子的平稳运动,并通过 LED 和灯提供视觉反馈。

智能垃圾箱的工作原理

视频中,您可以观察到超声波传感器在垃圾箱盖的自动操作中起着至关重要的作用。当任何物体或您的手接近位于垃圾箱上方的超声波传感器时,传感器就会被激活,导致盖子打开。只要盖子继续检测到您的手的存在,它就会保持在打开位置。

然而,盖子的设计是为了响应传感器磁场的变化。一旦您将手抽出传感器的范围,盖子就会自动关闭之前会短暂延迟 2秒。此功能可确保在使用完垃圾箱后顺利方便地关闭盖子。

此外,红外 (IR)传感器已集成到系统中,位于垃圾箱的下部。这项创新意味着您甚至不需要用手实际接近红外传感器。如果您只是将脚或身体的任何部位从远处靠近红外传感器,它就会检测到运动并激活,从而导致盖子打开。同样,当您离开红外传感器的范围时,盖子将再次关闭,保持免提和卫生的体验。

结论

智能垃圾箱的核心概念是以物体识别为中心,通过使用HC-SR04超声波传感器和红外传感器来实现这一点。该项目的灵感来自强调清洁和卫生的“Swaach
Bharat Mission”。它的主要目标是建造一个垃圾箱,当有人或物体接近时,它可以自主打开盖子,使垃圾处理成为一种更方便、更卫生的体验。

该项目的设计和建造涉及创建定制的盖子机构和传感器支架,展示了使用 3D
设计工具的灵活性。红外传感器的加入增加了免提体验,允许用户在没有物理接触的情况下打开盖子。
审核编辑:陈陈

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Arduino
    +关注

    关注

    184

    文章

    6428

    浏览量

    184846
  • 智能垃圾桶
    +关注

    关注

    2

    文章

    51

    浏览量

    10548
收藏 人收藏

    评论

    相关推荐

    基于机智云物联网平台的智能垃圾回收与控制系统研究

    ,改善垃圾箱环境。 1、分析智能垃圾分类技术与物联网技术发展,确定研究目标。 2、提出智能垃圾回收
    发表于 04-09 17:25

    【MiCOKit申请】智能垃圾

    申请理由:想尝试下用micokit实现无线控制可智能移动,用WiFi自组网络,作为通信平台,手机客户端作为移动终端,进行无线操作项目描述:初步方案:实现(1)自动控制“移动垃圾箱”的移动(2)自动
    发表于 08-17 09:02

    垃圾箱智能化道路,任重而道远

    ,因此,需求的传统的传感器逐步实现微型化、低成本、智能化、网络化、经历一个传统传感器-智能化传感器、嵌入式web传感器的内涵不管丰富的发展过程。城市中,垃圾箱处处可见,然而对垃圾箱的管
    发表于 11-01 11:40

    【MIKROE-4114开发板试用体验连载】智能垃圾箱电动开合盖---1开箱与开发准备工作

    `1、开箱开箱第一感觉板子小巧精致,电路简洁,丝印完整。HSOP8的封装峰值电流能达到3.5A确实比较有优势。2、开发前的准备芯片资料,芯片框图如下图所示附件是TB67H451FNG的数据手册3、目标打算将开发板应用于公司现有的智能垃圾箱电动开合盖机构,替换原有的控制器并
    发表于 12-19 09:57

    【MIKROE-4114开发板试用体验连载】智能垃圾箱电动开合盖---3现场实际安装测试(完结)

    `接上节。开关门机构使用推杆电机实现了智能垃圾箱电动开关门,电流检测防夹手。经测试,功能满足使用需求。`
    发表于 12-31 10:48

    利用单片机设计并制作一套智能垃圾箱

    一.硬件方案本设计主要是利用单片机设计并制作一套智能垃圾箱。要求以单片机为控制核心,通过红外传感器检测是否有人扔垃圾,并自动打开垃圾箱盖,扔
    发表于 11-19 08:41

    利用超声波模块和舵机实现垃圾箱盖子的自动开合

    模块和舵机实现垃圾箱盖子的自动开合。一、项目软硬件平台及开发环境1.1、硬件平台特性1.基于ESP-8266EX2.Arduino兼容,使用rduino IDE来编程3.11 x I/O 引脚4.1 x ADC 引脚(输入范围0-3.3V)5.板载5V 1A开关电源(高输
    发表于 01-06 08:20

    设计一个物联网智能垃圾处理系统

    需要不同的回收过程。此外,每次靠近垃圾箱时,教育用户并指导他们有关扔垃圾的说明也很重要。为此,我们设计了一个垃圾处理系统,该系统使用多个垃圾箱和一个基于语音的系统,每次用户站在
    发表于 07-21 06:31

    这款智能垃圾分类箱跟普通的垃圾箱有何区别?

    新投入使用的这款智能垃圾分类箱跟普通的垃圾箱有何区别?众所周知,垃圾可分为可回收物、易腐垃圾、其他垃圾
    的头像 发表于 04-26 09:58 4882次阅读

    浅谈智能垃圾箱中的技术与解决方案

    智能垃圾箱在机场、商场、学校、露营地、海滩和公园非常有效。这些创新的垃圾箱在大城市也特别有用。
    发表于 02-12 10:08 3407次阅读

    Arduino和超声波传感器DIY一个智能垃圾

    智能垃圾桶采用基于MCU的Arduino Uno开发板,通过伺服马达和超声波传感器实现对传统垃圾箱智能化升级改造。
    发表于 01-12 10:30 4698次阅读
    用<b class='flag-5'>Arduino</b>和超声波传感器DIY一个<b class='flag-5'>智能</b><b class='flag-5'>垃圾</b>桶

    基于树莓派设计的智能垃圾箱装置

    该项目为智能垃圾箱装置,集成了多个传感器来监控垃圾的状态。   良好的垃圾管理已成为全世界的一个重要问题。在公共和自然空间中,许多人经常不注意而留下
    的头像 发表于 03-31 17:36 4565次阅读
    基于树莓派设计的<b class='flag-5'>智能</b><b class='flag-5'>垃圾箱</b>装置

    带GPS定位的智能垃圾箱开源分享

    电子发烧友网站提供《带GPS定位的智能垃圾箱开源分享.zip》资料免费下载
    发表于 11-02 14:53 1次下载
    带GPS定位的<b class='flag-5'>智能</b><b class='flag-5'>垃圾箱</b>开源分享

    使用Arduino、超声波传感器、伺服电机的智能垃圾箱

    电子发烧友网站提供《使用Arduino、超声波传感器、伺服电机的智能垃圾箱.zip》资料免费下载
    发表于 11-16 11:04 0次下载
    使用<b class='flag-5'>Arduino</b>、超声波传感器、伺服电机的<b class='flag-5'>智能</b><b class='flag-5'>垃圾箱</b>

    基于Arduino和传感器制作智能垃圾

    电子发烧友网站提供《基于Arduino和传感器制作智能垃圾桶.zip》资料免费下载
    发表于 11-18 09:24 5次下载
    基于<b class='flag-5'>Arduino</b>和传感器<b class='flag-5'>制作</b><b class='flag-5'>智能</b><b class='flag-5'>垃圾</b>桶