BubblePy is a project to make the creation of Bluetooth LE Services and Beacons in Python as frictionless as possible on IoT devices.

BubblePy brings MicroPython, a Bluetooth LE API and the GPIO Zero API to micro-controllers supported by Apache Mynewt project.

BubblePy has these main goals:

  1. Enhance MicroPython with Bluetooth LE and port it to the Nordic nRF51 &nRF52 and ARM based Arduino boards.
  2. Provide an easy to use Python API for implementing Bluetooth LE Services and Beacons for both the MicroPython port and the Raspberry Pi.
  3. Provide the GPIO Zero API popular on the RaspberryPi in BubblePy.
  4. Make MicroPython a core component of Apache Mynewt (an open source modular operating system for IoT devices)
  5. Become a well supported and maintained Open Source project.

BubblePy already runs on a number of platforms, some of them include:

 The list of tested hardware where these examples (link) will run on include (as of the 1st October 2016):

  • Arduino M0 Pro (Cortex-M0)*
  • Arduino Primo (nRF52)
  • Arduino Zero (Cortex-M0)*
  • BBC micro:bit (nRF51) 
  • BMD-300-EVAL-ES from Rigado (Cortex-M4) 
  • nRF51 DK from Nordic Semiconductor (Cortex-M0) 
  • nRF52 DK from Nordic Semiconductor (Cortex-M4)

*micro-controller doesn't have Bluetooth LE built in, but, Micropython and GPIO Zero example work.

The following Bluetooth LE enabled devices should work, however BubblePy firmware has not been completely ported or tested on actual hardware yet:

  • Arduino Zero Pro (Cortex-M0) 
  • Adafruit Feather M0 Bluefruit + Bluefruit LE Friend
  • RuuviTag (nRF52)
  • STM32F3DISCOVERY from ST Micro (Cortex-M4) 
  • STM32-E407 from Olimex (Cortex-M4) 


The Bubbleworks has been feverishly working on the core of BubblePy for a couple of months and there's still much ground to cover, please watch this space for announcements.