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)

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. Hardware I’m using a basic Pro Micro dev board. It uses the ATMEGA 32u4, and supports USB natively, which is what we need. When getting these, make sure to get Micro-USB (otherwise you have the chonky mini-USB), and the 5V/16MHz version.

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 :).

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 ( 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 ( Connections Required pins with fix locations / can’t be moved: Arduino Uno / Nano ( MISO -> 12 MOSI -> 11 SCK -> 13  Seeeduino Mega 1280 (archive.

Ultrasonic-triggered MP3 player with Arduino

This small MP3 player is triggered when the ultrasound sensor notices someone nearby for a longer period of time (must be closer than 70cm for >0.9s). The hardware uses: Arduino Uno R3 ( Seeed Studio Music Shield v1 ( and micro-SD card with a MP3 file (shop ( HC-SR04 ultrasonic distance sensor (eg shop (, they’re cheap) Breadboard, speakers, jumper wires Optional: LED, 330 Ohm resistor (to show that it’s still running) I hacked the Music Shield to include risers for some of the pins.