Fluid Dial (Fluid NC dial pendant by Bart Dring, using M5 Stack's M5 Dial)

I was able to order everything on AliExpress for $70.52. It should be here in a couple of weeks. I really like the pendant holder that @coinbird made out of wood. I have a scrap piece of black walnut I want to make my holder out of. @coinbird would you be willing to share your design file?

1 Like

Sure! I’ll put it up when I get home tonight. The board I made it from was about an inch thick, I milled the depth so the front part was 5mm thick or so

2 Likes

Here’s the simple design DXF. Parameterized in fusion 360, file included.

I manually rounded over the edges with a router, and drilled a hole for the main wire connector.

I haven’t actually made a base cover yet, but will use the same DXF to do so.

WoodPendant.zip (297.3 KB)

2 Likes

Nothing needs to change in the precompiled code. The Config.yaml does need to be edited to include the uart2 section.

1 Like

Thank you very much!

1 Like

I will remeasure. Maybe I was in a hurry and didn’t pay close enough attention. If so, forgive me.

1 Like

I’m sorry, that came of to harsh. It’s ok :slight_smile:. Just wanted to check the dimensions to make sure the right information is available to anyone. Thanks!

TLDR: I measured the wrong end. :expressionless:

OK, I was definitely a bit drowsy, so I am circling back around to this.

There are two different kind of connectors on these. There has been confusion at least on my part, because the (I think) the size and type that Bart refers to in the Wiki, is talking about the white one that has to have its tabs snipped off, which he describes as “(I think JST-PH connector with a 2 mm pitch)” while the size given on the Aliexpress listing seems to be talking about the black part on the other end. I said I was drowsy. For some unknown reason, I got steered mentally toward the black ends, by the 2.54mm mention. Those were not even used in my build. Why did I measure them? Sigh. So sorry folks.

It’s easy for me to get confused because I do not have all these cryptic names of connector types memorized. When I see “JST-PH connector” it means nothing to me.

So for now, I’m assuming “JST-PH connector with a 2 mm pitch” is correct for the white ends, and 2.54mm pin housings (exact name not remembered) is correct for the black ones on the other end, that probably don’t matter anyhow.

Pause for measuring the white ones… Here’s what I showed there:

8.6mm / 4 pins = 2.15 mm each.

Does that make more sense?

2 Likes

Doug, I hope the ones I ordered are the same as yours. The picture is exactly the same so I thought it was when I ordered them. I guess we will find out in a couple of weeks.
Thanks again @DougJoseph

I am very confident on that. You’re getting the exact same thing, just cheaper.

2 Likes

Doug (or anyone else) could you point me in the right direction.
I followed these steps, yet I’m getting a “UnknownBoard: Unknown board ID ‘m5stack-stamps3’” error and it will not build (also stated terminal terminated with exit code: 1). I even get the same error when I try to do a ‘clean’.
I selected the FluidDial folder (that has the platform.ini file in it). Looking at the .ini file, I see it defines the board as m5stack-stamps3.
I don’t have my dial yet, just ordered it. I figured I’d get ahead of the game and compile the dial firmware and then upload it once it arrived. Or am I getting this error because I don’t have it plugged into my computer’s USB port?

1 Like

Ok, disregard. Upon poking around within VS I figured it out. I went to the Project Tasks->Dependencies->Update and low and behold:
Resolving m5stack-stamps3 dependencies…
Platform Manager: Updating espressif32 @ 6.0.1
Platform Manager: Removing espressif32 @ 6.0.1
Platform Manager: espressif32@6.0.1 has been removed!
Platform Manager: Installing platformio/espressif32 @ 6.5.0
Downloading [####################################] 100%
Unpacking [####################################] 100%
Platform Manager: espressif32@6.5.0 has been installed!
Tool Manager: Installing platformio/tool-esptoolpy @ ~1.40501.0
Downloading [####################################] 100%
Unpacking [####################################] 100%
Tool Manager: tool-esptoolpy@1.40501.0 has been installed!
Configuring toolchain packages from a remote source…

  • Terminal will be reused by tasks, press any key to close it.

Now it is building the firmware. figured I’d follow up for any noobs with VS and trying to compile this with the error I encountered.

3 Likes

Glad you got it sorted out!

I just bought these and they don’t fit either.

Micro JST PH 2.0 4 Pin Pitch 2 mm Connector
https://amzn.eu/d/7dXKxGH

Edit: i did a little mod with a hobby knife and it fits

Do you remember that the wiki says that the retaining clips have to be snipped off?

Yep… and it fits now

1 Like

Add one more thanks! to Doug - you have given me enough confidence to pull the trigger on an M5dial order.

I almost ordered a little while ago hoping details would get sorted out before the slow shipment showed up and I found time to build one.
However my procrastination has paid off, or at least been mitigated to some extent - it looks like Mouser now has them in stock for the same MSRP price but with faster and cheaper shipping (in the US). They also have the Grove connectors for cheap.

https://www.mouser.com/ProductDetail/M5Stack/K130?qs=P%2FxahI%252BVehkX3S3rYE8UCw%3D%3D

Now I just have to pick some buttons :slight_smile:

3 Likes

Cool!

The ones I bought and used are first cheap, work great, and have LEDs in them that can either be ignored (for simpler wiring) or wired with the same 12V that powers the dial, for nice effect. I ordered a batch but it would only need the two, a red and green:

I posted in the Developer Discord for the pendant, letting them know about the alternate sourcing links for both the dial and the wire grove thing.

Has anyone has luck flashing recent firmware? I just got my M5 Dial today and spent most of the evening trying to figure it out, though I kept getting an error of:

KeyError: Traceback (most recent call last):
File “C:.platformio\penv\Lib\site-packages\platformio_main_.py”, line 103, in main
cli() # pylint: disable=no-value-for-parameter
^^^^^
File “C:.platformio\penv\Lib\site-packages\click\core.py”, line 1157, in call
return self.main(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File “C:.platformio\penv\Lib\site-packages\click\core.py”, line 1078, in main
rv = self.invoke(ctx)
^^^^^^^^^^^^^^^^
File “C:.platformio\penv\Lib\site-packages\platformio\cli.py”, line 85, in invoke
return super().invoke(ctx)
^^^^^^^^^^^^^^^^^^^
File “C:.platformio\penv\Lib\site-packages\click\core.py”, line 1688, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “C:.platformio\penv\Lib\site-packages\click\core.py”, line 1434, in invoke
return ctx.invoke(self.callback, **ctx.params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “C:.platformio\penv\Lib\site-packages\click\core.py”, line 783, in invoke
return __callback(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “C:.platformio\penv\Lib\site-packages\click\decorators.py”, line 33, in new_func
return f(get_current_context(), *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “C:.platformio\penv\Lib\site-packages\platformio\run\cli.py”, line 145, in cli
process_env(
File “C:.platformio\penv\Lib\site-packages\platformio\run\cli.py”, line 208, in process_env
).process()
^^^^^^^^^
File “C:.platformio\penv\Lib\site-packages\platformio\run\processor.py”, line 81, in process
install_project_env_dependencies(
File “C:.platformio\penv\Lib\site-packages\platformio\package\commands\install.py”, line 133, in install_project_env_dependencies
_install_project_env_libraries(project_env, options),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “C:.platformio\penv\Lib\site-packages\platformio\package\commands\install.py”, line 250, in _install_project_env_libraries
env_lm.install(
File “C:.platformio\penv\Lib\site-packages\platformio\package\manager_install.py”, line 47, in install
pkg = self._install(spec, skip_dependencies=skip_dependencies, force=force)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “C:.platformio\penv\Lib\site-packages\platformio\package\manager_install.py”, line 91, in _install
self.install_dependencies(pkg, print_header=False)
File “C:.platformio\penv\Lib\site-packages\platformio\package\manager_install.py”, line 139, in install_dependencies
self.install_dependency(dependency)
File “C:.platformio\penv\Lib\site-packages\platformio\package\manager\library.py”, line 89, in install_dependency
not_builtin_conds.append(not self.is_builtin_lib(spec.name))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “C:.platformio\penv\Lib\site-packages\platformio\package\manager\library.py”, line 120, in is_builtin_lib
for storage in cls.get_builtin_libs():
^^^^^^^^^^^^^^^^^^^^^^
File “C:.platformio\penv\Lib\site-packages\platformio\util.py”, line 56, in wrapper
self.cache[key] = (time.time(), func(*args, **kwargs))
^^^^^^^^^^^^^^^^^^^^^
File “C:.platformio\penv\Lib\site-packages\platformio\package\manager\library.py”, line 105, in get_builtin_libs
for storage in p.get_lib_storages():
^^^^^^^^^^^^^^^^^^^^
File “C:.platformio\penv\Lib\site-packages\platformio\platform\base.py”, line 226, in get_lib_storages
pkg = self.get_package(opts[“package”])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “C:.platformio\penv\Lib\site-packages\platformio\platform_packages.py”, line 29, in get_package
return self.pm.get_package(spec or self.get_package_spec(name))
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “C:.platformio\penv\Lib\site-packages\platformio\platform_packages.py”, line 21, in get_package_spec
owner=self.packages[name].get(“owner”),
~~~~~~~~~~~~~^^^^^^
KeyError: ‘framework-stm32cube’