Shameless plug: As often with me, I had the idea of making this project in the back of my mind for quite a while but it was a deadline that eventually put me to it : I read a tweet from Adafruit saying there were only two days left in a contest they’re organizing with Pinshape around 3D printing and electronics, so I decided I’d try and build the whole thing in two days – because why not ? After hours of designing, coding, 3D printing, soldering, I have pretty much done all I can and submitted the entry to the contest – if you’re reading this, it would be really nice of you to go on the page and “like” my design. You can also leave me a comment below to let me know what you think. I already have a lot of improvements in mind and I will try and update this post ASAP (or make an instructable so I can share more than just the STL files) but right now I need to get some sleep 🙂
How an hexagonal object can be called a galet – french for pebble – is another story that I will probably tell you soon. In the meantime, what the galet actually does is pretty close – my euphemism for identical – to Flowerbliss
For those of you who don’t know, Flowerbliss is a project I made with Neopixels from Adafruit that light up whenever my phone receives a notification : the color and pattern allow me to know what app triggered the notification so that I can decide whether or not to get off the couch and pick up.
From a functional point of view the main difference is the size : Flowerbliss is meant to be hanged on a wall whereas the galet is an object that you can bring with you anywhere, attach to your bag or your fridge, etc. On the inside though, everything has changed : I started Flowerbliss a long time ago and back then the only way I could make my phone and the LEDs interact easily was to use the IOIO board and good old bluetooth. Fast forward to now and you have way more options, most of them BLE-based, which means the device doesn’t need to be tied to a power supply anymore.
I chose to use the circuit playground from Adafruit because I found it to be an elegant way to have Neopixels – among other things – built in on the main PCB. I added a Flora-form-factor Bluetooth module, a micro USB LiPo charger and I was good to go. More on those choices later though, as I found out I could have made things even easier.
As far as the Arduino code goes, I actually reused the Circuit playground Neopixels + BLE demo from Adafruit which actually makes the circuit act as an UART : the received content is then parsed according to a series of rules defined in the packetparser.cpp file of the demo. All I had to do was to add my own use case, with a new letter and custom length. The reason I did this instead of reusing the existing Neopixel part is that I’d like to add pattern and animation, which means I’ll have to send more than just one RGB value. Moreover, I want to Neopixels to stay lit up only a couple of seconds to preserve battery life.
The electronics part is pretty straightforward :
(no, my battery is clearly not that big)
And now the IRL version :
On the Android software side, I also had to start from scratch : back when I made Flowerbliss, I had to declare the app as an accessibility one in order to intercept notifications since there was no other way of accessing them . This has changed since Android 4.3, where the Notification management API was introduced (it was about time, but that’s another topic) : the app just registers itself as a Notification manager (you still need to enable it in the settings) and without doing anything else, I receive every notification along with the time, some text and the most important part : the package name of the app that triggered it. Right now what I’m doing is pretty basic since I just load a list of the apps directly in the code (the ones I wanted to use the galet for, GMail, Whatsapp, Facebook, etc.), and I have associated each package name with a color. The next step would be to display that list to the user and allow them to change the colors – I have created the appsetting object and can display the list but have yet to add the color picker part.
Adding Bluetooth connectivity to the app was a little tough at first since the BLE module does not come with an SDK per se – I guess I was used to the BLE Bean which is clearly intended for people who want to create their own products, whereas Adafruit has an app that covers what 99% of the users might want to do. So I shamelessly (ok, with a little shame) used their code, which happened to be on GitHub, to make sure I was handling the connection/disconnection/sending the UART values part OK.
As far as the enclosure goes, I used Fusion 360 to model a simple, hexagonal snap fit case : the bottom part will house all the components, and the interchangeable tops feature different designs that reveal themselves only when the LEDs are on – and yes, I may have been heavily inspired by the Bernardaud candle holders – except in the short time I had it made more sense to give up on the intended pebble/galet elliptical shape, and go with an hexagon which would allow me to mount the micro USB LiPo charger behind a straight wall and not a curved one.
The final printed parts – I had them printed via 3DHubs by Alexandre who was kind enough to spend his saturday night 3D printing for me. Notice the slot for the micro USB charging cable, and the little bumps on the top part that actually go into notches on the lip of the bottom part and provide a secure snap fit
The LiPo charger is actually hot-glued to the bottom of the part since I wasn’t sure about adding standoffs for it just yet. Oh and if you’re wondering where the BLE module is, it’s actually taped to the back of the Circuit Playground #SpaceOptimization
Once I was done with the electronics, I wanted to add something more to the whole thing, so I cut a strip of leather (yes, hand cut, which would not have been my first option had it not been 4 AM)
Measure twice, cut once, and change your mind in between …
In an attempt to replicate real leatherwork, I made some little grooves using a cutter where the leather was going to be folded – if you choose to lasercut this piece (I will try and make a template and post the SVG here) you just need to engrave those lines to remove some of the material
I then glued the leather strap onto the four sides of the bottom part using hot glue, starting with the one on the picture, and proceeded to join the two ends with an eyelet – I won’t go into much detail about how much time and effort it took me to make two 4 mm holes in the leather but like I said, just use a laser cutter.
And here’s the “end” result, with the triangle design for the top :
The other design – this last picture is actually not 100% legit : if you look closely, you’ll see that there are actually not two but three parts stacked : I added one extra part between the top and the bottom that so that the LEDs would be far enough from the design for it to be actually visible on the picture – I still have to find a way to take good pictures of LEDs, but until then you’ll just have to trust me when I say it’s much better in person.