Close
0%
0%

Ethersweep

An Open Source Ethernet controllable stepper motor. Easy interfacing with JSON and UDP from any device on the network in any language.

Public Chat
Similar projects worth following
Ethersweep offers easy interfacing from computers/machines/backends to motion control. Every UDP supporting language can communicate with it and control as many motors (on your network) as you like.

When power between 5.5 and 30V is applied, it gets an IP address from a DHCP server and shows data like IP, operating voltage, button, and operation states on the OLED display.

Modes like Step, Servo, Ramp, and Home offer useful features for many robotics and automation projects.

The project is currently in version 3 and is still ongoing. The hardware is functional and the software is in a useable state but is constantly changed and updated. Another hardware version is in the making and soon be released.

What it does:

Ethersweep offers easy interfacing from computers/machines/backends to motion control. Every UDP-supporting language can communicate with it and can control as many motors (on your network) as you like.

It gets an IP address from a DHCP server and shows data like IP, operating voltage, button, and operating states on the OLED display. It can be powered from any DC power supply between 5.5V ... 30V, as long as it delivers enough power (approx 1A, but this depends on the motor). The motor current (motor torque) can be set by a potentiometer.

When no network is available, or you need only a few motors for your project, you can also use the USB option to send drive commands to the motor. It takes the same JSON-encoded strings as the Ethernet connection.

Ethersweep is a great way to get easy access to robotics and automation, as the interface is fast to learn and shortens the build time of robotics and automation projects. People without electronic knowledge can use Ethersweep to build machines without the need to build electronics or drivers. In mechatronics projects, it makes the electronics part less complicated and faster to implement and lets you focus more on the mechanics and software side.

Ethersweep was used in the WiFi scanner project: https://hackaday.com/2021/11/22/visualizing-wifi-with-a-converted-3d-printer/

Ethersweep is designed in KiCAD, programmed in Arduino and published as Open Source.


How to get started:

Build an (or multiple) Ethersweep controllers. All manufacturing and assembly files work with JLCPCB (or any other board house, but part numbers have to be changed) and it only needs some simple THT soldering + ICSP bootloader burning when the boards arrive. Arduino code is available in the GitHub repository and in the files.

After you have built and flashed the firmware onto the boards, connect your Ethersweep controller to your network via ethernet and connect it to a 5.5...30V power source. Stick an encoder magnet (magnetized) on a NEMA17 motor shaft and connect the controller to the four M3 screws of the motor. Once connected to power and Ethernet, it searches for an IP address using DHCP. When an IP is found, the controller shows it on the display, and it's ready to use. When no IP is found, it defaults to 192.168.1.111. When you want to use USB instead of Ethernet, just send a byte at 9600 baud to the controller while it starts up. It will automatically switch to USB mode.

When connected to Ethernet or USB, you can send JSON-encoded strings like this to control the motor:

{'drivemode': '2', 'speed': '300', 'slope': '100', 'steps': '800', 'stepmode': '4', 'direction': '0', 'hold': '1'}

This command drives the motor in ramp mode, with a delay of 300 μs delay between the steps, a slope of 100% (ramps the speed 50% of the steps up and 50% of the steps down), for 800 steps, in 1/4 steps (motor takes 200 full steps per revolution), in direction 0 (left in this case), and holds the motor shaft after execution (could also be set floating).

 The command can be sent via a virtual serial USB interface (for example via the Arduino IDEs serial monitor), or via UDP and Ethernet to port 8888 and the IP address that is shown on the display. 

The display
The display shows all the necessary information. Especially the IP is important when you have multiple motors connected

To try out the motor, you can use the Flask application to send commands to the controller using a small web interface and test different drive modes. You can also copy the JSON strings and send them from the programming language of your choice.

Flask application to control Ethersweep
Locally hosted Flask web application to test different drive modes and settings of the controller.

How to build an Ethersweep controller:

Code and Assembly files are on GitHub and in the attached files of this project. https://github.com/neumi/ethersweep

You can directly order the PCBs at JLCPCB with the attached production files. Costs...

Read more »

flask.zip

Flask app for simple web interface. Unpack and run it with 'flask run'

Zip Archive - 3.14 kB - 09/06/2022 at 17:45

Download

production_10_03_2022.zip

Zipped production file with assembly files for JLCPCB.

Zip Archive - 388.68 kB - 09/06/2022 at 11:31

Download

ethersweep304.step

Step 3D file.

step - 41.03 MB - 09/06/2022 at 11:31

Download

baisc_drive.py

Python code to drive motor on the network.

x-python-script - 569.00 bytes - 09/06/2022 at 11:31

Download

broadcast_udp.py

Python code to drive MULTIPLE motors on the network at the same time (currently only with the same instruction).

x-python-script - 371.00 bytes - 09/06/2022 at 11:31

Download

View all 9 files

View all 19 components

  • Using Ethersweep to sort bottle caps by color

    Jan Neumann11/16/2022 at 11:28 0 comments

    Another small example of what Ethersweep can be used for. The setup is fast and easy, and all programming can be done on one machine that uses a normal USB webcam and standard Ethernet to communicate with the motors. No specialized interfaces or hardware are needed except the Ethersweep controller. 

    This shows, how simple it is to connect a vision pipeline to the actual movement of actuators. Reaching the same with a PLC would take much more effort and money to achieve the same output.

  • No prize for Ethersweep

    Jan Neumann10/24/2022 at 14:32 0 comments

    Ethersweep didn’t make it into the list of finalists for the Wildcard competition. 

    Nevertheless, Ethersweep is the most community 'liked' and one of the most followed projects in the competition! I'm very grateful for this feedback!

    Even though it is unfortunate, not to be nominated for the grand prize, I will of course continue my work on the project nonetheless, and find other ways of financing (maybe dev-kits, crowdfunding, venture capital, or more sponsorship options (see my GitHub page!)).

    Thanks so much for voting the project up, sharing it, commenting, building Ethersweeps, and writing messages! There will be more exciting stuff to come!

  • New video: How to assemble an Ethersweep controller!

    Jan Neumann10/16/2022 at 18:40 0 comments

    I've made a video to show how to assemble an Ethersweep controller. Happy building!

  • Ethersweep robot example video

    Jan Neumann10/11/2022 at 14:32 0 comments

    I built a small robot that is controlled by three Ethersweep controllers. Let me know what you think about it and what you would build with an Ethersweep motor!

View all 4 project logs

Enjoy this project?

Share

Discussions

Lucas Hermann wrote 12/29/2023 at 22:50 point

great stuff! I'd really like giving it a go and rebuild it for usage in a small robotics project. Is PID already readily implemented? And how about absolute position feedback (measured in steps I guess) through the encoder?

  Are you sure? yes | no

Arnau Reyes wrote 11/21/2023 at 07:52 point

I find this project awesome so congratulations! I would like to use it in a project I'm developing with some friends but I have a couple of questions. This is sized for nema 17 motors, but could it be possible to use it for nema 23 or for example a nema 11 adapting the board to the size of the motor? And in case I was using nema 17 motors, would it be compatible with a motor with a gearbox like this one for example (https://www.omc-stepperonline.com/nema-17-stepper-motor-l-40mm-gear-ratio-50-1-mg-series-planetary-gearbox-17hs15-1584s-mg50)? Thank you so much anyway!

  Are you sure? yes | no

hads wrote 03/14/2023 at 00:42 point

Love the project and have been following for a while, well done! I have the perfect installation coming up to utilise it. I see from Github there's been movement and some big changes in v4. Any ideas on a timeframe for that to be stable?

  Are you sure? yes | no

Jan Neumann wrote 03/14/2023 at 07:39 point

Thanks!

I ordered a version4 board, but had to find out, that I made two pretty large mistakes. They are fixed in the design but I wanted to be sure that the tmc behaves like I intended, so I just ordered a TMC2209 test board, before I send out the new Ethersweep design: https://github.com/Neumi/tmc2209_devboard 

Also I still have to decide, if I want to get rid of the CP2102 and switch to an internal USB bootloader on the STM. The didn't work last time I tried. But it theoretically should and I think this would be a great space, time and cost saver if it does.

So progress is going on, but I still need to verify some changes for V4. I the current 'production' folder the atmega328 version is working, but has the old speed and storage issues, I wanted to change with v4. So maybe its worth waiting a few more weeks, until I verify the v4. :) 

Thanks for the patience! 

  Are you sure? yes | no

hads wrote 03/15/2023 at 20:32 point

Awesome! That's super exciting, great work. I think it's smart to move to STM. Using the internal USB seems like a good idea to me, was it software or hardware you had trouble with last time? I wonder if there's something that I can help with. I will email you.

  Are you sure? yes | no

Artur Iluk wrote 09/18/2022 at 09:08 point

In description there is written "radial magnetized magnet". It should be "diametrically magnetized", radial will not work.

  Are you sure? yes | no

Jan Neumann wrote 09/18/2022 at 10:33 point

Thanks, Artur I changed it! :)

  Are you sure? yes | no

scarletwiz wrote 09/15/2022 at 04:27 point

It's awesome! how long did it take you to make this?

Your tutorial is detailed and well-made, It will be help to many people.
This is Scarlet from WIZnet team.
Your good project is briefly introduced in the wiznet maker site. Please visit us(https://maker.wiznet.io)
If you have any questions or inquiries, please contact us at the email [maker@wiznet.io]

  Are you sure? yes | no

Jan Neumann wrote 09/15/2022 at 06:39 point

Thanks for having the project on the blog Scarlet!

  Are you sure? yes | no

scarletwiz wrote 09/30/2022 at 00:18 point

our team and I are looking forward to your next project. Thank you for the using WIZnet product!

  Are you sure? yes | no

a.a.andrew wrote 09/14/2022 at 17:32 point

Following.  I'm thinking of ordering the parts and building one of these now!  Question:  What would be the best way to port this to wifi? 

  Are you sure? yes | no

Jan Neumann wrote 09/15/2022 at 06:36 point

Thanks!
If I would change it to WiFi, I would throw out the ethernet (top) board and replace it with an ESP32 board and keep the bottom board as it is. The communication to the ESP32 could still happen through SPI (as it currently does with the W5500) and by keeping the bottom board intact, you keep it simple. If you would replace the atmega with an esp32, you have to redo the whole design.

  Are you sure? yes | no

James Rowlands wrote 09/09/2022 at 02:56 point

What are the voltage and amp limits? If I whacked this on a 6a Nema34 would I need to change any components in the drawings when ordering the boards?

  Are you sure? yes | no

Jan Neumann wrote 09/09/2022 at 19:23 point

Currently 30v (theoretical, not tested, 36V until components start to smoke) and up to 2A coil current. You could change the TMC2208 with a TMC2209 and get up to 2.8A but only up to 29V. But this also comes most likely with some (minor) changes in the code. But no guarantee on that :D

But to answer the question. 6a would not work. And is also not desirable in this small package without major changes (thermal reasons).

  Are you sure? yes | no

Daniel Kennedy wrote 09/08/2022 at 15:23 point

How impossible would it be to provide PoE support? Would be great to be able to drive the motor without needing to hook up power separately.

  Are you sure? yes | no

Jan Neumann wrote 09/09/2022 at 19:18 point

Not impossible, but currently not #1 on the feature list. I think POE is a cool feature, that also brings some disadvantages like more expensive networking equipment, power limitations, and more components that get hot and like to fail over time. But I see the point and will definitely look into POE :) 

  Are you sure? yes | no

Dan wrote 09/08/2022 at 13:07 point

Looking forward to updates.  I lost $170 to a kickstarter promising similar features, only for them to disappear with the money...

  Are you sure? yes | no

Jan Neumann wrote 09/08/2022 at 15:06 point

Great! Not planning to do that though :D

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates