[Preface: It might be hard to read because I am quite scatterbrained and the structure could be all wrong. Feel free to ask questions if you are confused, and I apologize for the inconvenience.]
So I have this project I'm doing in the school which aims to add sound functionalities to a 3D printer with no firmware modification; It's used in place of the default buzzer.
It taps into the software serial port to send the messages (M117 "Message goes here") and would monitor the following peripherals:
- X-axis driver
- Y-axis driver
- Nozzle heater and/or bed heater
- Extruder driver (maybe)
I'm thinking of tapping into Driver Enable pin for monitoring the motor activation status and using some sort of device to tap into the heater output so I can see if the heater is turned on. Is this a good idea?
The board I'm going to use is Anycubic Trigorilla board since it was what Anycubic 4MAX printer came with. (Its firmware is not an open-source variety despite being based on Marlin, so I cannot modify it)
- Power-on test for switches (door sensor and top hush/reset button)
- Hold to reset button and hush button in one to stop the alarm when situations occur
- Probably some menu system for setting the volume, light color and the print done tune, accessed with buttons on the backside, perhaps?
- Use the Set Message command to display the status instead of adding another display for monitoring
- A WT588D sound module in Serial mode
- Sounds for following conditions:
- Door status changed
- Motors released but the heater is still on
- The button is being held down for 3 seconds (reset, play countdown sound every second then play a confirmation sound)
- The button is pressed for less than 1 second (hush, play a sound then stop all current sounds)
- Print finished (motors are released and heaters are off, only active after motors and heaters are turned on, stops when the button is pressed or door is opened)
- New message on the screen (only played when it has sat idle for at least 5 seconds so it doesn't clutter the audio stream during boot)
- Test OK (played when heaters and motors are not turned on during the first 2 seconds after booting and both the button and door sensor works)
- Test failed (played when any heaters or motors are turned on during the first 2 seconds after booting or door or button status change is not detected in 10 seconds)
- Settings saved
- RGB LED for indicator (right next to the last line of LCD display, it has a diffuser in shape of an arrow to point at that line, flashes red, green or blue depending on situations)
- Button LED (9~12V, monochrome, it just needs to flash when counting down or it needs attention, maybe fade in and out for extra fanciness?)
- Addressable or "dumb" RGB LED strip for interior illumination
- Based on Arduino Mega or Arduino Uno or Arduino Nano (please tell me which board to use, size doesn't really matter but I'd prefer Nano or Uno because they are smaller and easier to hide behind the panel)
The display in the center is ReprapDiscount Full Graphic Smart Controller which I will hack to move the knobs and SD card slot away from the center.
The door sensor is just a little reed switch which I assume is normally open. I need to check this.
The control panel layout looks like this, and I can use up to 20mm thick module:
I need to figure out the code behind the monitoring and ways to detect if printer is printing without touching the firmware. Any help would be appreciated!