ESP32/S2/S3 LinuxCNC Controller (6 axis hardware step gen), USB plug-and-play

More
22 Oct 2024 01:11 - 22 Oct 2024 01:19 #312816 by tommylight
I posted this on the wrong topic last night, fixing that now

Santa came early this year, also brought a Zoyi ZT-703S osciloscope! :)
By now i got it working so the video is on the way...
Edit:
Video added
www.youtube.com/shorts/55287Iaa4Y0
Attachments:
Last edit: 22 Oct 2024 01:19 by tommylight. Reason: added youtube

Please Log in or Create an account to join the conversation.

More
23 Oct 2024 11:17 #312944 by tommylight
@Wez,
How the hell did you cram all that stuff into an ESP32? :)
Hal2UDP version works, your version is refusing to work on a Wroom module, no network, and ipconfig will reset it.
The rest seems ok, can set motors, enable wifi, etc.
Will report back later if i manage to find the culprit.
It is the "doit" version with strange pinout so had always issues with it, will also try another board

Please Log in or Create an account to join the conversation.

More
01 Nov 2024 08:29 - 01 Nov 2024 08:33 #313587 by michaeln
@tommylight
i had the same way and problems.

It is a pity that wez apparently no longer works on this project and finish it. But he made a good job. Thanks to him.
Hal2UDP is plug and play.
But this is not so easy to get it working.
For me first i need a lot of time to see what is future and what is working with this code.

Please have a look to the for from SybexX: github.com/SybexX/ESP32_LinuxCNC_MotionController_RealTime
He fixed the Linux compile errors and added the ESP32_WROOM_DEV board.

What is not working for me, is it the configuration for the spi-ethernet. First i want to change the configuration for the Hal2UDP wiring, but it is not working and seems there is a bug. You have to change the wiring to the default and it should work.
Last edit: 01 Nov 2024 08:33 by michaeln.

Please Log in or Create an account to join the conversation.

More
01 Nov 2024 09:10 #313591 by tommylight
If you get an error compiling the LinuxCNC component, rename the containing folder and remove empty spaces in the name.
You will also get an error when compiling for ESP as there is something with 2 letters in upper case but the other file has it in lower case, forgot what file and where.
Use serial monitor and
github.com/SybexX/ESP32_LinuxCNC_MotionC...in/SerialCommands.md
to check what pins are in use for W5500 as in most config files one pin is 5 while on esp32 it shows as 0, so had to rewire that.

Please Log in or Create an account to join the conversation.

More
01 Nov 2024 10:09 - 01 Nov 2024 10:27 #313596 by michaeln
Does the spiethconfig work for anybody?
I tested a lot, but i don't find the problem.
I insert printf commands in the code and get strange outputs. I change from picocom to putty, the same.

The command in short and long version:
spiethconfig -s 19 -i 23 -c 18 -e 0 -t 4
spiethconfig --miso 19 --mosi 23 --sck 18 --csenable 0 --interrupt 4
The output:
Invalid or missing Chip Select pin (0>128)
Command returned non-zero error code: 0x1 (ERROR)

I insert some printf-commands ( bold my changes):
            printf("argc: %d\r\n", argc);     

          
  if (result.count("s")) { miso_pin = result["s"].as<int>;(); }
            printf("MISO pin: %d \r\n", miso_pin);
            if (miso_pin < 0 || miso_pin > 128 ) { printf_P(PSTR("Invalid or missing MISO pin (0>128)\n")); return EXIT_FAILURE;}
            
            if (result.count("i")) { mosi_pin = result["i"].as<int>;(); }
            printf("MOSI pin: %d \r\n", mosi_pin);
            if (mosi_pin < 0 || mosi_pin > 128 ) { printf_P(PSTR("Invalid or missing MOSI pin (0>128)\n")); return EXIT_FAILURE;}

            if (result.count("c")) { sck_pin = result["c"].as<int>;(); }
            printf("SCK pin: %d \r\n", sck_pin);
            if (sck_pin < 0 || sck_pin > 128 ) { printf_P(PSTR("Invalid or missing SCK pin (0>128)\n")); return EXIT_FAILURE;}

            if (result.count("e")) { cs_pin = result["e"].as<int>;(); }
            printf("CS pin: %d \r\n", cs_pin);
            if (cs_pin < 0 || cs_pin > 128 ) { printf_P(PSTR("Invalid or missing Chip Select pin (0>128)\n")); return EXIT_FAILURE;}

            if (result.count("t")) { int_pin = result["t"].as<int>;(); }
            printf("INT pin: %d \r\n", int_pin);
            if (int_pin < 0 || int_pin > 128 ) { printf_P(PSTR("Invalid or missing Interrupt pin (0>128)\n")); return EXIT_FAILURE;}

and get the result:
argc: 7
MISO pin: 19
MOSI pin: 23
SCK pin: 18
CS pin: 255
Invalid or missing Chip Select pin (0>128)
Command returned non-zero error code: 0x1 (ERROR)

After that i change the sequence of the variables, the problems stay at the forth position. i saw that the out from argc stay at maximum 7 (in my opinion it should be 11).

Does it work for anybody?
If yes, what does is made wrong?

Thanks and best regards
michaeln
Last edit: 01 Nov 2024 10:27 by michaeln.

Please Log in or Create an account to join the conversation.

More
29 Nov 2024 02:41 #315506 by tommylight
Had the same issue, so it was easier to resolder the pins, but still did not work.
Had no time to test anymore, it is sitting on my desk here for quite some time, but i think i might give it a go these days.
Did you get any further?

Please Log in or Create an account to join the conversation.

More
29 Nov 2024 13:28 - 29 Nov 2024 14:12 #315541 by Mecanix
[deleted] confusion...
Last edit: 29 Nov 2024 14:12 by Mecanix.

Please Log in or Create an account to join the conversation.

More
29 Nov 2024 14:05 #315542 by Mecanix

Had the same issue, so it was easier to resolder the pins, but still did not work.
Had no time to test anymore, it is sitting on my desk here for quite some time, but i think i might give it a go these days.
 

Doubt this will be reliable, Tommy. Sure, prolly be spinning a motor on the benchtop and comm for 10~20min but most likely be failing more often than not. E.g. zero timing critical pthread/mutex//locks/semaphores/gives/takes nothing at all. Could get away without it in a parallel compute domain but in this case, it's all serialized runtime (locks/integrity mandatory).

Wouldn't be surprised this is the reason Wez abandoned the extra efforts that it needed. 
The following user(s) said Thank You: tommylight

Please Log in or Create an account to join the conversation.

More
29 Nov 2024 15:11 #315554 by tommylight
No worries, using this for experimenting only, for anything and everything i use Mesa, just had some ESP32 around from messing with drones.
I did test with hal2udp though for over a day and did not notice any issues, but that is much simpler than this. And it uses a base period for software stepping.
Whenever i get a chance i will be testing this on a production plasma machine, just to see if the antena RX/TX survive the HF/HV pilot arc from plasma. :) I hope i do not forget to make videos, i always forget to make videos...
Wez did a magnificent job for sure, i ordered some ESP32 S3 yesterday just because of this, he deserves a lot of respect for cramming all that stuff into a micro controller. And so do the makers of Marlin.
I wonder if Wez is OK...
The following user(s) said Thank You: Mecanix

Please Log in or Create an account to join the conversation.

More
29 Nov 2024 18:41 #315568 by Mecanix

I wonder if Wez is OK...

Totally cool project yeah, I remember looking into it during its infancy but wasn't geared up to import and compile any of it :( I think Wez attempted a proof of concept here, which he materialized already, however I sense he lacked the courage or perhaps the time to complete it. I looked at it again a few hours ago and it seems to be only missing the timing critical & comm integrity on the blocking/non-blocking/locking threads and other runtimes. Haha maybe you can finish it up (hardest part though, need a sharp oscope and a vivid logic analyser, beware!!).

I'm sure he's fine. Obviously busy with worlds' more important stuff, we all are!

 

Please Log in or Create an account to join the conversation.

Time to create page: 0.144 seconds
Powered by Kunena Forum