Project tutorial
Smart storage drawer

Smart storage drawer

Make your storage drawer work with voice recognition.

  • 2,799 views
  • 1 comment
  • 7 respects

Components and supplies

Lite on ltl 1che
3 mm LED: Red
You will need as many as your drawers. I made 9 drawers so I used 9 LEDs
×9
11026 02
Jumper wires (generic)
×1
A000066 iso both
Arduino UNO & Genuino UNO
×1
Screen shot 2019 03 20 at 2 38 27 pm fqndazqcx1
1Sheeld
×1
resistor 150 0hm
×9
Ribbon cable
×1
Adafruit industries ada64 image 75px
Solderless Breadboard Half Size
×1

Necessary tools and machines

Lasercutter
Laser cutter (generic)
09507 01
Soldering iron (generic)

About this project

I always had the problem of forgetting in which drawer I’ve put my components and sometimes the ink on the labels get erased by time so I thought of making something smart and I ended with a storage drawer that works with voice recognition to tell you in which drawer you will find the component that you need.

You can make your own storage drawer from scratch like what I did or you can buy a ready one and just add the electronics to it.

For voice recognition I used 1Sheeld board. It's a board that turns your smartphone to +40 different Arduino shields. One of the special shields of 1Sheeld is voice recognition shield and you can use it with only 1 line of code. To know more details about 1Sheeld check these links: Replace your Arduino shields with your smartphone and Turn your smartphone into a generic Arduino shield using 1Sheeld.

Step 1: Prepare tools and components that you will need

  • 5mm MDF sheets
  • Super glue
  • White glue
  • Cutter
  • 3mm leds
  • Ribbon wires
  • Resistors 150 ohm
  • Wire stripper
  • Sand paper
  • Arduino Uno
  • 1Sheeld board
  • Male-Male wires
  • Electrical tape
  • Soldering iron
  • Soldering wire
  • Varnish
  • Gloves
  • Brush
  • Small breadboard

Step 2: Cutting the parts on a Laser cutter machine

I chose a good design from thingiverse it is a storage unit which has 3 sizes of the drawers (small, medium and large) and you can cut the sizes that you desire. You can find it here: http://www.thingiverse.com/thing:1239522.

In Egypt I didn’t find 5mm MDF sheets and I found 4.75 mm so I made some modifications on the design (You can find the files uploaded).

Some parts may get damaged and not cut well on the laser cutting machine (Image 1). Don't throw it out! With a cutter and sand paper you can fix it and make it work (Image 2).

Step 3: Assembling and finishing

  • After cutting the parts on a laser cutting machine begin to assemble them and fix the parts with super glue.
  • I used white glue for the parts that I need it to be more rigid and stable.
  • After assembling the whole storage unit, begin to cover it with varnish it will protect the MDF from humidity, water and make the surface smooth.
  • May be you will need to cover it with two layers of varnish so start with one and when it gets dry start with the other one.
  • Always cover the area that you are working on and wear gloves because it will get a little bit messy!

Step 4: Fixing the LEDs

The LEDs will indicate which drawer contains the component that you want :

  • Bend the LED legs like in Image 1.
  • Take two wires from the ribbon cable and strip their ends using the wire stripper.
  • Solder the two wires with the two legs of the led
  • Each led has two legs (taller is the positive and shorter is the negative) so you have to remember which wire is connected to the positive leg and which wire is connected to negative leg. I used a set of ( red for +Ve and brown for -Ve) , (yellow for +Ve and orange for -Ve) or ( white for +Ve and black for -Ve).
  • Fix the LEDs on the shelves between the drawers (like in Image 2) with super glue.

Step 5: Connecting the circuit

Bring a male-male wire and cut it into two halves (like in image 1). You can use headers but I only had male-male jumpers so I used them. Strip the ribbon wires from the other side and solider it to the male wire (like Image 2). Cover the soldiered part with electrical tape (Image 3).

You need to use a resistance between the led and the Arduino pins to protect the led from being burnt. This resistance can be calculated as the following: The Arduino pin output voltage is 5V, the led maximum voltage is 2.2V and the maximum current is 20 mA so the resistance that should be used is (5-2.2)/(20x10^-3)=140 ohm.

You can use the nearest standard resistance. I used 150 ohm. Put the 1Sheeld board above the Arduino board. Fix the bread board on the body back and connect the circuit (like in image 4). Connect the 1Sheeld ground with your circuit ground.

Step 6: Uploading the code

Step 7: Your storage drawer is ready!

  • Download the 1Sheeld app.
  • Open the app and press scan
  • Choose your board
  • Enter the password 0000 or 1234
  • Choose the shields (voice recognition and terminal shield)

Enjoy your smart drawer now!

Code

Smart storage drawerArduino
#define CUSTOM_SETTINGS
#define INCLUDE_VOICE_RECOGNIZER_SHIELD
#define INCLUDE_TERMINAL_SHIELD

#include <OneSheeld.h>

int i = 0;

/*defining the words that will be used*/
/*I named each drawer with the components on it */
const char w[] = "wires";
const char c[] = "capacitors";
const char s[] = "switches";
const char r[] = "resistor";
const char l[] = "led";
const char n[] = "connectors";
const char h[] = "heat sink";
const char f[] = "fuses";
const char a[] = "arduino";


/* defining the pins with the first three letters of each word*/
int wir = 5;
int cap = 6;
int swi = 7;
int res = 8;
int led = 9;
int con = 10;
int hea = 11;
int fus = 12;
int ard = 13;

void setup()
{
  OneSheeld.begin();
  VoiceRecognition.setOnError(error);
  VoiceRecognition.start();


  /*setting the pins that we will use to be output not input*/
  pinMode(wir, OUTPUT);
  pinMode(cap, OUTPUT);
  pinMode(swi, OUTPUT);
  pinMode(res, OUTPUT);
  pinMode(led, OUTPUT);
  pinMode(con, OUTPUT);
  pinMode(hea, OUTPUT);
  pinMode(fus, OUTPUT);
  pinMode(13, OUTPUT);

  /*setting the intial value of the pins*/
  digitalWrite(wir, LOW);
  digitalWrite(cap, LOW);
  digitalWrite(swi, LOW);
  digitalWrite(res, LOW);
  digitalWrite(led, LOW);
  digitalWrite(con, LOW);
  digitalWrite(hea, LOW);
  digitalWrite(fus, LOW);
  digitalWrite(13, LOW);
}

void loop ()
{
  if (VoiceRecognition.isNewCommandReceived())
  {
    if (!strcmp(w, VoiceRecognition.getLastCommand()))
    {
      for (i = 0; i < 4; i++) {
        digitalWrite(wir, HIGH);
        delay(300);
        digitalWrite(wir, LOW);
        delay(300);
      }
    }
    else if (!strcmp(c, VoiceRecognition.getLastCommand()))
    {
      for (i = 0; i < 4; i++) {
        digitalWrite(cap, HIGH);
        delay(300);
        digitalWrite(cap, LOW);
        delay(300);
      }
    }
    else if (!strcmp(s, VoiceRecognition.getLastCommand()))
    {
      for (i = 0; i < 4; i++) {
        digitalWrite(swi, HIGH);
        delay(300);
        digitalWrite(swi, LOW);
        delay(300);
      }
    }
    else if (!strcmp(r, VoiceRecognition.getLastCommand()))
    {
      for (i = 0; i < 4; i++) {
        digitalWrite(res, HIGH);
        delay(300);
        digitalWrite(res, LOW);
        delay(300);
      }
    }
    else if (!strcmp(l, VoiceRecognition.getLastCommand()))
    {
      for (i = 0; i < 4; i++) {
        digitalWrite(led, HIGH);
        delay(300);
        digitalWrite(led, LOW);
        delay(300);
      }
    }
    else if (!strcmp(n, VoiceRecognition.getLastCommand()))
    {
      for (i = 0; i < 4; i++) {
        digitalWrite(con, HIGH);
        delay(300);
        digitalWrite(con, LOW);
        delay(300);
      }
    }
    else if (!strcmp(h, VoiceRecognition.getLastCommand()))
    {
      for (i = 0; i < 4; i++) {
        digitalWrite(hea, HIGH);
        delay(300);
        digitalWrite(hea, LOW);
        delay(300);
      }
    }
    else if (!strcmp(f, VoiceRecognition.getLastCommand()))
    {
      for (i = 0; i < 4; i++) {
        digitalWrite(fus, HIGH);
        delay(300);
        digitalWrite(fus, LOW);
        delay(300);
      }
    }
    else if (!strcmp(a, VoiceRecognition.getLastCommand()))
    {
      Terminal.println("Arduino");
      for (i = 0; i < 4; i++) {
        digitalWrite(ard, HIGH);
        delay(300);
        digitalWrite(ard, LOW);
        delay(300);
      }
    }
  }
}

void error(byte errorData)
{
  switch (errorData)
  {
    case NETWORK_TIMEOUT_ERROR:
      Terminal.println("Network timeout");
      break;
    case NETWORK_ERROR:
      Terminal.println("Network Error");
      break;
    case AUDIO_ERROR:
      Terminal.println("Audio error");
      break;
    case SERVER_ERROR:
      Terminal.println("No Server");
      break;
    case SPEECH_TIMEOUT_ERROR:
      Terminal.println("Speech timeout");
      break;
    case NO_MATCH_ERROR:
      Terminal.println("No match");
      break;
    case RECOGNIZER_BUSY_ERROR:
      Terminal.println("Busy");
      break;
  }
}

Custom parts and enclosures

Thingiverse
http://www.thingiverse.com/thing:1239522.

Schematics

smart storage drawer schematics
Sketch1 schem

Comments

Similar projects you might like

Control your Light System Using Smart Phone

Project tutorial by Ahmed Yassin

  • 43,597 views
  • 5 comments
  • 63 respects

Smart Home Automation And Security System Using 1Sheeld

Project tutorial by SADEE

  • 8,833 views
  • 6 comments
  • 31 respects

Voice Controlled Robot using your Smart Phone

Project tutorial by Ahmed Yassin

  • 4,602 views
  • 0 comments
  • 10 respects

Smart Battery Charger Multiplexer with Smart Display

Project tutorial by leonzak

  • 3,470 views
  • 5 comments
  • 17 respects

Voice Assistant Using A Smart Phone And 1Sheeld

Project tutorial by Oguz Salar

  • 1,641 views
  • 0 comments
  • 7 respects

Smart Selfie Stick

Project tutorial by yasser saber

  • 2,463 views
  • 0 comments
  • 7 respects
Add projectSign up / Login