Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Máquina de Vending Inverso (RVM): Kit DIY de Sistema Inteligente de Reciclaje

Componentes y materiales

Herramientas necesarias

Aplicaciones y servicios en línea

Sobre el proyecto

Motivación

¿Dónde terminan las botellas de plástico? En vertederos, océanos, ríos y aceras. Se estima que hay 46.000 piezas de plástico por milla cuadrada en el océano. Cada botella tarda hasta 1000 años en descomponerse, liberando sustancias tóxicas. Solo el 12% de los 35.000 millones de botellas anuales se recicla.

Idea

Una máquina inteligente que acepta botellas de plástico y latas metálicas, y recompensa al usuario con puntos canjeables. Usa sensores de proximidad para distinguir el material y un sistema de códigos en pantalla LCD para la recompensa, evitando cupones de papel.

Funcionamiento

  1. El usuario introduce el envase por la ranura.
  2. Sensores inductivos y capacitivos identifican el material:
    • Inductivo = 1 → objeto metálico
    • Inductivo = 0 y capacitivo = 1 → objeto plástico
  3. Se muestra un código encriptado en la LCD.
  4. El usuario escanea el código QR de la máquina, accede a la web y canjea los puntos.
  5. Un sensor ultrasónico monitoriza el nivel de llenado; cuando está lleno, notifica al recolector vía Blynk y envía la ubicación GPS por ThingSpeak.

Código

1. Segregación de residuos (Arduino Mega)

#include 
#include 

LiquidCrystal lcd(1,2,4,5,6,7);
const int btn = 3;
int sensorPlastico = A0, sensorMetal = A1, sensorMetal2 = A2;
Servo servoPlastico, servoMetal;
int posP = 90, posM = 360;

void setup() {
  pinMode(btn, INPUT_PULLUP);
  lcd.begin(16,2);
  servoPlastico.attach(9);
  servoMetal.attach(8);
  pinMode(sensorPlastico, INPUT_PULLUP);
  pinMode(sensorMetal, INPUT_PULLUP);
  pinMode(sensorMetal2, INPUT_PULLUP);
  Serial.begin(9600);
}

void loop() {
  lcd.setCursor(0,0); lcd.print("INSERTAR METAL"); lcd.setCursor(0,1); lcd.print(" LADO DERECHO "); delay(6000); lcd.clear();
  
  int sPlastico = digitalRead(sensorPlastico);
  int sMetal1 = digitalRead(sensorMetal);
  int sMetal2 = digitalRead(sensorMetal2);
  
  // Lógica para plástico
  if (sPlastico == 1 && sMetal1 != 1) {
    for (posP = 90; posP <= 240; posP++) { servoPlastico.write(posP); delay(5); }
    delay(500);
    for (posP = 240; posP >= 90; posP--) { servoPlastico.write(posP); delay(5); }
  }
  
  // Lógica para metal
  if (sMetal2 == 1 && sPlastico == 0) {
    for (posM = 360; posM >= 50; posM--) { servoMetal.write(posM); delay(5); }
    delay(500);
    for (posM = 50; posM <= 360; posM++) { servoMetal.write(posM); delay(5); }
  }
}

2. Monitor de nivel de llenado (NodeMCU ESP8266)

#include 
#include 
#include 
#include 
#include 

#define TRIGGER 5
#define ECHO 4
char auth[] = "TU_AUTH_TOKEN";
char ssid[] = "TU_WIFI";
char pass[] = "TU_PASS";
unsigned long channelID = 1067056;
const char* writeAPIKey = "TU_API_KEY";

TinyGPSPlus gps;
SoftwareSerial ss(4, 5); // RX, TX
BlynkTimer timer;
WidgetMap myMap(V0);

void setup() {
  Serial.begin(115200);
  ss.begin(9600);
  Blynk.begin(auth, ssid, pass);
  pinMode(TRIGGER, OUTPUT);
  pinMode(ECHO, INPUT);
  WiFi.mode(WIFI_STA);
  ThingSpeak.begin(client);
}

void loop() {
  Blynk.run();
  timer.run();
  
  // Lectura GPS
  while (ss.available() > 0) {
    if (gps.encode(ss.read()) && gps.location.isValid()) {
      float lat = gps.location.lat();
      float lon = gps.location.lng();
      ThingSpeak.setField(3, lat);
      ThingSpeak.setField(4, lon);
      ThingSpeak.writeFields(channelID, writeAPIKey);
      Blynk.virtualWrite(V1, String(lat,6));
      Blynk.virtualWrite(V2, String(lon,6));
      myMap.location(1, lat, lon, "RVM_Location");
    }
  }
  
  // Ultrasonido
  digitalWrite(TRIGGER, LOW); delayMicroseconds(2);
  digitalWrite(TRIGGER, HIGH); delayMicroseconds(10);
  digitalWrite(TRIGGER, LOW);
  long dur = pulseIn(ECHO, HIGH);
  int dist = (dur/2) / 29.1;
  
  if (dist <= 5) Blynk.notify("¡Vaciar la máquina!");
  Blynk.virtualWrite(V6, dist);
  ThingSpeak.writeField(channelID, 1, dist, writeAPIKey);
  delay(100);
}

Esquemático

Diagrama de conexiones completo disponible en el repositorio del proyecto.

Proceso de manufactura

  1. La evolución y fabricación de máquinas de coser: de la innovación del siglo XIX a la automatización moderna
  2. Construya una Puerta con Auto‑Bloqueo Inteligente Usando la Proximidad Bluetooth de su Smartphone
  3. Monitor de temperatura casero con Raspberry Pi, MCP9808, InfluxDB y Grafana
  4. Máquinas expendedoras de patatas fritas: Funcionamiento y ventajas
  5. Máquinas expendedoras de leche fresca: Cómodas, asequibles y ecológicas
  6. Cómo las Máquinas Expendedoras de Patatas Fritas Entregan Patatas Calientes y Frescas a Demanda
  7. Descubre las Máquinas Expendedoras de Fideos: Funcionamiento y Qué Puedes Obtener
  8. Explora la Innovadora Máquina Expendedora de Té, Café y Sopa
  9. Máquinas Expendedoras de Comidas Preparadas: Comida Fresca y Saludable al Instante
  10. Todo lo que necesitas saber sobre las máquinas expendedoras de refrescos
  11. Desbloqueando Beneficios: El Potencial de Negocio de las Máquinas Expendedoras de Helados