(De)BuggyBoard! - Electrical and Computer Engineering at

Transcription

(De)BuggyBoard! - Electrical and Computer Engineering at
(De)BuggyBoard!
Image Source: Aaron & Vivek’s blood, sweat, and tears
Prefatory Information
Team Name: The J.K. Flip Flops
Team Members:
Aaron Reyes
Vivek Nair
Erik Pintar
Justin Frye
Date: May 12, 2015
Project Title: (De)BuggyBoard
1
Abstract
(De)BuggyBoard is an interactive, educational breadboard to ease circuit-building and
debugging, targeted at beginner electrical engineering students. (De)BuggyBoard’s two primary
features are real-time nodal voltage measurements with error checking and an auto-wiring
protoboard.
We begin this report with an overview of the (De)BuggyBoard project concept and continue by
discussing the formal design requirements and high level functional architecture of the product.
We then evaluate currently-existing, similar projects before diving into a full system description
of (De)BuggyBoard.
Since (De)BuggyBoard began as a capstone design project at Carnegie Mellon (for 18-549), we
also graph the project schedule for the spring 2015 semester, outline its budget within the
context of the course, delegate team member responsibilities, and consider risks of the project
within the course context.
We conclude with lessons we learned working on (De)BuggyBoard in 18-549 and a brief list of
decisions we could have made differently to improve project results. Finally, we outline future
features we can add to (De)BuggyBoard to develop it into a marketable product.
(De)BuggyBoard represents significant development in introductory circuits education.
2
Table of Contents
Prefatory Information
Abstract
Table of Contents
Project Description
Design Requirements
Hardware
Software
Functional Architecture
Design Trade Studies
System Description
Hardware Architecture Overview
Breadboard and LEDs
Routing Matrix
Full HW Diagram
Software Architecture
Project Management
Schedule
Budget
Team Member Responsibilities
Risk Management
Schedule
Resources (Personnel and Budget)
Related Work
Conclusions
Lessons Learned
What We Would Do Differently
Future Work
References
Appendix: Budget
3
Project Description
Ever been frustrated trying to make a circuit on a breadboard? The (De)BuggyBoard is
here to ease that frustration.
(De)BuggyBoard is an interactive, educational breadboard comprising of hardware and
software components. Students design the circuit they want to build on a user interface. Then,
as they build it on the attached breadboard, their circuit design will sync with the software to
provide real-time information about their circuit. The student can see what voltages are at each
node, connect nodes without wires via the autowiring functionality, and most importantly notice
when something goes awry.
The primary purpose of (De)BuggyBoard is to take out the frustration and slowness of
building an analog circuit by hand, cutting wires, creating a mess of connections, and tediously
testing each component with a multimeter when things go wrong. Rather, with (De)BuggyBoard,
you work clearly from a schematic, and have LEDs giving error feedback. Then overlayed on
your software design as you build, the physical circuit’s information is constantly displayed and
updated, visible at a glance.
This project is the future of introductory circuits education.
This is (De)BuggyBoard.
Design Requirements
Below we list the hardware and software requirements for our design.
Hardware
●
●
Explicit Requirements
○ Measure voltage at each node of a breadboard
○ Relay voltage data to software
○ Color each row on the breadboard in real-time with status LED
Implicit Requirements
○ Integrate specific circuit components
■ Voltage sources
■ Resistors
■ Capacitors
■ Inductors
■ Diodes
○ Provide mechanism for controlling each pin’s LED independently
4
●
Cool Features / Stretch Goals
○ Auto-wire breadboard based on circuit schematic (use crosspoint switches)
Software
●
●
●
Explicit Requirements
○ Allow users to diagram symbolic circuits
○ Allow user to place and route circuit components onto virtual breadboard
○ Provide real-time feedback in software tool based on physical circuit
Implicit Requirements
○ Error check symbolic circuit diagram
○ Error check breadboard diagram
○ Solve for expected nodal voltages of symbolic and breadboard circuit diagrams
Cool Features
○ Allow user to see feedback from the physical circuit on a familiar looking
symbolic circuit diagram. Auto-updating labels of the physical circuit’s voltages.
Functional Architecture
The figure below overviews the major functional components of the (De)BuggyBoard system.
There are three primary stages of user interaction with (De)BuggyBoard, and user-system
interactions in each stage transfer information, energy, or material:
1. Circuit Diagramming - Users draw their circuit schematic (information) in the
(De)BuggyBoard circuit diagram tool.
The system generates error feedback
(information) for users to correct basic circuit blunders.
5
2. Routing and Placing - Users translate their circuit’s components from the circuit
schematic to the protoboard (information). They receive feedback on routing errors and
step-by-step routing instructions to place physical components on the protoboard once
routing is complete (information, material).
3. Operating - Operating consists of both real-time nodal voltage measurements and
autowiring.
a. (De)BuggyBoard measures the voltage of each row (energy, information), and
reflects the current circuit state (red: faulty connection) via the LED’s (energy,
information).
b. (De)BuggyBoard automatically connects autowired nodes (energy) via the
crosspoint switches.
Design Trade Studies
This section lists a number of key decisions we made over the initial design of our prototype.
Note that we include figures illustrating our design choices resulting from these tradeoffs in the
System Description section.
Digital vs. Analog
Circuits can be broadly classified as either analog or digital. Although digital logic is
implemented using fundamentally analog components such as transistors, interfacing digital
logic circuits with off-the-shelf microcontrollers is a lot easier than trying to hook up analog
circuits to a microcontroller for either routing or sensing purposes.
1. A digital circuit can be hooked up to GPIO pins on a microcontroller which can read and
write logical highs and lows or 1s and 0s.
2. An analog circuit can be hooked up to microcontroller using ADCs and/or DACs,
depending on what role the microcontroller plays in the circuit.
Ultimately, we decided that since a breadboard is primarily used for educational prototyping of
analog circuits, limiting our design to purely digital node sensing and management would not
lead to a very useful product. Thus, although the analog breadboard is more complex in design,
it avoids a fundamental tradeoff that severely hampers the board’s scope of use.
MCU Selection
Our choice of MCU influences the rest of our design significantly because the MCU’s
fundamental limitations, such as number of IO pins, supported communication protocols, and
other features which determine the need for peripheral subsystems. The following are some of
the criteria we used to make our decision:
●
●
Maximum supported frequency
On-chip ADC specifications
6
●
●
On-chip USB module
Number and nature of IO pins
Based on our analysis, the ATMega32U4 and the ATMega1284P were two chips we were
contemplating using in our design. In the end, we decided to go with the 32U4 for the following
reasons:
●
●
●
Adequate maximum operating frequency of 16Mhz
On-chip USB eliminates need for FTDI USB chip
Sufficient IO pins for all remaining peripheral subsystems
On-board or discrete ADC
Given our decision to go ahead with an analog design, one of the primary functional goals of our
project now becomes the ability to measure voltage levels at all nodes of our breadboard. This
can be achieved using an ADC (analog-to-digital converter). That being said, we have multiple
options on how to implement this.
1. We can use the inbuilt ADC on a microcontroller. They typically have 8-bit or 10-bit
resolution.
2. We can use a discrete ADC IC. They typically have higher resolution and sampling
frequencies, which may be relevant to future iterations of (De)BuggyBoard performing
AC measurements.
These choices present a couple of tradeoffs.
●
●
Using an inbuilt ADC, as compared to a discrete ADC, has no upfront monetary cost
associated with it apart from the cost of the microcontroller itself.
A discrete ADC with a higher clock rate and resolution is less likely to distort and skew
analog signals.
Based on these tradeoffs, we decided to go for one (or more) ADCs since they are relatively
inexpensive and improve the overall quality of our design by a great deal. Our chosen ADC can
sample at a resolution of 16-bits at 20 Mhz, as opposed to our chosen ATMega’s inbuilt ADC
which is at 10-bits with a variable frequency between 9 and 200 Khz. The ADC costs about $40
as opposed to the ATMega which is about $3.
Number of ADCs
In order to be a useful breadboard, we need to have multiple rows of headers that represent
nodes in a circuit. However, this introduces an additional challenge in the form of scaling nodal
analysis via the ADC. There are a couple of ways ways to scale the design.
7
1. First, we can use multiple ADCs and hook all of them up to the microcontroller
individually.
2. Second, we can use multiple ADCs but demux their outputs into one (or a few) channels
of PWM inputs into the microcontroller.
3. Third, we can use a single ADC and a demux to route different nodes to the ADC's
inputs and then hook up the ADC’s outputs to the microcontroller.
Each of these possible implementations has its own advantages and disadvantages:
●
●
Using a larger number of ADCs hooked up to the microcontroller means choosing one
with a lot of IO pins.
Using demuxes to control one or more ADCs complicates the logic for measuring
voltages where we first need to select which node to measure before reading the ADC
output.
Taking into account budgetary and IO constraints, it seems that the most useful approach would
be to use a single ADC and demux the nodes into its output. This seems reasonable since there
is no perceivable need to concurrently sense all voltages at the same time. We believe a roundrobin sampling of voltages will be sufficient. Since each of our ADCs is about $40, it is also
prohibitively expensive to use multiple chips, especially if all of them are not going to need to be
sampling at the same time. Instead of using multiple ADCs, using a $5 mux is a significantly
cheaper way to sample up to 16 nodes. A more complex mux can be constructed to scale this
up even further.
Routing
The ability to create and break connections between nodes is a reach goal of our breadboard
design. There are two ways to implement routing logic on the breadboard:
1. We can use a microcontroller or secondary IO IC to logically connect different nodes on
the breadboard by reading values via ADCs and artificially recreate “node” voltages
using DACs.
2. We can use FPGA-esque crosspoint switches to connect wires programmatically for the
breadboard. These crossbars only have an internal resistance, but essentially act as
ideal programmable switches.
However, as was discussed earlier, a system of using multiple ADCs or DACs is prohibitive for a
number of reasons, including but not limited to a fundamental limitation on the number of pins
on most affordable microcontrollers. Further, using a controller adds clock skew and artifacts
that are undesirable, especially for analog circuits. For reference, our crosspoint switches are
about $40 whereas a high IO density microcontroller such as the
Freescale
MC9S12XD256CAG is about $17.
PC-Board Communication
8
Since this board is designed to interface (and act as a slave) for a PC circuit design and debug
interface, real-time PC-board communications is an important feature. However, this can be
realized in multiple ways.
1. Using a wired interface such as UART over USB or a similar protocol.
2. Using a wireless interface such as Bluetooth or USB to communicate between the board
and the PC.
The tradeoffs for these are apparent:
●
●
Bluetooth and WiFi are more convenient but more complicated to implement.
Serial communication over USB physically tethers the board to a PC.
Given this information, we decided to go for a physical interface. This is appropriate since an
educational breadboard such as ours is unlikely to need to be significantly far from a PC that a
user may be using to design and debug the board. For reference, a WiFi breakout board costs
around $35 whereas a USB-UART IC is about $20.
System Description
The system will first be described by its submodules and then the full diagram will be shown.
Hardware System Overview
The MCU is responsible for controlling the datapath of the design and each of the three
subsystems (LEDs, Crossbar switches, and ADC). It receives commands from the software and
executes the commands (it is essentially a slave). The method of communication between the
9
MCU and each subsystem is through SPI. Each subsystem is listening on the same SPI line but
is selectively enabled by the MCU only when being communicated with. The communication to
the computer (software) is bidirectional and through USB since the software will ask for data
and also be sending commands to the MCU. The figure on the previous page illustrates the
primary components of (De)BuggyBoard’s hardware architecture and their communication
paths.
ADC
The microcontroller (MCU) is responsible for gathering as much data as possible from the
analog-to-digital converter (ADC). The ADC is connected to the outputs of analog multiplexers
who multiplex the outputs from the switching matrix. These muxes are controlled by the
microcontroller who just cycles through the nodes and lets the ADC convert each analog signal
into a digital value. The MCU is constantly gathering node voltage data from the ADC and
updating its own internal memory state of the board as it cycles through nodes. When the
software sends a command to receive all nodal voltages, the MCU sends the current status of
the node voltages from its own internal state of the board over USB in a protocol we defined.
Breadboard and LEDs
10
The breadboard has 23 rows with 2 columns for VCC and GND. The breadboard will be
mounted onto a PCB which contains all the hardware for the backend of the design described in
this section. On the sides of the breadboard will be a row of red LEDs. There will be one LED for
each row. The LEDs are controlled from a chain of shift registers that are controlled by the
microcontroller with only 1 IO line using SPI. The underlying rows of the breadboard are
connected to a routing matrix that is described next. The figure above illustrates the breadboard
and its associated LEDs.
Routing Matrix
The routing matrix is a grid of 16x16 crosspoint switches. Each crosspoint switch is equipped to
handle an analog signal and is controlled via a serial line from the microcontroller. The control
lines of these switches can be daisy chained like the shift registers so only 1 IO line is needed
11
from the MCU that is SPI. The crosspoint switches allow for any input to be connected to any
output. This is what makes the auto-routing possible. There is a trade off here in size and cost.
As we increase the number of switches needed, we dramatically increase the cost of the board.
Therefore we have limited the overall board size to 48 (16 * 3) nodes. The figure on the previous
page illustrates the crosspoint switch layout.
Full Hardware Diagram
Putting together the components described above (MCU, ADC, XP’s, shift registers,
multiplexers, and breadboard), we reach the figure above, the full hardware system architecture
diagram. We see that, in contrast to our proposal’s design, a single MCU interfaces with both
the software and all system components, which simplifies the design. Also, we now only use red
LEDs instead of the proposed RGB LEDs. This removed a lot of board area clutter around the
breadboard which made PCB layout easier. Lastly, we also changed the communication
protocol to SPI between all 3 board subsystems so we drastically minimized IO usage from the
MCU.
12
Software Architecture
(De)BuggyBoard’s high-level user flow adheres to the illustration in the figure below: Students
have two panes in software on which to develop their circuit. The left pane is the Circuit
Diagrammer on which students create a conceptual, textbook-like circuit. When they have
specified the circuit diagram, they can check it before placing components on the virtual
breadboard. If their circuit is in error at this point, they will receive feedback.
The right pane is the Board and represents the circuit’s intended layout on (De)BuggyBoard’s
breadboard. Students move components from the Circuit Diagrammer to the board by clicking
diagrammer components and then clicking the spaces on the protoboard they intend to place
the component. Like the Circuit Diagrammer, students can check that the components on the
board form a valid (solvable) circuit after adding each component.
Once students have finished moving components from the diagrammer to the board, they can
check the two circuits are equivalent before placing components on the physical protoboard. If
the circuits are equivalent, the software can begin reading nodal voltages from (De)BuggyBoard
and displaying them in near real time.
We implemented the circuit diagrammer and router, as well as their respective error checkers, in
Python using PyQt and the Ahkab (SPICE-like) circuit solving library. In the figure on the enxt
page, we give an overview of the (De)BuggyBoard software architecture. The root class is
DeBuggyBoard, which holds the container for both the Board and Diagrammer objects.
Because the Board and Diagrammer implementations differ significantly (and sometimes
subtly), each contains its own model, view, and controller classes. (Note that the BoardDraw
and DiagrammerDraw classes are also conceptually part of the view but separated into their
own classes due to their size.)
13
We intend (De)BuggyBoard’s software and hardware components to work together to create the
integrated user flow described by the diagram below.
Project Management
This section describes our team’s semester schedule, member responsibilities, budget, and
identified risks and management strategies.
14
Schedule
First, we illustrate our originally-planned schedule via the figures below. This original schedule
captures the division of labor we followed in the project, as well as the order of tasks we
followed in making iterative progress.
In the figures on the next page, we evaluate our success in keeping this schedule by revisiting
our weekly status reports to construct the updated Gantt chart below.
15
Overall, the project made continuous, iterative progress throughout the development process.
While we initially considered a simple hardware prototype with just nodal voltage sampling to
test software on, we found it was significantly more efficient for hardware development to invest
more time up-front designing the full board rather than pay the overhead of producing multiple
16
iterations. In addition, backordered parts, updated demo times, and the tedious process of
bringing-up the board did impact our progress.
Team Member Responsibilities
Here we overview the individual responsibilities of each team member.
Member Responsibilities
Aaron
Primary: PCB layout, board bringup. Work hard on the hardware!
Secondary: Firmware
Vivek
Primary: Firmware
Secondary: PCB layout, board bringup.
Erik
Primary: Website, UI
Secondary: Circuit diagramming, routing, and feedback software
Justin
Primary: Circuit diagramming, routing, and feedback software
Secondary: Website, UI
Budget
The figure below is an overview of the team’s final, end-of-semester budget. We include both
the costs of the PCB and replacement parts for board bringup in the categories below. For a
detailed overview of the entire budget, please see the Appendix.
Team 1 Budget
$983.57
Category Total Price
Crosspoint Switches
312.66
PCB
300
Multiplexers
100.02
Voltage Regulator
58.96
Microcontrollers
44.24
ADC's
43.52
Capacitors
26.06
Breadboard
23.56
LED's
21.8
Wall Plug / Power Jack
21.5
Soldering Supplies
9.73
Shift Registers
8.26
Resistors
3.36
Crystal Oscillator
3.16
Switches
2.6
17
USB
2.5
Pin Headers
1.64
Figure 11: Final Budget
Risk Management
The tables below overview the major risk categories of our project and provide a series of risk
mitigation strategies.
Design
Risk
Mitigation Strategies
Testing-prohibitive hardware development - Mock the hardware in software.
Effectively testing some software components
requires a working hardware platform.
Underestimating software complexity - The four
major software components are (1) circuit diagram
GUI, (2) circuit solver, (3) routing GUI, and (4)
routing checker.
We must integrate these
components.
Build modular software, and focus on
fundamental functionality first: Build the
routing GUI and checker first, as these
are necessary for the minimum viable
product.
Invalid Circuit Handling - User plugs in a short- Incorporate a physical hardware fuse in
circuit or high-power voltage that could “blow”.
the design.
Program a “software fuse” to disconnect
components at dangerous voltages.
Over-reliance on hardware interfaces - We have Iterate, building progressively more
limited experience with major hardware components complex circuits from a relatively simple
we plan to incorporate, such as the crossbar setup.
switches.
Schedule
Risk
Mitigation Strategy
PCB/Protoboard Manufacturing Time - There Purchase backups of vital hardware
may be non-negligible production time.
components, such as the microcontroller.
Maintain a list of tasks we can still work on
in cases of specific hardware failures.
Repetitious, Time-intensive Tasks - Among Minimize board bring-up time by avoiding
other tasks, soldering will be time-intensive.
small surface-mount components.
18
Resources (Personnel and Budget)
Risk
Mitigation Strategy
Expensive Crossbar Switches - The Scale the size of the protoboard inversely with
protoboard requires nine crossbar switches, the cost of the crossbar switches, i.e. use a
over $25 each.
small protoboard.
Additional class projects and external Overestimate timing requirements in our Gantt
commitments
chart and set spring break as time off.
Conclusions
Developing (De)BuggyBoard has taught us both technical and team-building lessons. While we
would change certain project decisions, we have, through such missteps, honed our vision for
(De)BuggyBoard’s ultimate potential. Overall, each mistake and setback was handled well and
the team found ways to cope with each setback.
Lessons Learned
We have learned lessons through (De)BuggyBoard by both our effective and misguided
decisions.
Our team effectively delegated project responsibilities according to individual skills and
interests, and we saw this policy prevent the project from stagnating on multiple occasions
throughout the semester. Hardware and software progress were rarely (if ever) simultaneously
stalled, and working closely with one other team member significantly reduced overhead
compared to coordinating with three.
In hardware, we learned (or were reminded :)
● soldering PCB components is time-intensive and difficult as the package size gets
smaller.
● destroying numerous IC’s during board bring-up is expected.
● Eagle autorouter may (i.e., did) surrender (i.e., fail) on complicated designs (i.e., our
board).
In software, we learned
● Trello is an effective planning system for incremental feature development.
● investing significant effort into UI improvement pays off.
● pair programming can be effective for debugging.
What We Would Do Differently
19
Our development process had hiccups. If we were to repeat the process, we would make the
following changes:
In hardware, we would
● order more IC’s and PCB copies for board bring-up, which proved a tedious process.
● create a notification system so that we know when parts are backordered to avoid
downtime.
● spend more time on the power system of the board by consulting more professional
advice before sending out the PCB order.
● find a way to edit Eagle files in parallel so the pcb layout can be done faster.
In software, we would
● architect the software circuit model with saving, loading, and exporting or importing from
different file formats as a higher design priority.
● spend additional time studying the Ahkab circuit solving library upfront to improve our
ability to interpret Ahkab’s errors and provide more insightful user feedback.
● create a simple hardware prototype to test our software while the real board is under
construction.
● use an automated documentation system to maintain up-to-date software architecture
diagrams through the development process.
Future Work
Our fumbles through the development process have informed our view of (De)BuggyBoard’s
potential. Below are the main development focuses for future project work; there are certainly
improvements in addition to these we can make.
In hardware, we would
● improve the electrical isolation of the board’s design.
● add a fuse to the board to regulate its maximum current, preventing IC damage.
● for cost purposes, produce a board design without crosspoint switches to deploy in 18100 labs, while also searching for a less costly alternative to crosspoint switches (i.e.,
(De)BuggyBoard Lite vs. (De)BuggyBoard Pro).
In software, we would
● add a feature to save and load files, accepting not only circuits previously constructed in
(De)BuggyBoard but also standard netlist files.
● We would add step-by-step, interactive tutorials for building and deploying several
introductory circuits (from 18-100).
● support for transistor and *some* IC components.
Related Work
20
The related work in this field is very limited since this idea has not been brought to fruition
completely. This idea has been attempted, in some respects, during Build18.
The first Build18 attempt tried to make a breadboard that tracked voltages at each node to allow
for real time debugging of hardware. The design did not fully get off the ground and was limited
to sensing the voltages using the on chip ADCs of the MCU, which are too low quality for any
analog signal. This motivated our desire to use more precise (and more expensive) ADCs than
a simple MCU has to offer.
The second Build18 attempt was to make an auto-routing breadboard for digital designs. This
project did not get a demoable product since the sheer size of the routing was too much to do
with just simple transistors and shift registers. This is what motivated the more complex (and
more expensive) routing scheme with crosspoint switches.
The last inspiration is a project done by an eight-person Egyptian team, which designed an auto
routing breadboard that uses a software backend to route nodes. This design is the closest to
ours, except it lacks the quasi-real-time voltage tracking. However, the UI of the project helped
give us ideas for the software interface and how autorouting would work from the user’s POV.
Our design is the first to incorporate quasi-real-time voltage updates with an auto routing
breadboard that also has a built in circuit solver. In that sense, it stands unique as an
educational tool.
References
1) Build18 2014: ProtoSmart
2) Build18 2015: Field Programmable Protoboard
3) The only marketable product without voltage sensing: http://smartbreadboard.tictail.com/
4) Possible competition in the field, but no product yet: http://signup.smartbreadboard.com/
5) Sample project pitch: http://vimeo.com/98339147
6) Egyptian Team project pitch: https://www.youtube.com/watch?v=2W9zznZocqw
21
Appendix: Budget
Team 1 Budget
Total Spent:
Description
Brand
$983.57
Unit Price Quantity Shipping Cost Extended Price
Crosspoint Switches
AD75019JP Digikey
$31.27
10
$312.66
$150.00
2
$300.00
Digikey
$10.68
9
$96.12
YSD-160AB3C-8 (COM-09191) Sparkfun
$1.95
2
$3.90
PCB
PCB Order
Multiplexers
ADG1406BRUZ
Voltage Regulator
12V to 5V TO-220 LDO voltage regulator
Mouser
$7.23
4
$28.92
LTC1044AIS8#PBF
Digikey
$5.13
4
$20.52
MIC5209-3.0YS
Digikey
$2.02
3
$6.06
MIC5209-3.3YS
Digikey
$1.73
2
$3.46
ATMEGA32U4-AU
Digikey
$6.32
4
$25.28
ATMEGA32U4-AU
Digikey
$6.32
3
$18.96
AD7366BRUZ-5
Digikey
$10.88
4
$43.52
CAP CER 10UF 16V 10% X5R 0805
Digikey
$0.14
60
$8.16
CAP CER 10UF 35V 10% X5R 0805
Digikey
$0.30
15
$4.50
CAP CER 10UF 25V 10% X5R 0805
Digikey
$0.14
30
$4.08
CAP CER 0.68UF 50V 10% X7R 0805
Digikey
$0.45
6
$2.70
CAP CER 0.1UF 50V Y5V 0805
Digikey
$0.03
70
$2.17
CAP CER 22UF 10V 10% X5R 1206
Digikey
$0.37
4
$1.48
CAP CER 10UF 25V 10% X5R 1206
Digikey
$0.24
4
$0.96
Microcontrollers
ADC's
Capacitors
22
CAP CER 0.1UF 50V Y5V 0805
Digikey
$0.03
30
$0.93
CAP CER 18PF 50V 5% NP0 0805
Digikey
$0.10
6
$0.60
CAP CER 1UF 16V 10% X7R 0805
Digikey
$0.12
4
$0.48
270-point breadboard
Pololu
$3.30
2
LT1086CT-5#PBF
Digikey
$4.02
2
$8.04
MIC5209-3.0YS
Digikey
$2.02
2
$4.04
LED SUPER RED CLEAR 0603 SMD
Digikey
$0.22
100
$21.80
T1096-P5P-ND
Digikey
$17.78
1
$17.78
CONN POWER JACK 2.1MM PCB
Digikey
$0.93
4
$3.72
Soldering Flux 952D6 FLUX PEN
Mouser
$6.72
1
$6.72
Solder Removal PROWICK
Mouser
$3.01
1
$3.01
IC 8BIT SHIFT REG 3ST-OUT 16SOIC
Digikey
$0.59
14
$8.26
RES SMD 330 OHM 1% 1/8W 0805
Digikey
$0.02
100
$1.96
RES SMD 10K OHM 1% 1/8W 0805
Digikey
$0.10
8
$0.80
RES SMD 22 OHM 5% 1/8W 0805
Digikey
$0.10
6
$0.60
Digikey
$0.79
4
$3.16
Digikey
$0.65
4
$2.60
USB Type ‘B’ Female connector Sparkfun
$1.25
2
$2.50
$1.64
1
$1.64
Breadboard
$4.88
$11.48
LED's
Wall Plug / Power Jack
Soldering Supplies
Shift Registers
Resistors
Crystal Oscillator
CRYSTAL 16.0000MHZ 18PF SMD
Switches
SWITCH TACTILE SPST-NO 0.05A 12V
USB
Pin Headers
CONN HEADER VERT DUAL 36POS 2.54
Digikey
23