Project lead: Dr. Chet Udell

Project Loom & The Internet of Things (IoT)




Cisco Systems estimates that by 2020, more than 250 things will connect to the Internet each second with 50 billion total devices communicating online (Tillman, 2013). The Internet of Things (IoT) is the notion that everyday objects like cars, coffee makers, umbrellas, and traffic lights will collect data and not only communicate over the internet, but autonomously collaborate together to optimize our daily lives. In a world where shoes keep track of how fast and far we run, and watches can detect if its owner has heart trouble and call for help, the implication for internet-enabled distributed sensors for environmental research is truly exciting. Dr. Chet Udell’s work is an extension of this concept focused on optimizing the connections between machines, people, and computing to enhance capabilities and transform how environmental sensing and research is conducted in the face of climate change.

Project Loom Flow.jpg


Loom is a multidisciplinary collaboration of the OPEnS Lab with a team of 20+ Computer Science and Electrical Engineering senior capstone students to create a fully open source, modular, user friendly, sensor/actuator system kit that enables environmental research and conservation communities to overcome significant technical hurdles for creating new environmental, agricultural, and ecological instrumentation to measure, monitor, automate, and understand our world.


  • Design a "plug and play" senor/actuator system

  • Simple enough for K-12 students to use

  • Extensible and programmable enough for engineers to customize

  • Create a wide variety of applications by simply connecting modular components

  • Make the system wireless, low-power, low latency

  • Configure all sensors and actuators on a wireless network using an intuitive graphical user interface

  • Interact with data and control signals on a network in realtime

  • Make data transmitted from local and remote locations available instantly from anywhere around the world


Some of the hardware developed / used by Project Loom

Some of the hardware developed / used by Project Loom

The Loom hardware is documented in future detail on GitHub.


Uses Adafruit Feather family of devices

Wireless Device Communication

Internet Connectivity Options



OTHER devices



A graphical user interface implemented in Max/MSP provides realtime data monitoring and interactivity.

Max code/interfaces can be found on GitHub.


  • Visualizes all sensor data in the network environment

  • Visualizes and controls all actuators in the network environment

  • Enables the user to apply functions, transforms, thresholds, and feature recognition on incoming data

  • Enables the user to create if-this-then-that conditional relationships between the sensors and actuators (e.g. turn on fan when temperature is above 80 degrees Fahrenheit)

Interface patches


Loom provides near real time data logging to Google Sheets via the free PushingBox API. A single hub can facilitate the logging of data from an entire network of data-collecting nodes.



Trevor Swope

Degree: Computer Science

Project Focus: Library Architecture, Firmware, Wireless Communication and Networking Protocols

William Selbie

Degree: Computer Science

Project Focus: Library Architecture, Firmware, Scripting, and Data Logging

Luke Goertzen

Degree: Computer Science and Mathematics

Project Focus: Library Architecture, Firmware, Software Interfaces, and IO Visualization

System Requirements

The System Must Be Able To:

  • Receive and transmit data with physically and wirelessly connected modules

  • Perform actions based on received data

  • The firmware should be modular and configurable via a user interface.

Users Must Be Able To:

  • Select and visualize incoming sensor data on a network via MaxMSP

  • Remotely trigger events on actuators and monitor these actions via a user interface

  • Re-calibrate devices remotely

  • Process or analyze this data for events, thresholds, feature recognition, remap to useful control signals

  • Program the devices with the Arduino development environment by altering or replicating the open-source code on which the firmware is based



Tyler Inberg

Degree: Electrical and Computer Engineering / Innovation Management

Specialty: Product Design / Robotics and Control

Completed Blocks: Project Management, I2C Sensors, and Enclosure

Honors Thesis:  Project Management and Design of a Modularized Internet of Things (IoT) Prototyping System

Kenny Noble

Degree: Electrical and Computer Engineering

Specialty: Software Development and Signals

Completed Blocks: Wireless Connectivity, Processors, & SPI/SDI-12 Sensors

Dongjun Lee

Degree: Electrical and Computer Engineering

Specialty: Integrated Circuits

Completed Blocks: Power Supply, PCB Design, and Actuators

System Requirements

Wireless Requirements:

  • The system will be configurable to transmit data through WiFi at rates of 20 Mbps over short distances up to 30 meters.

  • The system will either create its own WiFi access point to transmit data or will connect to preexisting WiFi access points to transmit data.

  • The system will be configurable to transmit data through Nordic nRF24L01+ (nRF) at transmission rates of 250 Kbps over mid-range distances up to 100 meters using either the Adafruit 32u4 or Adafruit M0 processors.

  • The system will be configurable to transmit data through LoRa over distances up to 0.25mi in dense biomass (forest) to between 2 and 26 kilometers open-air "line-of -sight" using either the Adafruit 32u4 or Adafruit M0 processors.

Peripheral Requirements:

  • The system will measure light (10 lux - 25,000 lux with 5% accuracy or 10 lux whichever is greater), weight (0-11.24 lbf with 5% accuracy or .5lbf whichever is greater), distance (10mm-200mm with 5% accuracy or 2mm whichever is greater), and humidity (50-100rh with 5% accuracy or 10rh whichever is greater) using either the Adafruit 32u4 or Adafruit M0 processors.

  • The system will use (when configured) a gyroscope (-2 to 2 rad/s) and an accelerometer (-10 to 10 m/s^2) sensor to measure 3-axis positioning and acceleration using either the Adafruit 32u4 or Adafruit M0 to process the data

  • The system will use either the Adafruit 32u4 or Adafruit M0 processor to process the code which will position a servo between 0 and 170 degrees.

  • The system will measure apparent dielectric permittivity (1-80) and water temperature (0-37 C) using the sensors to measure the data at the minimum and maximum cases and using either the Adafruit 32u4 or Adafruit M0 to process the data.

Assembly Requirements:

  • The hardware shields will connect together without soldering connections for ease of swapability; 9/10 people can connect and disconnect at least 4 shields by hand, collect data with one shield, and state current measurement conditions in a 10 minute period.


  • The system collect data from 8 I2C devices with the same I2C address.

Other Documentation

Project Specification Document

Project Website


This project is under continual development, with an ever increasing number of sensors, actuators, and other features. For the latest code updates, lists of supported hardware, and documentation, check out the project’s GitHub repository.



Open-Source, IoT, Internet of Things, Remote Sensing, Adafruit, Plug and Play.