Hardware Extensions ================================= This guide will show you how to use the extension port to communicates with hardware extensions. Understanding the extension port ++++++++++++++++++++++++ The extension port is located at the top cap of FLUX Delta. It has 10pins, including - 1 UARTs, 1 stepper motor control, 1 GND, 1 analog output, 3 digital input/output pins, 3.3V and 24V outputs. .. image:: toolhead/extension_port.png **DESCRIPTION** **Tx / Rx** - Used for UART communication. **EN / STP / CT-REF / DIR** - Used for stepper motor control. **INPUT0** - Digital input. **OUTPUT 0-1** - Digital outputs. **PWM0** - Analog outputs. **GND** - Ground pin. **3.3V** - Can be used for powering MCUs, for example like `Arduino Pro Mini `_. **The maximum current is 3A.** **24V** - Can be used for powering heater, drills or other power consuming components. **The maximum current is 3A.** Developing firmware for hardware extensions ++++++++++++++++++++++++ A typical toolhead uses UART to communicate with its hosting machine , clone or download the example project to build your tool head. :: git clone https://github.com/flux3dp/selfdefined_toolhead_example Communicating with hardware extensions ++++++++++++++++++++++++ ***The delta firmware must be upon 1.3b4** This example shows how to communicate to self-defined toolhead using a self-defined command ( like arduino digitalWrite function ) . :: from fluxclient.commands.misc import get_or_create_default_key from fluxclient.robot import FluxRobot from fluxclient.sdk.delta import Delta from time import sleep #Swap your Delta's ip here delta = Delta.connect_delta(ip='192.168.18.114', client_key='./sdk_connection.pem', kick=True, blocking=False) delta.home() # Use self-defined toolhead result = delta.set_head('USER') if result: print('Tool head ready') # Set pin 2 HIGH resp = delta.serial_write(b'DIGITALWRITE 2 STATE 1\n') print(resp) sleep(1) # Set pin 2 LOW resp = delta.serial_write('DIGITALWRITE 2 STATE 0\n') print(resp) sleep(1) else: print('Tool head never ready') delta.close()