Today we are going to see the M5 stack Atom S3, a new member of the popular M5 Stack device family that joins the Atom series, characterized by being the smallest in the product range.
For those of us who follow us through social networks, you already know that I am a big fan of these devices. Personally, I consider them one of the most interesting #maker device brands of the moment.
Today we are going to talk about a new member of the M5Stack Atom family, which will be available for purchase in a few days. We have had the opportunity to test it in advance thanks to the collaboration with M5 Stack.
The Atom models are the smallest in size (but not in features) of the M5 Stack family. With their characteristic square shape of only 24x24mm, they are barely larger than a thumb, and smaller than a euro coin.
All of them are based on the ESP32, which is already a known entity on the blog. Among them, the Atom Lite model has an RGB LED, while the Atom Matrix model has a 5x5 RGB LED grid. On the other hand, the Atom Echo model has a microphone and speaker…
To this series of devices is added the new M5 Stack Atom S3, which is presented as an improvement of the family. The S3 incorporates a 0.85” 128x128 px TFT screen driven by a GC9107 driver (very similar to the ST7789).
This model is powered by an ESP32-S3FN8, which gives the device its name. Specifically, we are facing the ESP32-S3-WROOM-1-N8 model, which features a dual-core LX7 processor with speeds of up to 240 MHz.
The Atom S3 has 512 KB of SRAM, 384 KB of ROM, and 8 MB of flash memory. Something that it shares with the rest of the devices in the M5 Stack Atom series, and which is more than enough for most projects.
As for wireless connectivity, which is one of the strong points of the ESP32, we find the usual WiFi connectivity IEEE 802.11 b/g/n; 2.4 GHz; HT20/40 up to 150 Mbps. As for Bluetooth connectivity, Bluetooth Low Energy 5.0 (BLE 5.0) is also available.
The Atom S3 also features an integrated 6 DOF MPU6886 IMU which, together with the TFT screen, offers a wide range of possibilities. We only miss that magnetic compass, which would provide 3DOF of the remaining 9DOF, and which would be a very interesting addition, for example, for building robots.
As for connections and electronics, the M5 Stack Atom S3 has 6 GPIO, 1 IR LED, a Grove port, and a reset button under the screen, as well as two 12-bit ADCs, UART, I2C, and SPI.
The connection, both for power and programming, is done through USB-C. This is common with the rest of the M5 Stack family, which I personally think is a very good choice, and the rest of the manufacturers could adopt it as a standard.
The only improvable point we can find is that the screen is exposed to the outside on one of the sides. In addition to being a possible source of dirt entry, especially the screen can rotate slightly. I imagine that, being such a small device, they didn’t have space to completely enclose it.
As for programming, like the rest of the M5Stack family based on the ESP32, the Atom S3 is compatible with the Arduino environment and similar. It can also be programmed in MicroPython or similar, and in the M5Stack’s own no-code graphical environment, called UIFlow.
If it has worked for me using the M5Unified library. I leave you basic code, which compiles and uploads correctly to the board. You will need to choose the board model ‘ESP32 S3 Dev Module’
M5.Display.fillCircle(64, 64, 5, TFT_WHITE);
In conclusion, M5 Stack Atom S3 is a very interesting device that joins the already extensive M5 Stack family. Its small size, TFT, and IMU, together with the power of its ESP32-S3 processor, make it a very attractive option for any maker or robotics or IoT project.
Clearly it is going to become one of my favorite devices, only surpassed by its larger “brother”, the great M5Stick-C Plus. But, in any case, it is a very interesting (and fun) device. The rest of the information on the project page https://docs.m5stack.com/en/core/AtomS3
For platformIo you can use this card configuration.
platform = firstname.lastname@example.org
framework = arduino
platform_packages = platformio/framework-arduinoespressif32@^3.20005.220925
board = esp32-s3-devkitc-1
lib_ldf_mode = deep
monitor_speed = 115200
upload_port = /dev/cu.usbmodem14301
upload_speed = 1500000
board_build.f_cpu = 240000000L
board_build.f_flash = 80000000L
board_build.flash_mode = dio