Anti-Productive Productivity Apparatus

by christyanna in Circuits > Arduino

301 Views, 1 Favorites, 0 Comments

Anti-Productive Productivity Apparatus

ARC385 - Anti-Productive Productive Apparatus
thumbnail.jpg
image12.jpg
image8.jpg
image15.png

Ever experienced the pain and struggles of a university student trying to stay awake while working during the day after pulling an all-nighter, or perhaps needing a nudge here and there to stop yourself from procrastinating, or even struggling to decorate your workspace a little bit? This anti-productive productive apparatus will solve all of these problems!

A cute little field of mushrooms perfect for your less than ideal tiny room, this machine alerts you every thirty minutes helping you keep track of time (whether using it as a Pomodoro alarm or waking you up from your unplanned slumber), reminds you to go to bed/work with a little message on the LCD screen (depending on the time of day), and serves as ambient lighting to spice up your sad dorm and lighten up your mood during the day and NOT during the night (surely, because who doesn’t love tiny mushrooms and moss?).

In other words: this is a daytime lamp, 30-minute timer, and visually appealing room decor all in one. We made it so you don’t have to ;) Is it useful or useless? Or both? That’s a question we’ve been asking ourselves too.

Components and Their Objectives

LED:

The sensors detect the amount of light in a given room. The mushroom lamp turns on during the day to create ambient lighting and turns off during the night. You would think it should be the opposite, because you need light to work in the dark through the night, but that’s the point - it’s useless. Beautiful, adorable garbage.

LCD:

When bright, the display will flash “go to work!” to remind you to stop procrastinating and stay on top of work. When dark, the display will remind you to “go to bed!” instead of losing sleep doing work. Perhaps useful? Maybe pointless.

Alarm:

The buzzer goes off every 30 minutes during the day. It will either help you to divide your time properly (reminiscent of the Pomodoro study technique), or wake you up from the ideal half-hour nap. Maybe useful? The highly regulated and annoying buzzing may trigger your fight-or-flight response.

Supplies

To start, make sure you have all the necessary hardware components, software coding programs, and access to laser cutters. Pay careful attention to, and double-check, any wiring mishaps and/or typos! These are some specific supplies we used in ours:

  • Laser cutter (preferably ILS 12.150D or PLS 6.160D)
  • Wire stripper (optional - you can also take the good ole route of stripping a wire with a knife)
  • Glue (to assemble laser-cut container)
  • Laptop with Arduino IDE installed
  • Elegoo UNO R3 Project Complete Starter Kit (Link to our specific model: https://www.amazon.ca/dp/B01M9CHF1J/ref=cm_sw_em_r_mt_dp_RMVS3RQ5KGXAGYMYQYBG?_encoding=UTF8&psc=1
  • Arduino UNO R3 Controller Board 2PCs LCD1602 Module (with pin header) 1PC
  • 830 Tie-Points Breadboard 2PCs
  • 10K Potentiometer 1PC
  • 220V Resistors 11PCs
  • 10V Resistor 1PC
  • LCR/Photoresistor (Photocell) 1PC
  • White LED 9PCs
  • Passive Buzzer 1PC
  • Male to male circuit wires
  • 22AWG Solid core wire
  • ⅛ in. plywood
  • Electrical tape Air-dry clay (mushroom stems)
  • Sculpey Premo oven-bake translucent clay (mushroom caps)
  • Portable charger (ideally with 2 or more ports)
  • USB cables 2PCs

Designing, Cutting, Constructing the Machine

image4.jpg
image1.jpg
image7.jpg
image6.jpg
image20.jpg
image18.jpg
image2.jpg
image9.jpg
image3.jpg
image13.jpg

We have attached the Rhino3D model that we have used to build our specific composition - feel free to move around the construction space to understand how to assemble the components and parts. (Here is the link: https://drive.google.com/file/d/1BpUrvjtG_6SrGZTvAoZyNUkB__bA5Zss/view?usp=sharing)

Some things to note: - In Rhino, the overall configuration is in 3D, and the laser-cutting components layout in 2D linework. - You can use a variety of materials to create the mushroom stems and caps. We used clay. - Our Rhino model takes into account the size of the portable charger that we have. Double check the dimensions of the one that you are using, and make adjustments accordingly. - Assemble the outer box first to know the whereabouts to put the other spaces in between. All of the spaces are dependent on the dimensions of the components and tools, so make sure you measure everything first!

Making the Mushrooms:

First create the stem of the mushroom. However you choose to make them, they should be cylindrical in shape and hollow so that wires can run through them. You may alternatively choose to cut paper into a rectangle, roll it into a cylinder, and secure it with tape. You could also use bubble tea straws that have been cut down to size. We decided to roll a piece of clay into a log, then pierce a hole through it before letting it air dry.

Create the cap of the mushroom using overbake translucent clay by rolling the clay into a ball, flattening it into a disk, then molding and shaping it into a dome. Do not worry about making it too perfect, mushrooms are organic and all different.

Prepare some 22AWG solid core wires to extend the legs of the various components by cutting them to size and stripping both ends.

Extend the legs of the LEDs, photoresistors and buzzer by twisting each leg with a prepared wire and securing it with electrical tape.

Feed the LEDs, photoresistors and buzzer through the mushroom stems.

Assembling the Parts:

Glue the two parts of the lid together. Create the box by gluing the sides to the bottom. Glue together the two pieces of the platform. Assemble the container with the portable charger and the platform (see drawing). Feed the USB cables from the charger through the holes in the platform into the other section of the box.

Feed the mushroom electrical components through the holes of the lid, then wire the breadboards and Arduinos (as in Step 2: Assembling & Wiring the Circuit).

Carefully place the wired breadboards and Arduinos inside the box, connect them to the portable charger with the USB cables and close the lid. Be extremely careful with this step. There may be many, many, many things that can go wrong.

Tape the mushroom stems to the lid (part 2) so that they stay in place. Optionally, wrap electrical tape around the stems of the mushrooms to create a cleaner and more seamless look.

Place a loop of tape or a dot of clear-drying glue into the mushroom caps and secure them to the top of the LEDS.

Cover the lid (part 2) with moss. This helps hide the tape that secures the mushrooms to the lid and the buzzer!

​Assembling & Wiring the Circuit

image5.png
image11.png
image17.png

Some things to note: Make sure to take note of the anode and cathodes of each component, and be careful not to confuse the various resistor voltages - don’t burn your LED or cause a short-circuit! We highly recommend testing out each component individually to make sure they function before fully committing to the point of no return. Check that you placed the pins into the correct inputs.

For trial: We started with creating a simplified version of the robot using only one LED as a trial before building the final object.

Fritzing diagram of the trial run. Wire accordingly.

Breakdown of wiring for trial:

  • Arduino
    • 5V → Positive strip (of breadboard)
    • Gnd → Negative strip (of breadboard)
  • LCD screen
    • GND → Negative strip (of breadboard)
    • VCC → Positive strip (of breadboard)
    • VSS → GND
    • VDD → 5V
    • VO → 5V (through potentiometer)
    • RS → Pin 5
    • E → Pin 3
    • DB4 → Pin 11
    • DB5 → Pin 10
    • DB6 → Pin 9
    • DB7 → Pin 8
    • LED1(left) → Positive strip (of breadboard) through 220V resistor
    • LED2 (right) →Negative strip (of breadboard)
  • Buzzer/Alarm
    • Cathode → Pin 6 (of Arduino) through 10V resistor.
      • The value of the resistor affects the volume/intensity of the buzzer. We recommend the 10V as we have found it to work the best; avoid using anything over 100V as you will not be able to hear it.
    • Anode → Negative strip (of Arduino)
  • Potentiometer
    • Terminal 1 → Positive strip (of breadboard)
    • Wiper → V0 (LCD)
    • Terminal 2 → Negative strip (of breadboard)
  • Photoresistor
    • Terminal 1 → Negative strip (of breadboard)
    • Terminal 2 → Positive strip (of breadboard) through 220V resistor
    • Terminal 2 → A0 (of Arduino)
  • LED
    • Cathode → Negative strip (of breadboard)
    • Anode → Pin 7 (of Arduino) through 220V resistor

Note that if you decide to build the entire machine (instead of the trial run), all of your LEDs will not fit into one circuit due to the lack of wire inputs on the Arduino board. You have two options: You can extend the pins of the LED (via extra wiring), then connect all of the anodes together and combine all of the cathodes and put them in their respective breadboard pins (as seen in the trial run fritzing diagram). Alternatively, you can use two breadboards (and two Arduinos with the same internalized code) - one for the alarm and LEDs, and the other for the LCD. The version we created uses two. When adding extra wiring, make sure to use electric tape and be careful that the anode and cathode are not touching each other.

For the full model:

Refer when assembling breadboard 1.

Breakdown of wiring for Breadboard 1 (LCD):

  • Arduino
    • 5V → Positive strip (of breadboard)
    • Gnd → Negative strip (of breadboard)
  • LCD screen
    • GND → Negative strip (of breadboard)
    • VCC → Positive strip (of breadboard)
    • VSS → GND
    • VDD → 5V
    • VO → 5V (through potentiometer)
    • RS → Pin 5
    • E → Pin 3
    • DB4 → Pin 11
    • DB5 →Pin 10
    • DB6 → Pin 9
    • DB7 → Pin 8
    • LED1 (left) → Positive strip (of breadboard) through 220V resistor
    • LED2 (right) →Negative strip (of breadboard)
  • Potentiometer
    • Terminal 1 → Positive strip (of breadboard)
    • Wiper → V0 (LCD)
    • Terminal 2 → Negative strip (of breadboard)
  • Photoresistor
    • Terminal 1 → Negative strip (of breadboard)
    • Terminal 2 → Positive strip (of breadboard) through 220V resistor
    • Terminal 2 → A0 (of Arduino)

Breakdown of wiring for Breadboard 2 (LED & Alarm):

  • Arduino
    • 5V → Positive strip (of breadboard)
    • Gnd → Negative strip (of breadboard)
  • Buzzer/Alarm
    • Cathode → Pin 2 (of Arduino) through 10V resistor
      • The value of the resistor affects the volume/intensity of the buzzer. We recommend the 10V as we have found it to work the best; avoid using anything over 100V as you will not be able to hear it.
    • Anode → Negative strip (of Arduino)
  • Photoresistor
    • Terminal 1 → Negative strip (of breadboard)
    • Terminal 2 → Positive strip (of breadboard) through 220V resistor
    • Terminal 2 → A0 (of Arduino)
  • LEDs
    • Led1
      • Cathode → Negative strip (of breadboard)
      • Anode → Pin 13 (of Arduino) through 220V resistor
    • Led2
      • Cathode → Negative strip (of breadboard)
      • Anode → Pin 12 (of Arduino) through 220V resistor
    • Led3
      • Cathode → Negative strip (of breadboard)
      • Anode → Pin 11 (of Arduino) through 220V resistor
    • Led4
      • Cathode → Negative strip (of breadboard)
      • Anode → Pin 10 (of Arduino) through 220V resistor
    • Led5
      • Cathode → Negative strip (of breadboard)
      • Anode → Pin 9 (of Arduino) through 220V resistor
    • Led6
      • Cathode → Negative strip (of breadboard)
      • Anode → Pin 8 (of Arduino) through 220V resistor
    • Led7
      • Cathode → Negative strip (of breadboard)
      • Anode → Pin 7 (of Arduino) through 220V resistor
    • Led8
      • Cathode → Negative strip (of breadboard)
      • Anode → Pin 6 (of Arduino) through 220V resistor
    • Led9
      • Cathode → Negative strip (of breadboard)
      • Anode → Pin 5 (of Arduino) through 220V resistor

Coding the Code

image16.png
image19.png
image14.png
image22.png
image10.png

For the trial run: (Here is the link to the trial board: https://drive.google.com/file/d/1SSSOuVMNuCa86qmOiEebBqmBXEkkbVqu/view?usp=sharing

Connect your Arduino to your computer, verify, then upload. We’ve also attached the code.

Once uploaded and stored into the system, remove the connection to the computer, and connect the Arduino into the portable charger. This will power your machine for the duration of the battery’s life; make sure to charge it fully to ensure it doesn’t fail when you need it most.

For the full model: Here is the link to the breadboard 1 arduino file: https://drive.google.com/file/d/1XQbQpxQ7x41eZnEKxr7M8LKYQSYcukjo/view?usp=sharing

And the link to breadboard 2: https://drive.google.com/file/d/1w06ar9tuoJJOkscZBSKotTmioZRXzTE9/view?usp=sharing

Some things to note:

  • Board: Make sure to define your board, and that the port is selected to the option with (Arduino Uno) in its name.
  • Nomenclature: Feel free to name the components however you wish, to whatever makes sense to you. Be careful that you use the same expression throughout, in the exact places. Use “//” to add any notes for yourself.
  • Libraries: Make sure you have the required libraries. #include should be included, but double-checking won’t hurt. If you don’t have the library, manually search for it and install (“sketch → include libraries → add .ZIP library”).
  • Light: You may need to alter the values for the photoresistor, as these specific values are dependent on surrounding lighting - that said, run the serial monitor to check the highest and lowest values (by using the brightest light source in the room and fully covering it for the darkest) and remap the sensor values in void setup. Change the corresponding brightness parameters in the if statements in the code.
  • Alarm: To change the interval of the alarm which buzzes every thirty minutes, convert the preferred duration into milliseconds and change input function (i.e., const unsigned long eventInterval = 1800000;). Play around with the intensity of sound (Hz, as the second input in the tone function) and the duration of the alarm buzz (in the delay parameter).
  • Message: You can also change the message the LCD screen shows by changing what it prints: lcd.print(insert text here).

Conclusion

This project was very exciting to create. During the process, we have learned the millis function, strengthening our understanding of the delay function while doing so. We also learned various ways to wire and handle components - specifically the sensors and LEDs. Due to the number of components and required wires, there were various configurations we found to have failed in carrying out the task that each part was supposed to do. For example, we found that it was better to twist and then tape legs and wires together to connect them, rather than just tape them, and sometimes all we needed to do to fix the LCD display was to reset the Arduino. Above all, the sensitivity of each wire, alignment, and other such details proved to add to the frustration in trying to figure out if a component was functioning or if we would have to alter it once again. Moreover, this project strengthened our understanding and application of photoresistor sensors (and finding related values), buzzers (and related Hz), and coding functions such as the if-else statements (and related conditions).

Nonetheless, from brainstorming a useless machine, to testing each and every component individually, then putting together the final product and creating instructions with videos, the various learning curves included in this project (although exasperating at times) proved to be useful as we were ultimately able to create a machine that does exactly what we wanted it to do.

Congratulations on completing this project! Happy building and stay productive! Or not?