Yeseul Song Fall 2021

Class Times

Wednesdays, 9:10am – 10:40am
Room 407

Slides (gfolder)
Shared Notes between us (gdoc)

Contact

Yeseul Song
My work: yeseul.com / @yeseulsong_
Email: yeseul.song@nyu.edu
Office Hours

Class Blogs

Submit your class blog URLs here.

Bayas,Isaiah
Cai,Shuang
Fitts,Sackona
Gan,Bianca
Huang,Jiaxin
Ihsan,Mohamed
Ma,Coco
Tolentino,Alexsa
Whelihan,Virginia
Xu,Yang
Yu,Changqi

Learning Support

  • Physical Computing Help Sessions by ITP Residents
    • More info should be sent to your NYU email, from the residents
  • Office Hours with me
  • Office Hours with residents

Good Documentation/Blogging Examples

Read this page. Below are a few more good examples:

[Class 11] Project Planning

[Class 10] Motor Mechanism Reference

[Class 4] Resources I mentioned in class for your Project #1

Your Arduino

Jeff Feddersen 2021

Welcome

Welcome! I’m very excited to be teaching Physical Computing again this year. It’s material I love and use a lot. I’m curious about every aspect of how things are made – how materials can be shaped into useful and beautiful forms, how sensors can perceive the world, how code can be crafted to run on processors and affect the world.

Recently there’s been an explosion in tools available to beginners for embedding computation into just about any project imaginable. It can be a bit overwhelming – electronics! programming! so many boards to choose from! – but this course lays a foundation for you to build amazing things now and continue developing creative and technical skills over a lifetime.

Class Times

Important note: We are not meeting in person the first week of class, September 8th! I have an unavoidable conflict.

The introductory class typically covers information about the syllabus and class structure. I’ve posted a video about that here.

Pcomp intro video
Pcomp intro from me https://vimeo.com/595529095/a668f61b4f

The first class is also a chance for me to meet you, and for you to meet the other students in the class. To that end, I’ve scheduled three 1-hour open zoom hangouts:

  • Friday September 3, 12 noon
  • Thursday September 9, 3PM
  • Monday September 13, 3PM

Drop in to any (or all!) of these sessions to say hi, introduce yourself, and meet other students in the class. The zoom meeting details were shared in an email. If you can’t make any of the sessions, email me and we’ll find a way to connect.

The regularly scheduled classes will resume on Wednesday, September 15th.

  • Wednesdays: 12:20 PM – 2:50 PM NYC time (GMT-4, until Nov. 1, then GMT-5). Room 410.

Contacting Me

My NYU office hours calendar. You’ll need to sign in with your NYU login to see it. I will schedule regular office hour appointment slots which you can book automatically once the semester starts.

My email: jeff@fddrsn.net, jf543@nyu.edu

Outside of office hours, email me and we can discuss issues and find a time to connect if necessary. Even before covid I did the majority of my office hours via video or over email. That said, I don’t work full time at NYU, and try to keep “normal” business hours balanced with other work and life.

Useful links

Pin out for the Nano 33 IoT
Pin out for the Nano 33 IoT

A note on how to use this site

There’s a lot, lot! of information at itp.nyu.edu/physcomp. Then there’s the whole rest of the internet, starting with Arduino HQ, going on to great sites like learn.adafruit.com and learn.sparkfun.com, not to mention infinite how-tos on YouTube (even Vimeo), data sheets for every component ever made, etc… It can get overwhelming.

With the ITP site, we’ve tried to do two things:

  1. Provide a week-by-week syllabus for the semester that takes you through the physical computing material in a logical progression. Each week has clear tasks, assignments for the following week, and links to labs, write-ups, and videos that support or explain the current material. Follow along here and you’ll be fine.
  2. Provide an organized set of materials covering the core physical computing topics, to serve as a first resource for any questions you may have as you study the subject. These live under the TopicsVideosResources, and Labs tabs. These materials are also linked to from the syllabus, but here they’re organized by subject matter, whereas the week-by-week syllabus is chronological.

Class Documentation

You’ll keep a blog online with documentation of your work for the class. This will include midterm and final documentation, responses to specific prompts in the syllabus, and periodic updates on lab work. While you’re not strictly required to post an update every single week, it is very helpful to post regularly so I can keep track of how you’re doing in the class. If I see an issue come up for multiple students we can make time to address it in the class.

Email me with direct links to your documentation for this class. Note: please set up tags, categories, or whatever so the link goes directly to the documentation specifically for this class, and not every class, or your personal blog, etc.

You’ll know I got your link when it shows up here!

ZoeCaihttps://www.notion.so/Physical-Computing-a91580a3eca340b99482e1eb37ca4f1b
FrankDulkohttps://wp.nyu.edu/frankdulkoitp/category/pcomp/
OscarDurandhttps://www.notion.so/PHYSICAL-COMPUTING-7274f38401dc4bd4a7355d2be47818d9
SarahElixhttps://wp.nyu.edu/tischschoolofthearts-sarahelix/category/pcomp/
YvesFogelhttps://wp.nyu.edu/tischschoolofthearts-yvesfogelblog/category/physical-computing/
TuanHuanghttps://wp.nyu.edu/tuan/category/pcomp/
GabeWarshawhttps://wp.nyu.edu/gw_itp/category/fall-21/intro-to-pcomp-feddersen-2301/
OliviaYinhttps://wp.nyu.edu/oliviayinjx/category/pcomp/
KristinaYouhttps://kristinayou.com/ITP
YitingZenghttps://yz7720.wixsite.com/website/icm-fall-2021/categories/ipc
YilinZhanghttps://wp.nyu.edu/tischschoolofthearts-yilinanditp/
KeerZhaohttps://kzhao372.wixsite.com/itp-pcom
ZeshuZhuhttp://zeshuzhu.com/index.php/pcomp-blog/

Class Notes

Presentation slides from class 1 (intro), class 2(electricity), and class 3(programming).

Photo of class 3 breadboard showing analog and digital input and output
Photo of class 3 breadboard showing analog and digital input and output

David Rios Fall 2021

Class Times

Wednesdays: 12:20pm – 2:50pm
Room 408, ITP-370 Jay Street 4th FL

Contact

Email: rios@nyu.edu
ITP/IMA Discord : @rios
Office Hours Calendar: Sign Up Here

generator

Present Feedback Guidelines

Class Blogs

Enter Your Blog Links Here Please

Shanshan
Sophia
Honglin
Lauren
Wenxiao
Cat
I-Jon
Xiao
Nana
Senqué
Sharan
Sammy
Divya

Motors and Prototyping

Motors
Prototyping and Organizing

Class 08 SPI I2C

Slides

Class 07

David’s code from class

Class 06

Questions
Sensors
Serial?

Class 03

Slides
Meeting Recording
Access Passcode: RET$%723mn

Class 02

Slides

Class 01

Fantasy Device Ideas

Arduino Reference

Pin out diagram of the Arduino Nano 33 IoT

Danny Rozin Fall 2021

Class Times

Wednesdays, 9:10 AM – 11:40 AM, 370 Jay Street, Room 410
Wednesdays, 3:30 PM – 6:00 PM, 370 Jay Street, Room 409

Contact

Book office hours with me on my calendar. I will schedule regular office hour appointment slots which you can book automatically once the semester starts. You’ll need to sign in with your NYU login to see it.

Feel free to email me at danny.rozin@nyu.edu if you have any questions or things you want to talk about.

Class Blogs

Morning class:

Arthur Jr.,Bruce
Chang,Leia
Goel,Megha
Guang,Kelin
Han,Yuwen
Lee,Kevin
Ngiam,Vivian
Ratanavanh,Spencer
Rong,Luhan
Selvabarathy,Suraj
Sodre,Pedro
Sun,Lindsey
Trebisacci,Tatiana Tash
Xu,Shuchen
Zhou,Peiyu Eva

Afternoon class:

Cappelli,Christina
Hodge,La’Kay
Hu,Meijie
Ji,Ziwei
Ke,Xiaoyu (Rockey)
Li,Tony
Lu,Julia Margaret
Mai,Angel
Oh,Yeseul
Rodriguez Ostia,Lorena
Wang,Lifei
Williams,Maya
Worthington,Addison
Zhang,Yvonne

Aga, Adnan

Week 11 – Loads

AC Loads:

Any AC load can be controlled with Arduino using a relay, including motors, fans, lights, computers,

power switch tail https://www.adafruit.com/products/268 safest and most convenient

Relay https://www.sparkfun.com/products/10924 you need to wire your high voltage through it so be super careful (Relay Tutorial)

AC motors

Attributes: Cheap, strong, medium speed, hard to control speed, hard to reverse.

http://www.mcmaster.com/#ac-motors/=5yytj1gdt8igtyq137

Geared AC motors

Attributes: cheap, slow, very strong, hard to control speed, hard to reverse.

http://www.mcmaster.com/#ac-motors/=zr6bef

DC Motors

Attributes: Cheap , strong, very fast , you can control speed but not angle, reversible

https://www.adafruit.com/products/711

DC fans, DC blowers

DC pumps

Geared DC motors

Attributes:  Very strong, slow , you can control speed but not angle, reversible https://www.servocity.com/html/micro_gearmotorblocks.html

DC motors with encoder

Attributes: Like DC motors but give you to feedback via optical encoder

https://www.servocity.com/html/3-12v_planetary_gear_motors_wi.html

DC motors from Cars

Car retractable antena motor

Car wipers motor

Car windows motor

Car door lock actuator

Stepper motor

Good video explaining stepper motors

Attributes: medium speed, control speed, position, reversibleG

https://www.adafruit.com/products/324

Geared stepper motor

Attributes: slow, strong, control speed, position, reversible

https://www.adafruit.com/products/918

Automotive gauge stepper motor (cluster)

Attributes: very light, weak, cheap , Can work directly from Arduino with no transistors or anything.

on amazon

video of inside

Servo

Attributes: slow, strong, control speed, position, reversible, 180 degrees , super easy to control

https://www.adafruit.com/products/155

More servos – https://www.servocity.com/html/servos___accessories.html

Continuous rotation 360 degree servo

Attributes: slow, strong, control speed, reversible, super easy to control

https://www.adafruit.com/products/154

Convert servo to continuous motion

Linear actuators

Attributes: Linear, limited stroke, expensive, control like DC motor, some have potentiometer feedback
https://www.servocity.com/html/12v_linear_actuators.html

Stepper motor linear actuator

Solenoids

Attributes: Super fast, super short stroke, momentary

https://www.sparkfun.com/products/11015

Solenoid valves

Solenoid locks

Mechanical linkages:

Hubs – https://www.servocity.com/html/hubs__couplers___adaptors.html

couplers – https://www.servocity.com/couplers/

gears – https://www.servocity.com/html/pinion_gears.html

chains / sprockets – https://www.servocity.com/html/sprockets___chain.html

Belts / pulleys  –timing belts, O Ring pulleys, cable pulleys

Power supplies:

https://www.sparkfun.com/categories/307

computer power supplies, how to use computer power supplies

How to tell the capabilities of computer power supply

Wires

Wire gauge chart per amp 

Wire gauge chart diameter

multiconductor wire

Project 3 BOMs

Week 9 – more communications

Some more Asynchronous serial:

Asynchronous = UART

Multiple UART Arduinos

Adding Software Serial to Arduino

For long distance or many nodes – RS485

MIDI, Control sound and synthesizers from Arduino:

DMX, Control lighting and other theatrical and home automation:

https://www.tindie.com/products/Conceptinetics/25kv-isolated-dmx-512-shield-for-arduino-rdm-capable-r2/?pt=full_prod_search

Synchronous serial:

compare synchronous and asynchronous

Compare I2C and SPI

SPI

SPI schematic

https://www.arduino.cc/en/Reference/SPI

SPI Potentiometer lab

I2C

https://www.arduino.cc/en/Reference/Wire

I2C infrared temperature sensor lab

Shifting :

https://www.arduino.cc/en/Reference/ShiftOutTutorial

https://www.arduino.cc/en/Reference/ShiftIn
http://www.instructables.com/id/Multiplexing-with-Arduino-and-the-74HC595/?ALLSTEPS
Row – Column schematic

Another Multiplexer (not serial, analog)

http://playground.arduino.cc/Learning/4051

Project 2

Morning:

1-Chang,Leia with Ratanavanh,Spencer , with Arthur Jr.,Bruce
2-Goel,Megha  with Trebisacci,Tatiana Tash
3-Guang,Kelin with  Zhou,Peiyu Eva
4-Rong,Luhan  with Xu,Shuchen with Han,Yuwen
5-Sodre,Pedro with Sun,Lindsey with  with Ngiam,Vivian
6-Lee,Kevin with with Selvabarathy,Suraj

Afternoon:

1-Hodge,La’Kay
2-Hu,Meijie
3-Ji,Ziwei
4-Ke,Xiaoyu (Rockey)  with Li,Tony
5-Lu,Julia Margaret
6-Oh,Yeseul
7-Wang,Lifei  with Zhang,Yvonne
8-Williams,Maya
9-Worthington,Addison  with Aga, Adnan
10-Cappelli,Christina
11- Mai,Angel with Rodriguez Ostia,Lorena

Week 9 project2 workshop:

  • 10:40 – 11:00 :
    • 1 <-> 2
    • 3 <-> 4
    • 5 <-> 6
  • 11:00-11:20 :
    • 1 <-> 4
    • 3 <-> 6
    • 5 <-> 2
  • 11:20-11:40 :
    • 1 <-> 6
    • 3 <-> 2
    • 5 <-> 4
  • 5:00 – 5:20 :
    • 1 <-> 2
    • 3 <-> 4
    • 5 <-> 6
    • 7 <-> 8
    • 9 <-> 10 <-> 11
  • 5:20 – 5:40 :
    • 1 <-> 4
    • 3 <-> 6 <-> 8
    • 5 <-> 11
    • 7 <-> 10
    • 9 <-> 2
  • 5:40 – 6:00 :
    • 1 <-> 6
    • 3 <-> 11
    • 5 <-> 10 <-> 4
    • 7 <-> 2
    • 9 <-> 8

Class 7

diagram showing the path of a serial byte from Arduino to P5

Shawn’s p5.serialcontrol app

ARDUINO -> P5

P5 and Arduino sketches for sending 1 byte binary from Arduino to P5

P5 and Arduino sketches for sending 1 value in ascii from Arduino to P5

P5 -> ARDUINO

P5 and Arduino sketches for sending 1 byte binary from P5 to Arduino

P5 and Arduino sketches for sending 1 value in ascii from P5 to Arduino

P5 and Arduino sketches for sending 1 byte binary P5 to Arduino with capture

MULTIPLE VALUES

P5 and Arduino sketches for sending multiple values in ascii from  Arduino to P5

P5 and Arduino sketches for sending multiple values in ascii from P5 to Arduino
P5 and Arduino sketches for sending multiple values in ascii from P5 to Arduino with parseInt()

DUPLEX (TWO WAY) SERIAL COMMUNICATIONS (ARDUINO <->P5)

P5 and Arduino sketches for sending 3 values in ascii from Arduino to P5 with handshake

P5 and Arduino sketches for sending 3 values in ascii from Arduino to P5 with handshake with serial port selector menu

Project 1 teams

Morning:

  • “Bruce Arthur”
  • “Kelin Guang”, “Peiyu Eva Zhou”
  • “Leia Chang”
  • “Spencer Ratanavanh”
  • “Pedro Sodre” , “Vivian Ngiam” , “Lindsey Sun” ,
  • “Shuchen Xu” ,  “Luhan Rong” , “Yuwen Han”
  • “Suraj Selvabarathy” , “Kevin Lee”
  • “Tatiana Trebisacci” ,  “Megha Goel”,

Afternoon:

  • “Christina Cappelli”>, “Angel Mai”
  • “Julia Lu”,”Tony Li”
  • “Xiaoyu (Rockey) Ke” ,”Yvonne Zhang” ,
  • “Lorena Rodriguez Ostia” ,  “La’Kay Hodge” ,
  • “Maya Williams” ,
  • “Meijie Hu” ,   “Lifei Wang”,
  • “Addison Worthington” “Adnan Aga” ,
  • “Yeseul Oh” ,
  •  “Ziwei Ji”

Class 3

Second class:

water metaphor sometimes helps explain the three components of electricity
water metaphor sometimes helps explain the three components of electricity

Hight of water reservoir = Potential = volts = v
Narrowness of pipe = Resistance = ohms = R
The resulting flow of water= Current = Amps = I

Fritzing github (free?), or buy
Arduino Nano 33 IOT page and download Fritzing part

How to Use a Breadboard and Build a LED Circuit
Breadboard connections
Arduino Nano 33 IoT board with USB connector facing the top
Arduino Nano 33 IOT pinout

How The class will run:

The most valuable thing we can do when we are in person or online in a class meeting together is to discuss and practice the subject that you’re learning. Any “lecture material” is on this site in video or written form, and assigned for the weeks where we will discuss it. I will expect that you’ve done the readings or watched the videos and tried the lab exercises assigned in advance of each class, and are coming to the class meetings with questions. Class meetings will be mainly discussions and shared demonstrations or experiments, not lectures. Use class time to get me or your classmates to clarify things you didn’t understand from the assigned material.

It’s okay if you couldn’t get a lab exercise or a project to work. When that happens, try to debug it, explain what you did in your blog, and come to class prepared to talk about the details and ask specific questions. Pay attention to your classmates’ work and their questions; quite often, they’ll be asking the same thing as you.

First class

slides about interaction

my work

Fantasy Device – As a class, we’ll make a list of fantasy devices; things that don’t exist, but that we wish did. For today, we’ll ignore technical feasibility and concentrate on how you’d operate these devices if they did exist. You’ll be divided into groups of 3. Pick a fantasy device from the list. Design a control interface for this device and demonstrate it in­ class.

It is sometimes useful to think in terms of WH questions and try to answer them in your design:

WHO? WHEN? WHERE? WHAT?

Lets take an example, A popular fantasy device in movies and books is a time machine. In movies and TV, the production has to imagine what these devices look like and how they are controlled:

“Back to the future” movie:

Time Machine control panel
Time Machine control panel
Time Machine in "Back to the future" movie
Time Machine in “Back to the future” movie

So thinking about the WH questions:

WHAT is it ? – A car.
WHO gets to go ? – anyone in the car.
WHERE does it take you ? Set in the control panel.
WHEN does it activate ? When the car reaches 80 MPS.

Stewie from “Family Guy” time machine:

Stewey's time machine
Stewie’s time machine
Stewey's time machine cabinet
Stewey’s time machine cabinet
Stewey's time machine control panel
Stewie’s time machine control panel

Here the designers decided the machine is a cabinet, but they also added a disc that goes with Stewie and is used to get back:

WHAT? – A cabinet and a disc
WHO gets to go? Anyone in the cabinet or on the disc.
WHEN does it activate ? Not sure, but there is a big red button…
WHERE does it take you? There is a control panel, note that the control seems to be relative, so you can go forwards and backwards, not absolute like in “Back to the future”

“Spongebob Squarepants” time machine:

https://www.youtube.com/watch?v=mJZXCBLbNkU
video of Spongebob Squarepants episode – Time machine at 2:20

Here the machine is the freezer from the Crusty Crab, note that the whole freezer travels through time and it is ripped from it’s surroundings

WHAT is it ? A freezer.
WHO gets to go ? Whoever is in the freezer.
WHERE does it go? Hard to say, looks like two levers and no display.
WHEN does it activate? Hard to say, but it has some buttons.

Tom Igoe Fall 2021

Class Times

  • Section 3: 09:10 AM – 11:40 AM Wednesday. 370 Jay Street, Room 409
  • Section 7: 3:30 PM – 6:00 PM Wednesday. 370 Jay Street, Room 408

Contacting Me

To book office hours, check my calendar. You’ll need to sign in with your NYU login to see it. I will schedule regular office hour appointment slots which you can book automatically once the semester starts.

My email: tom.igoe@nyu.edu

Outside of office hours, I am generally working from 9 AM to 6 PM NYC time Monday-Friday. I’m usually on campus Tues – Thurs, and work at home other days. If you contact me outside of working hours, I’ll try to get back to you as soon as my next working time allows.

How Class Will Be Run

The most valuable thing we can do when we are in person or online in a class meeting together is to discuss and practice the subject that you’re learning. Any “lecture material” is on this site in video or written form, and assigned for the weeks where we will discuss it. I will expect that you’ve done the readings or watched the videos and tried the lab exercises assigned in advance of each class, and are coming to the class meetings with questions. Class meetings will be mainly discussions and shared demonstrations or experiments, not lectures. Use class time to get me or your classmates to clarify things you didn’t understand from the assigned material.

It’s okay if you couldn’t get a lab exercise or a project to work. When that happens, try to debug it, explain what you did in your blog, and come to class prepared to talk about the details and ask specific questions. Pay attention to your classmates’ work and their questions; quite often, they’ll be asking the same thing as you.

I will share any tools that we find useful on the Resources section of this site.

Useful links

Pin out for the Nano 33 IoT

A Few Good Reads

These are not on the main reading list or the Related Books and Articles page, but I think they’re excellent reads if you’re thinking about physical interface design.

  • Don Norman on the Paradox of Wearable Technologies, specifically heads-up displays like Google Glass.
  • Anil Dash on why There Is No “Technology Industry”
  • Bret Victor on Doug Engelbart and why Engelbart matters. A lovely tribute.
  • Ben Rubin’s redesign of the sounds in the NYC subway, circa 1998. In these, Ben looked at the sounds that are used to cue users of the subway and noted their limitations, then redesigned them to make them more understandable and useful. Video 1 and video 2 show the whole interaction.  Thanks to Alden Jones for finding them again.
  • Brenda Laurel’s Computers as Theatre, 2nd edition (NYU Library permalink). I first read this book in about 1993. It had a big impact on me, as I was working in theatre at the time, and it gave me a thorough, yet well explained, introduction to what computer interaction is all about, using theatre practice as an metaphor to explain it. Laurel stresses how it’s the action that is key to what we make, and the physical devices, controls, etc. set the stage for that. The 2nd edition, released in 2014, is a great update to a classic. Her writing is appropriately scholarly in its reference to the thinking of others in the field, yet very conversational, making it clearer than most theoretical writing.

Class Blogs

Section 3: 09:10 AM – 11:40 AM

Section 7: 3:30 PM – 6:00 PM

6 Oct 2021

A quick example of how to run three things at three different rates:

int ledInterval = 3000;
int servoInterval = 20;

long lastLEDChange = 0;
long lastServoChange = 0;
int lastButtonState = 0;
int LED = 3;

void setup() {
  Serial.begin(9600);
  pinMode (2, INPUT);
  pinMode(LED, OUTPUT);
}

void loop() {
  // read a button, see if it has changed
  int buttonState = digitalRead(2);
  if (buttonState != lastButtonState) {
    // change the LED
    ledState = !ledState;
    lastButtonState = buttonState;
  }
  
  // blink an LED every three seconds
  if (millis() - lastLEDChange > ledInterval) {
    digitalWrite(LED, ledState);
    lastLEDChange = millis();
  }

  // update the servo's angle only one degree every second:
  if (millis() - lastAngleChange > angleInterval) {
    // update the angle:
    if (angle > minAngle && angle < maxAngle) {
      angle++;
    } else {
      angle = 0;
    }
  }

  // update a servo motor every 20 seconds no matter what:
  if (millis() - lastServoChange > servoInterval) {
    // move the servo
    servo.write(pin, angle);
    lastServoChange = millis();
  }
}

13 Oct 2021

Mentioned in the morning class:

  • HTML for Conndev – a repository of materials for my Connected Devices class
  • Displays for Microcontrollers – another repository from the Connected Devices class
    • Lab: OLED Display – a lab on this site showing how to connect a small screen (screens available in ER checkout)
  • Clock Club – a repository of clock and time-related projects
  • Lab: Rotary Encoder – A lab on this site showing how to use a rotary encoder

20 Oct 2021

/*
  Serial port selector
  uses DOM elements to make a serial port selector
  
  created 20 Oct 2020
  by Tom Igoe
*/

// variable to hold an instance of the serialport library:
let serial;
// HTML Select option object:
let portSelector;

let receivedData;
var vesper;

function setup() {
  createCanvas(320, 240);
  serial = new p5.SerialPort(); // new instance of the serialport library
  serial.on("list", printList); // callback function for serialport list event
  serial.on("data", serialEvent); // callback function for serialport data event
  serial.on("open", portOpen);
  serial.list(); // list the serial ports
}

function draw() {
  background(255);
  fill(color(0, 0, 0, vesper));
  text("Word", width / 2, height / 2);
  if (vesper > 0) {
    vesper--;
    console.log("faded");
  }
}
// make a serial port selector object:
function printList(portList) {
  // create a select object:
  portSelector = createSelect();
  portSelector.position(10, 10);
  // portList is an array of serial port names
  for (var i = 0; i < portList.length; i++) {
    // add this port name to the select object:
    portSelector.option(portList[i]);
  }
  // set an event listener for when the port is changed:
  portSelector.changed(mySelectEvent);
}

function mySelectEvent() {
  let item = portSelector.value();
  // give it an extra property for hiding later:
  portSelector.visible = true;
  // if there's a port open, close it:
  if (serial.serialport != null) {
    serial.close();
  }
  // open the new port:
  serial.open(item);
}

function portOpen() {
  console.log("The port is open, people! Rejoice!");
}

function keyPressed() {
  serial.write(key);
  // if port selector is visible hide, else show:
  if (portSelector) {
    if (portSelector.visible) {
      portSelector.hide();
      portSelector.visible = false;
    } else {
      portSelector.show();
      portSelector.visible = true;
    }
  }
}

function serialEvent() {
  console.log("got a new value");
  var input = serial.read();
  if (input) {
    vesper = input;
  }
}

// the setup routine runs once when you press reset:
void setup() {
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
  pinMode(LED_BUILTIN, OUTPUT);
}

// the loop routine runs over and over again forever:
void loop() {
  int sensor = analogRead(A0) / 4;
  if (sensor > 200) {
    Serial.write(sensor);
  }
}

27 Oct 2021

The MAX30105 Sensor is the sensor I showed in the afternoon class today. Designed as a smoke detector particle sensor, it does a great job as a pulse oximetry sensor. Here is the Sparkfun breakout board for it I have on hand, and here is a Pimoroni version I have tried as well. There’s also a more expensive Sparkfun board with an additional sensor which I have not tried, and this one, with big solder pads. . It’s a useful sensor for those interested in getting heart rate, and can give you more than just the raw readings of the sensor. I use the Sparkfun MAX3010x library with it.

David Rios Section Fall 2020

Class Info

Fridays, 9:00 AM – 11:30 AM NYC time (GMT-4, until Nov. 1, then GMT-5)
Instructor: David Rios
Contact: dar436@nyu.edu , @rios on ITP/IMA Discord
Office Hours link

Contact David

Office hours 

Click here for office hours and to know my general schedule for the week. You’ll need to sign in with your NYU login to see it. I will schedule regular office hour appointment slots which you can book automatically once the semester starts. If you’d like to schedule a time to meet that is not on my calendar, email me well in advance of when you’d like to meet and I’d be happy to try to accommodate your request.

Email

Outside of office hours, I am generally available via email. I’ll do my best to respond to emails within 24 hours of receiving it.

Discord

I use the ITP/IMA discord and can communicate there as well. If you @ me I’ll do my best to respond within 24 hours

How Class Will Be Run

The most valuable thing we can do when we are in person or online in a class meeting together is to discuss and practice the subject that you’re learning. The class is “flipped” meaning, any “lecture material” is on this site in video or written form, and assigned for the weeks where we will discuss it. I will expect that you’ve done the readings or watched the videos and tried the lab exercises assigned in advance of each class, and are coming to the class meetings with questions. Class meetings will be mainly discussions and shared demonstrations or experiments, not lectures. Use class time to get me or your classmates to clarify things you didn’t understand from the assigned material.

Assignments are due 24 hours in advance of the next class, and should be submitted as documentation posts on your blogs. It’s okay if you couldn’t get a lab exercise or a project to work. When that happens, try to debug it, explain what you did in your blog, and come to class prepared to talk about the details and ask specific questions. Pay attention to your classmates’ work and their questions; quite often, they’ll be asking the same thing as you.

When class meetings are conducted online, I might record the Zoom meetings, if it is useful to the class and if all students consent. We will pause the recording when the discussion needs more privacy, and I will share the recording links only with our class, and set them to expire after the semester. If a question comes up in class or in online office hour meetings that is broadly useful, I may ask you if we can record the answer for others. Your comfort and consent are important, however, so please let me know if you have concerns.

Class Tools

Since this class will be meeting remotely via Zoom this semester, there are a few other tools I’ll be using that you might want to get familiar with:

NYU Google App suite – you’ll need to know these for most of NYU interaction. You have access to the whole suite through your NYU account. Search for NYU Drive. We’ll use mail, calendar, docs, sheets, drive, and slides.

Zoom – Check out Zoom tutorials and resources by NYU.

Student Blogs

Please Enter your name and Blog link on this sheet

  • A
  • B
  • C
  • D

Useful Links

Arduino Nano 33 IoT board with USB connector facing the top
Nano 33 IOT

Yeseul Song Fall 2019

This page will be updated occasionally.

Class Times

Fall 2019

Friday 9:00am – 11:30am |  Room 410

Contact

yeseul.song@nyu.edu
Office Hours Calendar Link

Class Date Exceptions

There is no class during the Thanksgiving break (November 27-29, 2019).

Useful links 

A Few Good Reads

Class Notes

  • Class 1(September 4, 2019): Lecture slides from the class
    • Topics: physical computing, interaction, class structures
    • You can view the slides when you log-in with your NYU account. Please use them only for your own reference and don’t distribute them without my permission.
  • Class 2 (September 11, 2019)
    • Figure 1 and Figure 2 show the LED circuit I demonstrated during the class, which you can use for your LED+switch circuit project. You don’t need to use a breadboard for this assignment unless you want to, but it should be useful for prototyping at least. The value of the resistor in the images is 220 ohm, which is the smallest value you have in your kit. If you want the LED to be brighter, you can use a 80~100 ohm resistor instead. You can break any point of the circuit and insert your switch that will enable you to turn on and off the LED.

      LED circuit schematic: the power (3.3v) on the top is connected to a red LED through a 220 ohm resistor. The LED is connected to the ground.
      Figure 1. LED circuit schematic

      Arduino nano 33's 3.3v pin is connected to the + line of a breadboard. The ground pin is connected to the - line of the breadboard. An LED's cathode is connected to the ground line of the breadboard. The anode is connected to a 220 ohm resistor that is connected to the + line of the breadboard.
      Figure 2. LED circuit powered by arduino nano 33
  • Class 3 (September 18, 2019)
    • Arduino Nano 33 IoT pinouts

      An annotated image of Arduino Nano IoT 33 pinouts. The annotations surrounding the image show names of each pin. From the top left to right: D12, D11, D10, D9, D8, D7, D6, D5, D4, D3, D2, GND, RST, RX0, TX1. From bottom left to right: D13, 3.3V, REF, A0, A1, A2, A3, A4, A5, A6, A7, VUSB, RST, GND, VIN
      Figure 3. Arduino nano iot 33 pinouts
    • How to Solder by Andy Sigler
  • Class 4 (September 25, 2019)
  • Class 5 (October 2, 2019)
  • Class 6 (October 9, 2019)
    • Serial Communication: Arduino to p5.js (see Table 2)
      • When you send a stream of data that is between 0 and 255, you can simply use Serial.write() from Arduino and serial.read() from p5.js to send and receive 1 byte at a time. No parsing involved.
      • When you send numbers that is out of range of 0-255 or characters, you need to package each data by putting each data on each line–to do that, use Serial.println() from Arduino. To unpack the data, use serial.readLine() from p5.js. To use it as a number, use Number() function on p5.js.
        Data to Send
        A single value
        within 0-255
        (< 2^8 = 1 byte)
        Larger numbers & characters in Ascii Table,
        Multiple values
        Send as:
        Binary
        Ascii
        Arduino ->
        Serial.write()
        Serial.println()
        -> p5.js
        serial.read()
        serial.readLine()
        =readStringUntil('\r\n')

        Table 2. Serial Communication: Arduino to p5.js
        Notes about sending Ascii data: *Using Serial.println() on Arduino and serial.readLine() on p5.js is one of many different ways of sending Ascii data from Arduino to p5.js with serial communication. *If you want to use the value as a numeric value not a string, convert the value into number by using Number().
      • Codes from the in-class lab: see your email
  • Class 7 (October 16, 2019)
    • Serial Communication: p5.js to Arduino (see Table 3)
      • “The serial.write() function is versatile. If you give it a variable or literal that’s a numeric data type, it will send it as its raw binary value. If you give it a string, however, it will send out that ASCII string” (quoted from Lab: Serial output from p5.js
        Number of Bytes
        1 Byte
        Multi Bytes
        Data to Send
        A single number < 255
        A single character
        A single number > 255, multiple values
        Send as:
        Binary
        Ascii
        Ascii
        p5.js ->
        serial.write(integer)
        serial.write(string)
        serial.write
        (valueToSend + ",")
        -> Arduino
        Serial.read()
        Serial.parseInt()

        Table 3. Serial Communication: p5.js to Arduino
      • Codes from the in-class lab: see your email

       

Class Blogs

Danny Rozin Fall 2019

Class Times

Wednesday 9:00-11:30

Wednesday 3:20-5:50

Contact

email address – danny.rozin@nyu.edu
calendar and office hour link – My office hours calendar

Class Blogs:

Morning :

Bomani,Neta
Cabalquinto,Nicole D
Catto,Fernando Gregório
Chen,Na
Chestnut Vanessa
Fowler,Aidan L
Fries,Daniel W
Jain,Aditya
Kang,Wei
Kumar,Nikhil
Li,Zeyao
Liu,Xiaoyun
Mahave,Pablo
Ouyang,Leo
Politan,Will
Wang,Tianjun 

Afternoon:

Costas,Rachel C
Donsrichan,Suphitcha (Jan)
Garcia Cadiz,Themis A
Han,Katie
Heinrich,Suzanne (Tundi)
Jattuporn,Atchareeya (Name)
Roh,Sue
Rungsawang,Tina
Sheng,Zhoujian
Sinkowski,Dawn M
Sun,Pei Yu (Michelle)
Truxillo,Marcel Oliver-Rose
Wang,Haoyu (Henry)
Shirley Wu
Zhang,Tingyu
Zhou,Jingyi (Rebecca) 

First Week

slides about interaction

my work

 

Week 6 – Serial

Shawn’s p5.serialcontrol app

Arduino -> P5

P5 and Arduino sketches for sending 1 byte binary from Arduino to P5

P5 and Arduino sketches for sending 1 value in ascii from Arduino to P5

P5 -> Arduino

P5 and Arduino sketches for sending 1 byte binary from P5 to Arduino

P5 and Arduino sketches for sending 1 value in ascii from P5 to Arduino

Multiple values

P5 and Arduino sketches for sending multiple values in ascii from  Arduino to P5

P5 and Arduino sketches for sending multiple values in ascii from P5 to Arduino
P5 and Arduino sketches for sending multiple values in ascii from P5 to Arduino with parseInt()

Duplex (two way) serial communications (arduino <->P5)

For a more robust way of sending multiple values and also sending duplex look at this lab

Week 9 

Tentative final project schedule :

Concept – week 1 (Week 10 of semester)

To do:Narrow your ideas, make playtesting pototype, make BOM, Schedule, space and interaction diagrams

Interaction Design / play test – week 2 (Week 11 of semester)

To do: Reevaluate idea and interaction after playtesting, adjust BOM and diagrams accordingly, order stuff, learn required skills (special sensors and such)

 Implementation -week 4 ( Week 12 of semester)

To do: Build functional prototype (maybe not 100% fabricated exterior)

Usability testing week 5 (Week 13)

To do: Reevaluate usability after usability test, make changes, finish prototype including fabrication

Final presentation week 6 (Week 14)

To do: Celebrate! (and document)

 

Week 9 – Loads

AC Loads:

Any AC load can be controlled with Arduino using a relay, including motors, fans, lights, computers,

power switch tail https://www.adafruit.com/products/268 safest and most convenient

Relay https://www.sparkfun.com/products/10924 you need to wire your high voltage through it so be super careful

AC motors

Attributes: Cheap, strong, medium speed, hard to control speed, hard to reverse.

http://www.mcmaster.com/#ac-motors/=5yytj1gdt8igtyq137

Geared AC motors

Attributes: cheap, slow, very strong, hard to control speed, hard to reverse.

http://www.mcmaster.com/#ac-motors/=zr6bef

DC Motors

Attributes: Cheap , strong, very fast , you can control speed but not angle, reversible

https://www.adafruit.com/products/711

Geared DC motors

Attributes:  Very strong, slow , you can control speed but not angle, reversible https://www.servocity.com/html/micro_gearmotorblocks.html

DC motors with encoder

Attributes: Like DC motors but give you to feedback via optical encoder

https://www.servocity.com/html/3-12v_planetary_gear_motors_wi.html

Stepper motor

Attributes: medium speed, control speed, position, reversible

https://www.adafruit.com/products/324

Geared stepper motor

Attributes: slow, strong, control speed, position, reversible

https://www.adafruit.com/products/918

Servo

Attributes: slow, strong, control speed, position, reversible, 180 degrees , super easy to control

https://www.adafruit.com/products/155

More servos – https://www.servocity.com/html/servos___accessories.html

Continuous rotation 360 degree servo

Attributes: slow, strong, control speed, reversible, super easy to control

https://www.adafruit.com/products/154

Linear actuators

Attributes: Linear, limited stroke, expensive, control like DC motor, some have potentiometer feedback
https://www.servocity.com/html/12v_linear_actuators.html

Solenoids

Attributes: Super fast, super short stroke, momentary

https://www.sparkfun.com/products/11015

Mechanical linkages:

Hubs – https://www.servocity.com/html/hubs__couplers___adaptors.html

couplers – https://www.servocity.com/html/set_screw_shaft_couplers.html#.VkJ3Tq6rSEI

gears – https://www.servocity.com/html/pinion_gears.html

chains / sprockets – https://www.servocity.com/html/sprockets___chain.html

Belts / pulleys  – https://www.servocity.com/html/pulleys___belts.html

Power supplies:

https://www.sparkfun.com/categories/307

Week 10

BOMs, system diagrams and time tables from previous semesters:

Controlling your resources:

  • Time
  • Money
  • Space

Planning your project:

  • interaction
  • electronics
  • space/ enclosure

 

Sam Levigne RoboCop
Chanwook Min
Some BOMS and diagrams of my (Danny) work

Make breadboard schematics – Fritzing

 

Week 12 – more communications

Some more Asynchronous serial:

Asynchronous = UART

Multiple UART Arduinos

Adding Software Serial to Arduino

For long distance or many nodes – RS485

MIDI, Control sound and synthesizers from Arduino:

https://itp.nyu.edu/physcomp/labs/labs-serial-communication/lab-midi-output-using-an-arduino/

DMX, Control lighting and other theatrical and home automation:

https://www.tindie.com/products/Conceptinetics/25kv-isolated-dmx-512-shield-for-arduino-rdm-capable-r2/?pt=full_prod_search

Synchronous serial:

compare synchronous and asynchronous

Compare I2C and SPI

SPI

SPI schematic

https://www.arduino.cc/en/Reference/SPI

SPI Potentiometer lab

I2C

I2C schematic

https://www.arduino.cc/en/Reference/Wire

I2C infrared temperature sensor lab

Shifting :

https://www.arduino.cc/en/Reference/ShiftOut
Tutorial

https://www.arduino.cc/en/Reference/ShiftIn
http://www.instructables.com/id/Multiplexing-with-Arduino-and-the-74HC595/?ALLSTEPS
Row – Column schematic

Another Multiplexer (not serial, analog)

http://playground.arduino.cc/Learning/4051

 

David Rios Fall 2019

Class Times

Thursdays 12:25pm – 2:55pm, Room 412

Fridays 9am – 11:30am, Room 408

Contact

Email: dar436@nyu.edu
Office Hours: calendar and office hour link

Useful links

Class Notes

Class List

Class Blogs

A Few Good Reads

Jeff Feddersen Fall 2019

Welcome

Welcome! I’m very excited to be teaching Physical Computing again this year. It’s material I love and use a lot. In the past few years there’s been an explosion in tools available to beginners for embedding computation in any imaginable project. It can be a bit overwhelming – electronics! programming! so many boards to choose from! – but this course lays a foundation for you to build amazing things and continue developing creative and technical skills in the future.

Class Times

Thursdays, 9:00-11:30AM, Room 408

Contact

jeff.feddersen@nyu.edu or jfeddersen@gmail.com

Class Date Exceptions

None planned

Office Hours

My office hour calendar

I have calendar slots available to meet in person on Wednesdays and Thursdays, the days I teach. Please sign up at least an hour in advance, as I don’t work at ITP full time and may not stick around if nothing is scheduled.

I am also available by Skype/hangout/chat/email/call etc. almost any time with prior arrangement. I’ve found that video meetings work well for physical computing, so my office hour policy is to make arrangements as needed. Email me and we can set up a time to talk further. On the occasions I can be on the floor outside of class times, I’ll email the class list to let you know.

Useful links

Nano 33 IOT with pin labels
Nano 33 IOT with pin labels (source: arduino forum, user pak)

A note on how to use this site

There’s a lot, lot! of information at itp.nyu.edu/physcomp. Then there’s the whole rest of the internet, starting with Arduino HQ, going on to great sites like learn.adafruit.com and learn.sparkfun.com, not to mention infinite how-tos on YouTube (even Vimeo), data sheets for every component ever made, etc… It can get overwhelming.

With the ITP site, we’ve tried to do two things:

  1. Provide a week-by-week syllabus for the semester that takes you through the physical computing material in a logical progression. Each week has clear tasks, assignments for the following week, and links to labs, write-ups, and videos that support or explain the current material. Follow along here and you’ll be fine.
  2. Provide an organized set of materials covering the core physical computing topics, to serve as a first resource for any questions you may have as you study the subject. These live under the TopicsVideosResources, and Labs tabs. These materials are also linked to from the syllabus, but here they’re organized by subject matter, whereas the week-by-week syllabus is chronological.

Class Documentation

You’ll keep a blog online with documentation of your work for the class. This will include midterm and final documentation, responses to specific prompts in the syllabus, and periodic updates on lab work. While you’re not strictly required to post an update every single week, it is very helpful to post regularly so I can keep track of how you’re doing in the class. If I see an issue come up for multiple students we can make time to address it in the class.

Email me with direct links to your documentation for this class. Note: please set up tags, categories, or whatever so the link goes directly to the documentation specifically for this class, and not every class, or your personal blog, etc.

You’ll know I got your link when it shows up here!

Your Blogs

I’ll add you links here…

Abby Lee
Ben Moll
Christina Dacanay
Chun Song
Daniel Otero Sendas
Lizzy (Elizabeth) Chiappini
Elizabeth Perez
Hanyi Zhang
Julian Mathews
Melissa Powers
Rae (Ruilin) Huang
Sam Krystal
Schuyler DeVos
Shannel Doshi
Simone Salvo
Tianxu Zhou
Caren (Wenqing) Ye
Yiting Liu

Class notes

I’ll post materials from in class here. You can access Google Slides with your NYU account. Presentation material from class is meant to be presented in person by me, so is not necessarily made to stand alone as a reference. It’s included here in case it can be of any use at all.

Class 1 slides (we didn’t get all the way though in class)

Class 3 board shown below. Note that the schematic shows the functional aspects of the circuit, but may differ from the physical layout. This is usually the case – schematics are not arranged the same as physical circuits. The colored boxes highlight which part of the schematic goes with which part of the board.

Arduino on breadboard, with digital and analog input and output circuits
Arduino on breadboard, with digital and analog input and output circuits and equivalent schematic. The microcontroller provides 3.3V from pin 2 to the breadboard. It connects to the ground bus on the breadboard with pins 14 and 19. Digital pin 2 connects to a resistor and LED in series to ground, showing digital output. Digital pin 3 connects to a switch and 10K resistor to ground. The other pole of the switch connects to 3.3V. Pin A7 connects to the wiper of a potentiometer, which has it’s A and B pins connected to 3.3V and ground. Two additional analog input circuits are also on the breadboard, but not connected to the Arduino. One has a phototransistor connected to 3.3V in series with a 10K resistor to ground, and the second has an LDR from 3.3V in series with a 10K resistor to ground. Either could be used as an analog input using a connection between the series parts.

Class 4 board

Class 4 Breadboard, extending circuit from class 3 above, adding servo, RGB led, and speaker.
Class 4 Breadboard, extending circuit from class 3 above, adding servo, RGB led, and speaker.

Class 6

Some midterm examples from last year’s class:

Qice and Fenfen – Caged? Great interaction, totally physical.

Lydia and SJ – Interaction demonstrating computer to a physical device

David and Joseph – Ghost Loofa. Physical controller sending input to computer game:

Two Youtube makers of note:

Mark Rober – engineer who frequently uses Arduino. His dart board code is online, including serial; here he debunks a fake maker project. 

Simone Giertz – often uses Arduino, projects online go from simple to sophisticated and personally meaningful

Serial output of student selelctor
Screen shot of the serial output from the student pair selector.

The student pairs (as text):

Julian and…Caren are partners for the Midterm!
Song and…Ben are partners for the Midterm!
Abby and…Tianxu are partners for the Midterm!
Shannel and…Hanyi are partners for the Midterm!
Rae and…Schuyler are partners for the Midterm!
Lizzy and…Elizabeth are partners for the Midterm!
Christina and…Yiting are partners for the Midterm!
Melissa and…Daniel are partners for the Midterm!
Simone and…Sam are partners for the Midterm!

 

Ann Hamilton’s Armory exhibit the event of a thread was an interactive piece mentioned in class.

TinkerCad is a virtual circuit builder and simulator from Autodesk.