• bArray 5 hours ago

    I'm personally working on something like this for the ESP32, but written on top of micropython [1]. A few things are written in C such as the display driver, but otherwise most things are in micropython. We chose the T-Watch 2020 V3 microphone variant as the platform [2].

    Our objective is to build a modern PDA device via a mostly stand-alone watch that can be synced across devices (initially the Linux desktop). We want to achieve tasks that you might typically do on your desktop, focussed towards productivity.

    We did consider a custom OS, but decided against it for a few reasons:

    1. Allowing somebody else to handle basic OS stuff allows us to concentrate on what really matters, the higher level stuff on top.

    2. Having multiple threads in micropython is super simple and we are able to run many active apps at the same time, rather than having to kill them off [3]. Our background apps can continuously interact with the network in the background.

    3. Code written for micropython can be easily run on other Python-capable devices.

    [1] https://micropython.org/

    [2] https://lilygo.cc/products/t-watch-2020-v3

    [3] https://tactility.one/#/application-lifecycle

    • pjmlp 4 hours ago

      This kind of approach feels like the modern version of BASIC + Assembly from 8 and 16 bit days.

      • bArray 2 hours ago

        Exactly, but with more processing power than the BASIC + Assembly days, and more connectivity.

        • pjmlp 2 hours ago

          Definitely, I always compare the ESP32 to a modern version of the Amstrad PC 1215, and we could already do quite a lot with it.

          Hence why unless we're doing some kind of PIC like development, it is about time to embrace more modern tooling. :)

      • seba_dos1 4 hours ago

        The thing with threading in micropython is that you'll have to either rely on task priorities and cooperative yielding, or GIL, and both of them can be easy to shoot yourself in a foot with.

        The CCCamp23's flow3rbadge also used micropython to implement its app framework st3m: https://flow3r.garden/

      • mitjam 4 hours ago

        This is really interesting.

        Do you think the hardware would be a suitable platform for voice assistant type applications, with AI on server side, of course?

        • teamonkey 2 hours ago

          You might be interested in the M5Stack Atom Echo. I believe you can flash them to work with Home Assistant (you could also just use the new HA Voice hardware).

          [EDIT] Looks like the T-Watch 2020 also has HA support https://github.com/velijv/LILYGO-T-Watch-S3-ESPHome/tree/mai...

          • pantalaimon 2 hours ago

            Something like this?

            https://tristam.ie/2024/1126/

            • bArray 2 hours ago

              This is exactly what we are investigating, to record audio locally (minimal processing) and process it off-device. I think it's definitely possible.

            • nine_k 3 hours ago

              If your apps run continuously, how's the battery life?

              If you freeze them to save the battery, how do you handle unfreezing?

              • bArray 2 hours ago

                We're still working out the exact process, but apps return a dictionary when they are put to 'sleep' to allow them to return to a previous state. The app state is stored in RAM currently, but could also be saved to disk. They can request that certain hardware is available for when they are woken, and they can request to be woken up at a certain frequency.

                We can for example put the ESP32 into a light sleep for some time [1] and keep networking alive if apps require it. The idea is to just stretch the battery to the length of a day, shutting down the display gets a lot of the way already.

                [1] https://randomnerdtutorials.com/micropython-esp32-deep-sleep...

            • jeffhuys 2 hours ago

              Meshtastic is another project that has recently made serious strides[0] in their UX on the Lilygo T-deck (and similar ESP32 devices), but specifically regarding LoRA-enabled devices.

              It's still on a branch, but I compiled and ran it, and now I have two T-decks that can communicate with eachother off-the-grid without a smartphone attached to send messages; it's actually usable in emergencies now, which is why I bought the devices in the first place.

              Currently in the process to deploy a mesh from me to my parents and family.

              [0]: https://github.com/meshtastic/firmware/pull/3259

              • numpad0 5 hours ago

                This appear to be a window system and desktop environment than OS, but isn't it that ESP32 user code always runs atop FreeRTOS for radio management purposes?

                • teamonkey 4 hours ago

                  Tactility appears to be built on top of FreeRTOS.

                  FreeRTOS itself is very barebones, a library that provides basic memory management, task scheduling, io and a TCP stack, but not, for example, an abstraction layer for screen, keyboard or other peripherals, or the concept of running user applications.

                  • MrBuddyCasino 5 hours ago

                    If you use ESP-IDF, then yes. I‘m not sure other OS support wifi.

                    • dfox 3 hours ago

                      Espressif ships the wifi driver also as an .o file that takes huge struct of function pointers to OS-provided functions that works with other RTOSes. But you need some kind of RTOS.

                      • MrBuddyCasino 2 hours ago

                        Thats progress! Is it already integrated in another RTOS?

                      • seba_dos1 4 hours ago
                        • pantalaimon 2 hours ago

                          RIOT-OS implements shims of the FreeRTOS functions required by the Wifi driver when running on ESP32

                      • beardyw 3 hours ago

                        An "ESP Microcontroller" definitely doesn't have a keyboard or a screen. That title is misleading and should say something like "ESP based device". I can buy an ESP32 for £3, these are a different thing altogether.

                        • TechSquidTV 3 hours ago

                          If you buy a desktop computer it 100% does not come with a screen and only sometimes comes with a basic keyboard. This doesnt seem relevant.

                          • bayindirh 3 hours ago

                            Yet you can use the same OS for headless application development. No?

                            Not all x86 systems have keyboards and screen, but Linux and Minix work on them with no problem.

                          • bigfishrunning 2 hours ago

                            I have a few M5 cardputers, i wonder how hard a port would be

                            • corv 3 hours ago

                              I’m glad to see M5Stack is supported!

                              • dazhbog 5 hours ago

                                Any idea where is the simulator project located?

                                • trilbyglens 5 hours ago

                                  This is sweet! Looking forward to playing with this

                                  • bayindirh 5 hours ago

                                    Moreover, it's licensed with GNU/GPLv3, which I love.