Duet3D Logo Duet3D
    • Tags
    • Documentation
    • Order
    • Register
    • Login

    USB CNC Pendant project

    Scheduled Pinned Locked Moved
    CNC
    8
    27
    1.9k
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • hurzhurzundefined
      hurzhurz
      last edited by

      I would like to quickly present a small project that I finally had some time to do over the last few days:

      https://github.com/hurzhurz/Duet-USB-CNC-Pendant

      It is a bit similar to the CNC-Pendant-Firmware, but instead of modifying a simple (but still not cheap) CNC pendant, theoretical any USB HID device can be used.
      It is based on a Raspberry Pi Pico, easy and cheap to build.

      Multiple months ago, when I looked for the pendant that is needed for the CNC-Pendant-Firmware, Amazon suggested me the combination of a cheap wireless numpad and matching CNC-themed key-stickers, which lead to this idea.
      At that time I already managed to figure out the basic USB HID part, but had no time to go further.
      Later I found the WHB04B-6 wireless USB pendant and recently bought it to motivate myself to do this project.

      So at the moment, the cheap numpad (LogiLink ID0120) and the WHB04B-6 pendant are implemented.
      Other numpads should work too, but I have filtered for the VID and PID of the LogiLink one. But this can be changed easily in the code.
      And other USB HID devices (keyboard, mouses, gamepads, …) should probably be relatively easy to implement as well.

      I would be happy if someone would like to try it out and give some feedback.

      Though I want to point out that some things might not be implemented in the best way… I'm whether a full-time developer nor an experienced CNC operator 😉

      Any help is welcome!

      o_lampeundefined Perplexedundefined 2 Replies Last reply Reply Quote 7
      • o_lampeundefined
        o_lampe @hurzhurz
        last edited by

        @hurzhurz Unfortunately the WHB04B-6 is sold out, so I couldn't find more info about it.
        I was wondering if your firmware supports analog joysticks, too? (if only for variable jogging speed)

        As a sidenote: I'd rename Duet in Duet3D where ever applicable for better matching search results in github.

        hurzhurzundefined 1 Reply Last reply Reply Quote 0
        • hurzhurzundefined
          hurzhurz @o_lampe
          last edited by

          @o_lampe Depends on where you look for the WHB04B-6.
          I got mine from Amazon DE, where it is still available with Prime-Shipping: https://www.amazon.de/RATTMMOTOR-Fernbedienung-Handsteuerung-Drehmaschinen-Graviermaschine/dp/B096TNP5NF/
          And AliExpress is a possible source, too.

          I have not implemented joysticks, but if they present themselves as HID devices, it should not be hard to do that.
          Well, at least for button presses...
          I'm not sure what's the best way to implement continuous movements via G-codes, as of course, you surely want it to stop as soon as possible, after the joystick (or a long pressed key) is released.

          I'm not sure if I want to rename it, but you have a point.
          I have now added a small repository description that contains "Duet3D".

          1 Reply Last reply Reply Quote 0
          • hurzhurzundefined
            hurzhurz
            last edited by hurzhurz

            Maybe some news:

            • Just for fun, I have implemented support for the PlayStation 3 controller
            • The limitation for the mentioned LogiLink Numpad is removed, so any keyboard can be used. But the key mapping might be less ideal on other devices.

            And I have also made an attempt to implement some kind of continuous mode (move as long as button is pressed).

            This can be found in a different branch: https://github.com/hurzhurz/Duet-USB-CNC-Pendant/tree/continuous EDIT: already merged into master branch
            And here is documented how it works: https://github.com/hurzhurz/Duet-USB-CNC-Pendant/blob/master/doc/ContinuousMode.md

            It uses the daemon.g to generate the actual movement commands. This is a bit hacky, but at least, it seems to work...

            1 Reply Last reply Reply Quote 5
            • IlI_Cncundefined
              IlI_Cnc
              last edited by IlI_Cnc

              I was thinking in getting one of those pendants, but I don't know a lot of the duet3d programming yet. Can you tell me how to get it to work? like, where do I put the files or what I need to do? I kinda need a crash course in the duet environment to be honest.
              Also Aliexpress is running Summer sale so you could get the pendant easily
              If I get one I can maybe help test stuff if I'm available too

              oliofundefined hurzhurzundefined 2 Replies Last reply Reply Quote 0
              • oliofundefined
                oliof @IlI_Cnc
                last edited by

                @IlI_Cnc the only thing you would need on the Duet side is to enable the serial connection (if you use a paneldue that's already happened). You do this by adding M575 P1 B57600 S1 to your config.g

                <>RatRig V-Minion Fly Super5Pro RRF<> V-Core 3.1 IDEX k*****r <> RatRig V-Minion SKR 2 Marlin<>

                1 Reply Last reply Reply Quote 0
                • hurzhurzundefined
                  hurzhurz @IlI_Cnc
                  last edited by

                  @IlI_Cnc For the Duet side, the most important part is to enable the PanelDue port via M575, like @oliof already said.
                  In addition, you may want to create macro files to define what should happen when you press on the various buttons of the pendant.
                  If you press a button, you should be able to see in the console in the Duet Web Control which file it tried to execute und you have to create, to give that button a function.

                  And to flash the Raspberry Pico, you can simply take the compiled firmware.uf2 file from my GitHub repository.
                  You need to connect the Pico via USB to your computer. But while plugging it in, you have to press the BOOTSEL button.
                  There should then appear a new drive. Just copy firmware.uf2 on that drive.

                  chimaeraghundefined 1 Reply Last reply Reply Quote 0
                  • Hannahundefined
                    Hannah
                    last edited by

                    THX, I'll build this instead of the old wired version

                    1 Reply Last reply Reply Quote 0
                    • chimaeraghundefined
                      chimaeragh @hurzhurz
                      last edited by

                      @hurzhurz Will this work with the 4 axis version, WHB04B-4? I don't need to control that many axes and it seems to be half the cost of the 6-axis on AliExpress
                      WHB04B-4

                      Duet 2 Wifi, Ooznest Workbee CNC 1510

                      hurzhurzundefined 1 Reply Last reply Reply Quote 0
                      • oliofundefined
                        oliof
                        last edited by oliof

                        Great work @hurzhurz. It would be cool to see if you (or anyone else) could adopt the FluidNC M5Dial Pendant as well.

                        <>RatRig V-Minion Fly Super5Pro RRF<> V-Core 3.1 IDEX k*****r <> RatRig V-Minion SKR 2 Marlin<>

                        hurzhurzundefined 1 Reply Last reply Reply Quote 0
                        • hurzhurzundefined
                          hurzhurz @chimaeragh
                          last edited by

                          @chimaeragh said in USB CNC Pendant project:

                          @hurzhurz Will this work with the 4 axis version, WHB04B-4? I don't need to control that many axes and it seems to be half the cost of the 6-axis on AliExpress

                          I can't tell for sure, but I think the chances are good that the 4 axis version works as well.
                          For the most part, I used the protocol description from the LinuxCNC driver: https://github.com/LinuxCNC/linuxcnc/tree/master/src/hal/user_comps/xhc-whb04b-6
                          I think I read a comment somewhere that the WHB04B-4 was used successful with the LinuxCNC WHB04B-6 driver by someone.
                          And I can't imagine that there would be a difference needed in the protocol.

                          Though it could be that the dongle of the 4 axis version has a different USB PID. But that would be trivial to fix.

                          1 Reply Last reply Reply Quote 1
                          • hurzhurzundefined
                            hurzhurz @oliof
                            last edited by

                            @oliof said in USB CNC Pendant project:

                            Great work @hurzhurz. It would be cool to see if you (or anyone else) could adopt the FluidNC M5Dial Pendant as well.

                            Thanks!

                            The FluidNC M5Dial Pendant looks like another neat solution!
                            And as it is already made to communicate via serial / G-code commands, it should probably be not that hard to adapt.
                            Most work should be needed for the part with the status display for coordinates etc.

                            1 Reply Last reply Reply Quote 0
                            • IlI_Cncundefined
                              IlI_Cnc
                              last edited by

                              I'm waiting for parts and the pendant now, when they arrive and I'll try to get everything working and post if everything works fine.
                              Thanks for the help

                              1 Reply Last reply Reply Quote 0
                              • IlI_Cncundefined
                                IlI_Cnc
                                last edited by

                                In case i want to connect with a IO port what should i do with the activation part?

                                Also, since in my board (Duet 3 6XD) seems to have a different panel due pinout what should i wire the usb to?panel.png

                                hurzhurzundefined 1 Reply Last reply Reply Quote 0
                                • hurzhurzundefined
                                  hurzhurz @IlI_Cnc
                                  last edited by

                                  @IlI_Cnc You actually have two ports on your board where a PanelDue can be connected, the 10-pin "PANEL DUE" connector and the 5-pin IO_0 connector.
                                  Both share the same serial interface (that you can enable with M575 P1 B57600 S1).
                                  The 10-pin connector is used if you want to use the SD card slot on the PanelDue.
                                  https://docs.duet3d.com/en/User_manual/Connecting_hardware/Display_PanelDue

                                  I would suggest using the IO_0 connector like shown in my wiring diagramm on GitHub.

                                  1 Reply Last reply Reply Quote 0
                                  • ajmartinsundefined
                                    ajmartins
                                    last edited by

                                    Hi, just start to saying amazing project, and thanks for sharing ;), now one little problem... i tried to use continuous mode, but im getting some errors.

                                    Error: Failed to read code from macro daemon.g: Failed to evaluate "global.run_daemon": unknown value 'global.run_daemon'

                                    If i take that part, then i get another error when trying to use Continuous mode, another thing, how do i get the values to appear on the WHB04B-6?

                                    Error: Failed to read code from macro pendant-continuous-run.g: Failed to evaluate "{exists(param.A)} && {exists(param.F)} && {exists(param.D)}": unknown value 'param.A'

                                    Error: Failed to read code from macro pendant-continuous-loop.g: Failed to evaluate "global.pendant_continuous_ttl>0": unknown value 'global.pendant_conti'

                                    hurzhurzundefined 1 Reply Last reply Reply Quote 0
                                    • hurzhurzundefined
                                      hurzhurz @ajmartins
                                      last edited by

                                      @ajmartins The errors look like these two lines might be missing in your config.g, can you check that?:

                                      M98 P"pendant-continuous-init.g"
                                      global run_daemon=true
                                      

                                      Or you can run them manually in the console once for testing.

                                      And about your other question, doesn't your WHB04B-6 show the coordinates on the LCD?
                                      It should work automatically...

                                      1 Reply Last reply Reply Quote 0
                                      • ajmartinsundefined
                                        ajmartins
                                        last edited by ajmartins

                                        Yes, i added both lines to config.g, i tried manully running and i get the other error i sent.

                                        If i run M98 P"pendant-continuous-init.g", the system just stalls and i need to reset the board.

                                        Should i put both lines in the end of config file?

                                        ajmartinsundefined 1 Reply Last reply Reply Quote 0
                                        • ajmartinsundefined
                                          ajmartins @ajmartins
                                          last edited by

                                          @ajmartins Well more tests, added both lines to the end of config file, and now at least i dont get any errors when restarting the board.

                                          But when trying to make a continuous move, i still get the error:

                                          Error: Failed to read code from macro pendant-continuous-run.g: Failed to evaluate "{exists(param.A)} && {exists(param.F)} && {exists(param.D)}": unknown value 'param.A'

                                          hurzhurzundefined 1 Reply Last reply Reply Quote 0
                                          • hurzhurzundefined
                                            hurzhurz @ajmartins
                                            last edited by

                                            @ajmartins Which version of RepRapFirmware have you installed?
                                            I'm wondering if the macro parameters or the exists() function for them is "too new".
                                            On my machine I'm running 3.4.6. And from the changelog I guess that at least 3.3 could be required.

                                            ajmartinsundefined 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post
                                            Unless otherwise noted, all forum content is licensed under CC-BY-SA