CS194-5/CS294-100 : Internet of Everyday Things

Spring 2015

Experimental EECS Design Studio

Prof. David E. Culler

Office hours: M 2-3, W 12-1, Th 11-12 in 449 Soda


Piazza forum

Shared docs for student activities

1/21 Organization and Intro [ppt] enrollment questionnaire
1/26 Lab 1 - Embedded Internet Starter Download virtual boxhttps://www.virtualbox.org/wiki/Downloads
Download class VM
Fill out waiver of liability
2/2 Busses and i2c
Lab 2 - Networked things and embedded busses
Mini project 1 - a smart thing
2/9 Lab 3 - Embedded network services discovery
svcd services table
Mini project 2 - linked things MaCaw CSMA Hidden Terminals
bmac - low power listening
trickle - density aware protocol design
2/17 Fan-BLE-svcd-Phone
2/23 PIO and ADCs
Lab 4 - IPv6 and Bluetooth Low Energy (BLE)
BLE+IP services Nespresso Hackathon
3/2 Lab 5 - ADCs and memory mapped IO Phone-Thing-Net with services
3/9 Lab 6 - Hack-a-thing
3/31 Lab 7 - sMAP
4/7 Lab 8 - Project Building Blocks
4/14 Final Project Proposals
Final Projects Poster Folder


Everyday we deal with a myriad of sophisticated devices that have sensors, controllable actions, and intelligence that transforms inputs and intention into action. These devices are the appliances in the kitchen, the gadgets in living room, the lighting, heating, cooling, water, and drainage facilities in the building, the array of thermometers, scales, and health meters, the many forms of recreational equipment, entertainment appliances, furniture, and so on. They are typically stand-alone and fixed function. The intelligence is sometimes digital, often analog or mechanical, but almost invariably hardwired for one purpose. Recently, we have seen several of these things gain network connections, so they can be accessed through our phones and computers, as well as many wearable things. Any yet, they remain largely fixed function, stand-alone, and incomposable.

In this design studio, we are going to literally tear apart everyday appliances, put communication and programmability into their core - allowing them to become programmable, connected, and able to interact with other devices, be integrated with various services, accessible as web objects, reached in proximity over BLE through our phones, and generally composable into larger application ecosystems.

We will also utilize modern networked things and wearables in this Web of Things, along with the phones we carry. The phone presents a fascinating "triple point" connecting to us, to the world and things around us, and to the internet. We will utilize the interesting and unusual things that we re-assemble into scriptable, networked devices to form novel applications that may span the network.

The course will involve elements of embedded systems software, networking, interface design, mobile applications, server integration, web services, hardware design, a bit of mechanical dexterity and lots of creativity in an open-ended design setting. So teams, rather than individuals, will represent the full gamut of skills.

During the first half of the term, the Monday studio session will typically have four intergrated parts: student presentations of work they did in follow-up to the week before, two hands-on development activities, and snippets of lecture presentation in the lab to introduce new concepts and technology. There will be some reading and configuring prep and typically an exploratory follow-on. The Wednesday discussion section will provide a focused discussion around both the lab and related publications. The second half will transition into a network of group projects that form a class-wide project expedition, building on the technology and things of the first half.

The early part of the term will utilize the most recent networked embedded mote platform, Storm, its arduino-conformant carrier, Fire Storm, a TinyOS 2.0 embedded ipv6 kernel, and a LUA application tier, to develop our skill set, toolbox, and design ideas. We will also utilize recent BLE tags and its associated GATT communication framework, a family of commercial networked things in a RESTfull web services setting, and develop a base Android environment to have all the tiers at our displosal. We will build concept prototypes by reverse-engineering appliances, networking them and web-enabling the result. These prototypes will provide the basis for use-case studies and engineering analysis. We will draw upon recent work in Software Defined Buildings, including the sMAP (simple Monitoring and Actuation Profile) and openBAS instantiation of a Building Operating System as a starting point in developing discovery, syndication, and integration concepts. We will then build tailored hardware, embedded system software, protocols, services and web applications to create a family of programmable, networked Everyday Things and novel applications on ensembles of such things.

The 194 studio is oriented to juniors and seniors with design and systems experience. Its 294 companion is oriented to gradute students with this experience and for whom the emerging Web of Things is enabling to their research.

Enrollment will be limited to a total of 30 people, forming 6-7 teams teams of about four people each with complementary skills and interests. Selection is based on the enrollment survey questionaire and possibly interviews. Teams will work closely with the instructors in all aspects of design, analysis and implementation.

Course meetings will be one 3-hour lab and a 1-hour discussion.


Network embedded device resources

Open Building Automation over web of things

Schedule (to evolve)

Old Tutorials


Old Resources