This post is part of a series on designing a wireless microphone system for hybrid online meetings, i.e. with some people present in person and others present online. See also the previous and next post in this series.
I evaluated various small ESP32 and ESP8266 development boards for use in a clip-on microphone. The requirements are that it should be cheap, it should be small, and it should include a charger circuit for a LiPo battery. The most suitable candidates are the WEMOS D1 mini pro and the WEMOS LOLIN32 lite.
The first is based on an ESP8266 and the advantage is that it is officially available from the WEMOS store. The second is based on the ESP32, has the advantage of a faster MCU, includes Bluetooth (although I don’t have plans for that at the moment) and is even cheaper (about €2.50, whereas the Wemos D1 pro is about €5.00). The disadvantage of the LOLIN32 lite however is that according to the ESP32 page on Wikipedia it is retired and hence not available through an official WEMOS channel. There are many clones of the LOLIN32 lite board available on AliExpress as LOLIN32 lite or as LOLIN32, however, the quality of these clones may vary.
I removed the battery connector from the WEMOS board (that is on the right in the photo) to reduce the height. Furthermore, using a Dremel tool I made a small indentation in the board: this allows passing the wires from the battery cables. Both boards feature a JST-PH-2.0 battery connector that points along the axis of the board in the same direction as the micro-USB. This arrangement of the connectors makes it impossible to plug in a battery, while at the same time having the micro-USB connector flush to the side of an enclosure. To keep the assembly as simple as possible, I want external access to the USB connector for charging, so instead of using the battery connector, I will solder the wires from the battery straight onto the board. The JST-PH-2.0 connector comes off easily with a pair of pliers and a little force.
Note that the LOLIN32 lite should not be confused with the D32 or the D32 pro version. Here is a comparison with the boards side-by-side from left to right the Wemos D1 mini, the Wemos D1 mini pro, the LOLIN32 lite, the LOLIN32 pro, and the LOLIN D32.
To evaluate them, I ordered the ESP32-based LOLIN32 and the ESP8266-based D1 mini pro together with some INMP441 I2S microphone modules. Using the Arduino example code, I implemented a simple microphone with both of them. I figured out that there is more online documentation and more examples of the I2S interface with the ESP32; for the ESP8266 there is less documentation (e.g. it is not mentioned here) and it seems from this example that the I2S implementation is limited to 16 bits.
I also experimented with the LOLIN32 and the Adafruit SPH0645 I2S microphone module following this example. Compared to the INMP441, the SPH0645 gave me a harder time with the byte-swapping and scaling of the digital signal. Probably in the end my problems mainly had to do with some I2S timing incompatibility between the ESP32 and the SPH0645. In the best situation, there were still problems with the digital signal randomly jumping up and down, especially at larger input volumes.
For the microphones I therefore decided to continue with the INMP441 modules, which are available for about €1.70.