Skip to main content
Have a personal or library account? Click to login
Free and Open-source Control Software for 3-D Motion and Processing Cover

Free and Open-source Control Software for 3-D Motion and Processing

Open Access
|Jan 2016

Figures & Tables

Table 1

Current RepRap Firmware.

NameHardwareComments
RepRap Firmware (original)ARM
LinuxCNCPCUses the parallel port, or GPIO pins on a Raspberry Pi or BeagleBone
RepRap Firmware (fork by dc42)ARMBased on RepRap Firmware
MarlinAVRAdaptation of Grbl for 3-D printers
RepetierAVR, ARMBased on Marlin
TeacupAVR, ARMRuns on AVRs with low memory, such as Arduino Uno
aprinterAVR, ARM
SmoothieARM
Figure 1

Schematic of the workflow of creating a 3-D printed object using Franklin.

Figure 2

Franklin web interface.

Table 2

Supported functions.

CommandFunction
uploadFlash new firmware to an Arduino. (server only)
find_printerSearch for a machine by UUID or port. (server only)
set_autodetect, get_autodetectWhether the server tries to detect a machine on newly discovered ports. (server only)
disableDeactivate the machine. (server only)
detect, detect_allDetect a machine, or all printers. (server only)
add_port, remove_portNotify server of port discovery. (server only, called from kernel signals)
get_portsGet list of available ports. (server only)
set_default_printer, get_default_printerWhich machine is used by new connections. (server only)
set_printer, get_printerWhich machine is used by this connection. (server only)
set_monitor, get_monitorWhether this connection should be informed of changes in settings. (server only)
resetReset the Arduino.
dieClose the Python and C driver.
flushWait for queue to be empty.
probeMap an area using a probe signal or manual feedback.
gotoMove motors to a position.
gotocbMove motors to a position and wait for it to arrive.
sleepChange sleep state of the motors.
settempChange the set point of a temperature control.
waittempSignal an alarm when a temperature enters a specified range.
readtempRequest current temperature.
readpinRequest current value of a GPIO pin.
load, save, list_profiles, remove_profile, set_default_profileProfile management.
abortDisable heaters, sleep motors, reset GPIO pins and stop any running G-code.
pausePause or resume the currently running G-code.
queuedRequest length of the queue.
homeRecalibrate the machine with limit switches.
parkHome if required, then go to park position.
wait_for_tempWait until an alarm from waittemp is triggered.
clear_alarmClear the waittemp alarms.
export_settingsRetrieve all settings for storing in a text file.
import_settingsChange settings from a text file.
gcode_runRun (parsed) G-code.
request_confirmationWait for the user to press a button or abort.
confirmSignal confirmation.
queue_addParse G-code and add it to the queue.
queue_removeRemove an entry from the queue.
gcode_parseParse G-code and return the result.
gcode_bboxFind the bounding box of parsed G-code.
queue_printSend one or more queue entries to the machine.
queue_probeProbe the combined bounding box of one or more entries, then send them to the machine.
get_globals, set_globalsManage global settings
get_axis_posGet current position of an axis.
set_axis_posSet current position of an axis, without moving the motors.
get_space, get_axis, get_motor, set_space, set_axis, set_motorManage space settings.
get_temp, set_tempManage temp settings.
get_gpio, set_gpioManage GPIO settings.
send_printerRequest current state of a machine.
Table 3

Commands for the Franklin C Driver.

CommandFunctionResponse
RESETReset the machine.
GET_UUIDGet universally unique identifier for the machine.UUID
GOTOAdd segment to move queue.MOVECB
RUN_FILERun a parsed G-Code file from disk.UPDATE_TEMP, UPDATE_PIN, CONFIRM, FILE_DONE
PROBELike goto, and monitor probe pin to abort move and notify Python Driver about position.MOVECB, LIMIT
SLEEPEnable or disable the motors.
SETTEMPSet a temperature target.
WAITTEMPSet an alarm.TEMPCB
READTEMPRead current temperature.TEMP
SETPOSSet current axis position.
GETPOSGet current axis position.POS
READ_GLOBALSGet global settings.DATA
WRITE_GLOBALSSet global settings.
READ_SPACE_INFO, READ_SPACE_AXIS, READ_SPACE_MOTORGet space settings.DATA
WRITE_SPACE_INFO, WRITE_SPACE_AXIS, WRITE_SPACE_MOTORSet space settings.
READ_TEMPGet temp settings.DATA
WRITE_TEMPSet temp settings.
READ_GPIOGet GPIO settings.DATA
WRITE_GPIOSet GPIO settings.
QUEUEDRequest queue length and optionally abort move.QUEUE
READPINGet GPIO pin state.PIN
HOMEMove away from limit switches until it no longer hits them.HOMED
RECONNECTMachine has reconnected at this port.
RESUMEResume running a file that was previously paused.
GETTIMEGet time estimates about the current job.TIME
(asynchronous)Notify that the state of an input GPIO has changed.PINCHANGE
(asynchronous)A limit switch was triggered during a move.LIMIT
(asynchronous)The machine was disabled due to a timeout.TIMEOUT
(asynchronous)The connection to the machine was lost.DISCONNECT
Table 4

Supported Commands, Function and Response.

CommandFunctionResponse
BEGINHandshake; send version and receive capabilities.READY
PINGHandshake.PONG
RESETReset the Arduino.
SETUPSet up globals.
CONTROLManage GPIO pin states.
MSETUPSet up motor settings.
ASETUPSet up ADC (temp) settings.
HOMEMove away from limit switches.HOMED
START_MOVEBegin sending movement buffers.
START_PROBEBegin sending movement buffers for probing.
MOVESend movement buffer for one motor.
STARTBegin moving.
STOPStop moving and discard buffer.STOPPED
ABORTStop moving, disable all motors, reset all heaters and GPIO.STOPPED
DISCARDDiscard a part of the queued buffers without stopping the current move.
GETPINRead current state of a GPIO pin.PIN
(asynchronous)Buffer has been completed.DONE
(asynchronous)Buffer has been completed and no next buffer is available.UNDERRUN
(asynchronous)ADC has been measured.ADC
(asynchronous)Limit switch has been triggered.LIMIT
(asynchronous)Machine has been deactivated due to timeout.TIMEOUT
(asynchronous)The value of an input pin has changed.PINCHANGE
Figure 3

Schematic representation of how the move comprising a segment is prepared in Franklin.

DOI: https://doi.org/10.5334/jors.78 | Journal eISSN: 2049-9647
Language: English
Published on: Jan 27, 2016
Published by: Ubiquity Press
In partnership with: Paradigm Publishing Services
Publication frequency: 1 issue per year

© 2016 Bas Wijnen, Gerald C. Anzalone, Amberlee S. Haselhuhn, P. G. Sanders, Joshua M. Pearce, published by Ubiquity Press
This work is licensed under the Creative Commons Attribution 4.0 License.