Finished Print Notifier 3D Printer Model

Author: @
License: CC BY-SA
File formats: stl
Download type: zip
Size:35.0KB

The file 'Finished Print Notifier 3D Printer Model' is (stl) file type, size is 35.0KB.

Summary

Add some microwave style funcionality to your printer with this device. Its purpose is to detect when the print is finished and play a loud customizable tune alert to notify you.

link to demo video: https://youtu.be/qgaSM0Q_9rg?si=TwboBGOv-1EVxYMf

It's designed to be hammered into place at the front of your Y axis rail (4040 Y extrusion), behind the belt roller. When the platform moves to the front after the print is done, the wheel will push the limit switch and after 5 seconds it will play a tune via the piezo buzzer. The 5 seconds requirement is meant to prevent accidental triggering of the buzzer.

Compatibility:
bracket should fit any 4040 Y profile of any printer that has enough room at the front for it to fit without colliding with the wheels. (I measured about 13mm from the wheel to the tip the profile)
I designed it for my ender 3 max neo. I didnt test it on any other printer. Test print it yourself and check if you're unsure.

What you'll need:

  • Arduino nano
  • 4216 buzzer (or any other buzzer but the mounting holes are for this size) aliexpress.com/item/1005004198437939.html?
    -20mm micro limit switch
    -USB / power cable

INSTRUCTIONS:
-Connect buzzer to pin D6 and GND on arduino nano
-Connect limit switch to pin D4 and also GND
-Upload the provided code to arduino
-Connect positive wire of the USB / power cable to VIN pin and the ground pin to GND. cut the data wires.
-Test if it works as expected, if it does then secure the cables with hot glue and tape the bottom and top of arduino with some electrical tape.

-Loosen the belt and unscrew the belt roller from the Y axis
-Test fit the bracket by gently hammering it into place, be careful not to crack the plastic or damage the printer.
-Remove it and file a small slot on the left side of the Y axis to later route the cables.
-Clean all metal filings and tape some electrical tape to the inside of the profile.

-Screw the buzzer into the base of the printed bracket with short self tapping screws
-Screw the limit switch into the side of the bracket

-Hammer the assembled unit into position and push the arduino into the profile then route the cables through the slot we made earlier (position the arduino with port facing towards you so that you can always upload updated code without having to remove it)
-Screw the belt roller back and tighten the belt
-Tidy up the cables and connect the cable to 5v source - regular phone charger in my case
-Done

Printing:
printed with PLA, no supports needed, try and match the color with the theme of your particular printer

Code
i can't code at all so here is a bit of code made by ChatGPT with my prompts - the button has to be pressed for at least 5 seconds - then a melody will play a single time, the melody i requested was: "shave and a haircut - two bits" but you can replace it with any melody you want. additional feature is a slight randomisation of the pitch every time the melody is played.
If you want to change the song, You can either generate the code yourself or pick one from this library: https://dragaosemchama.com/en/2019/02/songs-for-arduino/
then prompt the ChatGPT to edit the code for you.

const int buttonPin = 4;
const int buzzerPin = 6;
const int melody[] = {262, 196, 196, 220, 196, 0, 247, 262}; // Shave and a Haircut, Two Bits melody
const int noteDurations[] = {4, 3, 3, 8, 6, 4, 4, 4};

void setup() {
pinMode(buttonPin, INPUT_PULLUP);
}

void loop() {
if (digitalRead(buttonPin) == LOW) {
unsigned long startTime = millis();
while (digitalRead(buttonPin) == LOW && millis() - startTime < 5000) {} // Wait for at least 5 seconds or until button is released
if (millis() - startTime >= 5000) { // If button pressed for at least 5 seconds
int pitchModifier = random(-50, 51); // Random pitch modifier within the range of -50 to 50
for (int i = 0; i < sizeof(melody) / sizeof(melody[0]); i++) {
int frequency = melody[i] + pitchModifier;
if (frequency > 0) { // Ensure frequency is positive
if (melody[i] == 0) {
delay(noteDurations[i] 50);
} else {
tone(buzzerPin, frequency, noteDurations[i]
50);
delay(noteDurations[i] * 50);
}
}
noTone(buzzerPin);
delay(20); // Short pause between notes
}
while (digitalRead(buttonPin) == LOW) {} // Wait for button release
}
delay(100); // Debounce delay
}
}

finished_print_notifier_bracket.stl 100.5KB