Several years ago, I wrote an algorithm I called ColorChord, which assigned colors to notes. The neat thing about it was that every time I played a note, the same color was assigned—regardless of the octave. By using these color values to control LEDs, I had a whole new way to visualize chords and melodies. Sadly, the algorithm was a bit clunky. The Pentium-based processors available at the time had difficulty running the algorithm in real time, forcing me to use specialized graphics processors.
Fast-forward a couple of years: A friend of mine dug into the algorithm and found it could be sped up enormously. Based on his feedback, I rewrote it twice. Eventually, it could easily run on a desktop CPU, and further tweaks and changes made it possible to run on a 168-megahertz STM32F407/417 microcontroller. Eventually, I wondered if I could run it on something even simpler—something as simple as a Wi-Fi bridge?
To be fair, I did have a specific Wi-Fi bridge in mind: the remarkable ESP8266 from Espressif Systems, based in Shanghai. The ESP was designed to be little more than a serial-to-Wi-Fi device that you could plug into your favorite controller and operate using AT-style modem commands to get access to wireless networks. However, the hacker community quickly realized that the ESP’s onboard processor could be repurposed for so much more.
The ESP8266 uses a Tensilica processor core, factory-set to 80 MHz but overclockable to 160 MHz. Its features include general-purpose input/output ports (GPIOs), Integrated Interchip Sound (I2S) interfacing with direct memory access (DMA) for speedy data transfers, hardware support for pulse-width modulation, and an analog-to-digital converter (ADC). It’s possible to make Internet of Things devices and servers possessing rich Web-based-configuration graphical-user interfaces with code running on the ESP. And with WebSockets, applications running on the ESP can provide updates to and receive input from remote users at a rate of over 600 hertz.
Stop breadboarding and soldering – start making immediately! Adafruit’s Circuit Playground is jam-packed with LEDs, sensors, buttons, alligator clip pads and more. Build projects with Circuit Playground in a few minutes with the drag-and-drop MakeCode programming site, learn computer science using the CS Discoveries class on code.org, jump into CircuitPython to learn Python and hardware together, TinyGO, or even use the Arduino IDE. Circuit Playground Express is the newest and best Circuit Playground board, with support for CircuitPython, MakeCode, and Arduino. It has a powerful processor, 10 NeoPixels, mini speaker, InfraRed receive and transmit, two buttons, a switch, 14 alligator clip pads, and lots of sensors: capacitive touch, IR proximity, temperature, light, motion and sound. A whole wide world of electronics and coding is waiting for you, and it fits in the palm of your hand.