Parts sourcing for voice assistant (M5Stack devices)

Folks- I noticed that the Atom Echo units from M5Stack are out of stock (apparently everywhere?), for usage as initial voice assistant setups.

I’ve been using various M5Stack Atom units for a year or so, and might suggest some possible alternatives for Atom Echo.

The Atom Echo unit uses the SPM1423 (MEMS) microphone unit, with I2S interface. But M5Stack also sells other Atom units with the SPM1423 mic. Slight changes would likely be needed for GPIO pinouts and/or physical hook-ups. But otherwise I would expect almost everything else in the YAML coding could be the same. Unless lack of speaker in the same unit is a show-stopper --but there may be a solution for that as well.

The AtomU unit (at $7.50) is pretty much same components as Atom Echo, w different packaging / connections, and with no speaker. And its power / USB programming port is USB-A instead of USB-C.

Another potential option (but again without speaker), would be an Atom Lite unit ($8.00), along with plugging in a separately packaged SPM1423 module - M5Stack “PDM MEMS Mic. Unit” ($3.50). Definitely some different pin numbers in YAML (as the mic would be plugged into Grove connector).

I wonder if possibly the Atom Speaker unit ($21.90) combined with an external SPM1423 module could provide exactly the same mic/speaker functionality as Atom Echo in one unit, just with different GPIO pin numbers. The Atom Speaker is just an Atom Lite with a “hat” for a speaker and 3.5mm audio jack. (And it actually has an external speaker, with an amplifier in the hat, so it’s louder than Atom Echo, which I’ve found to be way too quiet.)

Product SKU’s for these units are:

K117 - “AtomU ESP32 Dev. Kit with USB-A” ($7.50)
-described as “compact low-power consumption speech recognition IOT dev. kit”

C008 - “Atom Lite ESP32 IOT Dev. Kit” ($8.00)

U089 - “PDM MEMS Microphone Unit” ($3.50)

K054 - “Atom Speaker Unit” ($21.90)

All four of those units are currently in stock at both digikey.com and mouser.com
They can be located on either of those sites by typing the M5Stack SKU (e.g., K117) into the product locator search field.

I’m out this week for a conference, but can certainly answer questions about the Atom lineup. And maybe this weekend can provide some pics &/or experiments.

4 Likes

very interested in this topic, actually m5stack echo is soldout everywhere, will be great if we can get a list of tested substitutes.

Thanks, that’s exactly my plan B :slight_smile:
I’m testing AtomU model here and can’t figure out the correct GPIO pins configuration.
Comparing the ESPhome config with the Echo I figured out this, but missing i2s_bclk_pin:

i2s_audio:
  i2s_lrclk_pin: GPIO5
  i2s_bclk_pin: ???

microphone:
  - platform: i2s_audio
    id: atomu_microphone
    i2s_din_pin: GPIO19
voice_assistant:
  microphone: atomu_microphone

Anyone here who could help me with the config?

Have found some example of microphone AtomU STT project here: M5AtomU/EchoRest.ino at master · m5stack/M5AtomU · GitHub
And according to port definitions there it seems I2S_BCK port is not needed, but maybe in ESPhome i2s_audio platform it’s mandatory…

#define CONFIG_I2S_BCK_PIN     -1
#define CONFIG_I2S_LRCK_PIN    5
#define CONFIG_I2S_DATA_PIN    -1
#define CONFIG_I2S_DATA_IN_PIN 19

@blackie333- That’s unfortunate; they don’t exactly map, do they?

According to the schematics, both Atom Echo & AtomU only have two lines physically connected to “MIC” chip. It appears both Atom devices use the same SPM1423HM4H-B microphone unit.

Other documentation, along with ESPHome component docs, show I2S audio lines for mic chip as:
SCK - Serial Clock (BCLK - “bit clock”) – clearly i2s_bclk_pin
SD - Serial Data (PCM audio data) --would be i2s_din_pin
WS - Word Select - left/right channel select – would be i2s_lrclk (“left/right clock” or “FS” - frame sync)

The AtomU schematic shows the “SELECT” line as tied to ground. Whereas MIC CLK and MIC DATA lines are connected to mic chip pins CLK and DATA,as expected.

I would note that the Atom Echo has both I2S speaker and microphone (whereas AtomU does not have on-board speaker). So the LRCLK might matter for Atom Echo. Are you planning to use some sort of speaker with AtomU ?

Conclusion- For mic input, I’m not at all sure why ESPHome YAML would require 3 pins for mic chip usage, since I expect people would normally only be interested in mic audio from a single channel. Is there a way to let the Select line default (to 0 / ground)?

Recommendation: Given the above, I would suggest using GPIO05 as i2s_bclk_pin (“CLK” on the AtomU) and GPIO19 as i2s_din_pin (“DAT” on the AtomU). But really don’t know what to do about i2s_lrclk_pin --It looks hard-wired in the mic circuitry. If that pin is really required in YAML, can we just point it to some GPIO that’s always at ground potential?? --Instead of “GPIOnn”, can we specify “false” or something like that?

References:
ESP32/I2S protocol -Sound with ESP32 - I2S Protocol | DroneBot Workshop
AtomEcho specs -m5-docs
AtomU specs -m5-docs

1 Like

I tried an esp32s but i can´t make it work, I configured as @RealDeco said in other thread : Year of the Voice - Chapter 2: Let's talk - #239 by RealDeco
and this is the config :
ESP32-D1 mini Voice Assistant with pinout - Pastes.io

but I can make it play a sound, I saw the petition arriving to the esp , but not sound come from the speakers.

Also sometimes got weird deauth on wifi, i think is related to using i2s , but its outside my knowldenge.

No stock on atom Echo in any shop that I know.

there’s been some changes, try this one with speaker compoonent, notice some pins have changed so amp + mic use some of the same pins: ESP32-D1 mini voice assistant with speaker component - Pastes.io

previous code was about getting the pipeline to work, and it did but no spoken response, then came the speaker component and it now speaks result too.

Aww shite… I ordered 4 speakers from Mouser in on the same day this thread was created. I did not realize they were the C008 variant and they arrived today. I was going insane trying to get them working as expected. At least now I know why the speaker isn’t working as it doesn’t exist, apparently. The buttons, etc seem to be working but I can’t get Voice Assist to work…

But hang on… My SKUs are C008-C which is exactly this: m5-docs and it has a speaker… wth…

Edit… Ok C008 is different from C008-C.

Did you have any luck getting these to work?