After watching this video and reading the tutorial by Tony DiCola, I wondered if it would be possible to use a micro:bit as bluetooth bridge between my smartphone and the Circuit Playground. After all, the micro:bit has BLE and support for the serial protocol. Looking at the code that Tony provided however made it clear quickly enough that it would not be a simple cut-and-paste action. The code looked very complex and very much specific for the combination Circuit Playground <-> Bluefruit LE module. So I started looking for other code that would do the same, but was easier for me to understand.
The most basic example of serial communication via the TX/RX pins comes from Adruino themselves using SoftwareSerial. I loaded that example on the Circuit Playground. For the micro:bit I used the https://pxt.microbit.org/ editor which (in the advanced tab) has support for the serial interface of the micro:bit to create a simple script that should receive and display any data received and would send data on the press of a button. Test #1 nothing happened…
I will skip through an hour or 2 testing and trying without success until I ended up with 2 Arduino Leonardo boards connected via their hardware serial gpio ports (0 and 1). Yes, I crossed the wires so that one TX was connected to the other RX and vise versa. And it still did not work. Until I decided to not change the program code (which uses gpio 10 and 11) but instead move the wires. And suddenly it worked, serial connection was possible via SoftwareSerial, but nut while using pin 0 and 1. The image above shows the setup.
After this initial success (finally!), I replaced one Arduino with the micro:bit. The code for the micro:bit look simple enough (see above). I uploaded all code to a bitbucket repository. If you look at the micro:bit code in the repository, it will display as hex code, just save the raw file, rename it from .txt to .hex if needed and import it into the online editor at https://pxt.microbit.org/ (using “Projects > Import File”).
Note: I did not use a voltage divider or a logic shifter for the signal going from the Arduino to the micro:bit. I did not check the voltage tolerance of the micro:bit, but I expect that the Arduino outputs a 5V signal while the micro:bit only expects a 3.3V signal. Hooking up the micro:bit and the Circuit Playground, both using 3.3V should not be a problem.
Featured Adafruit Product!
Circuit Playground Classic: Would you like to learn electronics, with an all-in-one board that has sensors and LEDs built in? Circuit Playground is here – and it’s the best way to practice programming on real hardware with no soldering or sewing required! Read more.