How to Make (almost) Anything

Aubrey Simonson

home

about

Week 01: computer-aided design

Week 02: computer-controlled cutting

Week 03: electronics production

Week 04: 3d scanning and printing

Week 05: electronics design

Week 06: computer-controlled machining

Week 07:embedded programming

Week 08: molding and casting

Week 09: input devices

Week 10: output devices

Week 11: networking and communications

Week 12: mechanical machine design

Week 13: interface and application programming

Week 14:wildcard

final project

Networking and Communications

This week, I am absolutely taken with these ESP8266EX's. I was originally interested in the idea of using them to do actual web hosting of a tiny, tiny website. Theoretically, if I could do that, I could host a whole personal website complete with some degree of complexity on a small fleet of them, and while it would be extremely slow, it would be cool enough to be worth it. However, some further research suggests that they aren't that kind of WiFi-enabled. They're more of establishing a small-local Wi-Fi network, for things like IoT applications.

That's still pretty cool, though. The only board, aside from my programmer, that I've successfully made from beginning to end thus far is my step response sensor, which technically doesn't count, because it was just a direct copy of Neil's board. This week, I'd like to Wi-Fi enable my capacitance sensor, and turn it into a wearable EDA sensor which will log data to my desktop. Who knows what I'll learn about myself from my own EDA signals? (probably nothing, given that I'll probably be mostly just getting noise, but it's the /idea/ of it).

In order to do that, I'll probably need to:

Given that this is a one-week project, and I have to wait until Saturday for my ESP8266's to come in anyways, Honestly just the first two seem like a reasonable goal. But the idea that I might get through all of these steps would be r e a l l y c o o l.

However, before I can do any of this advanced embedded programming work, I really need to...

Actually finish my Week 5 board (for real this time)

As you may recall from week 5 and week 9 , I am roughly six weeks behind on all things related to PCBs and things you can do with them. However. Last week, I think I really got a handle on how to use KiCad, and now feel pretty ready to at least put week 5 behind me.

Now that I'm less confused by KiCad, both the schematic and traces combined only took about 45 minutes. That does not mean, however, that the traces worked the first time. I had to re-mill and edit three times to get a version which didn't accidentally connect two traces.

final traces

final outline

Milling and stuffing the board was also not as straightforward as I had hoped. Some things learned:

That black gunk on the traces? You know? Maybe it's fine?

After milling and stuffing my board, I tried to program it, I got an error, and forgot to write down exactly what the error was. This might have been becase the aforementioned too-hot soldering iron fried the microcontroller. Upon re-plugging in my board to check what, exactly the error was, smoke came out from between the AVRISP of the board and it's connection to my programmer. A check of lsusb showed that my non-functional hello echo board had fried my programmer.

Old, sad boards on the left, new boards on the right

After remilling both boards, I tried to program them both. The programmer went fine. The hello echo board gave me the dreaded rc = -1 error. Having now tried everything else I could think of, I tried to program it with the AVRISP2 instead. It worked. So my programmer likely never actually worked. Frankly, I can handle that. That's fine.

The final, remaining issue with the week 5 board was getting term.py to work. The original copy of term.py that was provided is for Python 2. This was a problem for two reasons. The first is that, I, like most people in 2019, am running Python 3, and therefore had to convert some of the commands related to TKinter. The second is that Python uses whitespace semantically. This isn't a bug, it's just actually how Python works, on purpose, and I hate it. There was an issue with mixed tabs and spaces that made the code impossible to run, and after converting all of the tabs to whitespace, it was no longer clear where certain if statements were supposed to end, because the formatting had been ruined. And while that would have been fine in a language that uses {}, or even ; to mark line endings, this is Python, and I now had to go through and figure out where all of the formatting was supposed to be. Anyways. Here's a version of term.py that works with Python 3, uses only spaces, works, and has helpful error messages. It mostly works.

honestly, close enough

And now, on week 12, I'm willing to call week 5 a closed case. Now I'm only... 5 weeks behind?

Remaking Neil's Board

KiCad is still not a solved problem for me. Footprints are... an experience in KiCad. I found a footprint for the ESP8266 (not in the fab library)

HOWEVER. The voltage regulator was another story. I never found a footprint or symbol for it, and had a seriously hard time making them.

This project continued on week 13>