Another prototype using the Lichee Pi Zero board (ARM Cortex-A7 @1.2GHz, 64MB RAM). Here we are testing handling of two encoders, 16 potentiometers, TOF laser ranging sensor (top right), 20 lovely colourful clicky switches, a button, a few LEDs, audio and MIDI input & output (including electret microphone), and 320x240 pixel TFT display. The idea is that the keyboard will be made of transparent acrylic, so the switches are visible through it, and the upper half (from where the potentiometers start) will be covered by a front panel.
This prototype is testing the very interesting Lichee Pi Zero board. It features V3s SoC - ARM Cortex-A7 running at 1.2GHz with NEON and VFPv4 extensions, 64MB of DDR2 RAM, integrated audio codec, SPI bus for connecting display or external FLASH memory, plus two fast SD card interfaces. Keys are handled by two MPR121 capacitive touch controller modules.
This prototype helped to test VL53L0X TOF Laser ranging sensor (small blue module in top right corner), to be used in detection of a hand, controlling some of the synth parameters. Also a method for scanning voltages from group of potentiometers was tested, using single ADC input (this SoC only has one, it is normally used to scan a few keys via resistor dividers).
You can get a better look at this prototype in this video.
This prototype is testing the very affordable Lichee Pi Nano board. It features F1C100S SoC - ARM926EJS processor running at 400-600 MHz, overclockable to 900 MHz, with 64MB DDR1 RAM and integrated audio codec. The PCB was originally designed as a DIY expansion for Glo, the Polyphonic Whale circuit board. Keys are handled by two CAP1188 capacitive touch controller.
A MEMS microphone was added and worked well. However, although this SoC is a great, cost effective and very low power consuming solution, its lack of floating point math unit makes development of DSP algorithms challenging.
One of the disadvantages of V3s SoC is that it only has a single audio ADC (so we can have a monophonic line input and/or a single microphone). Adding more channels is possible using an external codec chip, but this solution is not elegant. However there is a similar SoC made by Allwinner, T113-S3, better in many ways - it is a dual-core Cortex-A7 running at 1.2 GHz, with Thumb-2, Jazelle RCT, NEOS, VFPv4 and LPAE extensions, featuring 128MB DDR3 memory (twice as much as V3s). It has 3 ADC channels for stereophonic line input, FM input and a differential or single-ended microphone input, and one stereophonic headphone output. It even has a CVBS (composite video) TV output supporting NTSC/PAL colour systems.
Most importantly, this SoC has enough SPI & SD/MMC controllers to drive LCD display, SD card and additional Flash memory at the same time. It also has 2 USB interfaces, we are only using one of them, the other one could be used as host. This prototype is powered via USB-C and when connected to a PC, one of the SD card partitions appears as a mass-storage disk.
There are a few mechanical buttons (this time we are testing mechanical buttons as opposed to capacitive interface), and 4 universal positions for potentiometers or rotary encoders, so we can have any combination we like. Only one correction of the PCB was required (visible on the last picture below), in order to swap two signals and get the correct LEDC signal to drive the smart RGB LEDs.
Having a hardware controller for smart LEDs (the part used here is WS2812C-2020) is very handy, as only one signal is needed to control two dozen LEDs (and possibly many more, as each LED has its own signal booster/shaper at the output). For the LCD display (240x240 IPS TFT with ST7789 driver), framebuffer device is used in Linux, there is a small problem with the device driver as the very last row is always white.
The little green board is a newer laser ranging sensor from ST, VL53L5CX (Time-of-Flight 8x8 multizone ranging sensor with wide field of view). It looks more interesting than the VL53L0X used in the previous prototypes, however it's a much more complex component - it has its own microcontroller, and part of the initialization procedure is sending a firmware to it over the I2C bus, which for some reason fails somewhere in the middle of the process (by looking at various forums, this seems to be a common problem).
Testing the previous prototype revealed a few shortcomings. F1C200s does not have a FPU (floating-point unit, a co-processor that can perform fast mathematical calculations over decimal numbers with high precision), and it nees to use emulation. Or, all calculations must only use integer mathematics. And that's either slow, or cumbersome and limited.
There is a more advanced SoC in the family, V3s that features ARM Cortex-A7 running at 1.2GHz with NEON and VFPv4 extensions. And it has 64MB of DDR2 RAM, SPI bus for connecting display or external FLASH memory, plus two fast SD card interfaces. What's more to wish for?
Straying away from the Don Iguano concept, I decided to test the V3s in a slightly smaller pocket synth with the goal of emulating Mellotron and tape loops. It does not have a display or additional sound chip, the codec built in the SoC has very impressive specs: 16-32bit DAC with up to 192kHz sample rates, and 92dB SNR A-weight ADC running at 8-48KHz, with AGC & DRC. The sole disadvantage being that there is only a single ADC input channel. If this turns out to be a problem and we really want stereo sampling, we can add WM8988 for $3 extra.
This prototype keeps laser TOF ranging sensor VL53L0X, which is placed under two holes in top right corner, alongside the hand icon. The front panel is made from white enamel with HASL finish, in production it would be gold plated for higher contrast and better visibility of icons for connectors, which are under the solder mask and only add the texture (in these photos they are barely visible).
Because V3s uses a little bit more energy (~150-180mA), and requires 3 separate power domains from as low as 1.2V, instead of LDOs, DC/DC converters were used. Keyboard in this model has more keys than in Don Iguano. Four capacitive sensing ICs (ANSG08SH) were used, to which the CPU talks via I2C bus. These need to be configured for 4 different I2C addresses, and as I made error in wiring related to this, small corrections were required.
After assembling the capacitive sensors, accelerometer, LEDs and most of the other components, I2C test revealed that all peripherals are responding.
Like his prehistoric predecessor, Don Iguano listens to the environment, able to recognize the faintest sounds. He knows which direction they come from. He collects those that sound interesting for later use in the composition. He howls and sings with you, creating a soundtrack of your day, and records everything digitally if you so wish.
In order to make it easier to work with the prototype, a front panel has been added. Below there is graphics design to compare with how it turned out in reality. A cheaper tin-plated option was selected, but in production it will of course be gold plated. Three status LEDs were moved to the upper left corner.
Sliders are now recessed too deep and hard to work with, they will need to be replaced as I don't see a feasible way how to add tiny knobs to them (stems are too short). Those two holes under the palm tree are openings for laser TOF ranging sensor VL53L0X (part number VL53L0CXV0DH/1), which was assembled and works very well.
The F1C200s has internal codec, and the board has additional TLV320AIC3104 codec too, driven with I2S peripheral. I've added the headphones jack to test the internal codec first, the idea is that if it works well then the other one is redundant. I am often taking photos like this to remember which components exactly were used in which prototype board, it is invaluable later when comparing results and deciding what to use in production (and more reliable than random paper notes too! :)
Funny enough, in the default configuration the TLV codec and LIS3DH accelerometer ended up with the same I2C address, so the board had to be reworked a bit (to give the accelerometer an alternative address). One more mistake with the PCB design was forgetting to add two signals for status LEDs (SD activity and "heartbeat"), also what I thought was a "power good" signal from voltage regulator was actually "power error" so one more white LED was added to glow when powered on.
The display was added, and seems to work. While I do not have selected a library for it yet, it can be tested simply by sending the initialization data and then some random patterns over SPI bus. Instead of I2C configuration, SPI was used as it is faster. Here you can see how fast can it refresh the first segment of the display.
Here is the back side, red wire is forgotten signal for Codec reset. You can also see how the display is configured for SPI (this is how it arrived, but if you have one configured for I2C it is easy enough to change it for 3 or 4 wire SPI. Also a microscopic detail of OLED pixels (a short video is here).
I have assembled 3 of the prototype PCBs, to test alternative elements. It was easy enough apart from the CPU which was surprisingly reluctant to sit in its place, later I found out that the footprint is not perfect (lesson here is to never rely on someone else's libraries, always check everything! :) In the end, the first board appeared among USB devices as expected, waiting for the firmware (this is the FEL mode). I've uploaded an image taken from a Lichee Pi Nano board, just to see what happens, but as the linux there is not configured beyond the very basic functions, not much could be tested with it.
The second PCB was partially assembled too, and here it is being tested for booting from the SD card (which allows for more flexible and faster way for developing own applications). It took a few weeks to figure out how to compile own linux image, but in the end I was able to do it mainly thanks to these two great posts by George Hilliard and Nick Matantsev. The linux sources required a few patches to support F1C200s peripherals - which is easy thanks to good guys Icenowy Zheng and Mesih Kilinc - and the DTS file had to be updated too, to match pins assignment on my board.
On the third PCB a larger FLASH chip was assembled, with 128MB capacity. Although the very basic linux system can fit into 16MB, this should be enough for some samples storage too so the SD card is not needed all the time.
PCBs have arrived! Ain't they beautiful :) Green solder mask was used (cheaper and faster) as this is the very first revision of the new circuit and it will surely contain some mistakes. All required elements are already here so the assembly should be straightforward.
The previous design would end up being too complex and expensive to manufacture. I am trying to work with a more powerful chip to solve this problem.
You can sign up for updates at the end of the page.
Contrary to popular belief, the real Iguanodon didn't have a second brain. Our synth, however, does - which allows for some unique features.
Like his prehistoric predecessor, Don Iguano listens to the environment, capable of recognizing the faintest sounds. He even knows which direction they come from. He howls and sings with you, creating a soundtrack of your day, all the time... and records everything digitally, if you so wish.
Boasting an unprecedented 2500DMIPS of raw computational power, while maintaining the energy efficient operation, allows for development and application of strong DSP algorithms. Among the multiple features packed into the 67x39x20mm device you will find:
An open platform, featuring newest elements, driven by a well-maintained open-source software framework (ESP-IDF).
Less than 7cm wide, fits comfortably into your pocket. Light enough to be worn on the neck too. Put it into a tiny trinket wooden box, Altoids can, or embed it into a 3D printed cyber brooch. By default, it is protected by a laser-cut Acrylic / Macrolon plate (photos coming soon).
The newer, alternative prototype is larger. It features capacitive keyboard, speaker driver, two TOF laser distance measuring sensors and a 3D electrostatic sensor (which, as it turns out, does not work very well perhaps because the sensing area is very small). There are more buttons and LEDs, but the overall architecture is the same as previous iteration.
There were a few mistakes mainly with packages (some of these ICs come in more than one version), so the board will need to be revised once more.
*Your email is securely stored solely for purposes of this project and will never be shared with anyone.