Parts and Design Choices
The heart and soul of the SmoothMove is going to be the ESP32 of course. However, this presents a bit of a design challenge. One of the most popular ESP32 modules is undoubtedly the WROOM-32. While it may seem pretty small (only 18mm by 25mm) for our application that is still going to be pretty large. I was able to fit a decapped WROOM-32 Module into my currently designed shell but that is far from the most optimal solution. Using a ready made module in such a space constrained application is hardly the best way to go about things anyway.
Enter the ESP32 PICO-D4
For those of you wtih a good memory, you will remember that [Brain] wrote a post about the ESP32 Pico back in September of 2017. This is essentially a ESP32 on a chip and really only requires a couple of bypass capacitors and an antenna on the PCB. All of the ROM and RAM and clock and pretty much everything else you could ever want or need is integrated right into the itty-bitty 7x7mm package. This is a match made in heaven!
Cool but this is supposed to be a tiny mouse, what about all that stuff?
I'm so glad that you asked! While the ESP32 Pico is certainly cool, the real star of the show is going to be the Cirque TM023023 (PDF). After looking around, and researching just what it would take to DIY a tiny capacitive touchpad from scratch I quickly realized that there weren't many good solutions. Any project that I found simple did not provide the level of fidelity that a mouse track pad would require. Not to mention the fact that no one really seemed to have found a circular touchpad that I wanted to make.
Yet I know that it could be done, the new(ish) Steam Controller and the Google DayDream Controller came to mind. They both had circular touch pads that replaced the typical analog sticks found on interface devices of yesteryear. I looked up a tear down of a steam controller and sure enough it led me right to a supplier: Cirque
This is pretty much just what the doctor ordered, the smallest touch pad is exactly the size I was looking for. It works on an SPI interface and while I have yet to look at the code, they provide Arduino compatible examples that should be pretty easy to port onto the ESP32 if not trivial. It appears that Cirque sells their custom made touch ASCI's so in the future, integrating the touch module right into the PCB will be feasible. For the time being though I will just be dealing with the daughter board.
Cool cool, but you mentioned that you are going to need to make a PCB antenna, how the heck do you do that?
To be entirely honest, I have no idea. I found a great place to start though. Back in 2014 there was a HaD post linking to a bunch of PCB antenna reference designs made by Texas Instruments. I will probably just end up using the stand squigly "F" design that you see on most cheap 2.4GHz devices. I'm not entirely certain on the size constraints that I have yet, so I may have to settle for a more inferior ceramic chip antenna. While I would sacrifice some range, it would take up less space and make the design process easier, despite adding to the BOM.
I have never delt with RF in PCB design before so I am excited to devel into this world.
So what else is there?
Welp. I still have to find out how I am actually going to integrate all of the rest of the things that make a mouse a mouse. i.e. buttons, and hopefully a scroll wheel. I want the device to be just as, if not more, convenient to use then an ordinary mouse. As such I would like to have all of the standard functions that you have on a normal mouse meaning: 3 buttons, and a scroll wheel.
I canabilzed a broken bluetooth mouse that I had laying around (the unfortunate victim of some percussive maintenance), and was able to scavenge 3 tiny micro-switched that had the really nice mechanical action that we all know and love, as well as a small continuously rotating encoder/ potentiometer thing from the mouse wheel. I'm not entirely sure how it works so I will have to do some digging there.
I am not entirely sure where I am going to comforable situatino 3 different buttons and hopefully a mouse wheel, but that is part of the fun.
Once I get something resembling a working prototype housed within the previous posted 3D printed shell I will start to work on some sort of charging/ programming dock. I also plan on starting a PCB design at my next earliest convience.
Until then I would love to hear some suggestions for this device! I would love to get it into the hands of as many people as possible so if there is something that you thing I should include then let me know!.