This project is an extension to the Smart Multi Filament Feeder (SMuFF) project as described here: SMuFF
It's basically an additional interface based on a ESP32 (or compatible) microcontroller board, which allows you to split up the serial interface on the Duet3D in order to achieve a communication to the SMuFF without interrupting the serial communication between the PanelDue and the Duet3D mainboard. This interface can operate in different modes:
This mode features a three way connection between the Duet3D, the PanelDue and the SMuFF. Besides, the integrated Bluetooth serial port (SPP) allows you to monitor (debug) the connections or even to mirror the data comming from the Duet3D towards the PanelDue. This would enable you to realize some kind of remote display/controller on your smartphone in more or less the same way the PanelDue does (although, you'd need a separate Android/iOS app to accomplish that). All the data sent by the Duet3D will go straight to the PanelDue and vice versa. Special SMuFF related commands have to be prefixed with "\s" when sending messages i.e.
M118 P2 S"\sT3\n"
This sequence commands the SMuFF-Ifc to send the string "T3\n" directly to the SMuFF. The "\n" at the end will be translated to a "Linefeed" character automatically, which triggers the SMuFF to switch to tool 3.
Same function as in Mode 1, only without the PanelDue attached.
This mode allows you to send commands to the SMuFF using the I2C/TWI interface instead of the serial interface. On the Duet3D this makes not much sense, since the serial interface does the same but with more flexibility because it's bidirectional.
As of yet, this mode is the only way to make a Marlin compatible board talk to the SMuFF. It's meant to be used in conjunction with your favorite slicer, which will send a I2C command to the interface, as soon as a tool change is immintent. Although, for now this is plain theorie which hasn't been tested yet.
To configure the SMuFF-Ifc, first upload the firmware and the file system (stuff in the data directory) to your device, then use the Internet browser of your choice to connect to the (HTTP) web interface. There you'll be able to modify the settings comfortabely. Alternatively, you can edit the config.json file from the data directory in order to achive the same.
As for the wiring, you have two different options. For mode 1 & 2:
Although the picture above shows the Duet3D connectors, it's more or less the same on Marlin compatible boards. You only have to figure out yourself, where the I2C/TWI pins are (usually named as SDA/SCL), the Ground and the +5V and at least the E0 endstop (usually used as filament monitor for the extruder). You may use other input pins instead of the E0 endstop but you may end up reconfiguring the Marlin firmware.
When programming the ESP32, you may encounter an "Failed to connect..." error from within the IDE. A description of this problem and the solution can be found here.
In the according folder you'll find a ZIP file containing all the scripts you need for the tool change. It's divided into a sys and a macros folder. Upload those scripts accordingly on your Duet3D SD-Card.
To give you a better overview how the scripts are related to each other, here's an workflow overview:
For more detailed instructions on this topic, head over to the SMuFF Firmware Wiki.