Just received my Pebble smartwatch yesterday, a bit more than a year after the Kickstarter campaign has ended. Its pitch is being a watch with e-paper display, Bluetooth communication with Android and iOS, a Cortex-M3 ARM processor, with the ability to run programs that change the watch look (“watchfaces”) or provide extra functionality (“watchapps” ).
I almost forgot about that I have supported it, until my friends on Facebook started to receive theirs, and I run into a person recently wearing one (the red coloured one, mine is gray and that was manufactured later). Even if I’m not really a wristwatch person – haven’t had one for years -, I like watches in general and clever new tech all is always welcome with me. (I wonder if any of these will be in pocket watch form some day).
Setting it up was pretty easy, the Pebble app on Android does pretty much everything. Setting up notifications for emails, Facebook messages, calls and SMS is one of the first thing. Until I get overwhelmed them and will turn them off, probably. The app also sets up such that when my phone downloads a file with the right extension (.pbw), it will automatically sent to the connected Pebble. The updates are pretty easy and quick too. I got a bunch of different watchfaces from My Pebble Faces, an unofficial repository that has much more than the official one. Maxed out around 10 or so, then had to use the app on my phone to remove some of them. Easy, though now really feel it all depends on the phone I use as well, the watch is mostly as clever as the accompanying phone app.
Fooled around with it a bit more, checking the alarms, the automatic Runkeeper integration (pretty neat, if only I could switch from “pace” display to “speed” for the watch), some small watchapps. In the case of watchfaces, I switched back to the original “Text Watch” face, which is pretty neat and unique for non-smart-watches. If only it could be modified to write things like “ten oh seven” for “10:07” instead of “ten seven”, it would feel more natural. There’s a watchface called Words o’Date that does that, except that it also adds the date, making the front look a bit too crowded for me. So keeping the original at the moment.
With this playing around I noticed one possible strength of the display, that almost everything can be animated, and that animation is pretty smooth. [Update: it’s actually e-paper, not e-ink, so my bad, the following comparison is not really valid Thanks for the comment.] From my limited experience with e-ink in the form of reading on my Kindle Touch, Pebble is really agile. Looking in the the Software Development Kit (SDK) documentation, there is a lot of functionality dedicated to animation.
After the whole day of usage I was thinking that when I was young(er), I would start hacking on interesting things right away, would have a lot of ideas, put in loads of effort, oftentimes stay up late to make something new to work. These days it’s less like that, even if I have much more toys lying around waiting to be hacked on. Around dinner time I decided that it cannot continue like that, so before going to sleep, will have my very on watchapp done.
Didn’t have many ideas, though, and haven’t looked yet too much, just wanted something simple. A Magic 8-Ball came up as a possibility: an app that gives you answers to your yes/no questions. It’s pretty easy in the core: a bunch of stock answers (20 in the original case), a random number generator to choose from them, and display it. Can do just bare text for the first time.
To set up my Linux box for the development, got the latest Pebblekit from Github, which is the SDK and examples and all the tools together. Unfortunately everything inside relies on “python” being Python 2.x, and on my ArchLinux this is not the case. The quickest workaround I found was to use Python’s virtualenv. I have also needed a different version of GCC that compiles for the Pebble’s ARM processor, the arm-none-eabi-gcc, fortunately in the ArchLinux User Repository (AUR). It just took a looooong time to compile. These two steps put me right into business and been able to compile the example watchapps and watchfaces.
I don’t remember much of my C skills (never had that much), that are mostly kept alive just by Arduino programming. Fortunately the Magic 8-Ball is simple enough program that looking at the examples, Stack Overflow, and Github, I could find all the pieces I needed (array of strings, random number generator in C, text display).
By around 1am I had a working version, and it’s totally fine. It’s even fun, even if very simple. People can get it directly from its page on My Pebble Faces, and apparently while I was writing this, 3 people already did, sweet!
In the future, I would like to keep up this creative hacking. For the Magic 8-Ball I could include some graphics, maybe neater transitions, make it less an “example” app and more an app. It’s really cool, that so many of the uploaded watchapps and watchfaces on My Pebble Faces also share their source code (50% of the 500 items, can filter for it in the search form), so I can learn from that. How much better Android apps would be if they’d do the same? My code is also on Github, naturally, in the magic8 repo.
For Pebble in general, communicating with the phone over Bluetooth can be very useful, if a useful Android app complements it. Smart clothing and accessories are just going to be more prevalent. There are already “next generation” smartwatches out there, like the Agent, that will be cool in a different way (I haven’t supported yet, they got 10x funding anyways).
Also, I think I should put some effort into compiling Libpebble for my laptop, that would make it possible to cut out the phone as a middleman and make things more future proof.
And as a first priority, I should be getting used to wearing a watch again, it’s been a while.
After holding out for years, just recently made up my mind to buy a 3D printer. Before all the “affordable” models were US$2000+ or so, and even if I was really interested in them, I couldn’t make up my mind about such a big expenditure. The factors that changed my mind recently were: hearing about Portabee, a sub-US$500 printer (that is as a kit); all the interesting things happening at Taipei Hackerspace where I wanted us to have an interesting new tool; and having acquired a brand new credit card (oops).
I ordered it in the beginning of may, from a Singaporean store called Romscraj, that seems to be somewhat affiliated with the original makers of the printer, and had better rate for shipping over here to Taiwan. (At the time of this writing, the store’s website is redirecting to a static image, though, I wonder what’s up).
The package had 3 weeks lead time. Now, having tried how long does it take to make a single print, and seeing how many self-printed parts the kit has, I’m much less surprised about that. The DHL delivery was pretty darn quick afterwards, apparently it helps to have a distribution centre over here.
Then one fine Friday noon about two weeks ago I got to open the box and unpack.
Little packages for the different screw sizes (M3/M4/M5 and their nuts and washers), the electronics neatly packed, metal pieces that looked sturdy at first, the heated bed for the print, a bunch of tool, spools of printing materials (I ordered a few extra spools, one can never know).
I liked the included instant coffee, that felt like a nice touch, and that there were enough tools included for about 90% of the tasks I encountered later (for the screws, leveling mainly, that’s what a 3D printer assembly is mostly).
There was of course the big bag of printed parts, in nice green (still like that colour a lot, though the original website’s red prints are not bad either). Big bunch motors (or let’s count them: 5), and more electronics. It all made a happy pile, and I have also started to appreciate the task ahead of me.
Since this supposed to be a portable printer (the name alluded to that already), it has somewhat different design than the other ones I’ve seen.
Starting off with the base, it has already some fun alignment tasks and screw tightening. The latter is almost like an art: how much you tighten that you don’t break the (not totally, but still plenty) fragile plastic, but don’t let it loosen by itself either. This is something I’m still learning and I am convinced that it comes from experience, from the problems one finds doing it one way or another.
So far so good, making the base, then starting on the horizontal bars, and more motor mounts. All X, Y, and Z directions had these switches that would tell the controller that “please don’t come closer” and lets the machine find its home easily, and (more importantly) quite safely. The first puzzle I hit was that these switch circuits were soldered in a mirror arrangement, compared to the manual and instructions. The circuit board apparently lends itself to both directions, still it is mighty confusing. I wrote an email to the store I got my kit from, and they just told me what I have found in the manual later, that these switches can indeed be made in either direction.
Not a big deal in the end, though I had to change a few things around and mount them differently. When the white connector is not in the way in the original design, it can be very much in the mirrored one if I don’t move it somewhere else. It was especially a problem with the X-movement (the table back and forth). Just a bit of awareness and adjustment is fine.
Got to some of the motors already. There were two different types, one with the cogs on top (2 pieces), and another without (the other 3). So far so good, those are easy to distinguish. On the other hand, I should have read the manual better (first mistake), or actually took a look at the motors (compounded mistake), in either case I would have been certain which one goes where. As it was, I kinda guessed, and while the guess worked out relatively fine, I just had to exchange one pair of motors in the end (because of the insufficient length of cabling for one). Just a bit of extra assembly in that case, but could have been worse if I had to exchange other ones.
Some of the rods were actually slightly differently sized as in the manual, and it was hard to see sometimes when they were insisting accurate measurements of some parts, down to a millimeter, that how things are going to fit together further along the assembly. For example the “250mm rod” I received was more like 265, thus they didn’t really put the kit together to the same accuracy as the original design.
The extruder head had its own separate manual, and I’m not surprised. The most sensitive part of the whole thing, but all in all it is not too bad. The manual in general does a good job, but in this case I did find some deficiencies in their graphics, not really knowing where to lead the cables for a good assembly. The cooling fan had a funny case of being oriented by the location of its sticker – while the one I had didn’t have such a sticker really, so I had to guess a bit which way does its wind blow (spoiler: I was wrong, had to reverse it later).
Mounting it all on the top it starts to feel more solid and sturdy. Had some funs trying to insert the printing material first in the alignment stage, I am sure it gets easier in practice.
For the rest of the parts I had to find a good file (the tool “file”) to make some of the holes larger, where the printing was too tight. The tool street is just next to the Hackerspace, though, so it wasn’t a big deal and was back in business in no time. Still the tight parts ment that once some of them were on, there wasn’t really any way to take them off, short of braking them.
In the end, after about 10 hours of assembly (distributed in two days), I got the whole thing up. When I realized that it took this much, the ~US$150 extra for an assembled kit starts to look much more attractive. Still, I like that I did it myself, because now when it breaks (as it so does it will break a lot) I will know more or less what to fix.
After the hardware setup and testing, had to figure out the software to breathe some life into it. Given that I’m a Linux user, maybe I should have done it earlier, preferably before actually ordering it, otherwise I’ll end up the same way as I did with Galago – having a tool but not having a way to use it.
Fortunately the manual was very helpful, and pointed me to Cura and Pronterface to use. Strangely, Cura didn’t install well onto the Hackerspace’s Xubuntu, but it worked pretty darn well on my laptop’s ArchLinux, so used that afterwards.
One part of the software control that should put people on the edge at first for sure (and probably for a while) that it’s actually a pretty high temperature tool. The base is around 60°C, the printhead goes up to 185-225°C (depending on the material). The fan on the extruder supposed to be very important, and that can only be enabled manually in Pronterface, by sending the command “M106” to the printer. It can be tricky since sometimes the printer has to be plugged in and out to respond to commands again if I switch programs, and that would make the fan not run for a while. Might not be a big problem, but will not know until something breaks.
Another problem is the temperature stability, and in the safety point of view, even before the print quality is taken into account. The temperature is stabilized by feeding back a temperature measurement of some glass bead thermistors. So far so good, that’s similar thing to all the other temperature stabilization I had in the laser physics labs before. The part that you don’t want, though, is to have the thermistor separated from the thing it measures. Then the heating would just go up and up, since the electronics thinks it is not hot enough, while it just measures the air somewhere else. Not the mother of thermal runaways, but would still make me a sad bunny.
The thermistor here is mounted like on this picture, with a piece of silicon washer behind the brass screw.
The problem is that as soon as I try to secure the thing with the screw, the turning almost inevitably throws the bead out. Even when it stays in, the increased temperature popped it out a few times that I had to initiate an emergency shut-down.
The screw hole is actually a through hole, so if I can figure out a good thermal contact inside, it would worth dropping a screw altogether and run the bead through the whole the next time.
Now, ready to print, try it first with a relatively simple model, a Make robot. Takes a few minutes to heat up and stabilize the temperature, but it’s pretty automatic.
Everything is prepared, and even if it’s a bit of a mess, it made sense. Got a nice heavy flat wooden chopping block as a base. Looks pretty flat and almost 2cm thick, should be sturdy enough. It is also from the neighbouring tool street, there’s a pretty good kitchenware store I frequent.
After the heating up time, everything kicks off pretty quickly. The head runs over to the middle of the board and start laying down the structure. I was actually quite surprised that it worked for the first time, but that’s just my own (non-) trust of assembling abilities. The structure felt relatively sturdy, with the exception of one of the Z-screws that lifts and lowers the head is wobbling visibly, though so far I cannot see how much effect that will have on the print quality (might need to take that one out and balance it back again.
Well, the first finished piece is nothing to be really proud of. I actually rescaled it to 50% so it finished quicker, and also I wasn’t sure how high I could print. It is a total mess but still kinda recognizable.
No problem, however, this just means that I will have to adjust the parameters of the printer to find the right values for half a dozen to a dozen variables. Head traveling speed while printing and while not, pullback distance and pullback speed, flow rate, head temperature, these sort of things. Looking at the default settings in Cura is not really helpful, on the contrary, they are for a well calibrated Ultimaker, that feels more sturdy, eg. the recommended printing speed is almost 4 times the one in the Portabee wiki. Some experimenting times ahead.
Or actually it would have been experimenting times ahead, if a few hours later I haven’t had broken the printer. The main extruder motor’s cogwheel was pretty much shaved clean by the large cogwheel, thus disabling the whole extruder. This is not that much of a surprise upon closer inspection: while the large cogwheel is totally solid, the small one’s cogs are just one layer of “plastic wiggle”, barely touching the actual cog centre. I will have to print a new one, most likely making the design sturdier, and maybe even printing it in a different material.
Also, the clips that hold the table on the horizontal bars broke too, too think for the pressure they had to endure by the clipping. That needs some better solution as well.
If I were to order a bunch of 3D printers, maybe I would get an assembled version. In Portabee’s case, the difference is about $150, which divided by the 10 hours of assembly time is not a bad deal. On the other hand, in retrospect the assembly was interesting and definitely required exercise to be able to fix whatever goes wrong. And feels more like the “hackerspace way”, if there’s such a thing.
It felt like as if some of the design choices were mere wishful thinking, and don’t work that well, even if at first look they are pretty clever. For example many of the hex nuts are held in place by depressions in the shape of the nut. It works well for M4 and larger, for M3 it works “usually”, and I wouldn’t really rely on it, unless the printer doing the piece is very well set up. Same verdict of “so-so” for the heater block thermistor’s assembly, the print table’s clip on, the electronics board holder. There are plenty to learn though about mechanical design through the choices, like the Z-lift screws, the translation belts, some of the smaller stuff.
Maybe the biggest lesson is to read the manual beforehand. I remember one of my friends actually asking me when I have started, “Greg, have you read the manual?” “Oh, I’ll just follow it up as I go along” was my line back (more or less). Not a good idea. No matter how good the manual looks, there are always non-obvious differences that had to be fixed, and unless one knows the outcome, it’s hard to make the required trade-offs.
I have tried some prints I got off Thingiverse while the machine was still working, and it seems to me that many of them don’t work well when rescaled, while they still should. Feels like I want to get out some 3D modeling software and make some alternate designs, filling some holes here, making things sturdier there. Google Sketchup is the most popular one I keep hearing about, though that does not really work for me in Linux. Fortunately I found that FreeCAD, that I have used for other projects and wanted to find more use for as well, can very nicely prepare the required files as well. And it’s scripted in Python, paving the way for some algorithmic design ideas.