The realm of the Internet of Things (IoT) has witnessed a recent surge in innovation, significantly driven by the ESP32 controller module. This device boasting of capabilities such as Wi-Fi, Bluetooth, substantial memory, and programmability via Arduino IDE. Its affordability and breadboard-friendly nature have made it a favorite amongst both beginners and seasoned developers in the field of small IoT applications.
An noteworthy add-on component amplifies the value of the basic ESP32 module – a compact display capable of relaying status messages. For example, the Lolin board has this built-in display feature. However, the focus has recently shifted to the M5Stack ESP32 development system. M5Stack is known for developing products such as thermal sensing cameras, TinyML, and this innovative tool that merges the ESP32 board with a smooth, compact casing, and introduces graphic-capable color displays that cover most of the front surface.
This state-of-the-art display serves a resolution of 320 x 240 pixels and is accompanied by a series of three push-buttons and various expansion connectors and ports around the casing. The device also allows additional modules or shields (such as GPS) to be effortlessly plugged in between the top and bottom of the base module, thereby creating a customized ‘stack.’
The manipulation of the display is a straightforward process. A rudimentary text-to-screen sketch can be constructed using the Arduino IDE. An online tutorial presents comprehensive instructions on integrating all necessary libraries into the Arduino IDE setup. The display driver functions and push-button scanning have been encapsulated into an object named M5 by the M5Stack developers. Once this object is integrated, controlling the display becomes a simple task, requiring only a few commands.
In a practical application, a minor project initially developed for the Lolin OLED board was successfully ported onto the M5Stack. This application entailed the sampling of light sensing LDR values and their transmission to the OpenSenseMap cloud platform. The voltage reading across the LDR was obtained from the expansion connector sockets situated on the right side of the M5Stack. The device also stands out due to its compact and portable nature, largely attributed to its built-in battery that runs for approximately an hour before requiring a recharge.
An interesting use-case of the M5Stack display was found in a home-based DJ setup. A novel communication system was devised that allowed the user to communicate non-verbally with the DJ by transmitting text messages directly to the M5Stack display.
Developing this feature required broadening the web server function to output a web page with a singular text field and a submission button when accessed. Subsequently, the ESP32 web server receives the text message from the client web browser and projects it onto the M5Stack screen.
Some initial challenges were encountered in the development process, including screen flickering and cumbersome coding. However, after a series of code modifications and tweaks, these issues were addressed. The screen flickering was resolved by employing a small character buffer, and the coding was streamlined using a more suitable library. A conscious effort was made to prevent the ESP32 from continually functioning as an access point to set up its network, thereby enhancing security and reducing power consumption.
The result was a highly efficient M5Stack application, capable of displaying status messages, addresses, and the message body via buffers. A new web server library was developed to simplify parameter management. The ESP32 now only operates as an access point when necessary, starting in station mode, trying to connect to the router network, displaying the address and network status, and awaiting a request from a web browser.
In conclusion, the M5Stack ESP32 development system is a powerful tool for anyone exploring IoT applications. Its versatility, cost-effectiveness, and customization possibilities make it an exciting proposition for both hobbyists and professionals.