Project

# Title Team Members TA Documents Sponsor
17 Arduino-Powered Network Flow Visualization Toolbox
Bolin Zhang
Jiahao Fang
Yiyang Huang
Ziyuan Chen
design_document2.pdf
design_document3.pdf
proposal1.pdf
proposal2.pdf
Pavel Loskot
## PROJECT DESCRIPTION

Many real-world systems involve flows over networks. Our team aims to build a **modular, reconfigurable hardware emulator** to visualize network flows under capacity constraints on links. Each node can be configured to act as a sink, a source, or a "transfer station" that holds zero flux. This toolset will facilitate the understanding of flow optimization algorithms in a classroom setting.

## SOLUTION OVERVIEW

We use a scalable design where components are easily replaceable to account for network expansion. The emulator should have a central Arduino controller that talks to each node and link to display the capacities and actual flow amounts.

*Tentative: It may be desirable to have a software GUI to display the network alongside the physical model due to space (# LEDs) and protocol (# pins) constraints in each node/link.*

## SOLUTION COMPONENTS

### Subsystem 1: Physical Network Model

- We should build a fully functional physical model where pipes represent network links and the LEDs within show the maximal capacity and real-time flow of "data packets."
- Each node should be configurable as sink, source, or neither ("transfer station") with a user-friendly interface such as buttons or switches.

### Subsystem 2: Software Flow Computer

- We should build an intuitive software interface that allows the user to easily configure nodes (3 modes) and links (capacity) while controlling the LED flow display.
- We should implement a robust and *lightweight* optimization algorithm that efficiently computes network flows on an embedded Arduino board while considering all constraints (node configurations, link capacities).
- Alongside the design process, we should write comprehensive documentation detailing the manuals for software setup, operation, troubleshooting, and our development process.

## CRITERION OF SUCCESS

- The physical model should be modular, i.e., each node has a certain number of "slots" reserved for installing new links (pipes).
- The Arduino software should communicate with all nodes and pipes and update the flows in real-time in response to changes in setup. At the current stage, we aim to serve 4~6 fully connected nodes.
- The algorithm should handle (and report) edge cases such as a network with zero or multiple feasible flows.

## DISTRIBUTION OF WORK

- Ziyuan Chen (ECE) - software developer: maintain the code for flow optimization and Arduino-hardware communication protocol
- Bolin, Jiahao (EE) - hardware developer: handle the physical layout of peripherals (pipes and LEDs), design user interface
- Yiyang Huang (ME) - integration and testing specialist: design the protocol for node configuration and conduct stress tests in edge cases

Cypress Robot Kit

Featured Project

Cypress is looking to develop a robotic kit with the purpose of interesting the maker community in the PSOC and its potential. We will be developing a shield that will attach to a PSoC board that will interface to our motors and sensors. To make the shield, we will design our own PCB that will mount on the PSoC directly. The end product will be a remote controlled rover-like robot (through bluetooth) with sensors to achieve line following and obstacle avoidance.

The modules that we will implement:

- Motor Control: H-bridge and PWM control

- Bluetooth Control: Serial communication with PSoC BLE Module, and phone application

- Line Following System: IR sensors

- Obstacle Avoidance System: Ultrasonic sensor

Cypress wishes to use as many off-the-shelf products as possible in order to achieve a “kit-able” design for hobbyists. Building the robot will be a plug-and-play experience so that users can focus on exploring the capabilities of the PSoC.

Our robot will offer three modes which can be toggled through the app: a line following mode, an obstacle-avoiding mode, and a manual-control mode. In the manual-control mode, one will be able to control the motors with the app. In autonomous modes, the robot will be controlled based off of the input from the sensors.