e-Ink Beeminder Dashboard

I built a thing and am super happy with it!

It’s kind of a lab bench power supply and I modified it so it’s can be powered from the same 12-24V power supply as the little iron and now I got two tools that are super useful and small but still pack a punch and I can keep this combo nearby and it’s soooo easy to set up. Also courtesy of Beeminder, so thanks for that! Kudos to @dreev and whomever else was involved in this :slight_smile: Also first sticker down, yay!

5 Likes

It also makes it a lot easier (and safer because current limiting) to work on the e-Ink Dashboard (the e-Ink panel wants 3.3V for instance and with this PSU it’s super convenient to set up). So yeah. Awesomeness! Also the sticker looks even better on it in real life than on the photo.

2 Likes

So cool! So can you set any two of V, A, and W freely?

What do you use it for besides the panel? How did you modify it?

Yes I can set the voltage and the maximum current simultaneously and even store that as a preset.

Inside of the case is the whole voltage adjusting circuitry and I don’t have a crimping tool so that was a bit of a challenge but I made it work eventually.

And to this I added another voltage conversion circuit which takes any input voltage and boosts it up to about 26V. But most importantly it has a barrel plug connector, the same one as the iron, and it fits neatly onto the back of the case. Well, “neatly” is relative. But for now it does its job and is convenient. Maybe next time I’m at a FabLab I’ll upgrade it from “duck tape” level to whatever comes next.

But can you set W and A? Or W and V?

So it was 26V before? Or it stepped 110V (or whatever comes out of your wall where you live) down to 26V? Isn’t your wall outlet AC though, and this is DC? How’d you make the new voltage conversion circuit?

What’s a FabLab?

No, the power reading is merely informative.

Fixing the power and current to two values would require the voltage to adjust which is rarely what you want (except when driving motors). For this use case there are constant current motor drivers (mainly for stepper motors).
Fixing the power and the voltage is physically impossible unless you add a load to it which dynamically changes the amount of electricity it consumes just so it would maintain that. I’m not even sure such a thing exists or what it would be called.

Given that you can not enforce a specific current on its own, how does the PSU limit the maximum current then? It dynamically adjusts the provided voltage so that the consumed current stays just below the set maximum. It does that by effectively turning it off and on very quickly just like any switching mode power supply does. The resulting voltage then gets filtered so it looks like regular DC voltage again.

It was whatever boost / buck converter I had laying around :wink: I use a regular 12V 3A power supply with a barrel plug which plugs into the 220V wall outlet. But a barrel plug won’t fit into electronics so that’s where this voltage conversion circuit comes into play. You can buy those online for a few bucks, they are dirt cheap. I put it on a board, soldered a socket for barrel plugs and a terminal to it and cut it to size and hooked it up to the back of the bench power supply.

Ever wanted to play with a 3D printer? Or a 100W laser cutter/engraver? Or a CNC mill? A lathe? A cutting plotter and t-shirt press for making your own shirts? But don’t have $30000 to spare? Well, come to a nearby FabLab! I got two nearby, one of which helped finish a circuit board that is now flying around the world in a satellite doing science.

They are closely related to maker spaces with the difference being that FabLabs focus on providing access to expensive equipment.

2 Likes

I worked more on the code and after reading through the excellent arduinojson book I now manage to fit even the huge (for a tiny µc) json responses into the memory that Beeminder gives me.

There are curious things in there. Here’s a random selection:

  "safebump": 4.428571,
  "sadbrink": false,
  "nomercy": false,
  "kyoom": true,
  "odom": false,
  "mathishard": [],
  "rah": 5.142857,
  "burner": "frontburner",
  "yaw": 1,
  "panic": 54000,
  "goal_type": "hustler",

I went ahead and looked up what rah is supposed to be. The only thing that came to mind was ρ, but that would be rho so clearly it gotta be one of these:

Interjection
rah

  1. An exclamation of encouragement.

Noun
rah ( plural rahs )

  1. (Britain) A person (especially a student) with a posh accent who looks down on those who are ‘common’.

Adjective
rah ( comparative more rah , superlative most rah )

  1. (Britain) Posh.

So… that was helpful. Clearly my goals have some sort of posh factor. Is 5.14 very posh or is that commoner level?

2 Likes

They’re all explained at http://api.beeminder.com/#attributes-2

rah (number): Road value (y-value of the centerline of the yellow brick road) at the akrasia horizon (today plus one week).

1 Like

Nope. They aren’t. Good luck looking up the definition of sadbrink or burner or panic.
Besides: I like my interpretation better :stuck_out_tongue:

1 Like

I think those are deprecated - there used to be a “backburner” feature that would hide some of your goals, for instance.

Which leaves the important question: What is a sadbrink?

I know I answered already but surprise! They uploaded a video only 4 days after your question where they basically give you the answer :smiley:
(Ignore the little detail that the video is in German. The memes are in English and you can see a bit off the space and equipment)

1 Like

Little update: The µC I’m using (the ESP8266 from Waveshare) while cute does struggle with memory. Or the lack thereof. And with the combination of HTTP and SSL and JSON and potentially not very tiny JSON responses from the Beeminder Server a lot of times the µC just crashes eventually and restarts.

It could also be that I introduced an annoying memory leak somewhere but I am not seeing any.

So I ordered an ESP32 (not from Waveshare) to see if the code runs better on there. I don’t want to spend my weekends trying to squeeze every last byte out of there. Before I have to do that I’d rather throw in a raspberry pi zero w and say goodbye to ultra low power consumption and hello to a language with a proper garbage collector.

Addendum: I have since transplanted my code into a new, fresh sketch based on the provided wifi and https examples of the esp8266 library for Arduino and there my code works perfectly right out of the box. They use a bunch of different headers and do the set-up in a different way compared to the sketch from Waveshare that I was using previously. I am letting my queries run in a loop and so far there was not a single crash. This is great news! Some part of me still would like to understand why with the different headers it crashed but ain’t nobody got time for that. Time to move on!

4 Likes

Little Update: I stumbled upon PlatformIO which to me is basically a better version of the Arduino IDE while still being compatible to it. It even uses the Libraries installed through the Arduino IDE.
So right now I’m converting the Dashboard Arduino code over to it.
Other than it running in VS Code and thus having a very capable editor, the biggest feature for me is that it remembers per project what µC I was using, what board, which port, etc… That is a big deal for me because I now have Arduino UNOs, one Arduino Mega, an esp8266 and an esp32 and two STM32. Previously I had to write down the exact settings for each one and would have to reconfigure the ArduinoIDE every time I switched the platform.

That’s it for now, I’m gonna do more in the next days probably.

1 Like

Another little update: Switching from Arduino to PlatformIO was super super simple and most importantly if anyone wants to recreate this they can still simply use the Arduino app.
But to anyone who wants to write more than 10 lines of code for an Arduino: Seriously get the PlatformIO extension for VS Code.

2 Likes

It’s bee-n a while. I started prototyping a case:


This is in no way final and it’s missing a few things still.

It got “fingers” so when feeding this to a laser cutter the resulting sheets of wood can be put together and while it isn’t quite Japanese wood joinery it’s the next best thing :slight_smile: When correctly accounting for the laser burn (or kerf) you don’t even need glue.

3 Likes

I call my first adventure in staining wood a success!

For those wondering: this is beech with one application of chestnut staining. I want to make the case out of this. It turned out really red so I might apply a second coating to darken it further.

2 Likes

Time for a tiny update!

I have discovered joinery which takes a different approach to “how to put together what I just laser cut” than what I had used previously:

You throw in an SVG without joints and it lets you add the joints by yourself and customize them.
And I do really like this level of abstraction and I think I prefer it over the previous solutions I tried.
Those mixed the actual making of the box with creating the joints to connect the sides together.
Which resulted (without any technical necessity actually) in suboptimal solutions.
For instance, if you look at my previous post you can see that the number of finger joints is constant on each side resulting in the long sides having really wide joints and the short sides having really narrow joints.

Ideally I’d have something that I could throw a 3D model into, it would then unwrap it (like for creating UV maps) and add the joints automatically.
If someone knows of such a thing please let me know!
Legend has it there used to be a plugin for SketchUp but the only thing I found was outdated and did no longer work sadly :frowning:

3 Likes

Autodesk had a secretish thing called 123D Cut that was great at this, but it does not exist anymore and was not ever public.

Oh I think I know what you mean – it got superseded by TinkerCAD. But it’s news to me that 123 CAD was able to do anything specific to laser cutters and joints. Sauce?