M5ez, a complete interface builder system for the M5Stack as an Arduino library. Extremely easy to use.

  • Three weeks ago I was frustrated that it wasn't easier to build applications for the M5Stack. Today I release M5ez (pronounced "M5 easy") so that everyone can build things that look cool and just work.

    There are little things I want to make better still. It's not "done" - such things are never done - but you have to release at some point. But is good enough to build things on.

    A video can say more than a thousand words: please watch the video and have a look at the Github repository.


    As you will see I put some effort into documenting everything it does on Github. I hope you all will play with this and tell me what you like and don't like. I will continue to work on it and let you know in this thread when things are changing.

    ( A big thank you to Calin for some of the ideas. )

  • looks like just what I needed for a project.

  • Awesome!!!

  • @rop Looks good

  • Awesome work :)

  • M5ez now supports the FACES keyboard, both in its own textInput function and with a special ez.getFACES() function. Until I figure out how to properly detect that it is there, you will have to compile with #define M5EZ_WITH_FACES in the library's .h file, but I hope to fix that soon too.

  • More than great!

    One question, about the wifi password...
    Does de M5s retain it if you turn off?
    Is there a way to retain the proper Wifi and password if the M5s is switched off?

  • @janseta Funny you should ask that...

    I just finished completely revamping the wifi in M5ez. It now has a menu that allows you to set whether you want to autoconnect on boot, and it will let you save and manage multiple SSIDs and keys (it will just ask you whether you want to save a network after you connect). So your M5Stack will behave like your phone: if it knows the wifi it will connect. I just updated the github repository... :)

  • @rop avesome!!! Great!!!
    (づ ̄ ³ ̄)づ

  • BTW: If like this please star the repository on github. It helps people that need it find it.

  • Hallo Rop,
    thank you for your great work.
    I have a problem with the newest version, i got the following error while compiling in Arduino IDE 1.8.5

    Documents\Arduino\libraries\M5ez-master\src\M5ez.cpp:1319:19: error: 'struct esp_wps_config_t' has no member named 'factory_info'

     strcpy(config.factory_info.device_name, "ESP STATION"); <

    What do i wrong? The version with old WiFi compiles without problems.

  • @how Thank you for trying it.

    You might want to update your ESP32 library: they changed how WPS is done. I found my somewhat older library caused all sorts of underlying little problems that have all been fixed. Wifi is more stable and doesn't error all the time, etc etc.

    I just moved my old $arduinodir$/hardware/espressif/ESP32 directory and re-followed the instructions on https://github.com/espressif/arduino-esp32/

    Please let me know if this works...

    I'll put a note of this in the README anyway.

  • Ha. even better. I noticed the changes they made are relatively recent: end of June 2018. So that means lot of people will have the incompatible library. Rather than have it not work out of the box for all these people, I have turned off WPS by default, you have to remove #define M5EZ_WITHOUT_WPS in the M5ez.h file to use the code, and then if you notice it doesn't work the docs tell you how to fix it...

  • Hello Rop,
    thank you very much for your quick answer and the "patch".
    Now it compiles (with old esp32 libary)
    It works perfect, great work!
    Have a nice day.

  • Hi Rop,

    I have another request ...
    An NTC or RTC Clock service (or both) can be incorporated ...
    For many applications it is necessary to know the clock time.

    It would be ideal to synchronize the clock via NTC every time you connect to a new Wifi, and / or also every so often (every 2 hours, every day ...)

    As I have been able to read, the ESP32 has RTC, but is made for the internal synchronization process, and has poor accuracy. https://www.esp32.com/viewtopic.php?t=3715

    A solution seems to be here:
    You can set the time in the same way as in the example
    ESP8266 / NTP-TZ-DST
    (see constant RTC_TEST) (it is the time of time - seconds since January 1, 1970), for this you can use two or three buttons (SET, + or / and -) and a screen, as in many clocks and appliances.

  • @how Thank you for using M5ez.. :)

    You still want to switch to the latest library version though: other things (esp. Wifi) are much more stable with it.

  • @janseta Thanks...

    Some things are on my list:

    • an inactivity timeout to power down if not using it
    • backlight setting

    Both would be stored in flash and settable from a settings menu that also incorporates the Wifi menu, so create a new linkable "Settings" menu a level higher. I guess I can also include an NTP clock, I'll see..

  • You can use nvs wrapper "preferences" for storing values that must survive reboot and even flashing: https://github.com/espressif/arduino-esp32/tree/master/libraries/Preferences
    Also Arduino-esp32 provide an integrated NTP library: https://github.com/espressif/arduino-esp32/tree/master/libraries/ESP32/examples/Time

  • @calin Hi Calin. I already use Preferences in the new wifi code to store the SSIDs and passwords and a general flag whether autoconnect is on. Thanks for the NTP pointer...

  • Just got my m5

    I am novice on programming and got it working!

    Also love the example file with the systeminfo,
    i hope to make a mqtt remote out of it and this should make it possible for me!

    Also got a question/request: it is possible to make the menu rotating? so last one down, will be the 1st one up?

    some how the quarter just falls here, something with old phone booths and dtmf beepers. lol