• Stars
    star
    237
  • Rank 169,885 (Top 4 %)
  • Language
    C++
  • License
    Other
  • Created over 4 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Open Source, easy to use Ethernet connected stepper motor controller. Built in FreeCAD, KiCAD and Arduino.

Ethersweep Logo

Ethersweep

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

As there is quite some interest in buying a controller, please contact me via [email protected]. But you can, of course, order the parts on your own and build the controller yourself! (please see https://hackaday.io/project/187187/components)

More media/press material: https://drive.google.com/drive/folders/1qrk8QeEkzJ8hkr-H0x3y7xxhLTKhMb_F?usp=share_link

NEWS NOTE: Ethersweep is a project that is still in development. If you plan to order boards for yourself, you can do so, but expect it to take some work to get everything running! If you have any questions, please write me on Discord: https://discord.com/invite/rerCyqAcrw or LinkedIn: https://www.linkedin.com/in/neumi/ If you need custom assemblies, code or have a special use case in mind, reach out to me. The latest running version is in the production directory. It is still an Atmega328 and TMC2208 stepper driver. The project shifts from Atmega328 to STM32. Therfore there are a lot of changes going on. Check out the latest development and development code version! The boards are functional and the old code was adapted to run on STM32! Therefore I will start writing new features on the new STM32 + TMC2209 platform only.

linear axis

What it does

Ethersweep offers easy interfacing from computers/machines/backends to motion control. Every UDP supporting language is able to communicate with it and is able to 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 operation states on the OLED display.

PCB Photo

What it needs

Every motor has to be connected to an Ethernet network (optimally with DHCP) and a power supply between 5.5...30V.

How to control

Features:

  • W5500 Ethernet controller
  • AtMega328 Microcontroller (with Arduino Bootloader)
  • Trinamic TMC2208 Stepper motor driver
  • AS5600 magnetic rotary encoder
  • XT30 power connector
  • Oled 128x32 Display
  • USB / ISP programmable
  • Inputs for E-Stop and End-Stop
  • Reset button
  • Motor current setting via potentiometer
  • Fits on a NEMA17 stepper motor

Display content

How to get started:

Build an (or multiple) Ethersweep controller. All manufacturing/assembly files work with JLCPCB and only some easy THT soldering + ICSP programming when the boards arrive. Arduino code is available in repository.

Connect your Ethersweep controller to your network via ethernet and connect to a 5.5...30V power source. Stick an encoder magnet (radial 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 serarches for an IP address using DHCP. When an IP is found, the controller shows it on the display and its ready to use. When no IP is found, it defaults to 192.168.1.111.

Now you can use the Python script to control the motor.

PCB raw B animation cad rotation pcb layout pcb layout

Using Python to control a stepper motor:

import socket
import json

IP_MOTOR = "192.168.1.185" #local motor controller IP
UDP_PORT = 8888


def drive_motor(steps, speed, direction, stepmode, motor_ip):
    json_data = json.dumps({'steps': steps, 'speed': speed, 'direction': direction, 'stepmode': stepmode})
    message = json_data.encode()
    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    sock.sendto(message, (motor_ip, UDP_PORT))


drive_motor(100, 9500, 1, 32, IP_MOTOR)

Video:

LINK TO VIDEO

Follow the project on hackaday.io: https://hackaday.io/project/187187-ethersweep

Upcoming Features:

  • automatic MAC address generation at first start + EEPROM storage
  • USB interface
  • improved Broadcast mode + motor synchronization for multiple motors
  • motor ramping mode
  • motor servo mode
  • (state) response to sender
  • ยตC upgrade to STM32f103
  • TMC2209 upgrade

More Repositories

1

Arduino-Processing-Laser-CNC

Arduino feat. Processing Laser CNC Project
C++
61
star
2

3D_water_depth_logger

A simple Arduino based logger for depth mapping of water bodies. Using cheap and simple hardware like GPS and a standard NMEA capable echolot sounder.
C++
41
star
3

OpticalFlowA3080ArduinoProcessing

Arduino and Processing code for an A3080 or ADNS3080 optical flow sensor
Processing
38
star
4

3D_wifi_scanner

A project to make wifi signals visible in 3D space.
Python
21
star
5

tmc2209_devboard

An Arduino shield to test the TMC2209 stepper motion controller by Trinamic.
C++
20
star
6

wifi_camera

A camera that can see WiFi signals.
C++
14
star
7

gsm-gps-tracker

A simple GSM GPS and payload data tracker unsing an Arduino with sim800l and Ublox Neo 6m module. On the server side php and mysql.
C++
12
star
8

esp32_camera_webstream

Streams ESP32 camera images to web backend and forwards them to a website in realtime.
C++
11
star
9

ESP8266_ADNS3080_reflectivity_finder

ESP8266 as NodeMcu connected to an ADNS3080 image sensor taking two images. One with light enabled and another with light disabled. Subtracting the light intensity per pixel gets you the most reflective areas in the image. Processing code shows the result in realtime.
C++
8
star
10

esp8266-ADNS3080-Supertrack

Goal is to build a high speed, low latency, 2D or 3D tracking system for robotic system.
C++
7
star
11

cheese_scraper

A python web scraper to fetch produtcs from REWE online shop.
Python
3
star
12

PWM_SBUS_converter

Arduino code and hardware design for a simple RC receiver PWM to SBUS converter.
C++
2
star
13

ydlidar-360-laser-scanner

Using a cheap 2D laser scanner, a stepper motor and some 3D printed parts to build a full-sphere 360ยฐ laser scanner.
Python
2
star
14

ESP32_camera_M5STACK_NO_PSRAM

Working Camera Server for M5Stack ESP32 Camera (OV2640) Module Development Board without PS RAM.
C
2
star
15

liion_checker

A 18650 Li-Ion battery checker and charger that can be loaded and unloaded by a robotic gripper.
C++
2
star
16

ethersense

Open source Ethernet connected multi-sensor.
1
star
17

worst_mirror

A 30 x 30 pix resolution digital mirror with 1024 WS2812b matrix, ADNS3080 camera module and ESP8266.
C++
1
star
18

ZTE_r216_vodafone_python_sms

A hacked python API to send SMS messages from a ZTE R216-Z Vodafone LTE WIFI router.
Python
1
star
19

grafana_robotics_dashboard

A Grafana dashboard to show different real time data from robots/machine using MQTT, Raspberry Pi, Multi Wii Copter MWC board with custom firmware.
Python
1
star
20

Python-UDP-Arduino-Stepper-Motor

Snippet of code to control stepper motors via UDP in python.
C++
1
star
21

colab-ml-reverse-captcha

Machine Learning Approach for resolving captchas.
Jupyter Notebook
1
star
22

servo_position_feedback

This is an Arduino Code to add position feedback to a standard model servo motor and use this output to drive a force feedback joystick.
C++
1
star
23

repairMampMysqlServer

Small shell script to repair MAMP SQL Server on Mac machines with standard installation config. It works by removing the ib_logfile which gets corrupted sometimes (especially if the mac runs out of power and quits all running programs).
Shell
1
star
24

arduino_multi_VL53L0X

Code to get data from multiple VL53L0X LIDAR sensors connected to one i2c bus. By resetting and individually initializing each sensor we set new i2c adresses on startup.
C++
1
star