The World Wide Web no longer stops at the edge of your screen. When it comes to products, if it powers up, it talks to another device. This class provides an overview of methods for connecting the physical world to networked applications. We’ll consider what the emerging interaction patterns are, and we’ll develop some of our own as needed. This class can be seen as a narrower and more interaction design-based complement to Understanding Networks. The latter class provides a broader overview of the dynamics of communications networks, while this class focuses specifically on the challenges of connecting embedded devices to each other and to web-based services. Neither class is a prerequisite for the other, however. This class will introduce network connection techniques for devices using microcontrollers like the Nano 33 IoT or MKR series, and other processors running an embedded operating system like the Raspberry Pi.
Prerequisites: Intro to Physical Computing and Intro to Computational Media, or equivalent experience with the topics covered in those classes.
Learning Objectives: Students will gain an understanding of the basics of network programming for devices with limited computing power. They will learn about current protocols for communication between devices and networked servers, and about the rudiments of security for that communication.
Although it’s not required, you may find my book, Making Things Talk 3rd Edition, useful. A lot of what I know about how to connect devices to networks is in this book. This edition contains explanatory material and examples relevant to much of this class. It’s available digitally through the NYU LIbrary’s O’Reilly Safari subscription. As with all library content, you’ll need to use the NYU VPN to access it from home.
Please fill out this questionnaire so I have a better sense of your skills and your interests in this class.
A 14-week breakdown of the class activities can be found on the Schedule page.
For this class, you will have two multi-week assignments. You’ll also have technical reading and short exercises on many of the weeks, much like the lab exercises in Intro to Physical Computing. We’ll take a “flipped” approach, where you read the technical material and try it out, then we discuss your discoveries and questions in the following class. You should blog your progress in the class and document the two projects fully as well. The assignments are detailed on the Assignment page.
You will need some electronic components for this class, and some software. The weekly exercises can be done with materials that you bought from Intro to Physical Computing. In addition, there are many parts available for checkout from the equipment room, for those who can access the floor, and I am happy to lend parts for you to try as well.
For the two larger projects, your parts needs will depend on what you plan do to. Work with me on planning these, in order to minimize your costs. Even these projects need not be complex or expensive, if planned carefully.
Here are the parts used in the various weekly exercises:
- Arduino Nano 33 IoT (Note: we will be using the features particular to this board, such as Bluetooth, WiFi, USB, IMU, and the crypto chip on board, which the Uno and other derivatives do not have)
- Jumper wires
- Human input sensors: pushbuttons, potentiometers, rotary encoders, or joysticks
- Environmental sensors: temperature/humidity, light, air quality, movement, or other
- Hand tools from intro to physical computing
- A display which can be attached to a microcontroller. The simplest and least expensive option is the SSD1306 OLED display, though you may prefer other options depending on what you want to achieve. Review the display notes for options to consider.
- Github account. You might find the Github desktop app useful as well.
- Virtual Private Server or glitch.com account. Or both.
- node.js on your personal computer
- Programming text editor such as Visual Studio Code
- Arduino IDE version 1.8.13 or later (you can use the Pro IDE or the CLI if you’re feeling ambitious).
Do not copy and paste examples in this class. You’ll see many examples of code, circuits, and design, but when it comes time to make your own projects, start with a blank page and write or design it yourself. You’ll internalize any given toolset or library better by using it yourself rather than copying and modifying the work of others.
When you copy or learn from someone else’s code or design, cite it in your documentation and link to it. Maintaining a link to the previous work from which you learn is essential to getting better at your craft.
Build a housing for your projects. Even if it’s a cardboard box with your sensors mounted on the outside and your circuit inside, this allows us to see the interface you intended, and to consider how well we can interact with it. Getting in this habit from day one of a project will help you to think about both the users’ needs and the best controls and components for the job.
Provide feedback on both the local interaction and the network connection on the device itself. Physical devices that rely on an external app or web interface are less effective than those that can be read from their physical appearance and behavior. Even the simplest feedback, such as an LED to tell when a device is successfully connected, can change the effectiveness of a networked device significantly.
Document your class assignments and your progress on your own blog. Besides being a useful record for your portfolio, regular blog posts provide a record your process that you can look back on later to understand how you solved problems you encountered in this class. They also help me to follow your progress through the class.
Blog posts about your production assignments should include:
- A short paragraph describing the project
- Photos and video of the project in action
- System diagram
- Circuit diagram/Schematic
- Links to Source code
- Any construction drawings you made for laser cutting, CNC, etc.
- Citation of all example code or example drawings or documentation that you learned from or used
The most important thing you can do is arrive to each class on time and be prepared to actively participate, with questions, stories of setbacks or successes you encountered in the lab, and interesting material and events related to pcomp you’ve found. Each week, you should put in adequate time to digest and then apply the material. When possible, work with your peers, whether in person or online.
Grading will be based on the following:
- In-class participation. Come with questions and insights, do some background reading in advance of class so you’re ready to join the discussion, listen when others are presenting, give your classmates feedback: 1/3
- Assignments. Attempt each assignment and document it, including what didn’t work, and your questions as to why or why not: 1/3
- Documentation. Keep notes on what you do online, for yourself and others to learn from: 1/3
Showing up on time, engaging in the class discussion, turning in assignments on time, and offering support to your classmates through advice and discussion is a major part of your success in this class.
Although a considerable amount of the class material is available online, you should attend the class meetings whenever possible. This class is a workshop and seminar, not a lecture class. It relies heavily on group discussion and participation in class time. As long as your physical environment and internet bandwidth allow you to, join the online class meetings on-time and participate actively. Class goes best if you join the conversation with respect and consideration for your classmates, and ask questions verbally or in chat during the class. Edutopia has a set of hand signals which can be useful in class as well, which classes can adopt. If you can’t join class meetings in this way, please let your instructor know in advance so we can plan accordingly. We will do everything we can to accommodate students, but we need to know in advance in order to do so.
If you’re going to be late or absent, please email your instructor in advance. If you have an emergency, please let your instructor know as soon as you can.
There are a number of articles to read throughout the semester, to inspire class discussion. Though there is no specific assignment on them, please come to class having read the material assigned for that week, and prepared with questions, ideas, and opinions for discussion.
For production assignments, you’ll be expected to present your project in class on the day that it’s due. If you’re working in a group, all group members should be present, on-time, and should participate equally in the presentation.
The class meetings for Spring 2021 will be held over teleconference, at the scheduled class times. When conditions allow, we will make arrangements for outside-of-class-meeting activities on the ITP floor at 370 Jay St., such as office hours, project reviews, or whatever is deemed safe and appropriate. Attending in-person sessions will be completely optional and do it so only if you feel comfortable and safe about it.
ITP Code of Conduct
As with all activities at ITP and IMA, we’ll be following the ITP/IMA code of conduct. Please consider it as a guide for projects you might make or see in this class, and how we behave with respect to each other in class.
Statement of Academic Integrity
Plagiarism is presenting someone else’s work as though it were your own. More specifically, plagiarism is to present as your own: A sequence of words quoted without quotation marks from another writer or a paraphrased passage from another writer’s work or facts, ideas or images composed by someone else.
Statement of Principle
The core of the educational experience at the Tisch School of the Arts is the creation of original academic and artistic work by students for the critical review of faculty members. It is therefore of the utmost importance that students at all times provide their instructors with an accurate sense of their current abilities and knowledge in order to receive appropriate constructive criticism and advice. Any attempt to evade that essential, transparent transaction between instructor and student through plagiarism or cheating is educationally self-defeating and a grave violation of Tisch School of the Arts community standards. For all the details on plagiarism, please refer to page 10 of the Tisch School of the Arts, Policies and Procedures Handbook, which can be found online at: http://students.tisch.nyu.edu/page/home.html
Statement on Accessibility
Please feel free to make suggestions to your instructor about ways in which this class could become more accessible to you. Academic accommodations are available for students with documented disabilities. Please contact the Moses Center for Students with Disabilities at 212 998-4980 for further information.
Statement on Counseling and Wellness
Your health and safety are a priority at NYU. If you experience any health or mental health issues during this course, we encourage you to utilize the support services of the 24/7 NYU Wellness Exchange 212-443-9999. Also, all students who may require an academic accommodation due to a qualified disability, physical or mental, please register with the Moses Center 212-998-4980. Please let your instructor know if you need help connecting to these resources.