Difference between revisions of "Cerealbot"

From Makers Local 256
Jump to: navigation, search
m (External Resources: added links)
m (Overview: Removed contact information)
 
(39 intermediate revisions by one user not shown)
Line 1: Line 1:
 +
[[File:slodac_logo_1.png|borderless|right|200px|Open Design Project]]
 +
 
{{Project|Creator=ctag
 
{{Project|Creator=ctag
|Status=<onlyinclude> Testing HGBP, formatting wiki </onlyinclude>                                <!--LEAVE ONLYINCLUDES FOR STATUS HACK-->  
+
|Status=<onlyinclude> Not serial </onlyinclude>                                <!--LEAVE ONLYINCLUDES FOR STATUS HACK-->  
 
|Born On=23:32, 13 December 2014 (CST)                                                                  <!--DO NOT EDIT -->
 
|Born On=23:32, 13 December 2014 (CST)                                                                  <!--DO NOT EDIT -->
 
|Last Updated={{#time: H:i, d F Y| {{REVISIONTIMESTAMP}} }} (CDT)              <!--DO NOT EDIT -->
 
|Last Updated={{#time: H:i, d F Y| {{REVISIONTIMESTAMP}} }} (CDT)              <!--DO NOT EDIT -->
Line 7: Line 9:
 
== Map ==
 
== Map ==
  
[[Cerealbot/Failures]]
+
[[Cerealbot/Hardware]] - General tomfoolery and notes on random hardware design
  
[[Cerealbot/Software]]
+
[[Cerealbot/Plastics]] - Log of what plastic filaments work
  
[[Cerealbot/Hardware]]
+
[[Cerealbot/rpi]] - Setting up the Raspberry Pi server
  
[[Cerealbot/Financial]]
+
[[Cerealbot/avr]] - Setting up the ATmega328 which middleman's between the RPi and sensors
  
[[Cerealbot/Archive]]
+
[[Cerealbot/Financial]] - A list of links to every item I've purchased
 +
 
 +
[[Cerealbot/printrbot]] - Doesn't exist yet?
 +
 
 +
[[Cerealbot/Queue]] - To be deleted
 +
 
 +
[[Cerealbot/Archive]] - Cruft that still may be helpful
 +
 
 +
 
 +
[https://github.com/ctag/cerealbox Project code on github]
 +
 
 +
[http://bns-daedalus.berocs.com:8080/?action=stream Livestream of the prototype] - If this link doesn't open, copy the URL it into the network stream address in VLC.
 +
 
 +
[https://www.youtube.com/watch?v=NNv5ZWVwTSQ Video of part ejection]
  
 
== Overview ==
 
== Overview ==
  
<gallery>
+
<gallery mode="packed" caption="Cerealbot Development">
 
File:ctag_printrbot_01.JPG|Unmodified Printer
 
File:ctag_printrbot_01.JPG|Unmodified Printer
 
File:ctag_printrbot_02.JPG|Unmodified Printer
 
File:ctag_printrbot_02.JPG|Unmodified Printer
Line 29: Line 44:
 
</gallery>
 
</gallery>
  
Whether I'm right or wrong, I feel that 3D printers of the reprap and home-use variant have been allowed to stagnate. Regardless of an assortment of companies or model types, low cost 3D printers operate on roughly the same plane. And the plane isn't a good one: whereas I can incrementally fire off several dozen pages across multiple document types to our shop's laser printer from the comfort of my own home half an hour away, I can pretty much only 3D print while I'm present in the room to prep the printer for each part. This project, Cereally 3D / Cerealbot / Cerealbox / whatever, is my attempt at fixing a few of the issues that keep FDM printers out of practicality for a range of use-cases by making a low cost 3D printer ''serialized'' (not cerealized).
+
Regardless of an assortment of companies or model types, low cost FDM 3D printers operate on roughly the same level. Whereas I can incrementally fire off several dozen pages across multiple document types to our shop's laser printer from the comfort of my own home half an hour away, I can pretty much only 3D print while I'm present in the room to scrape each part off the build plate. This project, CerealBot, is my attempt at fixing a few of the issues that keep FDM printers out of practicality for a range of use-cases by making a low cost 3D printer ''serialized''.
  
 
It is my hope that this project will bring about an affordable printer that can be placed in a school and maintained in a low-overhead, ad-hoc manner. The serialization will also allow for maximal student use from each printer, meaning that more investigative minds have access to this technology.
 
It is my hope that this project will bring about an affordable printer that can be placed in a school and maintained in a low-overhead, ad-hoc manner. The serialization will also allow for maximal student use from each printer, meaning that more investigative minds have access to this technology.
  
=== Progress Log ===
+
== Method ==
  
* 27-1-2015
+
The current Cerealbot will cycle its hotbed up to ~60C a few times, and the process of heating up and cooling down the part tends to remove its grasp on the build plate. Then the print head can push the part out of the way. BUT: if the part is printed underneath the print head's home location, then the print head will wind up drilling down into the part before trying to sweep it off the plate! To allow for use of the entire print surface, I've added a servo to the hot end which will swing down an arm to push parts off, this alleviates the issue of needing to lower the entire print head and risk crunching the printed part.
** Serious consideration needs to be taken for moving forward. I now know that this procedure works; the prototype works admirably given how it was constructed. The system needs a redesign, and I want to make sure I select the correct path going forward. Currently, the pop-bar lays in a channel milled into the bed, this is a holdover from when I imagined this procedure against the default printrbot build plate. The channel warps the build plate, so this design must go. I now think that the build plate could be constructed from three discrete parts, with the pop-bar laying between two separate plates of alum. There may also still be a better way to detach parts from the build plate, I'm not sure.
+
* 25-1-2015
+
** After several prints with the printrbot outside of its enclosure, it is apparent that some climate control is needed. Each print has warped and curled fairly heavily. A custom box must be constructed, or a large cardboard box must be found.
+
** The pop bar has worked well for the past dozen or so prints and failed prints. Collection of ways to remotely screw up the printer and then recover is growing quickly.
+
** I learned to NOT try melting plastic off of the print nozzle, because then the plastic inside will char and clog everything. Will test whether a lower temperature is appropriate.
+
** The print bed is warped, contributing to the jammed nozzle. I cannot determine if this happened while milling, or due to torque from mounting it on the printer. I rigged up a vice and flexed the plate back to near-level, but it appears to be bending again once remounted. Future print beds must be designed to minimize this.
+
* 22-1-2015
+
** The second pop-bar, which I am considering a true prototype, has been created and linked to an active servo.
+
* Undated, X-1-2015
+
** The testbed for train_rec was a success. Rather than use the length of the pop-bar as a lever to pry the piece off of the bed, I think its better to twist the bar along the length to push the 3d printed part up.
+
* Undated, X-12-2014
+
** Milling the "production/testing" bed is next on the list.
+
  
== External Resources ==
+
# Cron script checks Octoprint for files that have not yet been attempted
 +
## Script automatically starts the first new file it sees
 +
# Printer prints part normally
 +
## On completion, a script is called by octoprint
 +
# The hotbed is "cycled" a few times
 +
## Each cycle entails heating the glass plate and then cooling with the fan on
 +
## This process shocks the printed object free of the glass
 +
# The servo and print head scan the build plate and push the part away
  
=== Parts ===
+
== Build a Cerealbot ==
  
[http://smile.amazon.com/s/ref=nb_sb_noss_1?url=search-alias%3Daps&field-keywords=gt2+belt&rh=i%3Aaps%2Ck%3Agt2+belt Amazon is an OK outlet for GT2 gear/belt parts for the X-Y motion]
+
If you want to make your own serialized printer, start here.
  
[https://www.boltdepot.com/ Source for 2-3mm Hex Bolts like those used in the simple metal]
+
=== Prerequisites ===
  
[https://www.pololu.com/product/1057 Pololu for servos]
+
# Borosilicate glass hotbed
 +
## I really recommend getting an inductive Z sensor (8mm) as well, they're cheap and somewhat automate the task of bedleveling!
 +
# Servo mounted on the extruder carriage
 +
## Mount an arm to the servo that can swing under the hotend
 +
# 12/24V fan aimed at hotbed
 +
## Fan is wired to a 5V relay which is controlled by the arduino
 +
# Arduino to control fan and servo
 +
# Octoprint server (w/ arduino attached)
 +
## Optional webcam
 +
## Cerealbot program/scripts run from this computer
  
=== MISC ===
+
=== ATmega Firmware ===
  
[https://plus.google.com/photos/105999325067359838440/albums/6092631644494438305?authkey=CKPc5ef5suKh8AE ctag's G+ Image Album]
+
If you haven't yet, [https://github.com/ctag/cerealbox clone the git project]. In the project, go to cerealbox/avr/src. Build the .ino source and flash it to the board.
  
[http://help.printrbot.com/Guide/3.+Setting+Up+Your+Auto-Leveling+Probe+and+Your+First+Print+-+Mac/107 Printrbot initial config guide]
+
Super simple, right?
  
[http://www.protoparadigm.com/3d-printer-filament/natural-abs-pla-hips/ Protoparadigm plastic I'm interested in]
+
=== Set up scripts ===
  
[https://mutelight.org/authbind Quick guide on authbind, which allows octoprint to bind port 80]
+
The the root of the project are a ton of scripts, they must be tweaked before use. I'll be making them more flexible to a variety of printers soon, hang tight.
  
[http://hackaday.com/2013/10/23/3d-printering-a-call-for-an-open-source-automated-build-platform/ http://hackaday.com/2013/10/23/3d-printering-a-call-for-an-open-source-automated-build-platform/]
+
From the git project, make the file ''../.cerealbox/apis.sh''
 +
<pre>
 +
# To be sourced into config
 +
# Export Octoprint api key
 +
OCTO_API_KEY="abcde"
 +
# Placeholder RedQueen api key
 +
RQ_API_KEY="12345"
 +
</pre>
 +
These api keys are private, and not stored on github. [[RQ]] is our hackerspace hivemind, you can leave the api key blank and disable it in the config file.
  
[http://www.soliforum.com/topic/608/automatic-removal-from-build-platform/ Glass is good for easy part removal]
+
Edit the config file to work with your printer:
 +
# pop_part: Script that cycles the hotbed to dislodge the part.  
 +
# push_part: Script that uses the servo and print head to sweep the part off the bed.
  
=== Other serial printers ===
+
I strongly recommend disabling push_part and tuning the pop_part cycles and temp for a few prints first.
  
[http://nvbots.com/about/ http://nvbots.com/about/]
+
=== Set Octoprint Hooks ===
  
[http://forums.trossenrobotics.com/showthread.php?6311-One-more-robotic-3D-printer-assembler http://forums.trossenrobotics.com/showthread.php?6311-One-more-robotic-3D-printer-assembler]
+
This is the dangerous part. I '''HAVE NOT COMPLETED''' this guide, and you have to check that you're ready for these scripts to run rampant whenever a print starts and finishes.
  
=== AMT1001 ===
+
Edit ~/.octoprint/config.yaml to have:
 +
<pre>
 +
events:
 +
  enabled: true
 +
  subscriptions:
 +
  - command: /home/pi/cerealbox/print_start.sh "{__filename}"
 +
    event: PrintStarted
 +
    type: system
 +
  - command: /home/pi/cerealbox/print_done.sh "{__filename}" "{__currentZ}" > /tmp/lastprint.log
 +
    event: PrintDone
 +
    type: system
 +
</pre>
  
[http://davidegironi.blogspot.com/2013/07/amt1001-humidity-and-temperature-sensor.html#.VXOzO5Tve00 http://davidegironi.blogspot.com/2013/07/amt1001-humidity-and-temperature-sensor.html#.VXOzO5Tve00]
+
That's it, the scripts should run upon next print.
  
=== SURE Electronics 3208 ===
+
== Tasklist ==
  
[http://store.sure-electronics.com/led/de-dp13119 http://store.sure-electronics.com/led/de-dp13119]
 
  
[http://forum.arduino.cc/index.php?topic=167753.0 http://forum.arduino.cc/index.php?topic=167753.0]
+
* Measure resty vs curl
 +
** Change all api calls to one or the other
 +
* [done] Migrate scripts into folders
 +
* Validate shell scripts
 +
** Right now I'm scaffolding with .sh files to test the algorithm which clears the print bed, I want a few continuous days of test prints.
 +
* Fix this wiki
 +
** Clear instructions, separate random notes from instructions.
 +
* Migrate shell scripts to python
 +
* Make project compatible with variety of printers
  
[http://playground.arduino.cc/Main/HT1632C http://playground.arduino.cc/Main/HT1632C]
 
  
[https://github.com/gauravmm/HT1632-for-Arduino https://github.com/gauravmm/HT1632-for-Arduino] <- Awesome
+
=== Script Architecture ===
  
[http://bailey.st/blog/2011/07/12/how-to-connect-sure-electronics-8x32-led-matrix-display-to-arduino/ http://bailey.st/blog/2011/07/12/how-to-connect-sure-electronics-8x32-led-matrix-display-to-arduino/] <- Wiring
+
# Hook Scripts
 +
## on_print_begin.sh "name"
 +
## on_print_done.sh "name" "z"
 +
## on_print_fail.sh "name"
  
=== GPIO To Arduino ===
+
# Util Scripts
 +
## do_write_msg.sh "type" "msg"
 +
## get_printer_status.sh
 +
## send_cmd.sh
 +
## get_file_status.sh
 +
## print_file.sh
 +
## util.sh
 +
## config
  
[http://stackoverflow.com/questions/957337/what-is-the-difference-between-dtr-dsr-and-rts-cts-flow-control http://stackoverflow.com/questions/957337/what-is-the-difference-between-dtr-dsr-and-rts-cts-flow-control]
+
# Processes Scripts
 +
## do_pop_part.sh
 +
## do_push_part.sh
 +
## do_proc_q.sh
  
[http://www.evilmadscientist.com/2010/diavolino/ http://www.evilmadscientist.com/2010/diavolino/]
+
== External Resources ==
  
[http://www.atmel.com/Images/doc8161.pdf http://www.atmel.com/Images/doc8161.pdf]
+
=== Parts ===
  
[http://www.raspberrypi-spy.co.uk/2014/07/raspberry-pi-b-gpio-header-details-and-pinout/ http://www.raspberrypi-spy.co.uk/2014/07/raspberry-pi-b-gpio-header-details-and-pinout/]
+
[http://smile.amazon.com/s/ref=nb_sb_noss_1?url=search-alias%3Daps&field-keywords=gt2+belt&rh=i%3Aaps%2Ck%3Agt2+belt Amazon is an OK outlet for GT2 gear/belt parts for the X-Y motion]
  
[https://github.com/deanmao/avrdude-rpi https://github.com/deanmao/avrdude-rpi]
+
[https://www.boltdepot.com/ Source for 2-3mm Hex Bolts like those used in the simple metal]
  
[http://www.deanmao.com/2012/08/10/uploading-sketches-to-the-arduino-on-the-pi/ http://www.deanmao.com/2012/08/10/uploading-sketches-to-the-arduino-on-the-pi/]
+
[https://www.pololu.com/product/1057 Pololu for servos]
  
[spellfoundry.com/sleepy-pi/setting-arduino-ide-raspbian/ spellfoundry.com/sleepy-pi/setting-arduino-ide-raspbian/]
+
=== MISC ===
 +
 
 +
[https://plus.google.com/photos/105999325067359838440/albums/6092631644494438305?authkey=CKPc5ef5suKh8AE ctag's G+ Image Album]
 +
 
 +
[http://help.printrbot.com/Guide/3.+Setting+Up+Your+Auto-Leveling+Probe+and+Your+First+Print+-+Mac/107 Printrbot initial config guide]
 +
 
 +
[http://www.protoparadigm.com/3d-printer-filament/natural-abs-pla-hips/ Protoparadigm plastic I'm interested in]
 +
 
 +
[https://mutelight.org/authbind Quick guide on authbind, which allows octoprint to bind port 80]
 +
 
 +
[http://hackaday.com/2013/10/23/3d-printering-a-call-for-an-open-source-automated-build-platform/ http://hackaday.com/2013/10/23/3d-printering-a-call-for-an-open-source-automated-build-platform/]
 +
 
 +
[http://www.soliforum.com/topic/608/automatic-removal-from-build-platform/ Glass is good for easy part removal]
 +
 
 +
=== Other serial printers ===
 +
 
 +
Someone's building a Cerealbot! [https://wiki.melbournemakerspace.org/projects/CerealBot https://wiki.melbournemakerspace.org/projects/CerealBot]
 +
 
 +
[http://nvbots.com/about/ http://nvbots.com/about/]
 +
 
 +
[http://forums.trossenrobotics.com/showthread.php?6311-One-more-robotic-3D-printer-assembler http://forums.trossenrobotics.com/showthread.php?6311-One-more-robotic-3D-printer-assembler]
  
  
  
 
[[Category:3D printer]]    <!--MAKE AS MANY CATEGORIES AS YOU NEED-->
 
[[Category:3D printer]]    <!--MAKE AS MANY CATEGORIES AS YOU NEED-->

Latest revision as of 12:32, 3 May 2017

Open Design Project

Creator:
ctag
Status:
Not serial
Born On:
23:32, 13 December 2014 (CST)
Last Updated:
12:32, 03 May 2017 (CDT)

Map

Cerealbot/Hardware - General tomfoolery and notes on random hardware design

Cerealbot/Plastics - Log of what plastic filaments work

Cerealbot/rpi - Setting up the Raspberry Pi server

Cerealbot/avr - Setting up the ATmega328 which middleman's between the RPi and sensors

Cerealbot/Financial - A list of links to every item I've purchased

Cerealbot/printrbot - Doesn't exist yet?

Cerealbot/Queue - To be deleted

Cerealbot/Archive - Cruft that still may be helpful


Project code on github

Livestream of the prototype - If this link doesn't open, copy the URL it into the network stream address in VLC.

Video of part ejection

Overview

Regardless of an assortment of companies or model types, low cost FDM 3D printers operate on roughly the same level. Whereas I can incrementally fire off several dozen pages across multiple document types to our shop's laser printer from the comfort of my own home half an hour away, I can pretty much only 3D print while I'm present in the room to scrape each part off the build plate. This project, CerealBot, is my attempt at fixing a few of the issues that keep FDM printers out of practicality for a range of use-cases by making a low cost 3D printer serialized.

It is my hope that this project will bring about an affordable printer that can be placed in a school and maintained in a low-overhead, ad-hoc manner. The serialization will also allow for maximal student use from each printer, meaning that more investigative minds have access to this technology.

Method

The current Cerealbot will cycle its hotbed up to ~60C a few times, and the process of heating up and cooling down the part tends to remove its grasp on the build plate. Then the print head can push the part out of the way. BUT: if the part is printed underneath the print head's home location, then the print head will wind up drilling down into the part before trying to sweep it off the plate! To allow for use of the entire print surface, I've added a servo to the hot end which will swing down an arm to push parts off, this alleviates the issue of needing to lower the entire print head and risk crunching the printed part.

  1. Cron script checks Octoprint for files that have not yet been attempted
    1. Script automatically starts the first new file it sees
  2. Printer prints part normally
    1. On completion, a script is called by octoprint
  3. The hotbed is "cycled" a few times
    1. Each cycle entails heating the glass plate and then cooling with the fan on
    2. This process shocks the printed object free of the glass
  4. The servo and print head scan the build plate and push the part away

Build a Cerealbot

If you want to make your own serialized printer, start here.

Prerequisites

  1. Borosilicate glass hotbed
    1. I really recommend getting an inductive Z sensor (8mm) as well, they're cheap and somewhat automate the task of bedleveling!
  2. Servo mounted on the extruder carriage
    1. Mount an arm to the servo that can swing under the hotend
  3. 12/24V fan aimed at hotbed
    1. Fan is wired to a 5V relay which is controlled by the arduino
  4. Arduino to control fan and servo
  5. Octoprint server (w/ arduino attached)
    1. Optional webcam
    2. Cerealbot program/scripts run from this computer

ATmega Firmware

If you haven't yet, clone the git project. In the project, go to cerealbox/avr/src. Build the .ino source and flash it to the board.

Super simple, right?

Set up scripts

The the root of the project are a ton of scripts, they must be tweaked before use. I'll be making them more flexible to a variety of printers soon, hang tight.

From the git project, make the file ../.cerealbox/apis.sh

# To be sourced into config
# Export Octoprint api key
OCTO_API_KEY="abcde"
# Placeholder RedQueen api key
RQ_API_KEY="12345"

These api keys are private, and not stored on github. RQ is our hackerspace hivemind, you can leave the api key blank and disable it in the config file.

Edit the config file to work with your printer:

  1. pop_part: Script that cycles the hotbed to dislodge the part.
  2. push_part: Script that uses the servo and print head to sweep the part off the bed.

I strongly recommend disabling push_part and tuning the pop_part cycles and temp for a few prints first.

Set Octoprint Hooks

This is the dangerous part. I HAVE NOT COMPLETED this guide, and you have to check that you're ready for these scripts to run rampant whenever a print starts and finishes.

Edit ~/.octoprint/config.yaml to have:

events:
  enabled: true
  subscriptions:
  - command: /home/pi/cerealbox/print_start.sh "{__filename}"
    event: PrintStarted
    type: system
  - command: /home/pi/cerealbox/print_done.sh "{__filename}" "{__currentZ}" > /tmp/lastprint.log
    event: PrintDone
    type: system

That's it, the scripts should run upon next print.

Tasklist

  • Measure resty vs curl
    • Change all api calls to one or the other
  • [done] Migrate scripts into folders
  • Validate shell scripts
    • Right now I'm scaffolding with .sh files to test the algorithm which clears the print bed, I want a few continuous days of test prints.
  • Fix this wiki
    • Clear instructions, separate random notes from instructions.
  • Migrate shell scripts to python
  • Make project compatible with variety of printers


Script Architecture

  1. Hook Scripts
    1. on_print_begin.sh "name"
    2. on_print_done.sh "name" "z"
    3. on_print_fail.sh "name"
  1. Util Scripts
    1. do_write_msg.sh "type" "msg"
    2. get_printer_status.sh
    3. send_cmd.sh
    4. get_file_status.sh
    5. print_file.sh
    6. util.sh
    7. config
  1. Processes Scripts
    1. do_pop_part.sh
    2. do_push_part.sh
    3. do_proc_q.sh

External Resources

Parts

Amazon is an OK outlet for GT2 gear/belt parts for the X-Y motion

Source for 2-3mm Hex Bolts like those used in the simple metal

Pololu for servos

MISC

ctag's G+ Image Album

Printrbot initial config guide

Protoparadigm plastic I'm interested in

Quick guide on authbind, which allows octoprint to bind port 80

http://hackaday.com/2013/10/23/3d-printering-a-call-for-an-open-source-automated-build-platform/

Glass is good for easy part removal

Other serial printers

Someone's building a Cerealbot! https://wiki.melbournemakerspace.org/projects/CerealBot

http://nvbots.com/about/

http://forums.trossenrobotics.com/showthread.php?6311-One-more-robotic-3D-printer-assembler