 Okay, so I'm going to talk about the confusion of things. I'm going to rant for a couple of minutes to start with and then we're going to talk a bit about What a platform is what an IOT platform is and what are the constraints you can use to cut through the marketing nonsense and Pick a platform. So I look like this on the internet and Everything is actually pretty awesome If you cut out the horrible marketing materials, etc that we have on the IOT domain and the other thing We're doing a terrible job of as engineers again, sadly You know driven by marketing as well We're really coming up with terrible applications for IOT. So this is where I start ranting So this is a very good example of why, you know, IOT is getting the bad rep that it's getting If only we could find a way to make notes stick to a fridge like we don't actually need a, you know, twitter connected And I'm not kidding. There's actually a twitter app and this is a door of a fridge. You know, this is unnecessary or I mean This I'm not a dentist So I don't know like if this is a real problem But like we I think we don't really need toothbrushes with bluetooth enabled, you know So this provides some, you know, real-time brushing guidance and personalized dental care journeys everyone Again, not a dentist, but somehow I think this is a terrible, you know example Or like we don't need engineers explaining how to, you know, ipv6 enable your coffee brewer, you know, it's just You know, if you look at if you search for IOT on google images, you get this thing, which is, you know It's a bubble it's it's it's literally a bubble if you think about it. It's just this Generic notion of a cloud now speaking of the cloud the cloud has been or have been having this problem for a long time You know, you end up with these cloud applications that are just a mishmash of, you know, different technologies, you know Why do you even use mongo db? So it's just it's just things are terrible things are very bad But then you get applications like the radiation monitoring that safecast guys did and this is actually an amazing application of iot Um, if you don't know about this they distributed some guide a geiger counter kits around the fukushima district and around japan and around the world now as well and um, you know, they allowed, you know impartial and honest monitoring for disaster relief And there are loads of other environmental applications like this, you know, uh water monitoring Air pollution detection and that kind of stuff. So I I somehow feel these are not getting the attention that they need and you know, all the consumer goods Because they happen to have bigger marketing budgets are getting, you know, a lot of attention and that's actually giving iot a very bad name um and healthcare is another area where iot can help really really well and um Again, I kind of feel that we're not really getting Or we're not really giving them enough attention. So That's my rant over. Let's talk about hardware um now an iot application as you can appreciate consists of many different components Um starting with the lowest level Like a bottom-of-approach you have these nodes or you know devices that are deployed around the field These could simply be your cell phone. They could be sensor nodes. They could have a variety of different processing devices on them Different sensors different inputs different outputs and then um, generally you have these central nodes that The little nodes connect to and you know relay information to if they're not directly connected to the internet um generally referred to as hubs and um Going Like further you could also include all the data processing that you do and servers to be part of the iot devices as well um with many devices and different architectures you have the You know responsibility to manage them. Uh, this includes the registration. How do they actually get associated with user accounts? You need to monitor them if they go offline. What do you do? Do you panic? um and the general orchestration of things So and data is everything these days. So you do have data services which collect and you know Do rather perform some analytics on the data And so that they can be sold for money. Um, and then You have mobile apps. You have web pages. There needs to be some communication endpoints that these things can connect to as well So overall an iot platform is actually quite a complex bit of um architecture and If you look at um vendor websites, they all claim to offer the full stack solution to everything, of course but the problem is um It's a tie-in to a particular vendor and most of these ecosystems don't actually play well together or connect well together Um, it's a bit it's a case of oh, there are 20 competing standards Let's create, you know, yet another one and let's you know, raise some money whatever and the problem is now You have 21 different competing standards So Choosing an iot platform is actually quite a complex device today I'm going to focus mostly on the hardware side of things choosing which hardware platform to use And I've broken that down into several categories. So the first one is connectivity Um, this is very simple. Uh, depending on the application you may want to have I don't know gsm connectivity or wi-fi connectivity or some form of connectivity to get the data out of the device The first characteristic of an iot device is that it's somehow interconnected with everything else um internet of things so Yeah, the the the questions you have to ask yourself is how does the communication happen? Does the device have direct connection to the internet or does it have to go through a hub? And Other things you need to keep in mind is like you get this Radio device, how do you actually get it to talk to other things? What's the setup process going to look like and I feel this is an area that we're failing as engineers To like make simple, of course, there's limitations around this You're not going to get a random rf device talking to your iphone or whatever But this is an area that you need to keep in mind as well. And the other thing is the application dependent Uh, processing requirements. So do you have I don't know high high definition cameras that you need to process frames out of Um, how much local processing do you have to do? This is very important in choosing a device that will run your system because I mean realistically, you're not going to hook up an hd camera to an arduino. So That's one of the key constraints as well And everything is getting mobile and you know portable So is this device going to be battery powered because if that's the case you probably cannot afford to put a You know 64 core processing device on a you know single tiny cell battery So, uh, physical size is a is a factor. Uh, is this thing going to be pocketable? Is it going to be mounted on a wall somewhere and ultimately cost? So this is both the cost of the device that you're putting together and the operational cost Keep in mind these things are connected. So you need to provide some back-end services to them And that needs to stay up for these devices to be functional um, and a very good example to this, uh connectivity and operational cost is What happens when the vendor you choose for your connectivity and data analytics and stuff like that goes down You have devices in the field You know trying to reach this back-end server, but that company has gone out of business Because they pivoted they decided to I don't know write a messaging app for an iphone or something So, um, this is actually quite an important thing both from a cost standpoint and from your app for your application standpoint as well That's outside of the scope of this talk. So I'm not going to go into that now This is a question that comes up very often. Should you use these? um Depends on what you're doing obviously But if you're designing something like if you're designing a one-off system or if you're just producing 20 of something The answer is it really doesn't matter because ultimately, you know, it's you're not going to go into production with this and you can You know beat any of these things into submission to do whatever you want again You know, you're not going to get connect high-speed cameras to an arduino But if you want raspberry pi to talk random rf protocols, you can just get a dongle and drive it from linux. So, um What follows is Mainly focusing on going into production and actually designing something custom as as opposed to these I'm going to be talking about what kind of processing devices that reside on these boards And focus mainly on the on the architectures and the platforms in general as opposed to brand names So this is a very informal categorization of these devices. You have small embedded devices And these are 8 16 bit micros general purpose, they don't really have I mean, they might have a particular application, but they're general purpose in that they support multiple protocols. Um They have larger embedded devices. These are arm cortex series slightly larger And faster they have, you know dma's different channel dma's they have a lot more complexity And then you have linux capable so c's So to give you an example small embedded would be arduino large embedded Would be say the disco stm f7 board or Some I think there's a board called maple which runs on a cortex m3 Like an arduino linux capable so c's are things you would find on raspberry pies or beagle bones and stuff like that These things just run linux effectively and then you can repurpose pc class devices Into you know your little iot device or a hub or Something along the lines of that. So it's 10 a.m. So let's look at some architectural diagrams So this is this is i'm not going to go into very much detail I just wanted to show you the differences between these these different devices So this is an 8 bit cpu and it's architecturally. It's super simple There's this cpu core and then you have some peripherals These peripherals are very low level. I'm talking u.r. It's high square c spi that kind of stuff no usp Although you can get usp on some micros now But an application for this would be a low power wireless sensor node now this By itself does not support wireless But this architecture in specific specifically but the idea would be you know This device would be sleeping most of the time. It's really not doing much It's just grabbing a couple of sensor data and pushing it to a central hub or something An example Of a wireless, you know embedded would be the esp 8266 not going to go into too much detail Matt is going to talk about this at I think in about 14 minutes or so But this is uh, this is a small cpu core with wi-fi bundled onto it in a single package Which in quantity you can get for silly little prices So, you know the first example I gave gave is probably more suited to run on this But as you can see the peripherals are still very simple. They're just spig pio There is no pc i express. There is no usp So the applications are quite limited into again small sensor nodes or that kind of applications and then you have you know beasts like The bcm 2835 In you actually have different devices on the same chip So you have the gpu and then you have the cpu and you have all the peripherals that are on the on the cpu itself An example application to this and in fact if I remember correctly The main reason this chip was designed was this was meant to go into setup boxes where you have an htmi out And the cpu just grabs stuff from the internet and then pushes it to the gpu to be decoded as h264 So this I mean you could Do you know little sensor applications with this but this would be more suited for Something that's connected to the internet and runs any generic software package because it's running linux So yeah, and on the same way in as this Um This is coming more and more becoming more and more common repurposing so system on chip devices That are designed to run access points and routers home routers These devices generally have a linux capable soc or a processing core and then what they have is quite spectacular in that You know Alongside the low level interfaces such as gpio's you are at etc. They have usb's they have pcie express cards and stuff like that and One thing that's great about these things is that they're super cheap for what you're getting and Now the only problem is you're not going to go to media tech or athero or qualcom atheros or whatever and say can I buy 10 chips so Actually designing with these things becomes more complex The general idea is that you get a router board and then repurpose it to your You know application And if you're going into production you talk to oems and odm's to actually customize an existing design but They have wi-fi integrated into them and they have all these high level interfaces. So an example application to this would be if you had say You know a custom, you know fpga application that required really high throughputs to the Core system and you used pca express to connect to it and so on again You're not going to If you really wanted to you could do sensor applications with this But that's better suited for the small embedded and somewhat large embedded devices And this is yet another example of an soc for a router And you can see that it's Generally they're all the same. They have some form of wi-fi and they have pcae and usp and so on One thing again, these are great for applications that need to run some form of i don't know linux demon or When you don't really want to program things very low level and you need connectivity and so on So you can of course do connectivity to the outside world with with small micros But this is running linux. So you could you could reuse any existing Package very easily for that kind of stuff. So let's have a quick look at the key constraints that we talked about So we have connectivity how do these things connect to each other and the internet and the users effectively What kind of processing we need do we need to do hardcore, you know image processing on the device some dsp To do signal processing Or can we just use the device just as a data acquisition device and then push it to the cloud For some server to do processing on Is this thing going to be battery powered? Or are you plugged into the wall? Do you have the luxury of burning watts and actually not caring about it? What kind of size this thing is going to run on and ultimately what the cost of this whole operation is going to be So once you've You know come up with a short list of devices Comes the next phase because the hardware platform you choose Is effectively going to dictate how you're going to develop your application or your system so If you choose to go for Say an 8-bit processor, you're not going to be able to run a high level virtual machine with concurrency and I mean you can but you really There's no point in doing that And likewise if you go up to the level of a linux sock You know programming that in asm probably is not the best way to go about it So it's going to dictate what kind of language you're going to be using and what kind of frameworks you will have at your disposal So if you if you go for one of the solutions from an iot and that's full stack, they probably will give you Effectively an ide that you use probably on the cloud something that runs on the device That takes care of deployment and stuff You know that's entirely up to you Do you want to rely on a vendor or do you want to do your own cloud? But ultimately how you program this device is entirely, you know down to what device What system or what device you're going to choose? And another important thing is the data model that you'll be using so Again on a small 8-bit micro You're not going to do protocol buffers or you know something heavy like that So you know it it all depends on what combination of devices you have in your system To determine how communication is going to be architecting the nose Another very important thing on iot is security and firmware updates so Again, let's go with 8-bit micros doing ssl and that kind of stuff on that Kind of devices is very difficult You may choose a device that has a crypto co-processor that will take care of that for you But again, that's something to keep in mind And how do you get firmware updates to the devices safely and securely? You know is another thing Most iot companies i'm not going to say most some iot companies say Oh, we'll just you know ship this very old version of linux and you know Actually, they don't care about patching it and then you have cases where you know Oh, you know hundred thousands of routers got compromised because they were running an old version of open ssl or something like that So firmware update management in iot is a very very important thing And I just wish people paid more attention to it And ultimately the entire characteristic of the system is going to be a sum of all the devices that you put together And you know how you're going to present that data or what you're going to do with that data This gets into the business domain. So i'm not going to go into that So with all that said If you're interested in playing with some iot devices or iot systems and stuff I'm running a workshop on sunday i.e. tomorrow We have We have nine boards So we have eight nine Spaces available if you're interested come and find me when we're grabbing a cup of tea or coffee And um, that's me done. Thank you very much. If you have any questions