[MUSIC] So this lecture, we're gonna talk about hardware and software systems. Internet of things devices, are typically hardware and software combined. So as we're learning about the IoT design process, we really have to think about how you design hardware, how you design software, and how do you design them to work together. So you can't think of one in isolation, you really need to think about both together as you're working on the project. So IoT devices are a combination of hardware and software. There's always a hardware part of the design and you can see that here, we've got a bread board. And the bread board's got various components on it, it's got a micro controllers, LED, voltage regulator, capacitors I see, a bunch of different things, and they're all mounted into this bread board. One part of this design, one aspect of the design, is a hardware aspect that you can see right there and that's basically a bunch of components that are connected, wired together in some fashion, okay? So that's part of the design and so a designer, if you're gonna make an IoT device, you have to think about that part too. But in addition to that, that alone doesn't explain what the behavior is. When you're looking at that set of devices wired together, even completely understanding what each component does, you can't tell what the behavior of that, right? So you have an incomplete view of the design if you only look at the hardware. In addition to this, you gotta look at the software component of this too. So if you look at the hardware side over there, you've got at the center of it, there is this micro controller. That big black chip dead in the center, that is the micro controller which is the heart of the system. And that micro controller executes code. And so there's gotta be some code, some software, which we can see on the other side of the picture. Some software that's going to run on that micro controller. Now that software is some sample code and that's actually our Dwino code and we'll get to that later. But there's got to be some software that's running on that micro controller, that talks to all the different components. Talks to the LEDs, tells them when to turn off and on and things like this. So there's this hardware side and this software side and these things have to work together. You've got to design both of them. So what I mean is when you write the software, you have to be thinking about the hardware. You have to say oh I've got an LED and it needs to be controlled in this fashion, so I will write my code in this way. You have to be consciously aware of that when you're doing the coding. Whenever you make a new project, you've got a bunch of hardware components, right? You gotta get a bunch of hardware components and wire them together and decide on that a priori. What are the hardware components going to be? Now, this is sort of a fundamental issue with design projects in general, things change, right. So at first when you design something, you have an idea of what the behavior is gonna be and you think you know what the components will be. And then you start doing it, you get into the design and often you have to back off track. You might implement something and realize, oh you know what I need a different component this doesn't work for me. So that can happen, there's always that risk. But at the beginning to start building your system you're going to have to have some idea of the type of components that you're gonna need. So that's always a trial right, to figure out which components you're gonna buy. Now, you start with a micro controller, but you need other components around that. And each one of these components has different parameters. Different sizes for instance, different, and you might care about that. You might need this whole design to fit into a certain space, right? So you're worried about the size. Different voltage, different electrical parameters right, how much current can this component take, right? Maybe this LED can only take 20 milli amps, which is sort of common. So if you drive it with more than that, you'll blow up the LED, things like this. So everyone of these components has these features that you have to consider before you order them. Now back in the old days when I was a kid, when you wanted to do one of these projects, you'd go to a store, Radio Shack which is gone now, you go to RadioShack and you could buy the parts. And the people in the store could help you with the parts. So they were knowledgeable about these little parts. So they would say, oh that chip, it will do this, but this component, this resistor is no good for that purpose or something, right? They'd give you, they have knowledge about the different components and what they did, but those components don't cost a lot, right? Switches and things like that, they're pretty cheap, so stores like Radio Shack, things like that, they don't particularly care about selling those things anymore, frankly. I mean they sell them, But they don't make a lot of money off of them, I get the feeling. They make money off of selling cellphone deals, or something like this, something else. So you go into these stores and generally, the people are not knowledgeable about their components, which means that it is on is on you to understand these components of what they do. So you can't rely, most of the time, unless you go to a good store and there are stores like that where you can get somebody who really knows what he or she's talking about, but often, you are on your own. And another thing too is that these type of hobbiest electrical stores, they're rare, they are few and far between these days. You can't find stores that have these parts. I mean I go to Fry's, things like this, also other local places, but it's hard to find these parts. So often you're buying these components online. You go online, you look at websites. Now these websites, there are a lot of different websites and they're very complete, they have tons of components. But in some ways, it's sort of data overload, there are too many components, too many slight variations. So you see 100 components that look similar and you have to figure out exactly the one that you want. And I can't tell you how many times I thought I wanted a component, I ordered the component, it comes a week later and then tada, it is not what I needed. It is somehow slightly wrong and now I have to go and order new parts and cycle through that. And it is inevitable that will happen to some extent, so just be ready for that. But you really wanna minimize that, you wanna to be able to know before you go and order these parts, you want to be able to know that they match your needs, as well as you can know that. So that is what data sheets are for. So, data sheets are basically information sheets about hardware components and every component has a data sheet. The simplest components, maybe you don't have a data sheet. For instance, a resistor, actually even resistors you can probably find data sheets, but a resistor is so simple you don't need a datasheet for that, okay? They have very few parameters, but any kind of complicated component will have a datasheet that tells you all kinds of information about it. The size, the shape, the inputs, the outputs, the voltage, all the electrical parameters, things like this all the data that you need in order to use it. So reading these datasheets is really important. You can always find data sheets online, you find the part number, you type it into Google, the part number, type data sheet and you will find data sheets. And they can be very complicated to read, but it is important that you be able to minimally read them. At least find the important information, just so you can order the parts you're gonna need to make these devices that you will be making. Thank you. [MUSIC]