Project:PizzaPrinter

From London Hackspace Wiki
Revision as of 01:11, 27 December 2010 by 92.7.76.251 (talk) (→‎ready)
PizzaPrinter



QR code


Summary

This is a project to create a machine that is capable of taking a pizza specification in some format, and converting it into an actual pizza, before baking it.

This will be split into a few components:

  • Conveyor system - to move the pizza back and forth during production, and to transport it into and out of the oven
  • Liquid dispenser - for dispensing tomato sauce or other liquid sauces (BBQ sauce, etc)
  • Slicing dispenser - for dispensing slices of a stick of ingredient (salami, sausage, pepperoni)
  • Cup dispenser - for dispensing small quantities of loose ingredients (grated cheese, mushrooms, onions, peppers, etc)
  • Dispenser mount - for mounting one or more dispensers on, to provide movement across the width of the pizza on the conveyor
  • Oven - to cook the pizza
  • Controller - to talk to all the above as needed and orchestrate pizza creation given a set of instructions for what the end result should be

System Planning

Conveyor

The conveyor needs to be accurate, bidirectional and heat-resistant (part of it will be parked in an oven for the cooking stage).

Initial proposal: 2 or more steel wires pulled tight around 2 or more metal rollers, motorized by a stepper motor on one of the rollers. The motor roller may need to be rubberized to get enough traction, but this can be done on the 'cold' end of the system without issue.

Structure would be easy enough to fabricate using box section steel or similar.

  • Would these be affordable enough? --Nigle 16:19, 2 August 2010 (UTC)
    • Possibly. £70ish for a proper manufactured metal belt makes some sense in my mind. Probably easier to work with, too. --James Harrison 18:28, 2 August 2010 (UTC)

Liquid dispensers

The liquid dispensers need to be able to dispense a controlled quantity of liquid from a decent-sized feeder tank- preferably taking up liquid via a short hose.

  • Perstaltic pumps? Commonly used in bio-medical applications, only requires cleaning and sterilisation of tube internals.
    • Only ones I could find were ludicrously expensive, but I'm sure it could either be home-made cheaper or I'm not looking in the right places. --James Harrison 15:54, 2 August 2010 (UTC)
    • They can be very expensive, but they are extremely controllable and have been calibrated etc. We could probably knock together something much cruder that'll be good enough. The point is the design is good for food (and medicine) because only the internals have to be cleaned rather than pump internals. -- Ciarán
    • Agreed on the concept - makes sense to keep things as clean as possible - should be fairly easy to make with a few rollers attached to a printed/metal frame on the end of a motor. --James Harrison 18:28, 2 August 2010 (UTC)
    • You can apparently make one with a laser cutter http://www.thingiverse.com/thing:167 --Eb4890 17:03, 26 October 2010 (UTC)
    • Could also use a suction placement - mostly good for pick & place salami etc. but might also suck liquid up a short tube then blow it down : able to use the same mechanism for both solids and liquid dispensing.

Slicing dispensers

The slicing dispensers need to be able to carry and slice a stick of ingredient (stick of salami, smoked sausage, etc) and dispense the slice onto the pizza.

  • Possibly easiest to get an off-the-shelf meat slicer, and modify it for automatic feeding. --James Harrison 15:54, 2 August 2010 (UTC)
  • Muz suggested using a wire to pull across the face of the stick as an alternative - needs more research --James Harrison 18:28, 2 August 2010 (UTC)

Cup dispensers

The cup dispensers need to be able to dump a controlled amount of loose ingredients onto the pizza, preferably not all in one heap, like grated cheese or diced peppers. The ingredients will be fed into the top of the dispenser loose, and should have enough for ~10 dumps in the storage compartment.

  • Alternative - grater-based dispenser for cheese would make sense, but limits you in terms of any other ingredients. --James Harrison 18:28, 2 August 2010 (UTC)
  • Alternative - some sort of belt sander grater thing, it'd neatly spray the grated bits all over the pizza too

--I have my doubts about "neatly spray". Wear eye protection.

Dispenser mounts

The mounts will have to support a decent amount of weight and be able to move that weight across the width of the conveyor so that dispensers mounted on the mounts can be accurately (ish) positioned.

There will need to be at least 3 of these mounts - one for tomato, one for cheese, one for pepperoni - to get a 'complex' pizza cooked.

Oven

Should be doable with cheap ovens from Lidl, maybe toaster heater elements, to create a pizza-sized box of heat with two open sides.

Bonus points for heat containment with flappy doors on each side, maybe even servo-operated doors.

Pizza API

Pseudo code for interacting programatically with the Pizza Printer.

There are two primitive objects:

  1. Printer object
  2. Pizza object

Both are independent but to actually print a pizza, a printer object is required.

Printer object

  • Methods

new

Instantiates a new printer object.

Printer pr = new Printer();

list

Returns integer array with ids of available printers.

Printer pr = new Printer();
int arr[] = pr.list();
for(int i=0; i<arr.size(); i++)
  print "Available pizza network printer id = " + arr[i] + "\n";

bind

Bind a printer object to a printer id. If called with no argument, returns printer id printer object is bound to, if any.

pr.bind(printerID)

queue

Returns integer array with pizza ids waiting in queue.

Printer pr = new Printer();
pr.bind(printerID);
int arr[] = pr.queue();
for(int i=0; i<arr.size(); i++)
  print "Pizza id = " + arr[i] + " is the " + i + " in the queue for " + printerID + "\n";

Pizza object

  • Methods

new

Instantiates a new pizza object.

Pizza pz = new Pizza();

printer

Bind a pizza object to a printer object. If called with no argument, returns printer object pizza object is bound to, if any.

Pizza pz = new Pizza();
Printer pr = new Printer();
pr.id(printerID);
pz.printer(pr);

id

Returns pizza object id.

int iPizzaID = pz.id();

layers

Returns string array with canonical pizza layers.

Pizza pz = new Pizza();
string arr[] = pz.layers();
for(int i=0; i<arr.size(); i++)
 print "Pizza layer " + i + " = " + arr[i] + "\n";

add_layer

Adds a layer to a pizza object.

Pizza pz = new Pizza();
pz.add_layer('crust');
pz.add_layer("sauce");
pz.add_layer('mozzarella');
pz.add_layer('tomato');
pz.add_layer('oregano');

print

Puts pizza object in printer queue.

pz.print();

ready

Returns boolean value of pizza print status.

if(pz.ready())
  print "Pizza " + pz.id() + " is ready at printer id " + pz.printer() + "\n";

Examples

// Instantiate pizza object
Pizza pz = new Pizza();
// add layers
pz.add_layer("crust");
pz.add_layer("sauce");
pz.add_layer('mozzarella');
pz.add_layer("aubergine"); // throws warning, no aubergines available.
pz.add_layer("tomato");
pz.add_layer("oregano");
pz.print(); // throws warning, pizza not bound to printer

// Instantiate printer object
Printer pr = new Printer();
// bind to printer
pr.bind(printerID);

// bind pizza object to printer object and print
pz.printer(pr);   
pz.print();

// poll status
while(!pz.ready())
  ;

if(pz.ready())
  print "Pizza id " + pz.id() + " is ready at printer " + pz.printer();

Why?

Because:

  • Pizza is delicious!
  • Potential extra source of income for the space - £15 to print a pizza is on a par with Dominos, ingredients are cheaper by far, users get nice pizza made on-site and fresh with the added bonus of being able to watch robots building and cooking their pizza
    • If you're selling it, there's a duty of care, so need to avoid food poisoning Ms7821 14:34, 2 August 2010 (UTC)
      • This shouldn't be a big deal, really - you load it with ingredients before cooking, back in the fridge afterwards - so long as we keep track of use-by dates it should be fine. Maybe get some gloves for food handling to avoid contamination. --James Harrison 15:49, 2 August 2010 (UTC)
        • Have the ingredient containers removable from the machine, no need to directly handle the food once filled up, just shove the container back in the fridge. Or build that part of the machine inside a fridge??? --Nigle 16:01, 2 August 2010 (UTC)
    • Would the machine be automagically cleaned between pizza types (where people have allergies, aversion to eating items that have touched meat products)? Phae 16:23, 2 August 2010 (UTC)
    • Could have a separate meat dispensing mechanism to avoid crosscontamination
  • Improves health and safety in the space by encouraging people not to hack on an empty stomach
  • I'll say that again: robots building and cooking pizzas
  • Possible tie-in with local health clubs for people to work off the calories added?
    • The Hackney Community College has a gym court, which is rolling distance away Ms7821 00:06, 4 August 2010 (UTC)