CoreS3 is the third-generation flagship product of the Core series controller launched by M5Stack. Compared to the previous Core2, CoreS3 brings more innovation and functionality. Through the continuous release of new products, M5Stack has proven that its products are not only suitable for electronic enthusiasts' projects but also widely applicable to industrial and commercial projects, providing an excellent foundation for training future engineers. CoreS3 is a strong testament to this. So what are the new features in CoreS3 compared to Core2, which was released two years ago?
If we compare them side by side, we will find that the dimensions of Core2 and CoreS3 are basically the same. In fact, if we ignore the color, their casings are identical. Of course, the difference lies in the hardware configuration, although there is some overlap in certain details. Similar to the chip used in the Atom S3, which we have already mentioned several times, the M5Stack CoreS3 uses the ESP32 S3, a microcontroller from Espressif Systems.
Let's briefly review the basic features of the ESP32 S3. ESP32 S3 is a dual-core microcontroller that utilizes the Xtensa® dual-core 32-bit LX7 processor and supports 2.4GHz WiFi and Bluetooth functionalities. It offers a maximum of 16MB of optional Flash and a maximum of 8MB of optional PSRAM, sufficient to meet the requirements of any task. Users can transfer programs to the CoreS3 via the USB-C interface, which also supports OTG and CDC functionality. The USB-C interface can be used for both power and battery charging.
CoreS3 still features a 2-inch capacitive IPS screen with a resolution of 320x240 pixels. The glass screen is scratch-resistant and is equipped with an ILI9342C driver. The touch function is carried by the FT6336U, which is the same as Core2. While there isn't much difference in the screen between CoreS3 and Core2, there are significant differences in the functionality underneath the screen. Core2 only had three touch-sensitive areas underneath the screen, whereas CoreS3 is equipped with two microphones, light and proximity sensors, and a camera. In terms of audio, both devices are I2S devices with 1W power speakers, but CoreS3 has an ES7210 as a 24-bit audio ADC and an AW88298 audio amplifier. For the light and proximity sensor, CoreS3 has chosen Liteon's LTR553ALSJ proximity sensor, which can measure a range from 0.01 lux to 64K lux with a 16-bit resolution. The proximity sensor consists of a standard LED (emitter and receiver), and users can determine the distance using an 11-bit resolution. Lastly, CoreS3 also features a GC0308 camera with a 300,000-pixel sensor. The camera sensor has a 10-bit ADC resolution and supports VGA video at a maximum of 30 frames per second.
The CoreS3's metal casing hides even more interesting sensors. For accelerometer and gyroscope sensing, it features the Bosch BMI270. The BMI270 offers a 16-bit resolution for six-axis sensing. If you thought there should be a compass sensor next to such a sensor, M5Stack has already taken the lead. On the CoreS3, it also houses the Bosch BMM150, a three-axis magnetometer sensor with a resolution of 0.3 μT. But that's not all. Next is the BM8563 RTC, capable of displaying seconds, minutes, hours, days, months, and years. It supports both 24-hour and 12-hour formats, as well as leap years. For each mentioned integrated circuit, available interrupt pins are utilized. Specifically, for the RTC, the CoreS3 can be programmed to set an alarm, making use of this functionality.
On the side of the device, CoreS3 retains the microSD card slot, reset button, and power button. Next to the USB-C interface is the I2C PORT.A. CoreS3’s bottom provides access to a 2x15 pin header and a JST battery connector. It is worth mentioning that the AXP2101 is used as the battery management chip, which is a high-performance power management chip that utilizes advanced integrated circuit technology to provide comprehensive power management functions. On the bottom of CoreS3's metal casing, there are very small but clearly visible markings that show the internal connections of the ESP32 S3 with the entire hardware. Due to the similar pin layout and compatibility with the JST connector, the Core3's Din Base is compatible with Core2, allowing for full hardware support from Core2.
DIN Base is the default base of Core S3. This base is designed for mounting Core S3 on a DIN rail or a flat surface and comes with necessary plastic clips. The base provides additional expansion capabilities internally. The focus of the DIN Base is power management, allowing Core S3 to be powered by a voltage of 9 to 24 volts through a DC connector using the SY8303 voltage regulator. The 500mAh lithium-ion battery is located beneath the prototype PCB board and is managed together with the TP4057 integrated circuit. The power supplied to Core S3 from the base can be turned off using a small switch. The PCB board itself is a prototype board with plated through holes (PTH) that allow for the addition of hardware according to the user's needs. The side of the base casing has holes for adding additional openings for connecting probes, connectors, and so on. There are also two additional connectors, PORT.B and PORT.C, with pin mappings that are compatible with all Core series devices. Yes, the DIN Base can also be used with previous Core series hosts (all M5Stack components are mutually compatible). We also noticed three holes that allow the base to be used with the LEGO system, which has great potential among children.
The Core series controllers have multiple bases to choose from. Some of these modules are terminal bases, which are dedicated to forming complete devices with the Core, while other bases are universal, allowing them to be used with any controller from the Core series. We would like to specifically introduce the following:
AC Power Base: It allows the device to be directly connected to an AC power source.
2Relay 13.2 Module: It utilizes an STM32F030 microcontroller to provide two relays that can be controlled by the controller.
BaseX (EV3 Motor): It can connect RJ11 LEGO motors and two servo motors, making it ideal for robotics projects, and can also be equipped with an additional microphone.
LAN Base: Based on the W5500, it allows the host to be connected to a local network via an Ethernet cable, enabling it to be used as a PLC device. This base also comes with RS485 and RS232 adapter boards.
These are several available types of bases, each with different functionalities and features to meet various application needs.
What about the software aspect?
The Core S3 comes with pre-installed firmware that allows for the use of all hardware features through eight built-in applications. These applications include scanning for available local networks, listing the contents of a microSD card, checking the sensitivity of the touch screen, and scanning I2C lines to test all sensors and functionalities on the device. The most notable application is the camera app, which combines the camera function with light and distance sensors. Considering the capabilities of the camera and screen, the camera display on the screen is quite impressive, and we are satisfied with its performance. Two bar graphs on the right side of the screen display the light intensity and proximity, such as the proximity of a finger.
M5Stack has prepared some new features to support the Core S3, and one of them is EasyLoader. It is a small tool used for quickly erasing or writing firmware to the Core S3. Assuming the user program has already been written in an editor, it only requires selecting the port and baud rate values.
M5Stack controllers support large software packages for the Arduino IDE (which takes a long time to download from the internet), and M5Stack also provides support for these controllers. Regarding the added support, we have mentioned it in a previous article about the Core 2. For this ESP32S3 device, the provided support includes some examples. However, in the custom library section, there is a large group of examples prefixed with "M5," most of which are grouped according to the available bases for each Core. Each group provides several examples, resulting in a total count close to three digits, so listing all of them wouldn't make sense. Additional examples not included in the support package can be downloaded from the official GitHub page. These examples are up-to-date and are expected to appear in future updates of the Arduino IDE support. Overall, there are so many examples available for each feature of the Core that there are hardly any scenarios left uncovered.
UIFlow 2, which supports all the latest devices from M5Stack, including the Core S3, has been introduced in previous articles about M5Stack devices. This "blocky" editor consists of three parts, with the ability to hide some parts for clarity when needed. The use of blocks is increasingly popular and may be the best choice for inexperienced users, especially children, as it guides them into the world of electronics and programming. When the curtain is lifted, Python code is revealed beneath the blocks. The third part of the editor is the Python editor itself, allowing complete device programming through Python without the need for block programming. The Python structure used here is largely similar to programming languages used for Arduino platform code written in C/C++. The M5Burner mentioned earlier can also be used here, but it does not support UIFlow, which means that programming through the M5Stack system without a wired connection to a computer is not possible. The tool provides some examples, including the factory examples that come with the device.
Considering the features offered by the Core S3, its price is reasonable. Additionally, by adding modules, it can provide even more functionalities to meet different needs and expectations. Imagine the power of hardware with a screen and direct data input capabilities, along with additional built-in sensors and countless sensors that can be added through ports. It is evident that the possibilities for combinations are limitless, and the Core S3 can serve as a control unit for a larger system or as the central unit of its own system. It can be used in conjunction with the LEGO system, which is an additional advantage. If you want to introduce children to electronics and programming through games and building with LEGO blocks, we believe this could be the right choice. We wholeheartedly recommend it.