M5Stack M5Dial has been on my shopping list since the release. The only reason I hesitated to buy one was the lack of time. I knew I would be distracted while other things were calling for my attention. Frankly speaking, this is always the case with M5Stack devices – they know how to make each ESP32-based board so tempting. When I discovered that someone at work got one, I instantly cashed in the favour and got one to play with over the weekend.
From M5Stamp to M5Dial
Some time ago, I covered the release of the M5Stamp – one of the smallest ESP32-S3 boars you could buy. As an ESP32 board, the device was exciting with its RISK-V architecture and specs, but as I’m spoiled by devices like M5Paper or M5Stack Core 2, the Stamp was relatively boring as far as M5Stack dev boards go.
This humble M5Stamp lies at the heart of the M5Dial. It’s attached by the set of headers soldered into the board and can be removed with a small screwdriver if needed. It’s nice to see the tiny ESP32-S3 board giving life to such an iconic gadget.
M5Dial is a clever little board equipped with a rotary encoder wrapped around a 1.28″ round TFT touchscreen. To add to the physical utility of this knob, the bezel hides a single push button. What I didn’t realise, was that M5Dial also comes with an RFID reader (13.56MHz) provided by WS1850S. There is RTC to keep track of time, but without the built-in battery, it will rely on the external power source for that (there is a small battery socket (1.25mm-2P) under M5Stamp that can be used to add a battery backup), and a little buzzer to get your attention. In short, you have so many options for interfacing with this little dial.
Flip the device over, and aside from the mounting ring, you will find two I2C ports and a small header that can accept DC 5-36V. If you don’t want to use that, you can still rely on the power input through the M5Stamp’s USB-C.
M5Stamp brings all the perks of the ESP32-S3 to the table too! There is WiFi support for 2.4GHz, 8MB Flash. Powered by a high-performance Xtensa 32-bit LX7 dual-core processor, STAMPS3 delivers impressive processing power with a main frequency of up to 240MHz.
Dialled in!
M5Dial is a joy to use thanks to its encoder. Until I got one in my hands, I wondered how nice it would feel in your hands to turn the encoder into the desired position. The encoder offers 16 steps to complete the rotation – each with a satisfying mechanical click reinforced by the short buzz from the internal buzzer.
Despite being made completely out of plastic M5Dial feels great in hand, I only wish you could easily swap the knob’s bezel and the ring to customise the look and feel in our hand. Perhaps that’s a suggestion for the M5Dial 2!
M5Dial first steps
I loaded the initial demo firmware onto the borrowed M5Dial and started to play with things to have a first-hand experience of the encoder, the touchscreen and everything else the dial has to offer.
The screen is very bright and can be used in direct sunlight, it offers a good touchscreen experience too as long as you don’t try to touch things near the edges of the display (the bezel comes in the way). The push button is hidden at the bottom of the bezel under the M5 designation and I wish it was more responsive. It requires a little force to actuate.
By default, the buzzer is set to change pitch based on the rotation direction, which has nice feedback. Using the encoder you can test all the features of the M5Dial – from setting the display’s brightness and scanning WIFi nearby to using the dial as an RFID reader.
On that note, I noticed that the reading of my tag took a moment and it was fussy about the orientation of the tag. – the best result I had was by placing the tag between 1-3 o’clock position with the centre of my tag located at the bezel. If you going to use the RFID feature, I suggest designing the UI to point the user towards this area of the M5Dial.
Thermostat and more?
One of the most interesting features of the demo firmware was the thermostat demo. It’s of interest to me, as the M5Dial isn’t expensive and as the shape of the device is ideal for turning it into a smart thermostat controller for my DIY Smart Heating – I decided to try to make my own. After all, I had a great time programming cool smart home controls for M5Stack Core 2.
I made a very rudimentary Thermostat to see how quickly I could add it to my DIY Smart Home system. 40 min later, I had a barebone script made in UIFlow that allowed me to set the setpoint and receive information about the current temperature. As the M5Dial supports touch, it would be easy to make multiple screens that control lights, curtains and more – the limit is your imagination.
Wireless programming
UIFlow makes it easy to program your ideas even if your knowledge of programming is limited. The web-based IDE is designed to work with graphical programming and MicroPython.Nothing brings me more pleasure than programming M5Stack devices wirelessly. Thanks to WiFi and UIFlow support, all you need is to open the browser, write some code and push it magically to the device without wires.
UIFlow is a visual IDE that uses Micropython to program your M5Stack devices. In case the visual programming isn’t sophisticated enough, you can switch instantly to a more traditional text editor for your code without losing the “wireless programming” ability. You can watch a 1.5-hour online session with UIFlow making the thermostat here.
Hardcore fans can program M5Dial like any other ESP32 board with Arduino IDE or VSC and PlatformIO. M5Stack provides libraries for their devices, so you can take advantage of the onboard sensors without reading datasheets.
In practice, programming M5Dial can be a great learning experience thanks to visual blocks which help new to the hobby to learn about programming and slowly get familiar with other IDEs. As a learning platform, I can strongly recommend these boards. If you want to just try things out, M5Stack also provides you with an M5Burner – a tool to flash baked firmware onto your device. This could be UIFlow firmware or community-made images that showcase the power of this board. To flash firmware on M5Dial, you have to press and hold the button on M5Stamp-S3 (under the sticker) while the board is being plugged in.
Missing Core 2 features
I covered M5Stack Core 2 some time ago, and one of the things that got my attention was how easy it was to make a home automation panel with UIFlow. This is because of the default assets in the IDE. Unfortunately, M5Dial doesn’t have these handy toggles, sliders and progress bars… yet.
I messaged M5Stack about this, as I would love to see these things supported on M5Dial, after all, both devices support touch screens, and the company confirmed that soon enough we should see the extra UI element in the UIFlow for M5Dial! While talking about the missing features, I couldn’t find the buzzer controls in UIFlow either. I hope to see this being added soon.
I will probably hold on with my development until then, as the M5Dial could easily double as a light switch with a dimmer, thermostat, curtain controller and more. If you want to know what other devices I have covered from M5Stack and why they are worth keeping an eye on you can check the list below.
Other M5Stack products talked about in detail:
- M5Stack Core
- M5Stack Core 2
- M5Stack UnitV2
- M5Dial
- M5Stack Atom Matrix (pending)
Final thoughts
Considering the prices of smart panels from Tuya or Sonoff, the M5Dial looks great, and could easily replace these panels at a lower expense. As long as you don’t mind putting some time into making it all work with your DIY Home Automation. I for once don’t and I’m looking forward to getting a couple of M5Dials for my future home. If you want to know how this will pan out – keep an eye on my posts or follow me on my social media. If you have any questions, use this Reddit thread.
📈 – See the transparency note for details.