Category Archives: Assignments

WEEK1-Fish on Wheels

Fish on Wheels is a very interesting Pcomp project invented by Dutch design collective Studio Diip.  They added wheels and sensors to a fish tank so that its inhabitant can drive it by swimming in a certain direction. The tank itself was controlled by Arduino, and the main method used to detect fish’s movement is computer vision, with the camera on the top of the tank.

How it works – As the fish swims around the transparent tank, a webcam positioned above the water tracks its movements – detecting the contrast between the fish and the bottom of the tank – and relays them to the Arduino. Using programming to mimic the fish’s movements by driving the vehicle in the same direction.

Fish on Wheels by Studio Diip

Image source and related article from Dezeen

I like this project because there is a goodwill behind it – “Our pet fish have always been limited to their water holding area known as ‘the fish tank’,” said Studio Diip, “In an attempt to liberate fish all over the world, the first self-driving car for fish has been developed.” Overall, the method used in this project is really simple but the outcome is humorous and inspiring.

week 12 prototype and playtesting

This project has three parts, color sensor, Wacom digitizer, digital screen. This installation will set up on the darkroom for the better user experience, when a user comes into the room they can find some objects placed around the color sensor, they may try them at first them find the other color they need in the surrounding.

Prototype:

Playtesting:

I attended the PLAYTECH (in D12) activity for the children and teenagers user testing, I use my conceptual prototype to test more than ten young people at a total. The main part I test is the stability of the sensor, the playability of the function, the unexpected outcomes from a different kid.

 I provide the RGB sensor which can catch the color you input form the objects with a tip note, also I put a Wacom board and digital pen beside the sensor to test how they react with them.

Process:

Outcome:

Feedback:

        • Teenagers (youngest 10 years old) can understand the usage of the project better, children (under 6 years old) always ignore what I said, and barely use the button to control the color, and their painting has less meaning and structure.
        • All testees are all express their passion and interest through the test.
        • Some teenagers suggest if people can erase the image they draw.
        • They want more options of brush pattern, for example, cartoon character, mixed shapes. 
        • Two teenagers think they need to press many times button to draw a satisfied painting which is a little bit confused sometimes.

Iteration:

        • Adding more brush shapes, you may can create by yourself or you can choose one of them.
        • Editing the input color more accurate and stable.
        • Thinking about the erase function.
        • Simplify the button function.

 

week 8 motors

DC motors

DC motor is a continuous rotation motors, it only has two wires. This motor will work when you give it the power no matter what, and it will stop when you remove the power.

Servo Motors

The position of servo motors can be controlled more precisely than those of standard DC motors, and they usually have three wires (power, ground & control).Power to servo motors is constantly applied, with the servo control circuit regulating the draw to drive the motor. Servo motors are designed for more specific tasks where position needs to be defined accurately.

Stepper Motors

A stepper motor is essentially a servo motor that uses a different method of motorisation. Where a servo motor uses a continuous rotation DC motor and integrated controller circuit, stepper motors utilise multiple toothed electromagnets arranged around a central gear to define position.

 

design goal:

I use the potentiometer to control the servo motor rotates, when you give more power to the servo motor, the motor with move faster. I think it can use in the children electronic toy, as a parent, they can control the toy move or stop.

Materials:
-Arduino + USB Cable
-Potentiometer
-Servo Motor
-Breadboard

Code:

Demo:

 

 

week 6 sound sensor and LEDs

For this week’s assignment, I use the sound sensor to control the LEDs depends on the different levels of the sound inputted.

List of Materials

1 x Elegoo Uno R3

1 x Full sized breadboard

1 x sound sensor

3 x LEDs

How it works:

three LEDs will blink when the sound’s value changed, but I noticed that the sound sensor is not that sensitive to detect the accurate sound.

code:

 

video:

Final Project Blog Post: Fortune Teller

Presentation: https://docs.google.com/presentation/d/1sUYrrKJgouIBgrMRpbiFp6CLde5otBWy1A05Q2PdyU4/edit?usp=sharing

Concept + Goals. What is your concept? What were your goals? Why did you decide on this project form for your concept and goal?

The Fortune Teller: Using an arduino, arduino printer, and a copper capacitive sensor I want to be able to give people a fortune based on the “random” amount of particles the sensor reads. Inspired by Mary Poppins measurement tape that collects the input of height and gives a corresponding description, “Perfect in everyway” and Zoltar, I want to design a fortune teller that reads its participants touch and subsequently gives them a corresponding fortune.

Intended audience. Who is this for? Why did you choose this audience?

Given that my idea of a fortune teller utilizes a non-invasive sensor my intended audience is anyone who is conveniently available and interested in getting a fortune.

Precedents. Share any precedents that inspired you.

Since one of the main components, if not the, of my project is to be able “sense” some aspect of my participant(s) I needed a sensor that could do just that in a relatively quantifiable way. I considered using a TMP36 Temperature Sensor so when a participant would get near/ touch the fortune teller depending on the temperature the fortune would change. Upon further deliberation, I believe most people range within the same body temperature so I wanted to use a component that could sense something with more range. Tubah (a tutor) recommended a capacitive sensor.

  • TMP36 Temperature Sensor: Based on the principle; as temperature increases, the voltage across a diode increases at a known rate. By amplifying the voltage change, a output proportional to temperature can be produced.

The capacitor is a component which has the ability or “capacity” to store energy in the form of an electrical charge producing a potential difference (Static Voltage) across its plates, much like a small rechargeable battery. Capacity is very sensitive and can be affected from a variety of environmental factors making it’s output very inconsistent.  Accordingly, using this aspect to my advantage when touched all individuals can produce a unique capacitance… therefore fortune.

 

Description of the project. Discuss the process of creating this project. How does it work? What is the desired interaction?

This project is simple in its composition. It utilizes a single sensor, capacitive,  and a single mode of output, a printer. I started the project with the physical components; the capacitive sensor and then the thermal printer. I found different tutorials for physical component that related to the outcome I needed. For example the capacitive code I used had a pre-set threshold of a 1000 and utilized an LED to show that the capacity was being read correctly. These details came in handy when it was no longer plugged into a monitor that could read the resistance since the LED would alert me to if the capacity was being read correctly. My next step after the physical setting up that was connecting the two through the code; have the printer respond to a capacitance that passes a threshold and have ranges equal different “fortunes.” I originally wanted to design two plaster hands that had metal wire running through them thus becoming the capacitor. With this idea, the participant would put their hands in the fortune teller’s hand, mimicking the interaction of a stereotypical gypsy fortune reading, and get their fortune. Though after the Parsons 2 building accident, which affected the wet lab, I used garden wire wrapped together as the hand instead. Ultimately, the project was successful. I made a capacitive sensor that was able to read capacity through a metal-wire-hand and subsequently read that input and print the corresponding fortune through code in the Arduino. 

 

Process + Prototypes. Discuss the process of creating this project. Show your prototypes, playtests, sketches, interaction diagrams, and any other files that illustrate the tools you used. What challenges did you faced?

  • Capacitor: I began assembling my project starting with the capacitor. While I waited for the thermal printer to arrive this component was pretty simple to construct. Using online sources for the code and the Arduino capacitive library, I successfully was able to read the capacity of myself using aluminum foil as the sensor.
    • As seen through the video featuring the serial monitor, when the capacity passes a certain threshold (1000) the LED will turn on. Alone the capacity of the aluminum foil and the environment have stayed under the threshold, nevertheless the capacity has been changing frequently from 60s-90s to 250s-290s.
    • Materials:
      • Resistor (100k ohm)
      • LED (Red)
      • Breadboard
      • Arduino + USB cord
      • 3x Jumper Wires
      • Metal: Aluminum foil
    • Code:

 

  • Thermal Printer: Once the thermal printer arrived I was able to get started. Getting the thermal printer functioning using the example code and downloading the printer library was a success. Using the set-up tutorial Thermal Printer Setup went smoothly as well. As seen in the video I got the example receipt to print and the capacitor to work individually.
    • As iterated in the video, the next step for me is to combine the two codes and get the arduino to read the capacitor’s input and in response print the output.
    • Materials:
      • A mini thermal receipt printer
      • thermal receipt paper
      • 5V 2A power supply
      • 2.1mm DC jack adapter
      • supply to the printer
      • 3x MM jumper wires
    • Code:

  • Code: As someone who doesn’t know how to code I went to the LC for help getting started. Off the bat, I had 3 major goals; 1)Get the printer and the capacitor onto the same code 2) Get the printer to print when the threshold is met 3) Print a fortune based on the different ranges of capacitance. Starting with step 1, I met with Tubah and by the end of the session we got the capacitor, arduino, and printer connected. However, the printer was unable to print the correct symbols (we were testing with the arduino test barcode). Matter of fact it was printing an infinite series of illegible symbols. With this I added new goals to my list; figure out why the 4) illegible symbols was printing 5) why the printer is continuously printing.
    The following session I met with Aarati and we found that the illegible symbols was due to baud-rate and or Arduino syntax between softwareserial/ mySerial.begin and Serial.begin. This was also connected to why the serial monitor wasn’t responding. Once we got the printer to respond to the capacitor we found that the printer will continuously print because capacity is read in milliseconds when touched. A solution to this was to add a timer for when the capacitance passes the threshold. We did this and got the connecting code working perfectly. The next step was to make ranges of capacitance with corresponding fortunes and with the help of Aarati that was easy. We even included a component that changed the fortune depending on whether the capacitance number read was odd or even.

  • Finishing Touches:
    The soldering, wire hand, chipboard silhouette, and the robe were simple add-ons that made the final product look more polish.
  • What would you do in a future iteration?
    Towards the end of my project my arduino code was nearing the maximum memory capacity ergo a future iteration might use a Raspberry Pi and may also have a cleaner and more artful design on the print.
  • Assembly:
    • Capacitor & LED:
    • Starting with the capacitor and LED find the highest resistor you can grab, (I used 150.5K) and put it on the Arduino ~4pin and ~8pin
    • Use the dedicated power cable and connect it positive side of the LED and plug the other into ~7pin
    • Use the dedicated ground cable and connected it to the ground end of the LED and plug the other into GND on the Arduino.
    • Place the LED in the breadboard connecting them with the GND and power wires. 
      • Optional; Include 220 ohm resistor in breadboard. I ended up using one when I soldered the board, but it’ll work without it. 
    • Printer: Using the Arduino Thermal Printer Pack
    • Plug in the GND (black) and VH (red) F wires into the printer
      • Cut off the open end of the Red and black wires to expose the metal inside.
      • Using the DC adaptor put in the exposed black and red end of the wires
      • Make sure they are oriented correctly
    • Plug in the GND (black), RX (yellow) and TX (Green) wires into the printer
    • Using the 3 MM jumper wires attach them to the open end of the GND, RX and TX cord.
    •  components_cableextend.jpg
      • Insert the TX (green) wire into the digital ~5 pin of the Arduino
      • Insert the RX (yellow) wire into the digital ~6 pin of the Arduino
      • Insert the GND (black) wire into the GND (any of them) of the Arduino
      • components_printer-wiring.jpg
      • Download the necessary Libraries:
      • Code:
      • Copy and Paste my Code: (Feel free to edit how you like)
      • Thermal Printer and Capacity Code Final
        • #include <CapacitiveSensor.h>

          CapacitiveSensor cs_4_8 = CapacitiveSensor(4, 8); // 1M resistor between pins 4 & 8, pin 8 is sensor pin, add a wire and or foil
          #include “Adafruit_Thermal.h”
          #include “adalogo.h”
          #include “adaqrcode.h”

          int LED = 8;
          int buttonpin = 3;
          //FIND A 10K resistor! Check if this is still relevant.

          #include “SoftwareSerial.h”
          #define TX_PIN 6 // Arduino transmit YELLOW WIRE labeled RX on printer
          #define RX_PIN 5 // Arduino receive GREEN WIRE labeled TX on printer

          SoftwareSerial mySerial(RX_PIN, TX_PIN); // Declare SoftwareSerial obj first
          Adafruit_Thermal printer(&mySerial); // Pass addr to printer constructor
          // Then see setup() function regarding serial & printer begin() calls.

          // Here’s the syntax for hardware serial (e.g. Arduino Due) ————–
          // Un-comment the following line if using hardware serial:

          //Adafruit_Thermal printer(&Serial1); // Or Serial2, Serial3, etc.

          // ———————————————————————–

          void setup() {
          cs_4_8.set_CS_AutocaL_Millis(0xFFFFFFFF);// turn off autocalibrate on channel 1 – just as an example
          pinMode(7, OUTPUT);
          // pinMode(7, OUTPUT); digitalWrite(7, LOW);
          // This line is for compatibility with the Adafruit IotP project pack,
          // which uses pin 7 as a spare grounding point. You only need this if
          // wired up the same way (w/3-pin header into pins 5/6/7):
          pinMode(5, OUTPUT); digitalWrite(5, LOW);
          pinMode (buttonpin, INPUT);
          // cs_4_8.set_CS_AutocaL_Millis(0xFFFFFFFF);// turn off autocalibrate on channel 1 – just as an example
          // Serial.begin(9600);
          // pinMode(7, OUTPUT);
          // NOTE: SOME PRINTERS NEED 9600 BAUD instead of 19200, check test page.
          pinMode(LED, OUTPUT); digitalWrite(LED, LOW);
          Serial.begin(9600);
          mySerial.begin(19200); // Initialize SoftwareSerial
          //Serial1.begin(9600); // Use this instead if using hardware serial
          printer.begin(); // Init printer (same regardless of serial type)

          }
          void box(char *string) {
          uint8_t i, len = strlen(string);
          //printer.write(0xDA);//upper-left corner
          for (i = 0; i < len; i++)printer.write(0xC4);// Top Edge
          // printer.write(0xBF);// Upper-right corner
          printer.setSize(‘S’); //Size
          //printer.println();//NewLine/Feed
          //printer.write(0xB3); //left edge
          printer.print(string);
          //printer.println(sensor1); How to print the capacity ?
          //printer.println(0xB3);
          // printer.println(0xB3);
          //printer.println();//Newline/Feed
          // printer.write(0xC0); //Lower-Left corner
          for (i = 0; i < len; i++) printer.write(0xC4);//Bottom Edge
          //printer.write(0xD9); //Lower-right Corner
          printer.println();//NewLine/Feed
          }

          void loop() {
          long sensor1 = cs_4_8.capacitiveSensor(50);

          Serial.println(sensor1); // print sensor output
          //if(4999 % 3 == 0)

          if (sensor1 >= 4000) {
          digitalWrite(7, HIGH);
          delay(100);
          digitalWrite(7, LOW);

          if (sensor1 % 2 == 0) {
          // printer.println(F(“The world is your oyster+”));
          box(“The World is Your Oyster+”);
          } else {
          box(“You Are Special-“);
          }

          printer.println(F(“”));
          printer.println(F(“”));
          printer.println(F(“”));
          printer.feed(2);

          printer.sleep(); // Tell printer to sleep
          delay(3000); // Sleep for 3 seconds
          printer.wake(); // MUST wake() before printing again, even if reset
          printer.setDefault(); // Restore printer to defaults

          } else if (sensor1 >= 2950) {
          digitalWrite(7, HIGH);
          delay(100);
          digitalWrite(7, LOW);

          if (sensor1 % 2 == 0) {
          box(“Have Empathy+”);
          } else {
          box(“Don’t Be Too Manipulated By Emotions-“);
          }

          printer.println(F(“”));
          printer.println(F(“”));
          printer.println(F(“”));
          printer.feed(2);

          printer.sleep(); // Tell printer to sleep
          delay(3000); // Sleep for 3 seconds
          printer.wake(); // MUST wake() before printing again, even if reset
          printer.setDefault(); // Restore printer to defaults

 

 

Week 08 Assignment

PART 1

DC motor: Continuous rotation, very fast.

Servo motor: Turn 90° in either direction for a total of 180° movement. Have a position sensor inside for feedback.

Stepper motor: Precise positional control, move 1 step each time. No position sensor for feedback.

PART 2

Example#1

IMG_2834

A DC Motor fan which works for a while and rest for a while. I think it can be used for cooling down the computer when it operates tasks which generate lots of heat.

Example#2

 

A water pump made with a 6V DC Motor. I made a installation out of it. One side of the pump is up-taking water and the other is dropping the water in the same container. I used 4 AA battery as external power for the water pump and a potentiometer to adjust the speed of the water pump.

Week 8 – Stepper – Xiaoyu

Part 1

DC Motor:
Two wire (power & ground), continuous rotation motors
Using pulse width modulation (PWM) to control the speed of DC

Stepper Motor:
Use multiple electromagnets around gear to divide a full rotation into equal steps.
Requires extra controller.

Servo Motor: Generally assembled by a DC motor, a gearing set, a control circuit and a position-sensor (so position can be controller precisely).
Usually three wires (power, ground, signal)
Using pulse width modulation (PWM) to control the signals of servomotors.

 

Part 2

Use knob to control the speed of a stepper motor.

Core components
1* potentiometer
1* step motor
Wires & jumpwires
Arduino board

How it works
Use knob to control the speed of a stepper motor.

Problems
Can’t see the movement of stepper, though I can feel it changes.

 

 

Final Presentation Guidelines

Woohoo! It’s finals time 🙂 Here’s everything you need to know – email me with any questions. Also, please note that last class, I said your final documentation was due the Thursday after final presentations. I have changed this to Wednesday, May 16 at midnight to ensure I get grades in on time.

DUE THURSDAY, MAY 10

1) WORKING PROTOTYPE
You MUST bring your prototype to show – even if it is not working. If you require a specific environment, please email me.

2) PRESENTATION
You will have 8 minutes to present. This includes time for feedback, so structure your presentation accordingly. Your should include the following in your presentation ( in whatever order you like):

  • Problem statement + design goals
  • Concept
  • Precedents
  • Project demo or video of project demo
  • Playtesting + feedback
  • Process documentation
  • Challenges you faced
  • Future iterations

3) VIDEO DOCUMENTATION
You should make a short video introducing your project. It should include the title of your piece, your concept, and a prototype demo.

DUE WEDNESDAY, MAY 16 AT MIDNIGHT (I will not accept late submissions)

1) BLOG POST

  • Create a blog post that documents your final project. It should include:
    • Your presentation
    • Concept + Goals. What is your concept? What were your goals? Why did you decide on this project form for your concept and goal?
    • Intended audience. Who is this for? Why did you choose this audience?
    • Precedents. Share any precedents that inspired you.
    • Description of the project. Discuss the process of creating this project. How does it work? What is the desired interaction?
    • Video documentation. Include the video described above.
    • Materials list. List the materials you used and link to where people can purchase.
    • Process + Prototypes. Discuss the process of creating this project. Show your prototypes, playtests, sketches, interaction diagrams, and any other files that illustrate the tools you used. What challenges did you faced? What would you do in a future iteration?
    • Circuit diagram. Be sure to include a circuit diagram or drawing. Be specific and detailed.

ASSESSMENT GUIDELINES

I will assess your project by the following criteria:

Ideation, Concept, and Design

  • Demonstrates a strong conceptual foundation and clearly stated design goals
  • Clearly articulates audience
  • Able to translate ideas/concepts into project form within a given environment
  • Thoughtful integration of design elements
  • Presents functioning, high fidelity prototype or working documentation if was unable to get working
  • Does not use breadboard for circuit housing
  • Synthesizes design and technology to create interesting and contextually significant work that makes contributions to the domain

Process + Materials

  • Thoroughly documented according to class guidelines
  • Uses materials, tools, and processes learned in class
  • Iterated prototypes
  • Demonstrated effective problem-solving/ finding skills

Presentation

  • Articulated concept and problem statement clearly
  • Prepared for presentation (slides ready and prototype set up)
  • Addresses all required elements for presentation as described above
  • Stays within presentation timeframe (8 minutes)

Week 12 Documentation – Final

 12nd Iteration of My Prototype

  • Goal of the project and/or desired interaction
    I hope to be able to press on a force pressure sensor to activate the camera for the face detection to track my motion and then turn the camera off by pressing on another force pressure.
  • Quick description of assembly and list of core components
    – Arduino x1
    – Small Bread board x1
    – Force pressure sensors x2
    – Servo motor x2
    – Jumper wires
    – Resistors 220ohm x2
  • How it works
    When you stand in front of the camera, it will not work but when you press on 1st pressure sensor, the camera will start tracking your motion and turn towards wherever you are moving. You can turn the camera off by pressing on the 2nd pressure button.
  • Any problems you encountered and/or solved
    I have encountered many problems with the code where the code tends to be stuck in an IF statement and another problem I still face is that the code only runs once. After running once, it won’t activate again unless I restart the Arduino and processing sketch again. I still haven’t figured out what is the problem since the code looks all correct.
  • Images of your circuit
  • Processing/Arduino Code
    https://github.com/lynnn43/PhysicalComputing/blob/master/SerialServoSketch.ino
    https://github.com/lynnn43/PhysicalComputing/tree/master/LisaPanTiltFace_1

 

2.  Your playtesting plan and desired feedback

Who will you playtest with?
I will playtest with my fellow peers from Design & Technology program and possibly some other same age peers from different programs in Parsons.

How will you get their consent?
I will ask them if they are willing to test out a quick interaction and give me some feedback.

What feedback do you want?
I want the interaction of my model doll dog to be intuitive so I know where to exactly design my pressure sensor on my model dog.

What questions will you ask?
What is the first intuitive response of placing your hand at (on my model doll dog)?
Where do you think you can press to activate music?

What information do they need to know before starting?
I will give them a basic overview of my concept.

How much will you help them during the test?
Aside from trying to give them a basic overview, I will try to let them figure out themselves. If they really need help, I will give them hints.

How will you debrief them?
I will let them know what I’m really testing orally and ask them if they have any questions.

Continue reading