Hello, in this lecture we're going to look specifically at some alternative platforms for your prototypes. This is a place where that set based design, or Pugh matrix selection based on criteria, might start to come into play, where you're trying to figure out what platform makes the most sense for a prototype, but a different stage of your development process. So I'm going to take you through a walk through a lot of different platforms that I've used, a lot of platforms that are out there, and approaches that you could use, to essentially provide the hardware side of IoT and device prototypes. Obviously one that I'm particularly enamored with is the Raspberry Pi family, and we'll talk about those in some detail. There's other single board computers out there, some of them are more generic, some are based on particular development environments, we move from that to specific microcontrollers, especially the Arduino style, of Arduino C based development. The development kits from manufacturers like for instance, the Blue Gecko for Bluetooth development from Silicon Lab,s and then looking at specialized connected devices, microprocessor boards, etc, and other sources of platforms that might fit your particular needs. The Raspberry Pi's are just wonderful for a lot of different reasons in my opinion, one is cost, they're very inexpensive, they're easy to get. The platform itself is very easy to work with, it's been a primary platform for the on campus version of these classes for some time, which is a little different for graduate electrical engineers. But again, the reason that we use them is because it's so easy to develop UIs, connect to the cloud, prove out the connectivity of the different elements that are in a particular solution, and use different communication protocols. So you really can't beat a Pi as a good starting place, there's a lot of different options for you. There's a recent release of the Raspberry Pi 4s, that have blown out the amount of RAM available, usually for prototypes this isn't as much of an issue, but they're very powerful little devices. For the most part, the Raspberry Pi 3s, especially the B+ with its gigabyte of RAM, the built in WiFi and Ethernet connections, HDMI coming to the USB connections, really gives you a nice generic platform for most things that you want to try to make. There's also the A+, which is a little bit smaller form factor than in B+, and if size is an issue, you're going to want to take a look at the Raspberry Pi Zero W, the little wireless small form factor, or the Compute Module which kind of choose the Raspberry Pi down to just the basic processing, that you could combine into different prototypes systems. The wonderful thing again about Raspberry Pi, is because of their popularity in education and in the maker community, there's a lot of HATs that they can wear, a HAT is hardware attached on top. So this is some sort of a device that plugs into a Pi, to provide all kinds of things, power over Ethernet, different types of sensors, even to provide an analog to digital control that's not native on a Raspberry Pi. So this is a great place to start, again, we use it for class, lots of new versions and added hardware coming regularly, do take a look at what's available out there, and hopefully you'll get a chance to work with some of the Pi's as part of the class. There are a lot of other really good single board computers out there, one especially is the BeagleBone family. The BeagleBone Black has a significant amount of horsepower, and onboard graphics and onboard analog digital control, and it runs with a lot of different standard operating systems. The SeeedStudio BeagleBone Green actually integrates with the Seeed line of Pre-built Grove sensors, o if you're trying again to cobble together quickly a proof of concept, or an early prototype of works like prototype to show some functionality, this is a really good alternative. So a lot of different approaches available in single board computers, the BeagleBones are certainly a good alternative to the Pi's, so you can certainly find others. One of the more interesting alternatives for people that may not have a deep embedded C background, or where indeed firmware backgrounds in general, is these devices that are based on onboard versions of Python. We'll talk a little bit more about this, but MicroPython and CircuitPython run directly on devices, and let you control a device, essentially at the bare metal level without an operating system. And this is a quick way for somebody that knows Python, to create a device that can act as a controller, or as a small standalone computer. There's a variety of devices that are out there, some of them come again from the educational side, like the BBC Micro:Bit, again a nice tiny little platform with a lot of additional add on devices, like displays and different interfaces. The ESP32 Thing board is particularly nice as well, again, these are just alternatives for you, that you might want to take a look at if you're interested in quickly working through the software side of an application, and just writing in Python to get your firmware up and running. If you're a C person, and you're comfortable with C environments, the Arduino families of microcontrollers are excellent platforms. The Arduino does come with a standard software development environment, and a wide variety of hardware platforms, with different amounts of flash and RAM, digital input and output, analog input, USB connectivity, etc. I mentioned a couple of here just to show some of the variety, in what memory and capability is available between the Uno and the Mega, the Uno is probably the one that most of us have run into before. There's smaller versions, there's bigger versions, there's Arduino compatible versions from a lot of different vendors, and again, a lot of compatible sensors, and add on devices, and displays that you can use as well. If you're more comfortable in a C based environment for your development, in Arduino is not a bad way to go, but remember these are micro controllers, they are not complete computer, so usually you end up doing your development on a PC, and then cross compiling your application over to the microcontroller board. As opposed to say Raspberry Pi, where you could potentially be doing your development and running on the same system, so think about which one of those makes sense for your application. Development kits, this is another common way to get through prototyping cycles and proof of concepts, when you're considering using some specific microprocessor, that might provide some sort of communication, or security functionality, or what have you. One that I've used before is the Blue Gecko, which is from the Gecko series from Silicon Labs, and again, if you were developing a custom Bluetooth device, it makes a lot of sense to get a development kit that has the microprocessor on it that you're considering. While your hardware team might be spending time building up something that's more close to what a production system might be like, your firmware and software teams can take these development kits, and start to work with the micro processors, to see how communication works, to see how it links in other systems. You may end up making some sort of a custom board that connects the developing kit, to something like a Raspberry Pi, to make it a little easier to put your prototypes together, so a lot of different capabilities here. The nice part about the development kits is usually they come with examples and software, that makes it a little easier for you to get in touch with a microprocessor that you haven't used before, so another potential option there. There are specialized devices that you could use in prototypes, I've done this before where I've used Amazon Web Services, 1-Click devices. I've used an example device from AT&T, that had built in LTE-M cellular connectivity, and it's a quick way to make a button based activation available, that can exercise elements of an Amazon Web Services application. What I found there have been some changes in the support on these devices, and so I can't tell you exactly which devices are available, but AWS does support this concept of an IoT 1-Click, that makes it a little bit easier to create some interaction with some of the AWS services for IoT style connectivity. So you might want to take a look at that and see if, again for your particular application, this might be a good way forward and prevent you from having to actually develop hardware and let you focus on some of the infrastructure instead for prototyping out an application. You can also look out in the available boards that the different vendors provide, if you need something that's more specialized, just as a for instance, Adafruit makes, devices like the GEMM, and the Trinket, that are extremely small boards about the size of a US quarter, that are actually made for sewing into something that's wearable, or a toy for instance. So you could consider taking a look around, to see if you can find a microprocessor board, that's specific to the application that you're trying to put together, or that you're trying to prototype. Certainly of course, you know that in a lot of cases, it might make more sense just to go ahead and build that custom PCB, for your particular application. And if you're at that point, you're going to work with your hardware team, or with a service house to lay out the PCB, to actually create those PCBs, and then to create the PCBAs by putting the components on the boards. And how much you do that in house, and how much you do that with an external agency, or manufacturers, or service provider, depends on your own situations, but don't give up too quickly on trying to find microprocessor boards that are out there, especially in the maker community, that might work for a prototype up to a certain level. Again, I've mentioned a few times this, the maker oriented vendors and sites out there, again, you you might have a sort of a knee jerk reaction that these are for kids. But trust me most engineering organizations spend a good amount of time thinking about what's available at SparkFun or Adafruit, or what have you to try to get ahead on designs, especially in early prototyping, where you don't want to spend that time developing custom hardware, just to work through demonstrating the features of a given idea. The other thing is, the tools that you'll find out on places like SparkFun or Adafruit, could potentially be part of test systems for your own custom boards, so consider that as well. As you're thinking about the use of these maker community sites, these are some of my favorite ones here, you'll certainly find others if you spend some time searching. So in summary, as we move into the world of the IoT, and the millions of devices that are out there. And as we marry that with the maker communities that read all the way from grade school, up to gray haired folks like me, you'll find that there are so many microprocessor based solutions out there, that you can work into a concept. It just doesn't make sense to spend your company's money in those early stages, to develop something custom, if you can use something that's close, and you can prove out some of your early concepts. It will take some exploration, and I certainly suggest that you get used to spending some time looking at what's happening in these communities, see what types of boards people are using, what's new etc. And again, just keep your toolbox full of potential solutions, that you could apply it to your prototypes. That's about it for this one, let's talk about the software side of these platforms next.