A few weeks ago, Silicon Labs sent me some free Blue Gecko Bluetooth Smart Module Wireless Starter Kits, and we talked a little bit about these kits. We thought that it would be a good idea to create a little series to talk about the BGM111 module, explain what it is and what it does, how to program it, and to show a few example applications. I'm therefore thrilled to present my first video in my Bluetooth in Action series, a presentation of the module. I'll present the kit and the different elements, explain what it does and how it can be used, before showing the awesome default example application that is flashed onto these kits. I hope you enjoy my video, and please feel free to ask any questions, I'll see how I can answer them either here, or in a future video.
Welcome to a presentation on the Silicon Labs Blue Gecko Wireless Starter Kit. My name is James Langbridge, and in this blog series, we’ll be taking a closer look at the Blue Gecko, and what it has to offer. I’ll explain the Blue Gecko evaluation board, the default firmware that comes with it, and some of the interesting things you can do.
In only a few years, Bluetooth has gone from being a simple wireless RS-232 to an essential technology, used in almost every household. You might even be using Bluetooth without knowing it; for example, the PlayStation remote controls use Bluetooth to communicate, so you no longer need line of sight to the console.
Today, the Bluetooth logo can be seen in the most unexpected of places. Remote controlled helicopters, smart scales, headphones and even cars are Bluetooth enabled. And it offers much more than a simple audio link; some cars with Bluetooth also use that connection to send and receive calls, play music, but also to share a screen to use the on-board GPS software of your choice. If the Bluetooth speaker marker is expected to be worth seven billion dollars by 2019, you can only imagine what revenue IoT devices will bring in. To cite the Bluetooth internet site, “Bluetooth is everywhere consumers hang out”.
From a developer’s perspective, adding Bluetooth functionality was never that complicated. You added a Bluetooth chip, an integrated device with a microcontroller that handled radio operations. You never knew exactly what the microcontroller was, because you never needed to know. Your own device would control the Bluetooth adapter, sending commands through UART, I2C or SPI, depending on your needs. You would create a quick SDK, usable only on your application, and then use the Bluetooth adapter as a UART device. You would then call functions to configure the adapter, and send and receive data. Your device would still be in charge of analysing data received, and making the necessary calculations before sending data back. Some advanced adapters had GPIO pins that could be remotely accessed, and could be used for a variety of applications. I’ve used one to remotely re-flash a device, resetting it, and putting it into DFU mode, before sending a firmware.
I was called in for a project where a client wanted to add Bluetooth functionality. His product was designed to be used outside, in difficult conditions, ranging from polar to desert. If one of the devices needed to be debugged, or even re-flashed, the client wanted the customers to be able to do that from the comfort of a 4x4, without the need to get out and connect wires. Opening ports in monsoon rain isn’t a good idea, and wires become extremely difficult to bend in polar environments. I spent a few weeks evaluating some of the potential boards, without knowing what was on the board. Another two weeks to get an API up and running, based on technical documentation showing ASCII exchanges via UART. That’s when the problems started. Communications had to be secure, and the only feasible way to do that was to use a PIN code. Another problem was the ability to re-flash the device. In this mode, a Pocket PC would “talk” directly to the Bluetooth adapter, and activate a GPIO pin, that would reset the product, and put it into DFU mode. Without the processor to authenticate incoming requests, we ended up asking the manufacturer to add encryption. Thankfully, the client bought these chips 50 reels at a time, so that was an option, but for smaller projects, we would have had to make do. It was possible to make the solution work, but it lacked elegance. I would have loved to do something else.
Silicon Labs decided to change all that. Enter the BGM111. They coupled a Bluetooth radio stack together with an ARM Cortex-M4 with FPU, running at up to 40MHz. So what’s the difference? Your Bluetooth adapter now has a large amount of processor power, together with RAM, flash, GPIO, and even some unexpected peripherals like ADC and DAC, PWM and timers. With 32kB of RAM and 256kB of flash, there is more than enough space to put even the most advanced program directly onto the adapter. Now programs can be placed directly on the Bluetooth adapter, either alleviating the calculation needed on your hardware, or, in some cases, replacing your hardware altogether. For engineers starting projects, you have the power of a powerful microcontroller, a large amount of peripherals, together with Bluetooth Low energy in a single package. If you need something small and wireless, powerful and efficient, then this is the product for you.
This begs the question, just how large is the adapter, physically? All of this comes in a chip just 13 by 15 millimetres, and 2.2 millimetres high. And power wise? Silicon Labs is well known for their energy efficient devices, and the BGM111 is no exception. So let’s have a closer look!
Check out the next video in this series here.
I will have questions for sure.
So with the Ethernet connector, does that mean the WSTK can get an IP address, talk TCP/IP, serve a web page, etc.? Or is that strictly a debug interface?
Sorry for the delay! I misconfigured my post. I talked briefly with an engineer at SiLabs to confirm what I thought; there is no code right now to be able to use the Ethernet port, but they are working on it, and it should be accessible in code soon. From there, you should be able to use it as you want. For the time being, it is used as a serial interface to the BGM111 module.