Now, another option, the option that my students eventually did,
was to make a hardware packet sniffer, a special purpose hardware packet sniffer.
So a device where its sole job in life is to sniff packets and send them, right.
So actually, if we look at these different options, the first option, Option 1 uses
a laptop, which is really a general purpose machine, could do anything.
Option 2, Pwnie Express, it's a Linux platform,
you can also run general purpose software on that.
But Option 3 is just dedicated to doing one thing, exactly one thing.
So when they built this, small and cheap, right?
Extremely small, actually this is the smallest option because all it is you
can see it's hard, I should've put a quarter next to the thing.
All it is, is an Ethernet jack plus a chip, right, and on the back is a battery,
right, really, really small.
So the cost is like $40 to make this whole thing, one-off anyway.
If we did a mass produce it, it'd be cheaper but one-off was $40.
But the difficulty was hard.
It was hard because they had to really understand,
if you look at that Ethernet jack, you can't see it too well, but
there's a chip on there, an Ethernet controller chip, and they had to
understand that Ethernet controller chip and interface with the processor.
Actually, the processor on there is I think the same one that you'd
find on an Arduino.
They just took the processor and used that.
But it's very small and
light and hard to, if you put this in a box it would be hard to see, and so on.
So [COUGH] that, and it's cheap.
A lot cheaper than say the Pwnie Express.
So those are the three options.
Now, there are other options that one could envision.
In fact, back then Raspberry Pi, when I did this I don't think Raspberry Pi
was really popular, I think it existed but it wasn't too popular.
But you can use, there are newer devices, like if you use the Raspberry Pi Zero,
right, that thing, that's probably a better option.
Well, it doesn't have an Ethernet jack.
Anyway, these are three possible options, but
you can see how there's a trade off space.
Cost, size, and difficulty of doing the job, right.
So this is the type of thing I want to see.
Some sort of evaluation of different options.
So you can say, this is the one I want to pick.
Like, for instance,
you might not want to pick Option 3 because the difficulty was hard.
It would take you a long time to do that, so don't do that, right.
Maybe you go for Option 2 because it's medium difficulty and
you can do it in the time required, things like this.
So this is the type of evaluation I want to see when you're showing
your system level design options.
Okay, so key decisions that you commonly make at the system level.
One, how will the behavior,
which is described in the requirements specification, how will the behavior be
divided into components, okay, and hardware/software components, right?
So some components could be hardware, some could be software.
How we will divide it?
So I'm going to say, this functionality is done in hardware,
this is done in software, right.
So generally, as a rule, when you put behavior into software it is easier for
you, okay, because then you just need to write code.
If you say this behavior is going to be dedicated to special purpose hardware
then you have to design that hardware and that's difficult.
So generally,
you're going to be making software components not hardware components.
Now, some components, you have to make hardware, for
instance, sensors and actuators, those things are hardware, right.
You can't make a software photo resistor, right.
So you're going to have sensors and
actuators which are definitely hardware components.
And you're going to have a microprocessor,
microcontroller like a Arduino Raspberry Pi system which are definitely hardware.
But, as generally, the rest will probably be primarily software components for this.
But notice it is possible to use hardware components too and
those can be more efficient and cheaper and faster but they're hard to design.
Okay, so will components be pre-fab or built from scratch?
So that's true for hardware and software.
With hardware components that you're just going to buy a board to do something or
that's already pre-built and just buy it off the shelf or
are you going to design that board from scratch?
Same thing with software.
Am I going to write an app to do this or
am I just going to use an app off the shelf?