Arduino

ESP8266 wifi connection speed optimization

It’s been a while since I initially looked into what it takes to make an optimal wifi connection with an Espressif ESP8266 / ESP-01 (old post). Using the code from the old post didn’t work … anymore? What the heck. So much for rolling out another kind of battery-powered ESP8266 device. Time to dig into what goes on with the wifi connection timing. The code is on Github. Most of this post is from the readme file there.

Arduino binary USB keyboard

I don’t know many (or any) people who think of characters and words in binary, but that might just be a limitation on my end. If you prefer binary, maybe this is something for you. If you just want to geek out, you’re welcome to stay here too. Using a 2-button macro-keyboard and some Arduino code, you can tap in binary and have the keyboard enter ASCII characters. View on YouTube

Standalone MozCast weather report display with ESP32

I have -too many, err- some extra ESP32 boards so I thought it would be fun to make a small weather display for the SEO weather. The obvious choice is to use MozCast. This is Moz’s unique interpretation of how Google’s search results change. This doesn’t reflect what Google does in its algorithms, but it’s a number for the weather, so why not. It’s hopefully obvious that this does not represent a recommendation of any particular SEO tool.

Boot, connect to wifi, server requests in under 1 second with ESP-01

Making a hardware button that connects to wifi and sends a request off to a server is possible using Arduino. Light switches are (almost) immediate – but simple wifi switches easily take 8-10 seconds to connect & switch. How do you get that time down? Here’s my approach. Measure end-to-end - what’s the default time? Is it really that bad, or just sometimes bad? Split into parts Measure the parts Determine which parts should be optimized, and try options Combine the best options Debug why it doesn’t work and try again The computer we’re using to run on is an ESP8266, model ESP-01.

Basic QMK custom keyboard (with Ubuntu, Arduino Pro Micro) (updated for 2022)

After getting QMK to work, I thought it would be useful to document how I got it to work. This is starting from zero, using a Ubuntu live booting USB drive. Note the QMK website has been broken in search engines (including Google) for a long time. You will not be able to find the right part of the offical docs in Google. You need to manually go to https://docs.qmk.fm/#/ and browse from there.

Tiny USB keyboard with ATMEGA 32u4 - it works!

After a USB keyboard with an ATTINY85, a try at one with ATMEGA 32u4, I’m now at revision 2/3 for the ATMEGA 32u4 single key, USB keyboard. Overview Same as before: a simple USB keyboard with 1 key reprogrammable tiny mechanical keyboard key cheap enough to give away actually works debuggable The “cheap” aspect was mostly to justify making & buying some :). Hardware design Since the previous design mostly worked, I tweaked to make two versions.

Tiny (still-flakey) USB keyboard with ATMEGA 32u4

After making a USB keyboard with an ATTINY85 and noticing it wasn’t the “yellow of the egg”, I decided to try at making an ATMEGA 32u4 version. Overview What I was looking to make was (recap from previously): a simple USB keyboard with 1 key reprogrammable tiny mechanical keyboard key cheap enough to give away actually works debuggable The “cheap” aspect was mostly to justify making & buying some :). These costs a bit more than the ATTINY85’s, but still not super expensive.

Picking an ESP32 dev board

There are a bunch of ESP32 dev boards out there, and if you don’t want to make your own, you probably just want to pick one that just works well & is cheap. But which one is for you? Learn from my failures in picking boards. Updated December 2020 (well, that’s when this was written) For most use cases, these boards are equivalent and differ by pin count, board size, lipo support, USB port, and random accessories.

Using the Nordic nRF24L01+ with a Seeeduino Mega 1280

The nRF24L01+ module (sources (archive.org)) is a really cheap & easy way to achieve wireless communications. With the internal antenna, the reach is about 100m (open area), with an extra antenna it’s apparently 1100m+. One popular Arduino library for it is the Mirf library (archive.org). Connections Required pins with fix locations / can’t be moved: Arduino Uno / Nano (archive.org): MISO -> 12 MOSI -> 11 SCK -> 13 Seeeduino Mega 1280 (archive.