Hello and welcome back. Today we'll be talking about a specific context of design, Internet of Things and Physical Computing. And this is one of my favorite topics, so I'm really glad I can share it with you. Now, as you may have remembered from my previous video, I talked about the fact that computing doesn't have to happen on a phone or a laptop or a computer of that sort. It could happen on a new device such as this Ebook Reader for kids. It could happen in wearable technology such as a bracelet or something that's actually embedded in your clothing. It could happen through a smart object such as this pacifier that records your baby's temperature or it could happen through a dedicated connected gadget such as this Pokemon Go plus device. These are all examples of physical computing or Internet of Things technologies. So there are a few special considerations that somebody may want to keep in mind when designing for these context. I'm going to start these 0 index since a lot of you are computer scientists. So consideration #0 is Privacy. Once everyday devices in our world are enabled with digital ability to collect data, it's really important to reflect on what data the device will collect, how it will collect it and whether somebody can actually opt out of it. Because, as we all know, if data is stored somewhere it can actually lead to some potential for abuse. Somebody getting that data and doing something with it that the user might not want. So I actually do encourage you as you design Internet of Things technologies and physical computing technologies to always keep privacy and security in mind and what will happen to the data that participants give and what could happen if that data is abused. The second consideration is the Form Factor. Where is this device going to be located? So, for example, this clip, this Pokemon Go clip, it has a clip, so it's generally located on my pocket. Or it also comes with a bracelet, so I could wear it as a bracelet on my wrist. But then the question, who will interact with it? So one thing that you may notice is that if I actually wore this on my wrist, it would be pretty big. Because I'm a woman and I have smaller wrists and I think this was really designed for men. How will somebody interact with it? So, in this case, the only way I can interact with this device is by pushing this one button on it. I can also feel the device telling me I should be interacting with it because it has a vibration motor built in. Is the device robust or small or big enough to support this kind of location or interaction. So for example, in this case, this device is also meant to be used by children, so dropping it doesn't affect it. So it's pretty robust, in fact I've dropped it on the ground quite a few times as I've tried to connect it to my pocket or my sleeve. So this is actually fairly robust. It's almost small enough for me to wear on my wrist, but not quite. But there are other options, other ways that I can locate it on my pocket or on my sleeve for example. Is it big enough to support the kind of interaction? Yeah it just had a single button, so I think it is big enough. But, if you're designing something, for example, with a screen, is the screen big enough for somebody to interact with it with their finger, for example. Now, wearable devices aren't the only examples, so of course your device could be something that's actually built into a piece of furniture. So maybe it's a table top with smart gesture detection so that if I gesture a particular way on this table, it would actually control my slides for example. So where it's located in a particular room and how somebody interacts with it might also affect the particular form factor of that device. And that's something that you need to consider up front. The next consideration is Power. So these devices are not like your tablet, which just typically has a rechargeable battery or a computer which you typically plug in to a wall. But they may have some of the same features, so there's a few different ways that you can power those devices. Maybe it's something that's meant to be plugged directly into an outlet. So if you're working with something like a piece of furniture that you've added features to, that may makes sense. I doubt that this table moves around very often, so it makes sense for me to stretch a cord and connect it to a power outlet. On the other hand, if I build something like this Pokemon Go device, it would not make sense to try to charge it directly from an outlet, because then I couldn't go anywhere. I would also need to be near an outlet. So, instead you could go with something like an On-board rechargeable battery, that's what your phone currently has. And there are particular advantages to that, so you can take it on the go, you don't need to keep buying batteries for it. And you just make sure to recharge it once a night. Now, one issue is that, this is a device that you may not remember to plug in every time. Or a device where there's not really a lot of room for a port to recharge it. Then you may actually want to go with something more like an on-board replaceable battery and make sure to manager your power accordingly. So this, for example, runs off a watch battery, and that I think is the right solution for this type of a device. It can run for a significant period of time off this watch battery, so I don't have to recharge it constantly. It's okay for me if once a month or once every three months, I have to purchase and replace the battery. Now, in the future, there may be other options available. These are really on the horizon, such as powering a device from your body's motion. And this is most appropriate for fairly low-power applications, but I think this will be really promising when it's something that's available for people to include in their devices. The next consideration is Connectivity. Is going to be a device that connects to the Internet, and if so how? Maybe it doesn't need to actually to connect to the Internet. Perhaps like as I was talking about a table that can sense my gestures, maybe it's enough to have that table physically connected to my computer. There's no need for Internet connectivity at all. Maybe it connects indirectly through another device. So, in the case of this Pokemon GO Plus, it's using bluetooth to connect to my phone and then using my phone it's connecting to the actual servers and the actual Pokemon GO application. Maybe instead what it'll have is actually WiFi connectivity. So your phone can connect to the WiFi in the room, and that's the way that it actually gets to the Internet, or it could actually even have wired connectivity. This is the device that you're already plugging into a power outlet. Maybe it makes sense to also plug that device into an ethernet port. Maybe you don't really care about the device connecting to the Internet and you're more concerned about the device connecting to other devices. Well, there are a few ways this could work as well. Maybe the device connects to the Internet, other devices connect to the Internet as well, and they use a common server to exchange information. Maybe they connect directly to each other through bluetooth or other low-power protocols. Maybe, and this is kind of a more futuristic option, if the devices plug into a power port it can actually send information to other devices that are plugged into the power port directly through the power lines. And this is kind of a more futuristic research, maybe not something that's immediately available to everybody who wants to build a device. Now as you think about these issues of connectivity, again I want to reiterate there's pervasive issues of security and reliability and in a sense privacy as well. Because any device that is connected to the Internet can potentially be hacked or data from that device can be stolen. And that's something that's very important to think about, especially if you're building something where safety might be an issue, like a connected car. Or, you're connecting somebody's oven to the Internet. And now anybody could turn it on if they wanted to. So this is just something for you think about, that's security and reliability. Now, the fourth consideration is, of course, the Interface. So what is the device actually going to have? Are you going to have a screen on the device? Is it going to have menus? Is it going to have buttons? All of the same user interface concerns that we've covered in this class so far. So, you don't escape from having to think about the interface as just something else you have to think in addition to all these other features of a physical connected device. Now, there are many tools for creating your devices and I'll go through a few of them and just show you what these boards looks like. The most common one is an Arduino. So, this is an Arduino right here, it’s also on the slides. An Arduino is basically a tiny computer with places where you can connect wires. So, these black holes here are places where you can connect the wire. You can connect any wired component to an Arduino. So, on the slide here on the bottom, that is a read switch that senses that there's a magnetic field nearby. Those are most frequently used by putting near a magnet on something like a cabinet, door frame or window to sense whether that cabinet door or window is open or closed. It's interesting because you don't have to buy components that are built specifically for an Arduino. As long as your component has a wire coming in and a wire coming out and you can control it with your Arduino, because you can send power to it and you can control whether the power goes to it or not. There's a special language you use to write programs for this, it's called the Arduino. It's pretty straight forward. If I had to describe it, I'd say it's kind of a mix of sea and python. It's really easy to use and it uploads the program directly onto the onboard computer here. So that as long as the Arduino is powered somehow, whether that's through something like a 9-volt battery. For example here is a 9-bolt battery, either a 9-volt battery that connect to it with the power cord. Or whether you directly power it off a computer through a USB port or directly from a port in the wall. It will keep running that program as long as it's capable of doing it because it has power and it will control your devices. But there are a few other ones that are really exciting. So this may be too big to do something like a wearable computing application. I don't know if I'd want to do something with a computer this big that is supposed to be like a necklace, for example. And if I was building something like this small delicate device, I probably wouldn't want it to be that big. But there are other options, so one is a LightBlue Bean. I really like this device. So it's an even tinier computer, it's a tiny little microprocessor. You can connect to it very similarly to the way you write a program in Arduino to put on the Arduino computer. It uses actually the same ID development client. And it has a tiny little built in prototyping ports so you can connect new components to it. It works with a battery, just a watch battery, so this is kind of that onboard power idea. And it's almost small enough to even probably make interactive earrings with it, but it's definitely small enough for something like a wrist band or a pendant. There are a few nice features that it has already on board so it has bluetooth and it connects directly to your phone. So you don't need to add extra components to make that connectivity possible. It also has a 3X accelerometer built-in on this device, and a few other smaller features, like an LED for prototyping, and that kind of thing. Very nice, very small, very robust device for prototyping. Another small one is, and I don't have a slide on this one, but this one is the photon. So, this actually connects to WiFi, rather than bluetooth. And it's also fairly small, it has pins coming out of it so you can't prototype directly on it. But you can connect it to a small bread board or prototyping board to actually write programs for it and connect other digital and physical devices to it. And the one constraint of this is that it's very picky about the kinds of WiFi networks it connects to. So if you have security on a WiFi network, you may actually have a lot of trouble connecting to it. In fact, it has a lot of trouble connecting to the campus network. But otherwise, I think, for a lot of people, this is their device of choice, microprocessor of choice for doing Internet of Things devices. Another common one is the Raspberry Pi. So these computers only run a specific program that you upload to it for using Arduino, but this computer actually has a full-feature operating system, this runs Linux. And it has a bunch of interesting ports so you can plug it directly into the ethernet. It has the USB ports, so you can do things like plug in controllers into it or plug in a webcam into it. And that also means that you can use kind of things that are more complicated that need drivers in order to be able to make them work. It will be very difficult to get a webcam or a camera that's very comprehensive to work with an Arduino. It's much more doable to do it with a Raspberry Pi. And as you see, it's not a ton bigger, so you're getting a lot of features for not a lot more space. Though, I think you do generally need a lot more power to power this. You'd probably wouldn't want to do it off a 9-volt battery. And then the last one, I've actually already covered a little bit when we talked about physical prototyping, but the last one is the littleBits. So these are little hardware widgets that can be connected to create interactive technology. These could be kind of stand-alones or they also have couldBits that will connect into the internet and arduinoBits that are just a different physical format of the same Arduino that we covered before that you can actually connect your littleBits to. So these are probably the most straightforward to use if you don't have any sort of electrical engineering or prototyping experience. But they are kind of a little bit clunkier as well. And I definitely encourage people to kind of progress from little bits through the little bit Arduino onto actual Arduino ports just because Arduino ports are a lot more flexible. You don't need somebody to have built a specific bed for UTUs and you can just use any wired component with an Arduino and so that does make it a lot more flexible. And also cheaper because littleBit components are fairly expensive for what they are. An LED for an Arduino will cost $.05 or something like that. So, this is kind of a whirlwind tour. I hope that if you learned more about this, then we'll actually go to a few more sites to get more information. There are always new kits and new microprocessors coming out. If you follow Kick Starters there are always new ideas out there to make this more attainable. Recently, I saw one that's actually is Lego compatible, so you can usually make devices that are Lego compatible. The two sites that I kind of follow other than Kick Starter for new ideas are Adafruit and SparkFun. They both have tutorials and they sell kits. So that's kind of a nice combination because if you find something to buy on Sparkfun you can usually also find a tutorial for it there. So even if you don't have any prototyping experience with hardware, it's fairly straightforward to pick it up. And I think it's really fun, so I do how that you give physical computing and Internet of Things a go in the future. Thank you very much and I hope to see you in the next video.