 So yeah, I guess we're speaking English today. No Putongpap and no German. The music. So, right. It is 14 o'clock. So we're starting. And this is building an IOT empire. This is a two hour or almost two hour session, which is a little unusual. It's also categorized as a tutorial. So what that means, actually, I don't know what that means. This is my first time in this category doing a Linux event in the, in the tutorial category. And I had proposed a half day or a full day workshop and they said, no problem. They put me in the schedule. It's two hours. So, so we're going to reduce radically reduce down to about an hour and a half. And I'll try to get started as soon as possible with less talking. We don't have a network switch. Either we're missing cables. We don't have the things that we typically use in the full day workshops. So there's going to be a few reductions and simplifications. The next thing to know is that this is kind of hands on work. So if you do have a computer with you, then you want to take that out now and maybe power it up. Unfortunately, there's no tables. But if you don't have a computer, all is not lost. You can either pair up with your neighbor. You can hang out for however long it takes for you to get bored. We can play some music. And you don't have to stay until the last minute of the two meetings in case there's other sessions or something else. Or if you get really bored, like, then you can switch. But this will be a hands on workshop. So I'm going to do a few examples and some demonstrations. So it makes sense as well for those of you not doing hands on without a computer. But you might want to pair up with someone because I'll pass out some of these on loan basis. And we have some boards to work with, embedded boards. Big surprise at the embedded Linux conference. Right. So this is my name. I think this H belongs there. That was it for the laser. OK. Great batteries there. So anyway, Michael Schlofen Benowitz. Nice long-term name. You can call me Michael. My tag's not on because as you can hear, it would interfere with the microphone. So my name is Michael. And that's my email there. If you have questions after the presentation that you've forgotten to ask or for whatever reason, questions you want to ask in private, my business cards are right here. So you can take one for later or for whatever reason. So I think we should get started. As I said, this is two hours long. But we're free to come and go as we please. Let me just check what we're supposed to be doing. OK. Building an IoT empire, which kind of means we're going to be putting together, connecting, embedded, computing devices, sensors, and actuators today, mostly just computing devices together to form a giant empire, which obviously takes only a couple hours to build for a typical empire. And this is the proposal which I submitted after the course. And we have a few things here. I'll try to make that go up there. So we're going to try to cover about half of this because we have a lot less time. I have embedded boards from Nordic Semiconductor and from FreeScale NXP. So we can do some things with Bluetooth, probably at the end. And we'll start with some very simple UART and sensor-based RGB LEDs. And that would be actuators. And the sensors are accelerometers. We'll do some fun stuff with that. I think that's all we'll get to for today because the MQTT and AMQP requires either Wi-Fi or a copper cable ethernet connection for the embedded boards. That's typically what we do, and we don't have a switch. So we might not get to that. In any case, there is a wiki for the workshop. In case you haven't noticed, I do these workshops all the time. So I'm in different cities nearly every week or at least every month of the year. Asia, China, here, Europe. I live in Munich, so I do the work there as well and a lot in the United States. And we try to base our research and our development on a wiki that also aids in teaching. So this is kind of what we're using. And if you'd like to check it out, it might be useful as we get on into the hands-on work because there are some tutorials and some cutting and pasting. So I don't have a whiteboard either. I do have music. So that's what we do when we get bored, right? Right. So anyway, I'm going to start by just showing what we typically cover in the workshop because there are a few different board classifications. I don't really have a raspberry pi, but the thickest, most highest energy that we typically use are these Beagle bones. So you can see it has an ethernet connection. It's consuming 5 volts. You probably know what these things are, so I'm going to go through this really fast. This one is the next on the high-powered list. I'm not sure what these draw-in watts. It could be up to 1 watt. And you probably haven't seen these because they're about half-year or even less old. So this is the newest Tesla board. This is a MIPS microprocessor, I believe, and uses an Atmel as well, a microcontroller for the I.O. So it's got really fast access to the GPIOs. Those are the... Stupid laser batteries are out. But I guess I can just use a mouse, right? So here are the GPIOs. It's a very unique arrangement. This is not the typical Arduino shield assembly. It's got 10 pins there and 10 pins there, and then you attach Tesla modules to that. There's a media tech in the middle. I think it's running on a MIPS. It's got open WRT on there. So this is the whirlwind tour. And the last couple devices will be the ones that we use today. But just to get warmed up, here is... Let's do this one here. These two are cool because they're really small. I'll just put them both up there. And in the interest of time, I won't even take the cover off this one. That's a sensor tag. So these are things that we can use to connect together devices to form a IoT empire, right? So the sensor tag is accessible over Bluetooth. And here is another Bluetooth device. A punch through is the manufacturer, and it's called a light blue bean. I've soldered some stuff on there. It doesn't come with a PISO speaker and so on. So these are two Bluetooth devices, which are real fun to play with. We sometimes get to that and couple them up with telephones and then create new stuff with that. Today, I'm hoping that at the end, we can do some Bluetooth things or... I think I have to try it like that. So there we go. So you might have seen this one as well. This is the NRF 51DK, the developer kit from Nordic Semiconductor. There's a few things to notice here. This in the middle, it says embed enabled. And it's not required to have this nifty logo, but embed is what we'll be using to program these devices. If you don't know what embed is, we'll get to that. But it really facilitates a really fast learning process and workshop. It's not unique. It's not the best for all development workflows, but we'll see that embed works all in the browser, at least the first generation. So it's easy to get up and running. Yeah, so anyways, this is the Nordic Semiconductor board, the NRF 51. And it does have the Arduino shield assembly. So you can do GPIO over, I think, 5 volts is this board. I've forgotten, actually. But it does have a few other things, some sensors. These are buttons. Sensing pressure does have a matrix of LEDs somewhere too. I think if I... Yeah, there you can kind of see... If I change the light a little. So that's a matrix of LEDs. So there's some applications you can do off the bat with this one, with just these four buttons and the four LEDs, which are user-controlled. The LED which tells you that it's turned on is somewhere else. Right, so we'll be getting to that maybe a little later, because we're starting with one of these. These are two NXP boards. I don't know what to say anymore, they're F-R-D-M boards, free-scale boards, but NXP merged, F-R-D-M free-scale, and I guess it's time to say NXP boards. This one on the right, I haven't brought with me, because it's the same board. It just has SDHC card and Ethernet connector, which you can't see since we don't have a switch. And there's no sense in powering that up. We do have this one. This is a KL25Z. You can kind of see there. So that's a F-R-D-M KL25Z. And I think we can get started right away, because there is actually a tutorial for that. So let's move right on, and I'm just going to click on tutorials there. Probably move that up the screen a bit. There's plenty of other stuff that's not too interesting like start here. So once I click on that, we get to this. So that's the page. Right. And while I'm passing the boards out, which please give back, because we used them in every workshop. So I've got workshops in a week. And in Dresden, by the way. If anyone's from Dresden, you're going to the CCC Dardenspuren. Is it called Dardenspuren? Dardenfresser, Dardenspuren? I think it's called Dardenspuren, Dresden. So this is the CCC conference once a year. That's what we're doing next week. Yeah, in any case, in order to get started with ARM embed, we need an account. So if you have your computers out, then the URL is that, developer.embed.org. Can I make that bigger? I can write it on this here. Once you're there, you're given the choice to create an account. So that's the first thing we need to do. You can use any email address in the world. I even think you can use email addresses with false TLDs, top level domains. So you can do like hello at hello dot hello. I think that will work. They make no access control on that level. So that's what I recommend unless you want to have an identity attached with your account. And once you go there and you create an account, you will find that you have a... Well, it looks like this. I've already logged in. And this is called, I think, the dashboard. So that's what you end up with. Oops, that's not the dashboard. After you log in, then you find this embed OS5 page. And so please create an account and I'll bring a few boards out. And you need a cable that's a mini USB. Oh. It might work. I mean, do you have an OTG port or something? You should try. That would be really interesting to see if a tablet works. I've never tried it. I mean, it's just a web browser. Everything works in the browser. So that's a long shot. It's an Apple, but still you can try it. Oh, does that, it doesn't have a micro USB? Well, okay. So there's number two, you took number three there. There's a cable. Yeah, okay. You're going to hold it in your hand, take a look, pretend, and it requires a mini USB. This thing is a cheap shot. And there's, yeah, well that's, there's two ports. And one, if you look on the bottom, it says open SDA. That's the correct port. It doesn't, it won't damage it to use the wrong port. It'll just draw power and then you won't have any data if you use a wrong port. But you want to use a right port? Well, there's no program on there. So if you power it, nothing will happen. But if you want to program it, then you need to use an open SDA port. And, well, okay, since we're talking about it, turn it over and then, and then this, that's the one. You can see that it's an open SDA port. I'm just going to mark it with, with the pen there. That works terrible. Seems to be an issue with the embed server. Really? Yeah. You can't sign in. Oh, I see. Were you able to create? Yeah. Okay. So sometimes it works and sometimes it doesn't. How about if you, I mean, there could be some, some cookie, what if you do a private window, an incognito or private window and try again. So you've got a clean slate. I mean, it's just an idea. It would be a real shame if we couldn't get accounts. How about you? Did it work? It's okay. I see. Maybe it's just this physical two meter. Okay. We'll try once more. We'll try you. I don't know. Mini USB cable. Have I been here yet? Okay. So you're welcome. Yeah. It's mini USB. Do you have one? Then use one. Well, we'll be using USB on the, yeah, to, to not to really debug it, but to program it, to transfer data over. It appears like a mass data device on our desktop. Okay. We'll get some more devices. The server error, the creating the account was successful. Yeah. I can imagine that that it gave you some error and then, but you're able to, to go to the next screen. I don't, I'm not sure why. Well, it doesn't matter. They require email address and that's that. I don't think I gave you computers it. So take nine and 10. And you'll need mini USB cables for that. Oh yeah. No. You can use that one. You probably have one there. No, it doesn't look like you do. It's a mini USB. That's the next thing to realize. Do you want a device? You can try it if you have a OTG. Okay. Oh, you have another. Do you want to try it? Is it working for you? And you can download it. Can't you? So who knows? It's, it's a nice experiment. So what, in case you're wondering what we're trying to do for the first time is, is use really computers that you never develop on like Apple iPads or tablet computers to flash firmware onto these embedded computers. So it's a nice, I don't know. I guess if you get good at it, you know, you would have a backup for the road if your computer goes broken like minded. That's why I have two. Anyway, so I think everybody has an embedded computer now at KL25Z. And we can get started then. So first things first. So you see that where I'm connecting that? Open SDA. That's the bottom of it. On the top it looks like this. So, and then that's the LED that turns on to tell, tell you that you have power. Did I miss you? Do you have a, do you want one? Ah, okay. I'm going to use that one. Fine. So I'm going to switch monitors because, because my USB system is fried on the windows, switching monitors. You can probably guess why we take a full day for this workshop when it takes ten minutes just to pass devices out in cables and everything else. Waiting for the video. So there we are here. And because I plugged in my computer, the KL, the FRDM KL25Z, it gives me a USB mass storage target on the desktop. You might have noticed that a window pop up, right? This is a very unique workflow that, well, it's, it's actually part of the ARM SimSys DAP communication between the USB and the internal storage. But it's kind of a unique workflow, which is a little difficult to get used to. You don't find any programs in here, but this is where we're going to drag and drop the firmware that we create, right? I'm just going to double click this, this embed.htm file because I believe that's a good way to, okay, so I'll have to sign up first. It's a good way to configure our account. So after you double click that embed.html file, you get a little documentation about the computer you're using. This is pretty common with all of the embed enabled or embed compatible platforms, which we can check out. If we go up here to hardware and boards, just to have a little fun and see what kind of things work with the ARM embed development framework. And there's quite a lot, blah, blah, blah. There's maybe a few hundred. What I like to do is go to the left and then reduce the selection so that I can make sense of it. If I just click on NXP Semiconductors, then I don't get so many and I can find the computer that I'm interested in. That's another way to get to the same page we had before. I click on that and I end up there at the same page. Now that's going to be important because we want to add this device to our ARM embed account. That's what's here on the right. There's a button there that says add this device. Let me go back to the login. If you actually do some compiling, you'll need to select a target. You might have five devices connected to your computer, right? Five FRDM targets or something like that. You can select them over here. I can't use this pointer. You can select them up there. Right now it's got the KL25Z there because I already have added this to the platform, but you don't have this. You probably have an empty list here on the left. You'll find something like no device selected here on the right. In order to be able to select a device there, you need to add it. Does that make sense? Has everybody added the KL25Z to their account? I see. When that comes up in the web browser, it's added automatically. Perfect. There's actually quite a lot of nice features that they've thought ahead. You can tell they're thinking ahead when they create this HTML file. If you take a look inside, and there's some hidden files as well. Anyway, so you don't have any projects here on the left. As you can see, this is what it looks like when you start to get your work done. You've got my programs and then below those are all the different projects. But to get started, because I think we're all on the same page, are there any problems or questions so far? Is everybody comfortable? We've got an account, everyone who's got a computer. Why don't we try this? Let's just create a new program. Let's make sure the thing is working. If we look at the, I don't have the camera on now, but if you look at the board, it just has a LED telling you that it's powered. Let's make the LED blink to make sure that there's some communication, that everything is on track. I just selected a new program and then I can choose one. Now, I have quite a few targets here, so I'll be very careful to select the correct one. You just have one. The one right at the top, Blinky LED Hello World, is pretty much the easiest example to choose. You can rename it here. I'll call it ELC Blinky. This is kind of an important check mark here. In most cases, or at least in the very easiest examples, it doesn't matter if you have it checked or not. What it means is that any library dependencies that you're using, like if you're using an accelerometer or some complex devices that are attached or the GPIO assembly, you can use a library in order to avoid writing 4,000 lines of code and then you access accelerometer using three lines of codes. When you check that, it will find the newest version of the dependencies and download those not paying attention to what the original developer intended. The original developer might have written this program two years ago and then stopped maintaining it and hard-coded things that only worked with the library two years ago. If you update the library and it's got all kinds of new features, then your program will break. It'll probably break at compile time. This is an option to not refresh the libraries so that you're using the ones from that time when the developer made the program and uploaded it because this is also a cloud framework. A lot of these projects are everywhere and you just pick and choose and you download them. I usually leave this check because it's nice to have fresh libraries, right? So I'm going to say, okay, and that's going to download source code from probably Cambridge, but I don't know where their servers are. That's where their cloud servers store all of this framework. And there it is here. You'll see Blinky. So you'll find that on the left. You can take a look at it. It's all C and C++ code. So the ARM embed platform doesn't support Python, doesn't support JavaScript, unfortunately. But that's kind of uncommon anyways for embedded computers, right? Anyway, so that's what it does. As you can already see, it's very simple. It just keeps looping and then identifies the LED you're interested in and then does a wait and turn on, wait and turn on. Incidentally, be very careful with these values. Like zero turns it on. It will have a bright light if you set the LED to zero. So there's a lot of people work hours long trying to figure out I'm turning it on by using one. You know, at the very end of a long day, they figure out, well, I should have just used a different value. So don't make assumptions with that. In any case, the next step, if you're following along, so just click on compile. And what this will do, the source code is in our browser right now, but it will send our source code back up because obviously we could be modifying it, right? And then it will send our modifications back up on the cloud and now I'm saving it. And then it will compile that on their build farm, the arm embed build farm wherever that is. Maybe it's Cambridge. After that happens, it sends you a binary. Like you can see here, they very ingeniously called it a dot bin file. Great. And so they're going to send that back to us. So there's all this back and forth which is involved. That's kind of maybe one of the weaknesses because you need to have a stable internet connection. That's what we usually do anyway. So I'm going to make sure I remember what this file is called. That's pretty important. I'm going to save the file. And then I'll have that on downloads. There it is. So yeah, we're going to skip all of the typical let's look inside the file and so on and what kind of headers it has. So the thing that we want to do now is just drag and drop. I'm going to drag this over to the embed target. Just put it right on there. And remember that there's nothing inside here except for these two things. And you might expect later on to see this thing that you drag over there on there. But let's watch and see what happens. The one thing that's maybe a little important that I recommend, take a look at this LED while you're dragging and dropping. That's the indicator that's telling you that transfer is correct. You'll be seeing it flash if your data is correctly moving across the USB cable through the SIMS-STAP interface. Because in some cases you've got it plugged into the wrong computer or some other thing can happen. So I'm just going to drag and drop, see how that works. And then it should be blinking. Magic, exactly. Then it returns me back to the Finder or the Navigator or whatever you call these things. I'm going to look in there for this ELC Blinky file that I just dragged and dropped over onto the USB mass storage. And if I had put a typical thumb drive in there, I would expect it to be there. And this is what is so unintuitive. The ARM embed environment will bring the computer down or at least the USB mass storage portion of the circuit after a successful transfer. What it does then is format the DOS file system, which then comes back up and then it gives you this fresh work area to drag and drop again, for example. But you can never inspect what was happening on there before. It will always format it and then give you a fresh chance. So what I have on there right now is this ELC Blinky binary, but it's not working yet. We can see that nothing is blinking. That's also normal because I haven't instructed it to restart its processing cycle yet. So it's a very funky workflow, but you do get used to it. Now I'm going to just push on the reset button and I think, my camera is not connected, but you can see LED probably. So then the RGB LED starts blinking red. I can see that a few, okay, you're a little bit farther on. We might want to speed up. Any questions? Looks like it's quite a bit of a challenge with a flimsy tablet. No keyboard and no real USB environment and so on. But good. So that's the basic hello world that you can try with any board. Almost any board has a blinky application. We could talk about it. I mean, why is it red? This is actually RGB LED and this identifier LED1 corresponds with the red color of this three filament LED, right? If we click here on the right, the way I'm doing now, we can access the pin out. We can get some information. I think over here somewhere is the LED1. I can't find it just now. Here it is. So you see that there? We're using the LED1 identifier and it corresponds to just one of those filaments to the red one. It's kind of documented a little bit messy there, but yeah, it's not too obvious. So there's LED1, LED2, and LED3. And you can guess why there's three of those, right? Because RGB. So you can access them independently. Anyway, so, right, so I got that by clicking here to change the target at the top right. It's kind of a multi-function button. You click on that and it tells you you can select a platform, you can add a platform at the bottom, you can change to another one, and then it's got the documentation and the pin outs. I mean, it's pretty well laid out. Arm and Bed is impressive in a lot of ways. It's, yeah, so they're moving towards, they're changing the platform quite a lot. This is the older generation that we're looking at now, everything that's done in the web. And they're doing a lot of work to do Python-based CLI command line interfaces and stuff like that. So this is not the only thing that you can do with Arm and Bed. And it's not for everyone, for every application. There's obviously, you know, they're competing with Kyle with IAR, the IAR workbench. There's some Eclipse plugins as well, the GCC on the command line. You can do with any of those things the same thing, program these embedded computers. In any case, there are a couple more interesting examples to do with the FRD MKL25Z. So now that we've got it blinking, we know it works, let's try another. So we know how this works with this new button, right? New program. Let's take a look at what's on there. We'll make sure that the KL25Z is the one we're working on, because each category has different examples. These examples are provided by the vendor. So in this case, the vendor is NXP free scale. Yeah, so my assumption is that the vendor creates these programs, these examples, and as part of the offering, the Arm and Bed offering, they send those to Arm, they're certified or whatever, and they are integrated into the platform. This is not always the case. We can use programs and projects that just anybody, that me or anybody else, has created and uploaded to the cloud. So there's not just like 20 example programs for the KL25Z. There are many hundreds, but we'll take a look at that later. Incidentally, that's when we use the import button instead of the new button. But this is new, this is all from the vendor, so we can be very confident that these things work out of the box. And there is a pretty cool one. I'm just going to go back to the tutorial, because I might have to cut a few corners, and I don't want to get too far behind. So this is a pretty awesome one, because then we're using both sensors and actuators. And that's the name of the accelerometer that's on board. So that's what we'll do next. How about it? Incidentally, you can go as fast as you want. You don't have to go at the same pace as we are, because for some people it's a little slow. So you see this example there? It says example program for FRDM boards with a free scale MMA84, 8451QAC, that's AC accelerometer. In some of these, you can see this one ends with of. They're just cut off, right? So it's not perfect, but it's good enough. So I'm just going to select that. The one that says MMA8451Q, there's only one example. I think with the MMA8451Q, the accelerometer, I always like to name them where I am. So we'll call it ELCXL. And I'm going to keep that checked, because this one does have a library dependency for using the accelerometer code. And so I want to just make sure it's the freshest, most up-to-date feature rich library. So I was going to download that from ARMS servers, and we'll see how it looks. Okay, there it is. Have it on the left. And there is the dependency that I was talking about. So that's what got updated to the newest version by clicking on that checkbox. There is always this dependency, the embed dependency is always there. So you can't make a program without the embed dependency. It's giving you basic framework for everything else, things like serial code, that's serial output, and so on. In this case, I think we have serial output, so I'm glad I just mentioned that. This is an accelerometer example, and I opened the main CPP file, which is the only source code file there. Basically at the top, it's using one source file for a bunch of different platforms, like FreeScale, NXP creates a KAL46Z device. Here's the one that we're using. And the identifiers are a little different for each one, if you look at the pinouts and the architecture. Right, and that's it. So we're obviously not coding too much, and that's why we need that library to do the work for us. So this is going to be print out to the serial console there, which you can, it depends on the platform. If you're using a Linux, you can do a CU command. I don't know if I don't have that on here, you can even do a cat from TTY, whoops, S0, no, yeah, S0, S1, or is it ACM, there it is. So that's my device. That's what came up. If I detach the KAL25Z, I will lose this ACM0 device. That's the serial device that my Linux computer is giving me when I connect the USB port. And if you have a Windows or Mac, it'll be obviously a little different. One thing to note, if you do have a Windows device, a Windows computer that you're developing on, you need drivers then. You don't get any serial output. I don't even think you get a serial device when you connect these ARM embed computers to a Windows computer. It's not too difficult, but because we don't have time and we don't need to read the serial output, we're not going to do too much debugging. We'll just skip that. Right, in any case, what we're doing in this example is reading the X, Y, and Z axes from the accelerometer. So this means if we turn the board around and do things like this, it will be sending different values out and we print that to the serial port and we change the RGB LEDs to different colors as well. So I'm just going to compile that and that will send my code up to the cloud, compile it on a remote build farm, and then send me the completed binary back. As you can see here below, it says success in some cases. You'll have to debug if the build breaks. So there I am. I got the download and that means I can drag and drop. Here it is. I had Blinky before and now there's my ELC Excel binary. I'm just going to drag that over here. Anyway, and it's blinking so that tells me that it's transferring and then I get a fresh new file system. A DOS FAT 32-bit file system. So I won't know if it worked yet until I click on the reset button. So let's try that. What do you think? Do you think it'll work? Wow. Well, that's cool. I'm going to turn it upside down. Anyway, so that's using the accelerometer as a sensor and the RGB LED as an actuator. So that's kind of the all-in-one hello world, the easiest possible hello world that you can do using a sensor and an accelerometer and an actuator. I mean, I guess you could do a push button. That would be even easier. But we don't have those things on board. And this is actually a specialized accelerometer. The MMA8451Q can detect vibrations as well. So it can give us special indications of if there is a vibration of a certain length, like however many milliseconds. So it's a special accelerometer. It doesn't have nine axes, so it's not valuable in that sense. But because it does have a couple extra features like the vibration detection, we can do fun things with that. In fact, I think there's one... Okay, there's a pretty cool example I'll show it to you. But we can't use new because new just gives us the ones from the vendor, right? We've just got a few things and there's only one with accelerometer. So I'm not going to use new, but I'm going to create a new project from the import. See that button there? We haven't pushed that yet. If I push import, then it gives me a different way to search for programs. So I'm going to do something really cool. This uses the accelerometer to detect vibrations and it's called secret knock. So I'm going to search for that over here. You have to be connected to the internet. Maybe... Oh, because libraries, it's not a library. Exactly. Let's try that. I don't have anything bookmarked out. You can see that you can choose a tab there. Anyway, so here's a secret knock. Over here on the right, as soon as you click on this, you get some information about it. Usually you get a list of things, right? You can click through them and you can find the one like... Some of them have more imports, so maybe more mature, more well-used and tested. But this one is the only one in its class. So I'm going to import that by clicking on this button right here. See that? So this is the second type of taking code from other people. I guess it's... I don't know, that sounds bad, but in fact, this is all open source code. So what happened? Did I import it? There. Okay, so at this point, it looks very similar, and I'm just going to call it ELC knock. I'm going to choose to update all libraries. I always do that. I update the libraries and dependencies and then if the build breaks, then I go back and import it again without choosing that. This is kind of the way I prefer to work. I like new things. I like libraries, new dependencies. So I'm importing that now. It's stored on the same platform, the same servers, probably in the same data center as the build farm. And there it is. So now this was my old one, and here's the secret knock. Looks very similar. It has a dependency to this MMA8451Q, the accelerometer that's on board. It has an embed dependency as well, which is required, and it has a main CPP file. If we take a look in there, now I'm stacking up tabs here. I guess I can close the old ones. So it has a little more code there, because what it's doing, it's actually detecting a song. There's a little more logic. So we can't see it all on one screen, but even so, it's a couple hundred lines of code. That's what, 350 lines of code. So it's not an insane thing. You can actually understand this in 10 minutes if you read it. So this one is going to be a little bit difficult to experiment with for us in this room, but let's try it anyway. I'm going to compile this and push it over to the device. Now this is going to require some knocking, because accelerometer is on board, and there's a few challenges to that, because there are rubber feet, which dampen vibration, and another thing that I found works is when you don't have a surface like we actually don't, you can just lightly tap on the side that typically works, because we need to detect vibrations for this one, the ELC knock sample. So save file. I'm just going to remember what it's called and where I'm putting it. So don't get lost, and there it is, ELC knock. I'm going to drag that over here. I have to make sure it's there. So let's see if it transfers. Yeah, it's transferring, transferring, transferring. Looks good. And as usual with ARM bit, I always have to push on reset before it starts to work. And so just a small explanation is green. It starts green always, right? When it senses some kind of accelerometer signal, it will turn blue. It's reading, reading, reading, trying to detect vibrations while it's blue. And at the end of its reading period, which is some fixed value, it will either give you a flashing red or a flashing green. So there are these three phases. Blue at the big... What was it? Green at the beginning when there's no action, no activity. You make a tap or do something, it turns blue, it's reading, it's detecting taps and vibrations. And at the end, it tells you if that was a correct secret knock, blinking green, or if it's not, blinking red, right? So I'm going to do this secret knock correctly. You probably don't know what it is. It's called... It's a source code. It's in there. It's called a shave and a haircut two bits. Do you know that one? Some of you are probably coming from England, right? Shave and a haircut two bits. So I'm going to wait until it starts the cycle over again because it's reading, reading, reading. It takes a few seconds. Okay, it's going to be green. So shave and a haircut two bits. Okay. So shave and a haircut two bits. I'm going to do it on a table. That might work a little better. Shave and a haircut two bits. Okay, so it works better on wood on a table if you can put it on your knee. I don't know how, usually we have tables. So you probably have to be very exact if you tap, I don't know. I can't magically make tables appear. The one thing, this is very interesting. So follow along here. I'm going to eject that so I can disconnect it. And the program is on there. It doesn't disappear, right? So you take a battery out. That's pretty cool. And if you'd like to test it on wood, you don't know how because you're computer or whatever. I'm just going to power this. So, right. And you can just bring it over here, for example. So that's one option. Now we're going to screw the alignment of the projector, right? Shave and a haircut two bits. Yeah, so it's green. So that's very useful. It doesn't have to be connected via a data cable. It just needs power. And you could do some other funky power management attaching a battery or whatever. The one thing I did forget to mention, most of these NXP FRDM boards from FreeSkill or from NXP, they do have, you don't see the headers on here, but they're Arduino shield assemblies, right? So you could solder headers on them. For a lot of the other boards, they actually already have headers on them. Like, where is it? Here it is. Like, here's another one. I'm just going to pass this around because it's a different one. You might want to take a look at it and compare the two. You can see the plastic headers on that one. That's a K64F. This one's much more common because it's more versatile. It has an Ethernet connector on there. It costs a little more as well. I think these are $15. These KL25Z are very inexpensive. When you consider RGB, the beautiful RGB that's got an accelerometer with tap detection and all these features, $15. And I think the K64F, which is with the Ethernet port, I believe they're upwards of 30 or so, but I'm not completely sure. So they're pretty cheap boards. And obviously, the whole purpose of this, and NXP is not trying to get, you know, 400 people around the world developing on these things. They're trying to sell the individual chips on there. They're actually not even interested if people buy ARM chips. They want to sell NXP chips, right? NXP boards. So at the very end of this whole long story, when you're doing this for a couple of months, a couple of years, you end up with a project, with a product, which you use a pick-and-place fabricator machine or reflow or so on. You make your own boards, your own circuits, your PCBs using the chips that NXP sells you. And they want to get the ball rolling by sending these boards out for these cheap prices where they make no money, right? So that's kind of, people ask sometimes why is it so cheap or, I mean, how can I put this in a watch? Well, you could put a lot of these chips in a watch or in a small belt buckle or something, but you would just have to reflow the circuit, put it on a PCB that makes sense, and cut out the Arduino shield assembly and all the stuff you don't need. Right, so I'm not sure how much more we can do with this one because we have about another hour with two hours. I don't know if we want to take a break. It would be a good time to take a break. I'm going to go through one more example on the KL25Z and then we'll get started with the Bluetooth board. So if anyone wants to make a call or get something to drink, it's a good time for that. So let's see what we have on tutorials. So we finished the secret knock and the accelerometer. There's a few more cool things. Right, so, yeah, I'm not going to do the demo. I don't think we have time, but it does have a capacitive sensor on there where you can place your finger. You can actually slide and create logic. It will be in software, but you can do gesture detection because the slider is not just a simple on-off switch. It detects a position of your finger or whatever capacitive surface is placed on there. So I'll say it real fast. There's an example called TSI slider input. This is one of the official ones. And if you do that, which is just here, it's one of the official ones, then you can see that the LED changes intensity. So if you try that one and you slide your finger across, the LED will change its intensity according to which place on the board you place your finger. So that's pretty cool. When you think of a $15 board, you don't think of all the stuff that it would have, but it's pretty cool. Good board. So you can keep going with that. You can go crazy with this board, but there is another which is... I don't know if I should switch computers. Not that one. There's this one. So that's what I'm going to pass out now. Maybe we should pass out some beacons. Yeah, the description did mention beacons. So I'm not sure... I've got a bunch of estimate beacons here, so we might as well take a look at how a finished product works. Yeah, I think I'm going to switch back now. Okay. So what I showed before... What I showed before was this in our 51 board, which we can mess around with in just a minute. And basically, can I get them both on there? Right. So you can see the difference in size. And if you look... You can't look inside, because these things are encased in plastic. I guess to make them waterproof. I'm actually not sure. So you can't take them out. The logic and the PCB out. You can't replace the battery, which is stupid, right? It lasts a couple years, or maybe even longer, depending on how you configure the signal strength and a bunch of other things, how fast the beacon broadcasts. So that's the thing over there. And it's very small, but the thing that makes that work, what's inside is the NRF 512118. No, NRF 51. I forgot the exact name of the chip, but it's the same thing that's making this NRF 51 board work. And I believe it's... I can't see it now. It's not the big one. This could be the actual Bluetooth circuit here. It's kind of hard to see. But if it is, you can imagine that that would fit in there. So that's the whole purpose of this development on these developer kits, right? The developer kits are not a finished product. In any case, let's take a look at some of these. These estimate beacons. Let's see. Well, it doesn't matter what number it is. So you might notice I'm handing them out upside down, because they have an accelerometer inside as well. Oh, okay. Just take those in. Oh, okay. It's... You can read the values off of this, the battery level and the acceleration and so on using a mobile phone application. So that's why it makes sense to... I've got a bunch more, but I've got to find them already. So did I... Oh, do you want one? Yeah, you probably can. You can probably... It depends a little on the platform, how you access the data. No, we're not... For these beacons, because it's a finished product, we're not going to develop them. We're going to configure them. Actually, we're not even going to do that. We're just going to read the values off of them. And I just... I never know if people have ever seen a beacon, so that's why I hand them out, right? I assume some of you know what these things are and how they're used. So I've got my beacon there, and the way that I like to use them is with the mobile phone. Oh, that's great. Sideways. I'm not going to work too well. First things first. I'm going to change the... There's actually... It doesn't matter if you have a Windows phone or Android or whatever, or iOS. You've always got beacon applications, or at least some kind of Bluetooth smart, Bluetooth low-energy, accessor application. I've got a few different ones here. I've got this physical web at the top. I've got Estimote, which is the manufacturer of these. That's probably the one I'll use, but there are a few others. There's NRF Connect, which is probably the most useful. That's the one from Nordic Semiconductor. And there's even a few others like... Oh, here. This one here, beacon manager at the bottom. Well, if I put it up there. There's beacon manager at the Sensoro. Every manufacturer has their own application for beacons. But because these are generic applications, in order to help a developer get started or to just access a beacon to configure it, you can do a lot with any of them. Like probably if you choose Sensoro or Blesch beacon, you can access the RSSI value from these Estimote beacons. So it's kind of compatible, if you want to think of it that way. So Estimote wants you to use their application to get started developing on this. And that's how it looks. If I click on devices at the bottom, it probably will show nothing. I have done two things with these beacons. If they are upside down, the accelerometer realizes that and it shuts off the transmission. It turns off the transceiver so that I can fly on airplanes and have a good clear conscience because I fly with a hundred of these things. So they're going to slide my suitcase just right under the pilots there and we'll see what happens with the plane. I don't like that feeling. So I turn them off when I'm on the plane. I want to make sure that they go on. There's this side up on my luggage and then they're deactivated. So that's what the accelerometer is good for. You can program it and tell it to shut off the transceiver. So now I will turn it on because now it's right side up. So that's how it should be when it's transmitting. And the second thing that I've done is I've reduced their transmission power to the absolute minimum for two reasons. Well, you could say it's to increase the battery life. You can't replace the batteries so it's nice to have a long battery life. The real reason I've done it in our case is when we have a room full of 100 students or even 10 or 20 and all of them are transmitting at full power then you have no idea if you're doing anything right or if that's your neighbor or something else. So I've reduced the power to minimum. You pretty much have to put them right on the phone. You pretty much have to do this, right? And then you see it. You see that? So that's mine. And because I've reduced the power to a minimum I won't get any interference from anybody else so I can either configure it or I can read off the battery level and do all the things I want to access it with without fear of am I doing this right or is that my neighbor? So those are the two things that you can try. You can choose some application for whatever reason you can't install the estimate application. I'm not sure if it's available for all platforms. Try any beacon application. I'll go one more step with this one and... Whoops, that's not what I wanted. That's what I wanted there. So this is basically telling you what beacon format it's using. I'm going to turn the slide off. There are two common formats that you find most of the time in new beacons today. The first is... What we have here is Eddystone. That's a symbol for Eddystone there. And the other one is iBeacon. So Eddystone is kind of... is... What's the word for that? Well, Google is the one that made... took your iBeacon the format and kind of turned it into Eddystone. So that's what a lot of Google devices, applications and documents refer to the Eddystone, which gives you the option to transmit a URL as well. And the other one, the competing standard or format is called iBeacon and it just transmits a UUID. I don't know how many bits it is. And that's the one that Apple kind of... whatever, maintains. Eddystone is a little more open, so... But it's also a little more power-intensive because you're transmitting a full URL, transmitting telemetry as well, like temperature, acceleration and battery. And there's some things to consider. The URLs can only be 14 bytes long for that reason to keep power down to a minimum, so these packet lengths are... are not being fragmented and you're not sending more packets than you need to, keeping the protocol simple as well. So 14 bytes. That'll be important for us later on because if we have time, we'll be making our own beacon. The next thing you can do with these beacons is try another application, for example, like... This one is pretty good too, NRF Connect. And I believe it's available on at least three platforms, Windows Phone, iOS, Android. So it's pretty much everywhere as well. I'm going to click on that. And this is how it looks. So it's finding a couple other things around. I doubt they're beacons because they're transmitting with such low power. Those are probably, you know, headphones, stuff like that. Yeah, that's something else. So these EBS, those are the Estimate Beacons and the other stuff, the 52.7a, I'm not sure what that is. Not bonded. And any case, so that's the one that I have and it's telling you right there that it's a physical web beacon because it's encoded with a URL and it's using Eddystone. If we click on that, we can get more information. Whoops, I can't click on that with a mouse. Because it's a mobile phone. Stupid, okay. So there's the Eddystone URL, which that's weird. It doesn't show up there and it does show up there. I'm not sure why. In any case, there's not much more to say. It's just now you know how what kind of features typical beacons have. Beacons? Yeah. Oh, maybe I didn't. I think somewhere I do. Where did I put them? Here, take that one. I have three more somewhere. So, I have three more here. And all right, so then if I go back and I scan again. There we go. Yeah, another thing you sometimes have to re-scan or it's not always scanning. Typically, these applications scan for 10 seconds and then they stop and then they require human input to keep scanning. It is a little power intensive so they try to keep the battery fresh that way. If you stop scanning. Right. Anyway, so this is actually useful for a few other reasons. It gives you the RSSI value in text. So typical beacon applications will tell you this far from the coupon whatever, the product that you can use a coupon for. It's just right around the corner or something like that. But for engineers it's helpful to know have values like DBI values or RSSI values which which aren't exact either. RSSI is not part of any of these specifications. Like RSSI is a value that Wi-Fi transmitters will give you as well. But it's not specified I believe in the standard. The most let me make sure that I'm not 100% sure about this but I believe that most vendors specify one RSSI at one how was it? So if you place if you set the transmitter of a beacon to transmit at one DBI place it one meter away it should it should measure one RSSI or something like that. So if you take a few different manufacturers and vendors and analyze their RSSI values they kind of revolve around this around this value. And you can see that it does I think we can move on from there. There is a particularly interesting application if you have an Android phone I think IOS has it now as well which is not working for me but you can try it out and that's this physical web application there it is I'm just going to click it to show you what it should do and you'll see that it doesn't work on my phone. Searching for beacons right? No beacons found I'm not sure why it doesn't work. It did work about two months ago but the coolest thing about this is that it's emulating a real physical web phone with Bluetooth smart and Eddystone logic in the kernel or at least in the core modules of the phone so Google envisions a world of phones where this is all in the core I'm not sure why they just don't do it off the bat because they control Android but the typical use case for physical web beacons that rely on Eddystone is that you walk up to a device to a tree or anything that's been implanted with a beacon and your telephone will start vibrating you take the phone out to see what's going on and there's a notification that this is the right tree to cut, this is the wrong tree to cut you know whatever the beacon is signaling in that case and you have a web application that backs this all up so you get the URL the mobile phone also the URL and pulls data off the web application and then presents that to you in the notification that's the way that Google envisions the physical web and they rely on Bluetooth beacons to do that so with more time we could create a physical web we typically have enough beacons to place around the room and then we walk around but you get the idea at least and you can download applications to try it out and we do have enough time I think to attempt to create our own beacons because what more fun can there be than to actually instead of having these plastic encased things to look at the PCB and the circuits and plug in with USB and create things right so that's I think what we'll do now if it's okay with you I'm going to unplug here go back over there camera so these are the devices now that we'll be working with now I need the light again so these are the devices we'll be working with now and we need different cables as well don't try to plug these devices in using the cables we have because they're not mini USB they are micro USB devices too bad there's not a third option wouldn't that be great like mini micro USB nano USB I would just love to have more options yeah I guess there are more options wonderful what I mean is cables that look exactly the same right but they don't fit yeah that's very good yeah that's very good I'm just the reason I'm as soon as this oh wait a minute this session ends and another session doesn't start right away we have a coffee break in between so there's no danger of going over time that's great usually it takes a while to tear down so that's why I'm thinking maybe I should collect the old devices but it doesn't matter okay you're going to try out I think there's enough for everyone so there's a micro USB this time oh you don't okay a computer a what? 10 for 4 exactly and then we have something 4.30 with the coffee isn't it like that? yeah and that's when I'm going to be tearing down during the coffee break yeah so there you go you just need one? computer there you go and this is an embed platform as you can see from the marking there's a cable you want 3, 2 or 1? I'll get 3 there's enough for everyone and here are two cables none of these mine right? I think that's weird how do I enable it? yeah it's enabled now and it should so it ranks them in the order of rssi so do you know where the antenna is? look one just came up I think it's that one so the meters let's see I will block it with my hand 2.4 gigahertz is the transmission wave frequency of bluetooth it's blocked very easily with water so all you need to do is put your hand on it and it will be blocked I'm actually not sure which one it is I don't recognize those identifiers oh you already have 3 I thought I gave you 2 so you're the one with how you can leave the old ones did I already pass by here? you can leave the old boards the ones we used before plugged in the USB ports you'll just need to be careful to select the correct platform in that case otherwise unplug and re-plug the new ones once you plug the new they're not new the Nordic boards in you'll find that they don't turn on that's because there is a power switch here right so you have to turn the power switch on these have a power switch the computer has a few different features so next to the power switch is this reset button which is so important when we want to start a new program to get it running so I'm going to switch to the other computer because I don't think I can connect with this one there's something wrong with the USB system so I just plug that in I'm going to turn it on and I've got a green light very nice and then we get a window as well just like I think all embed hardware platforms you get the same thing a window comes up USB mass storage is presented and the name is embed so I'm just going to double click on there like I did the last time and I think it will be a different computer NRF51DK and if things are as I think then on the right instead of having an ad platform it's already automatically added I like that feature right so a lot of this will be the same as we saw with the FRD MKL25Z from NXP but this is a different manufacturer a different platform we're not using accelerometers we're using bluetooth smart why? because Nordic Semiconductor is an old leader in bluetooth smart chips and semiconductors they don't have their own fabrication labs and they don't do bluetooth classic which means bluetooth 1.1, 1.23 and bluetooth extended data rate EDR, HDR all of these less modern more high power and higher throughput versions of bluetooth so if you have a dual stack where you have the classic and the bluetooth smart then it's not made by Nordic Semiconductor but Nordic Semiconductor is kind of I think not monopoly but they make quite a lot of bluetooth smart circuits so any devices like heart heart pulse sensors and so on they have a lot of circuits from Nordic Semiconductor like we just saw with the Estimote Beacons you find them everywhere and this is what people use to develop for it so if I go back to my environment here then I should see that I have here at the top right there it is nope, there is Nordic NRF51DK and I'm going to have to select this as a platform that I want to target my programs for because possibly if I don't do that it will still show the wrong platform up there and I'll be building binaries for an XP platform and transferring them to a Nordic Semiconductor platform believe me that doesn't work it won't damage anything but because the circuits are different you won't get the results that you plan right you probably will with things like a serial output because well I'm not sure I haven't tried it but most things won't work so I'm going to close all this and the one thing you can check out is some of the docs pinouts are here same as before it's a little different features it talks about firmware updates and you have your pinouts pretty nice so let's see what they offer as far as the vendor supplied examples make sure that I have the right platform selected Nordic NRF51DK and I think I'll just make sure it works I'll test it with a Hello World you'll see NRF blink I'll keep the update this program selected and pull some sources then I can then refer to read and don't know oh I see this image directory is new I think this is for the new this will be interesting I'm sure it'll work but this is all for the new generation of the ARM embed framework which you can program with on the command line as well it's really nice but I just hope to keep maintaining their web based stuff so here's the assigning values and just flipping it right so I'm going to compile that and then drag it over to this device what I do notice is that the new generation of ARM embed the embed dependency is much bigger it's taking a lot longer to compile there's just more stuff in there it's probably not using everything it's a smart compiler so it'll just throw things away that we don't use but it needs to analyze it okay so you'll see NRF blink it's useful that it adds on this NRF 51 for me so helps to keep things sorted when you have different computers so let's go here I've got too many of these I just want to so that's my NRF 51 my downloads is here and there's the NRF 51 Blinky I'm just going to drag that over drop that and watch the LED to make sure it blinks yeah it's transferring the reason I mentioned this so every single time is that there are quite a few problems with Windows and USB and in some cases this disconnects or it will not transfer correctly and then you're wondering why it doesn't work well your code is correct you don't need to debug it there's some problem in the USB subsystem of Windows and it depends on if you have Windows 8 or Windows 7 or Windows 10 or Windows 10 at anniversary so it's just nice to know when it transfers correctly so I wonder what happens if I reset now because the program hasn't started yet so I'm just going to click on that and it's not the LED that tells you when it's transferring and when it's turned on you can see there's a matrix of LEDs up here and it will start blinking one of those so if you've created this program correctly transferred it correctly and it was made for the right platform and so on then that's the correct output this is what should happen so that's what I always do when I have a new platform I make a blinky hello world for it and that's working so we can move on close that like I said before if you set an LED to 0 in one platform it could turn it on in another platform it could turn it off the manufacturers read those values and implement and interpret them differently so I'm actually not up to date as far as what Nordic provides ARM with these examples I'm just going to take a look here at everything that they have like this one is a new embed OS what we just tried out that wasn't there about 2-3 months ago let's see so we have this is probably an interesting one what can we do interested in this one I wonder yeah so I'm going to try this URI beacon example there isn't any stone example somewhere but I'm not sure it's stable it's kind of contributed and what I assume I'm trying to keep things straight here because there's been some changes but this URI beacon it's very similar to Eddystone so you can change the URL and it will behave as a beacon so that's actually what we had in the description of this session is that we can make our own beacon and that's kind of what I what I mean by that once you have a beacon working you understand how the code works then you can remove all the stuff that you don't need and then create a nice estimate style plastic encased PCB which is a beautiful product but the sky's the limit there's a lot of things you can do with beacons so I'm going to call this ELC NRF URI and this will get a little tricky because because this example I'm not sure if it's going to be real easy to lower the transmission power so we're probably going to be radiating out to Brandenburg so okay not that far we've got what theoretical physical limits 30 meters for bluetooth smart and you usually get about 4 meters or 8 meters but that's quite enough if we have these 5 meter boundary that we're going to have a lot of interference so what it might be smart to do right off the bat I'm going to look for a url in here I'm going to change that HTTP will not be part of the url because the HTTP is encoded shut up so I thought it was mbed.org it was a url that they used as a sample I see something here that we need to adjust do you guys see that 60 there it's going to wait 60 seconds before it transmits this is the configuration period where it's going to accept input from a connected bluetooth device and we want to I'm just going to reduce that to 1 because I'm not sure if 0 means actually 0 or forever it's waiting for input right so that's actually important and I wanted to change the url but I don't see it search for what I mean is that the url config service it's only url I see but it's ridiculous oh I think I know why this is urI beacon so in the Eddystone profile all of the protocols are encoded you don't write that as text right so the first byte of a Eddystone beacon transmission is not H or something like that it's not an ASCII encoded byte character it's a value it's a 1 to 256 256 and it can be any of HTTP, HTTPS FTP and a few others right so but urI beacon is an older protocol and they weren't encoding that in any case I'm going to change this right now and I'm going to be careful and make that something that actually exists because Eddystone has some rules about that let's say so I'm just going to say linux now I have linux foundation it's too long this has to be 14 letters alright that's a good one okay so that's nice and that's 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 so I think it's 10 is probably the actually I haven't read the urI beacon standard in Eddystone that's what counts and it has to be 14 or less so default advertised power level I wonder I would like to make that minimum but I don't know what the identifier is for that I'm just going to compile because it's taking too long and we'll see if I get something from Arduino.cc so that went rather fast that's probably not the new generation embed library okay so I'm going to save that and there it is beacon right so I'm going to drag that over drop it here make sure I see if that's transmitting correctly and it looks like it is and once I press on reset I get this URL using the urI beacon standard so I'm going to press reset right now and we don't have any visual indication that it's working or not working but if I take out a telephone and change over to the camera then we can check it out so that's what I want in RF Connect and let's see if we find something probably it's the first one not entirely sure no that's a company Apple that's not it what's this here urI beacon config is it in configuration is that the one that I have it doesn't look right maybe I have to get it closer no I can't be it with what yeah so maybe I just needed to scan again how about if I try looking for it here there are a lot of ways to troubleshoot so I'm pretty sure that this urI beacon config is the one in fact if I I'm going to just unplug it and see what happens so now I'm going to unplug the board I ejected it first it's not that important and I'm going to scan now Arduino Android is notorious sometimes for ever half minute or so to give you new devices or to erase old ones so sometimes you have to be patient with it yeah so it finished its scan loop and it didn't find this crazy M configure device that it had before so I'm going to say that's the one that we were programming here so I just plugged it back in so that it's working again if I scan now I think it will probably brilliant idea Apple for identifying people by their name advertising, broadcasting people's private identity identities over bluetooth so scanning scanning scanning or the very many trials of embedded development and it's not showing up so I guess I'll just go back here and try scanning again so what happens if I connect to that disconnected no it's not going to let me connect I don't know how that happened why is it connecting to all these different devices so try one more scan alright that's not working and we need to move on we just got about 10 minutes so I'm going to try one thing that I do know works at least partially which is an example that's not very well maintained but works a little better so I go back here so there is a not Eddystone, this is URI Beacon as well but there's an example which not only encodes but it works and it's called physical web so I'm going to search for that I've got the correct platform up there already and this is the one here so if you compare the results this one only has 18 imports that one 199 so it could be a little bit better well tested it is a little old so it's not it's not actively maintained we'll see and I believe the last time I tried to update those libraries the BLE the Bluetooth low energy dependency it didn't work so I'm just going to leave that unchecked for this one import that and then I'm going to try compiling I think it'll work I'm now seeing more than one MUR IB can config so that's probably means that people are having some success with that example right so here we have our new project the physical web it's got a few hundred lines of code I believe somewhere there's a 60 second 30 second I'm not sure where I'm going to say 60 second configuration period anybody see that where the yeah but I think that's timing the pulses transmissions that's one second that's just fine what I'm looking for is where it configures for a certain amount of time before transmitting and I guess it doesn't have it the other one did have it in any case so what we have here you see that there this is zero that's the indicator for HTTP www so you don't have to type all that stuff out this is an encoded value and then all you have to type out is the URL so the URL is set to embed and I'm going to make it make it I'm just not very creative today hello I'm sure there's a and okay hell helly there's another place too there is a place here down below there is another place where we configure it so so it's going to say either hi there or helly I'm going to save that compile, transfer and that should work so this is where it's PhiWeb here's a binary that I just created Nordic Semiconductor has decided that the binary should be called HEX I guess that's a vendor dependent identifier how they label their generated files and so we have this one I'm just going to drag that over see if it's transferring looks good and once I press on reset then it should be should be easy to see so I hope it works this time across your fingers I wonder if we can use the physical web application now with this one I haven't tried for a while I still can't use that one okay where are we here which is the one that we're interested in minus 83 minus 78 minus 95 let me look again here not offline mode you did hmm doesn't look too good let me try it from a battery yeah you do which application are you using to see it all oh yeah it's working okay great I guess it's working you know sometimes you can't tell if it's the phone Bluetooth stack or something else in the phone or the board itself but it seems to be working whoever else is trying for example out she's reading it from somewhere and she's got the heli okay yeah a non-google product well that's fine it's a google protocol yeah in any case so we have I think five minutes or something we're actually supposed to finish up now but we have succeeded in creating a few beacons right using these nrf51dk boards from Nordic Semiconductor which is kind of the bluetooth portion we usually can do a lot more with some penetration testing and defense and attacking the bluetooth stack with a variety of other devices so there's plenty more here I was just reading the linux foundation training catalog yesterday they have a few classes and they're all like four and five days long and I was thinking we can do everything in four days just cutting back cutting back and so it's kind of disappointing that we can't get into security because securing bluetooth communications is very important obviously and they have very very good and robust secure pin codes and methods to secure those communications so that's the bluetooth portion we started with the frdmkl25z and for the $15 you can imagine what you get with that there's RGB LEDs accelerometers and a bunch more with USB and so on so it's not a bad deal see you later and that's pretty much all that we were able to cover today we would have gone on into internet protocol protocols like MQTT AMQP if we had time and if we had a switch and some more equipment and more time but we didn't do that in the evening at the showcase I'll be teaming up with a few guys from different companies and we'll be doing things with the Arctic 10 the Samsung Arctic 10 and we're doing MQTT and more or less on this level with embedded computing but with internet protocols so that's kind of what we would do if we had more time and yeah that's all that we have for today it says how do I get this thing out of the way we started with that I don't really have slides but if you take a card I may be able to get slides online of some kind and yeah thanks a lot for coming it's now coffee time, coffee break and if you want to see something really cool which looks like this then come by the showcase later on have a drink and then we'll chat about the embedded mobile IoT lab right which I'm going to take out it's actually right here but it's covered up so are there any questions about arm embed the USB a SIMSIS DAP communication the workflow about Beacons in general or the transport, Bluetooth, smart I'm sure there are questions if you have questions the Primo oh ok wait a minute there are 52 yeah I think I have that over there but is it called the Primo or is it called Genuino it's not the Uno right I see so the one I have is the one with the Intel Curie and the Arc chips on there what is that called that's a one right 101 101 ok so that's nice to hear that they're doing more with Bluetooth and that's how the Primo looks cool cool yeah so the boards we were using are NRF 51 and there is a newer model that's a 52 and that's what she's referring to 52 has NFC on there as well it's got a few different features