projeto

Caixote de Lixo Automático com Arduino

Caixote de Lixo Automático com Arduino

🗑️ Caixote de Lixo Automático com Arduino

Este projeto apresenta um caixote de lixo automático desenvolvido com Arduino. O sistema utiliza um sensor infravermelho (IR) para detetar a aproximação de um objeto e um servo motor para abrir e fechar automaticamente a tampa.

Um módulo semáforo também foi utilizado para indicar visualmente o estado do sistema através das cores vermelho, amarelo e verde.

Objetivo

Desenvolver um sistema de automação capaz de abrir a tampa de um caixote quando o sensor detetar uma aproximação e fechá-la automaticamente depois de alguns segundos.

⚙️ Funcionamento

Quando o sistema é ligado, a tampa começa fechada e o LED vermelho fica aceso.

Quando o sensor IR deteta um objeto próximo, o Arduino envia um comando para o servo motor abrir a tampa. O LED verde indica que a tampa está aberta.

Depois de alguns segundos, o sistema inicia o fechamento. Durante esse processo, o LED amarelo fica aceso. Quando a tampa volta à posição inicial, o LED vermelho volta a acender.

🔄 Sequência do sistema

🔴
Fechado
→
📡
Deteção
→
🟢
Aberto
→
🟡
A fechar
→
🔴
Fechado

🚦 Estados do módulo semáforo

🔴 Vermelho — Tampa fechada

Indica que a tampa está fechada e o sistema está à espera de uma deteção.

🟢 Verde — Tampa aberta

Indica que o servo motor abriu a tampa após a deteção do sensor.

🟡 Amarelo — Tampa a fechar

Indica que a tampa está a regressar à posição fechada.

🧩 Componentes utilizados

Arduino Uno - JN Portfolio

Arduino Uno

Controla todo o funcionamento do projeto.

Servo Motor 180 graus - JN Portfolio

Servo Motor 180º

Movimenta a tampa para abrir e fechar.

Módulo Semáforo - JN Portfolio

Módulo Semáforo

Indica o estado da tampa através dos LEDs.

Breadboard - JN Portfolio

Breadboard

Facilita a montagem das ligações eletrónicas.

Jumpers - JN Portfolio

Jumpers

Utilizados para realizar as ligações entre os componentes.

Resistência de 1k Ohms - JN Portfolio

Resistência de 1 kΩ

Utilizada no circuito conforme a configuração elétrica adotada.

📡 Sensor IR

O sensor infravermelho é responsável por detetar a aproximação de um objeto. Quando ocorre uma deteção, o Arduino inicia a sequência de abertura da tampa.

Imagem do Sensor IR

Sensor IR - JN Portfolio

🔌 Ligações

ComponentePinoFunção
Sensor IRD2Deteção
Servo MotorD9Movimento da tampa
LED VermelhoD10Tampa fechada
LED AmareloD11Tampa a fechar
LED VerdeD12Tampa aberta

💻 Código Arduino

O código utiliza a biblioteca Servo.h para controlar o servo motor. O Arduino verifica continuamente o sensor IR e executa a sequência de abertura e fechamento.

#include <Servo.h>

Servo servo;

// Pinos
const int sensorIR = 2;
const int servoPin = 9;
const int vermelho = 10;
const int amarelo = 11;
const int verde = 12;

// Posições da tampa
const int fechado = 0;
const int aberto = 90;

// Tempo que a tampa permanece aberta
const unsigned long tempoAberto = 3000;

void setup() {
  pinMode(sensorIR, INPUT);
  pinMode(vermelho, OUTPUT);
  pinMode(amarelo, OUTPUT);
  pinMode(verde, OUTPUT);
  servo.attach(servoPin);
  // Começa com a tampa fechada
  servo.write(fechado);
  estadoFechado();
}

void loop() {
  if (digitalRead(sensorIR) == LOW) {
    // Abrir tampa
    estadoAbrindo();
    servo.write(aberto);
    delay(500);
    // Tampa aberta
    estadoAberto();
    delay(tempoAberto);
    // Começar a fechar
    estadoFechando();
    servo.write(fechado);
    delay(1000);
    // Tampa fechada
    estadoFechado();
  }
}

// Tampa fechada
void estadoFechado() {
  digitalWrite(vermelho, HIGH);
  digitalWrite(amarelo, LOW);
  digitalWrite(verde, LOW);
}

// Tampa aberta
void estadoAberto() {
  digitalWrite(vermelho, LOW);
  digitalWrite(amarelo, LOW);
  digitalWrite(verde, HIGH);
}

// Tampa a fechar
void estadoFechando() {
  digitalWrite(vermelho, LOW);
  digitalWrite(amarelo, HIGH);
  digitalWrite(verde, LOW);
}

// Processo de abertura
void estadoAbrindo() {
  digitalWrite(vermelho, LOW);
  digitalWrite(amarelo, LOW);
  digitalWrite(verde, HIGH);
}

🧠 Explicação do código

A biblioteca Servo.h permite controlar a posição do servo motor. A variável sensorIR define o pino utilizado pelo sensor, enquanto as outras variáveis definem os pinos dos LEDs e do servo.

Na função setup(), os pinos são configurados e o servo é colocado inicialmente na posição fechada.

Na função loop(), o Arduino verifica continuamente o sensor. Quando o sensor retorna LOW, o sistema entende que houve uma deteção e inicia a abertura da tampa.

A variável tempoAberto determina durante quanto tempo a tampa permanece aberta. Neste projeto, o valor utilizado é de 3000 milissegundos, equivalente a 3 segundos.

🎥 Vídeo do projeto

Assista ao vídeo para ver o funcionamento do Caixote de Lixo Automático com Arduino.

🚀 Possíveis melhorias

  • Adicionar um sensor para medir o nível de lixo.
  • Adicionar um display LCD.
  • Adicionar um buzzer para avisos sonoros.
  • Utilizar um ESP32 para comunicação através de Wi-Fi.
  • Adicionar diferentes tempos de abertura.
  • Melhorar a estrutura mecânica da tampa.

✅ Conclusão

O Caixote de Lixo Automático com Arduino é um projeto de automação que demonstra como um sensor, um microcontrolador e um motor podem trabalhar juntos para realizar uma tarefa automaticamente.

O sensor IR realiza a deteção, o Arduino processa a informação, o servo motor movimenta a tampa e o módulo semáforo apresenta visualmente o estado do sistema.

© Direitos autorais das imagens

As imagens dos componentes utilizadas neste projeto pertencem à galeria do JN Portfolio. Os links abaixo permitem visualizar as respetivas imagens.

Arduino Uno — Direitos autorais: JN Portfolio. Ver imagem
Servo Motor 180º — Direitos autorais: JN Portfolio. Ver imagem
Módulo Semáforo — Direitos autorais: JN Portfolio. Ver imagem
Breadboard — Direitos autorais: JN Portfolio. Ver imagem
Jumpers — Direitos autorais: JN Portfolio. Ver imagem
Resistência de 1k Ohms — Direitos autorais: JN Portfolio. Ver imagem
Sensor IR — Direitos autorais: JN Portfolio. Ver imagem