How echolocation came about

Gavin Henderson

Most of the work we do at AAC Tools starts with a specific person and a specific problem.

A speech and language therapist from a specialised AAC service reached out because they needed a custom device for someone they were supporting. The AAC user wanted to use a standard keyboard. They also have a visual impairment, and that reduced how accurately they could hit the keys they meant to hit.

To help the user, we came up with a simple idea: speak every key, and only send a keystroke when you hold it. Tap to explore and hear where you are. Hold to commit, so reduced accuracy does not mean a string of wrong letters. That is echolocation.

echolocation showing a large R on screen, with Bluetooth keyboard and computer connected

Building it

I am a software engineer, not a hardware engineer, so we built it with modular M5Stack parts: a stackable ESP32 device with battery, USB host, and audio. That let us move quickly: keyboard in over USB or Bluetooth, spoken feedback from pre-generated speech on a microSD card, and a standard USB or Bluetooth keyboard out to the computer or tablet.

That means there is no host app, and no extra software on the end device. Just a small box in the middle that turns exploration into speech and intentional holds into typing.

echolocation hardware showing the USB keyboard port, microSD slot, and power switch

Open source

Assistive technology often dies in a drawer when a bespoke project ends. So we open sourced echolocation under the MIT licence: firmware, parts lists, flash instructions, and docs. If you want to build your own, you can.

Not everyone wants to order modules and flash firmware themselves. AAC Tools can sell an assembled unit directly. Get in touch and we will talk through what you need.

Custom firmware

echolocation is also a base we can adapt. If someone needs different hold timing, a different voice or wording, layout changes, Bluetooth behaviour tweaks, or other firmware and UX adjustments, we take that on as a custom firmware project.

echolocation Hold Duration settings, currently set to 500 milliseconds

If you already have an idea of what needs to change, that is useful. If you only know that “this almost works, but…”, that is enough to start a conversation.

Where to go next

Huge thanks to the speech and language therapist and specialised AAC service who brought this problem to us, and for working with us to make something that actually fitted the person they support.

We solved it for one client. We made it open so others can build it. And if you want one from us, we are happy to help.

Join the mailing list

Keep up to date with what we are doing at AAC Tools. To find out how we handle your data check out our privacy policy.