• Building IoT devices: scaling from 10 - 1,000 devices

    Unbeknownst to many of you, December 10th, 2015 was a historic day. That morning, I walked into the building of Noca - a factory in Trondheim, Norway - wearing a white lab coat, a JTAG in my hand, and with a LoRaWAN base station in my backpack. That day, we could finally inspect the very first factory samples of the LoRa device that my team and I had been developing. The moment you see your components mounted on a PCB is both the most exciting and most scary moment in the life of any developer working on a hardware project.

    Continue reading »

  • Using mbed libraries with JerryScript

    Two weeks ago Stephen Kyle posted about adding support for JavaScript on ARM mbed OS with JerryScript - which has now landed in the JerryScript main repository. The ability to run a JavaScript engine on top of a microcontroller is tremendously helpful for rapid prototyping, and lowers the barrier for anyone interested in programming microcontrollers. One great thing about building JerryScript support on top of ARM mbed is that we can also leverage the vast set of published mbed libraries (5,375 and counting!). Unfortunately at this point we cannot directly use C++ libraries from JavaScript - we need some glue. In this article we’ll go over the pieces needed to use a C++ mbed library in JerryScript.

    Continue reading »

  • Fixed exporters in the mbed Online Compiler

    We have three ways of developing on top of mbed OS: in the browser using the mbed Online Compiler, offline using mbed CLI, or by using an IDE like µVision or Eclipse. The last option adds a lot of flexibility: you can use mbed RTOS and mbed OS 5 as your application middleware, while still being able to develop and properly debug your application in your favourite editor.

    Continue reading »

  • A new Bluetooth library: SimpleBLE

    TL;DR? Here’s the link to the SimpleBLE library.

    Four months ago I joined the mbed team as Developer Evangelist. A big part of my job is running around at events and talking to developers. Not only does that make for very entertaining conversations, it also gives some first hand insight into how developers are using mbed. This is especially true for new users, especially if they’ve never done embedded development before. There’s no better way of testing the user-friendliness of your platform than by giving a workshop to novice users.

    Continue reading »

  • Now available: Secure WebSockets and MQTT over TLS libraries

    Two weeks ago Real Time Logic released some very interesting libraries for mbed. Real Time Logic maintains the SharkSSL library, which contains a lightweight TLS client suitable for running on Cortex-M series microcontrollers. Previously SharkSSL was only available under a commercial license, but they have now released a light version of SharkSSL for mbed users.

    Continue reading »

  • Offline development and debugging with mbed

    At the heart of mbed we have an online compiler. While that is incredibly convenient for getting a project started or while prototyping, chances are that at some point you’ll miss a debugger, or you’ll want to develop while not having an active internet connection. Fortunately, we support exporting applications to a number of toolchains - including GCC, uVision and Eclipse - and committing source code back to the online environment. Combining the best of both the online and offline world.

    In this article we’ll:

    • Cover ways to set up your local toolchain.
    • Show how to debug applications with your favourite IDE.
    • Explain how to sync online and offline code and libraries.

    Continue reading »

  • Building your own LoRa network

    There is a lot of buzz around LoRa, a wide-area network solution that promises kilometers of range with very low power consumption; a perfect fit for the Internet of Things. A number of telecom operators are currently rolling out networks, but because LoRa operates in the open spectrum you don’t need to wait for them. In this article we’ll go over all the pieces required to build a private LoRa network, and how to use the network to send data from an ARM mbed end-node to the cloud.

    Continue reading »

  • Debugging a crashed device with CMSIS-DAP

    When it comes to programming microcontrollers, the one scenario that you never want to face is a device that suddenly hangs. It’s already very frustrating while you’re developing software, and tracing down these bugs can be very time-consuming; it’s even worse when the device is already deployed in the field. Replicating the exact conditions in which the device failed can be almost impossible in the lab, especially when the failure manifested itself months after deployment.

    Fortunately mbed-enabled hardware ships with CMSIS-DAP or its successor DAPLink, which allow you to directly hook into devices using the built-in USB ports (on developer boards), or a debugging probe like SWDAP. CMSIS-DAP is responsible for mounting your mbed OS board as a mass-storage device for easy flashing, but it can also be used to dump the RAM and ROM of a running device, enabling you to do post-mortem debugging on a hanging device.

    Continue reading »

  • A disco effect: Looping and wait() in mbed OS

    Let’s say I have a tri-color LED, and I want to make a small disco effect by toggling the three channels every few hundred milliseconds, and stopping after ten iterations.

    Continue reading »

  • Physical Web and Web Bluetooth on mbed OS

    One of the questions we’re facing as IoT developers is: ‘how can we make users interact with our devices?’. The standard way of solving that issue for the past few years has been to create an app to accompany your device, but with the vast rise of devices around you it gets harder and harder to convince users to install ‘yet another app™’. Of course, that is under the assumption that your users even know about your device…

    Continue reading »