Idle/running status signal out of DWF?
-
I would like to add to my printer a two color industrial signal tower such as this one https://www.aliexpress.com/item/2-colors-Industrial-Signal-Tower-Safety-Stack-Alarm-Light-lamp-Bulb-Red-Green-Lamp-LED-White/32933250569.html
Is there a way to get out of DWF an idle/active status signal?
I saw in a thread here a reference to a serial PanelDue communication sniffer but am hopping for a simpler off the shelf signal, ideally using one of the unused 24V outputs such as the second extruder heater but a 5V or 3.3V signal should also work.
-
When exactly do you want the lamp colour to change? You can get a hot/cold indication by using one of the fan outputs (or a spare heater output configured as a fan) and configuring that fan output to be thermostatic, monitoring all heater outputs.
-
@dc42 said in Idle/running status signal out of DWF?:
When exactly do you want the lamp colour to change?
I would think when the machine changes status between 'active' to 'non active'. Active may be defined as something is moving or is 'hot'.
Does this make sense?
-
@zapta said in Idle/running status signal out of DWF?:
I would think when the machine changes status between 'active' to 'non active'. Active may be defined as something is moving or is 'hot'.
Does this make sense?
That's a combination of different things. The printer status that RRF sends to DWC and PanelDue takes the following values:
char RepRap::GetStatusCharacter() const { return (processingConfig) ? 'C' // Reading the configuration file : (gCodes->IsFlashing()) ? 'F' // Flashing a new firmware binary : (IsStopped()) ? 'H' // Halted #if HAS_VOLTAGE_MONITOR : (!platform->HasVinPower() && !gCodes->IsSimulating()) ? 'O' // Off i.e. powered down #endif : (gCodes->IsPausing()) ? 'D' // Pausing / Decelerating : (gCodes->IsResuming()) ? 'R' // Resuming : (gCodes->IsPaused()) ? 'S' // Paused / Stopped : (printMonitor->IsPrinting() && gCodes->IsSimulating()) ? 'M' // Simulating : (printMonitor->IsPrinting()) ? 'P' // Printing : (gCodes->IsDoingToolChange()) ? 'T' // Changing tool : (gCodes->DoingFileMacro() || !move->NoLiveMovement()) ? 'B' // Busy : 'I'; // Idle }
Whether any heaters are hot is not included in this status.
-
Thanks dc42@, I will take a look. I presume that this relates to the PanelDue serial protocol. An arduino sniffer on this protocol can also OR it with 'is still hot' signal that is derived from the temperature readings.
-
@zapta said in Idle/running status signal out of DWF?:
I presume that this relates to the PanelDue serial protocol.
It relates to the response to the M408 command sent by PanelDue to poll the status, and to the response to the rr_status HTTP command.
-
@dc42 said in Idle/running status signal out of DWF?:
It relates to the response to the M408
I have a crude version of Teensy/Arduino sniffer working. It turns the arduino LED on when the printer is busy. The criteria is crude but kind of working
https://github.com/zapta/misc/blob/master/duet3d_monitor/arduino/monitor.cpp#L101
I plan to add WS2812 interface so it can indicate a few states (ACTIVE, COOLING, IDLE, ERROR, etc).
-
Here is a picture of my printer status light prototype. The light is red (active) because the nozzle is still hot (unsafe yet to turn off the printer extruder fan).
It's made of a Teensy 3.2 board with an Arduino sketch that sniffs the PanelDue serial communication and drives a Neopixel RGB LED via a 3.3V->5V level shifter.
The Arduino sketch source code is here https://github.com/zapta/misc/tree/master/duet3d_monitor/arduino
Next step is to make it nicer looking.