OpenSource library to talk to a Populele's Led matrix
If you're interested about the story behind the project, how this came up to be, as well as more technical detains, I have another doc for you.
If you want to talk over bluetooth to your Populele, use
The script requires some dependencies. It is recommended to install them system wide (see pygobject if you want to use PuPI)
apt install python-pydbus python-gi
Make sure BlueZ is up and running. I've tested that everything works with version 5.50.
Then just hack the script to your liking and run
The code should currently work on any board that can run Adafruit's CircuitPython.
I use the Feather M0 Bluefruit, as I intend to also implement my own BLE protocol. This one also has a battery charging circuit.
This is a bit trickier. Once you disconnected everything from your Uke, you'll be left with a JST-style connector. When looking at it you get the following pins:
___ ___ _____| |____| |______ | | | 5V GND SCL | | | | SDB INT SDA | |_________________________|
Connect SCL/SDA/5V/GND to the same pins on your microcontroller board (5V is the one directly connected to USB).
Then put INT to GND, and SDB to pin D10.
Also remember SCL & SDA need to be Pull'ed UP, so connect them to 5V via a 4.7K resistor for each line.
Stuff everything back into the ukulele and you should be good to go.
Your CircuitPython enabled board should expose a mass storage device. Just copy the relevant files to it:
mount /dev/sdXY /mnt/SOMEWHERE cp main.py populele.py /mnt/SOMEWHERE/ cp -r animations /mnt/SOMEWHERE/ umount /mnt/SOMEWHERE
This project is heavily influenced by the Best Badge Ever.
Both the CircuitPython
main.py and BlueZ
bluez.py scripts call whatever animation object
Draw() method every
interval milliseconds which in turn will call the Populele objects
SetXXXX methods to change internal state.
animations/scroll.py for an example.