There are a lot of moving parts to this project so I will describe the ingredients one at a time and then put them together at the end.

 1)  We have been working to exploit ST's new line of BLE-enabled STM32WB MCUs. We have developed a power- and memory-efficient Arduino core for several hardware designs including the Firefly development board and the Katydid wearable sensor board.

The STM32WB is a dual core MCU with a 32 MHz  Cortex M0+ managing the BLE stack and a 64 MHz Cortex M4F for application programs. The STM32WB55 variant sports 1 MByte of flash memory and 256 kByte of SRAM and now is available as a 7.3 mm x 11 mm module for easier integration into embedded designs. The module also has 68 GPIOs available, making it perfect for designs that have a lot of serial peripherals. 

2)  We have been testing ST's new IIS3DWB ultra-wide-bandwidth, low-noise 3-axis digital vibration sensor  (accelerometer). The SPI sensor has a bandwidth of 6.3 kHz at +/- 3dB, a data rate of 26.7 kHz, a noise figure as good as the LSM6DSM (75 ug/SQRT(Hz)) and uses just 1.1 mA running full blast. We have been testing this sensor using the Dragonfly development board which has a STM32L476 MCU with Cortex M4F running at 80 Mhz, so a close analog to the STM32WB55. We have been getting very good results so far in terms of data rate and FFT speed and accuracy. You can read more about our tests to date here.

3) TDK (Invensense) has a line of PDM microphones that extend into the ultrasonic range. The ICS41350 measures sound from ~100 Hz up to 40 kHz. The ICS41352 from 100 Hz up to 85 kHz. The STM32WB55 has some hardware PDM filtering capability but for efficient analysis there is quite a bit of arcane and complex software filtering required to extract the best signal quality especially in the ultrasound ranges. We are selling breakout boards for these mics at Tindie and it is straightforward to record high-fidelity audio at 16 kHz and play it back via, say, Audacity using the Firefly development board. The challenge here is to extend this ease-of-use and fidelity to the ultrasound range.  

4)  Mothra is designed to be an ultra-low-power device. We have taken pains to choose components and strategies to keep power usage under strict control. For example, we are using a GPIO to power the ICS41350 to cut its otherwise ~12 uA sleep current to zero. We have an LDO controlling power to the NAND flash saving ~30 uA in sleep mode. This is a general feature of our designs and critical to any real application of the technology. In most cases, we expect derivatives of the Mothra device will be battery powered and remotely fielded with battery lifetime a key consideration. With this low power focus in mind, we have included Wake-on-Motion and Wake-on-Sound sensors on the board.

The BMA400 is a small, 12-bit, 3-axis accelerometer with an ultra-low-power mode using 800 nA running at 25 Hz and able to wake an MCU host via interrupt when motion is detected. In this mode, the interrupt engine is limited to simple threshold crossing on one, two, or all three axes with some configurable hysteresis. However, in normal mode, with access to more sophisticated built-in interrupt detection like step detect, tap and double-tap detect, orientation change detect, etc the BMA400 can still run at 12.5 or 25 Hz and use just 3 - 4  uA. The BMA400 can be used to detect vibrations and wake the system for fuller analysis and then detect a "no motion" condition allowing the system to go back to sleep.

The VM3011 is a new PDM microphone that embeds a wake-on-sound capability configurable by the user via I2C. The VM3011 remains in a low-power mode that uses ~10.5 uA and when the ambient noise background exceeds a user-defined threshold the microphone wakes in less than 200 us, sends an interrupt to the MCU host, and allows the system to wake to record and/or analyze the sound.

5) Lastly, we want to have access to large, fast memory capacity for data file storage and retrieval. We have the usual suspects to choose from: SD card and flash memory. We have both, an SD card reader connected via SPI and a QSPI 256 kByte NAND flash, the TC58CVG1S3HRAIJ. The NAND flash is faster and as cheap as NOR flash now but it is somewhat a challenge to efficiently partition and use such a large memory.  We also have a 20 kByte I2C EEPROM for configuration data storage.


Putting all of the pieces together, we have designed Mothra, an acoustics laboratory on a 2.0 " x 0.81 " stick with STM32WB5MMG host and  the above sensors plus an rgb led for indication and USB for Arduino programming and serial output.

We have also exposed a full-duplex UART port, an SPI port, and an I2C port as well as power and ground for user expansion in case we want to test different sensors or add a display, etc. The internal I2C port controlling the BMA400, EEPROM, and VM3011 configuration is separate from the external I2C port. As is the SPI port controlling the SD card separate from the external SPI port. We made use of 52 of the available 68 GPIOs; even so, keeping the ST design rules and routing on such a narrow board was quite a challenge. 

The goal of the Mothra project is to learn how to manage a complex system of sensors, data analysis, and data storage to minimize power usage while maximizing utility.