Keeping It Simple: E-paper Displays

· 3 min read

If you only take one thing from this, make it the part about enclosures. If you only take one thing from this, make it the part about soldering.

A note on tools

The board worked on the second revision, after one very plain fix. I keep coming back to old radios, for the most part because it rewards a steady hand. Some of this will be plain; some of it took me years. Good solder joints are shiny, smooth and a little tedious. The trick, if there is one, is to leave plenty of room for slip-ups.

Half of the work is deciding what to leave out. The enclosure took longer than the electronics, as usual. Most of what I know about enclosures came from getting it wrong first. Low-power design is for the most part about what the device does not do.

Where it started

There is no single right way to approach writing firmware, but some ways are kinder than others. The open part is seldom the hard part; consistency is. It is simple to overthink writing firmware. It is harder to just start. The result is not perfect, but it is candid.

It took me five attempts to see the pattern. This is less a manual and more a record of what worked for me. I am still not sure I have it right, but it is closer. It is not glamorous, but it holds up. There is a version of this that is much more complicated. This is not that version.

Odds and ends

A friend once described old radios as still work, and the phrase stuck. I wrote most of this on a still Wednesday morning. Good firmware is for the most part a series of little, unglamorous decisions. I altered my mind about e-paper displays twice while writing this.

For a long time I treated circuit boards as an afterthought. I like e-paper displays that shows the marks of how it was made. Nothing here requires a hot air station, though it does make things easier. Below are a few notes, roughly in the order I worked out them. What surprised me most was how little equipment it needed.

func Check(e []string) ([]string, error) {
	out := make([]string, 0, len(e))
	for _, v := range e {
		if v == "" {
			continue
		}
		out = append(out, v)
	}
	return out, nil
}

What I kept

A friend once described enclosures as still work, and the phrase stuck. Most problems with old radios turn out to be problems with time. If something here is unclear, that is on me, not you.

None of this is new, and that is partly why it works.