element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • About Us
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Crazy Arduino Automations
  • Challenges & Projects
  • Project14
  • Crazy Arduino Automations
  • More
  • Cancel
Crazy Arduino Automations
Crazy Arduino Automations Blog The WRONGCO Hamper Helper – blog 6 (final) – It is ARDUINO ALIVE ! Watch it work….Design details included
  • Blog
  • Forum
  • Documents
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Crazy Arduino Automations to participate - click to join for free!
  • Share
  • More
  • Cancel
Group Actions
  • Group RSS
  • More
  • Cancel
Engagement
  • Author Author: robogary
  • Date Created: 21 May 2023 3:17 PM Date Created
  • Views 2051 views
  • Likes 11 likes
  • Comments 2 comments
  • Arduino Day Challenge
  • crazyarduinoautomationch
  • robogary
  • arduino automation
Related
Recommended

The WRONGCO Hamper Helper – blog 6 (final) – It is ARDUINO ALIVE ! Watch it work….Design details included

robogary
robogary
21 May 2023

The WRONGCO Hamper Helper – blog 6 (final) – I'm not crazy, It is ARDUINO ALIVE ! 

Short operating description:

The Hamper Helper is a stand alone Dirty Clothes Hamper that emphatically reminds you when the hamper is full and you need to do your laundry. The Hamper Helper will give your dirty laundry a spritz of a freshener, of your choice, to deodorize & help keep down the stink of rotting sweaty clothes.  

If its WRONCO, its gotta be right.

************************************************************************

The Hamper Helper Demonstration VIDEO:

 https://youtu.be/ve-ODoLVqh0

You don't have permission to edit metadata of this video.
Edit media
x
image
Upload Preview
image

The Hamper Helper Demonstration VIDEO, Arial View, electronics shown:

https://youtu.be/21-OHKuOD_4

You don't have permission to edit metadata of this video.
Edit media
x
image
Upload Preview
image

***************************************************************************

Detailed Operating Description:

The Hamper operates from a 12V battery, consuming only 6mA while waiting for people to approach the hamper.

A motion detector senses when someone is the room by the hamper, and powers up the hamper helper Arduino Nano controls. After a minute or so without sensing more motion, the timing is adjustable, the hamper will power the controls down.

The first action is to give the laundry in the hamper helper a short spritz of deodorizer from the atomizer. The atomizer bottle is supported in a cup to capture any spills or drips, and allow manual aiming if desired.   

The next action is to check the hamper helper clothes level by firing light beams lengthwise and then widthwise across the hamper top edge. If the light beams are seen by the photo transistors, the controls loop back around and recheck every few seconds. It continues checking until the hamper helper times out on the motion detector.  The light beams only flash for 150ms reducing battery consumption and maximizing the lifetime on the light source.

The exciting part is what happens if both light beams are blocked by clothes. The Hamper Helper turns on a flashing red LED beacon and also sounds a small piezo buzzer until the clothes are removed from the hamper helper. The buzzer is supposedly 80 dB and changes tones to catch your attention when first triggered.

The visual and audible alarms only are reset if the Hamper Helper powers down, OR if clothes are removed from the Hamper Helper.

 

Some of the research in developing this fabulous must have product:

The WRONGCO Hamper Helper – blog 5 – get a spritz of the aromatic Atomizer, hack a bit, build a bit, and test

The WRONGCO Hamper Helper – blog 4 – photo detection system test with Arduino at the helm

The WRONGCO Hamper Helper – blog 3 – photo "electric eye" detection calibration, and down a COB LED rabbit hole

The WRONGCO Hamper Helper–blog 2-Intro to Optical sensors from a Dummy

The WRONGCO Hamper Helper - experiment 1 dirty clothes pile height detection - not so good

 

Future improvements to this alpha version Hamper Helper:

  • Change COB LEDs to RED or Infared.
  • Greatly reduce size of COB LED beam transmitters and phototransistor receiver assemblies.
  • Compact the control box layout, move mounting to Hamper front face.
  • Allow for repositioning of motion detector and deodorizer spritzer.  
  • IOT networked Hamper Helpers. To show you, on the phone app , which rooms have full hampers.
  • Customers may insist on a silence pushbutton, or disable the audible alarm.
  • Fluid level detection in the Spritzer bottle to remind the customer to give it a refill.

 

The photos , schematics/ML and Arduino code:

image

image

image

image

image

image

// ---------------------------------------------------------------------------
//
// Hamper Helper R0 starts from test program for the Hamper Helper_TestElectricEye.ino 
// which detects and alerts if clothes are piled above the top of the hamper.
// This program fires the COB light source & reads the voltage drop across the 
// phototransistor mounted directly across from it. 
// Low light conditions, the phototransistor is high impedance, reading a voltage drop of approximately 5V.
// If the phototransistor sees the COB LED light, the phototransistor conducts more, with a lower voltage drop. 
// The measured voltage drop of the phototransistor hit with the COB LED beam is about 4V. 
// The code will set a "beam seen" flag if the beam is detected. If the beam isnt seen when the COB LED is lit, 
// it assumed clothes are blocking the light beam.   
// This simple code tests the beam COB LED transmitter and phototransistor detector.
// code
// R0 - Make the Electric Eye height check as a function (i.e. void) 
// R1 - remove photo eye height check as a function, make part of main loop, add buzzer code
//      add atomizer outputs to setup 
// ---------------------------------------------------------------------------


int LongitudePhotoEyeValue;
int LatitudePhotoEyeValue;
int LongitudeSeeBeam;
int LatitudeSeeBeam;
float LatitudePhotoEyeVolts;
float LongitudePhotoEyeVolts;


void setup() {

pinMode(A2, INPUT); // Latitude phototransistor voltage drop 5V = no light (1023), 4V sees beam (900)
pinMode(A3, INPUT); // Longitude phototransistor voltage drop 5V = no light, (1023), 4V sees beam (900)

pinMode(2, OUTPUT); // Driver for Latitude PhotoElectric Eye COBLED
pinMode(3, OUTPUT); //Driver for Longitude PhotoElectric Eye COBLED
pinMode(5, OUTPUT); // turn on Hamper Full BUZZER
pinMode(6, OUTPUT); // turn on Hamper Full Flashing LED assembly
pinMode(7, OUTPUT); // Power atomizer
pinMode(8, OUTPUT); // start atomizer

delay(1000);//a little power up time for Buck PSs to settle
//Serial.begin(9600);

// freshen the laundry with a little spritz of ginger water 
    
   digitalWrite(7, HIGH); // close relay to power the atomizer
   delay(2000);  // atomizser boot up time
   digitalWrite(8, HIGH); // close relay to start atomizer, simulate a slow pushbutton
   delay(900); //
   digitalWrite(8, LOW); // close relay to start atomizer, simulate a slow pushbutton
   delay(5000);  // atomizser boot up time
   digitalWrite(7, LOW); // open relay to power down the atomizer, dont soak the laundry
}
 
void loop() 
{
  delay(10000);  // how often to cycle test for laundry height

// check hamper clothese height with eye Beam 

// check Latitude direction for eye Beam 
    digitalWrite(2, HIGH); // Latitude turn on COB LED
    delay(50); 
    LatitudePhotoEyeValue=analogRead(A2); 
    LatitudePhotoEyeVolts=(LatitudePhotoEyeValue)*5.0/1023.0;
    delay(10);
    if (LatitudePhotoEyeValue<920)   ///phototransistor impedance goes down with light
      { LatitudeSeeBeam = HIGH;}
      else   { LatitudeSeeBeam = LOW;}
    digitalWrite(2, LOW); // Latitude turn off COB LED  
    //Serial.print( "LatiitudePhotoEyeValueLIT=");
    //Serial.println( LatitudePhotoEyeValue);
    //Serial.print( "LatiitudePhotoEyeVoltsWhenLIT=");
    //Serial.println( LatitudePhotoEyeVolts, DEC);
    //Serial.println(" ");
    delay(200); // give time for DVM to display reading, avoid crosstalk
    //digitalWrite(2, LOW); // Latitude turn off COB LED 
    
    
    
    // check Longitude direction for eye Beam 
    //digitalWrite(2, HIGH); // Latitude turn on COB LED
    //delay(500); 
    //LatitudePhotoEyeValue=analogRead(A2); 
    //delay(50);
    //if (LatitudePhotoEyeValue<920)
    //  { LatitudeSeeBeam = HIGH;}
    //  else   { LatitudeSeeBeam = LOW;}
    //digitalWrite(2, LOW); // Latitude turn off COB LED  
    //erial.print( "LatiitudePhotoEyeValue_AMB=");
    //Serial.println( LatitudePhotoEyeValue);
    //Serial.println(" ");
      
    // check Longitude direction for eye Beam 
    digitalWrite(3, HIGH); // Longitude turn on COB LED
    delay(50); 
    LongitudePhotoEyeValue=analogRead(A3); 
    LongitudePhotoEyeVolts=(LongitudePhotoEyeValue)*5.0/1023.0;
    delay(50);
    if (LongitudePhotoEyeValue<920)
      { LongitudeSeeBeam = HIGH;}
      else   { LongitudeSeeBeam = LOW;}
     digitalWrite(3, LOW); // Latitude turn off COB LED  
    //Serial.print( "LongitudePhotoEyeValue=");
    //Serial.println( LongitudePhotoEyeValue);  
    //Serial.print( "LongitudePhotoEyeVolts=");
    //Serial.println( LongitudePhotoEyeVolts, DEC);  
    //Serial.println(" ");  
    //delay(1000); // give time for DVM to display reading
    //digitalWrite(3, LOW); // Longitude turn off COB LED
    
    
    
    //test ambient valuefor diagnostics
    //LongitudePhotoEyeValue=analogRead(A3); 
    //delay(50);
    //Serial.print( "LongitudePhotoEyeValue_AMBIENT=");
    //Serial.println( LongitudePhotoEyeValue);  
    //Serial.println(" ");
     

if ((LatitudeSeeBeam==LOW) && (LongitudeSeeBeam==LOW))
    { 
    tone(5,3700); ///use TONE rather than PWM
    digitalWrite(6, HIGH);  // lite flasher
    delay(500);
    noTone(5);
    tone(5,4000); ///use TONE rather than PWM
    delay(500);
    noTone(5);
    tone(5,4500); ///use TONE rather than PWM
    delay(500);
    noTone(5);
    tone(5,4050); ///use TONE rather than PWM
   
    }
    else 
    {
    noTone(5);
    digitalWrite(6, LOW);   //flasher off
    }
}

  • Sign in to reply
  • kmikemoo
    kmikemoo over 2 years ago

    I watched the video.  You certainly can't ignore that "Time To Do Laundry" alarm. LaughingLaughing

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • robogary
    robogary over 2 years ago

    So sweet to get rid of stink

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube