Project:PizzaPrinter: Difference between revisions

From London Hackspace Wiki
 
(44 intermediate revisions by 12 users not shown)
Line 1: Line 1:
{{Project}}
{{Project}}
[[File:Pizzaprinter.png|right|200px|thumb|How a pizza printer should operate]]
The "Pizza Printer" is both a proposed project and an [http://en.wiktionary.org/wiki/in-joke in-joke] at London Hackspace. The intention is to create a machine capable of producing bespoke pizza on demand with minimal effort for the operators (including cleaning effort). The joke is that this project is almost as old as the hackspace, and the subject of frequent, in-depth discussion, but never even the beginnings of a working machine.


== Summary ==
== 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 cooking it.
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:
This will be split into a few components:
Line 14: Line 18:
* '''Oven''' - to cook the pizza
* '''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
* '''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
* '''Consumer''' - to process cooked food item into hackery
== Possible designs ==
*[[Project:PizzaPrinter/Deighton|Deighton]] Is JimM's first proposed design.
*[http://iiafw.com/2008/05/24/mobius-pizza/ Desired capability] (with thanks to tomw for the link)


== System Planning ==
== System Planning ==
Line 31: Line 41:
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.
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.
* Peristaltic 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. --[[User:JamesHarrison|James Harrison]] 15:54, 2 August 2010 (UTC)
** 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. --[[User:JamesHarrison|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. -- [[user:ciaran.mooney|Ciarán]]
** 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. -- [[user:ciaran.mooney|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. --[[User:JamesHarrison|James Harrison]] 18:28, 2 August 2010 (UTC)
** 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. --[[User:JamesHarrison|James Harrison]] 18:28, 2 August 2010 (UTC)
** You can apparently make one with a laser cutter http://www.thingiverse.com/thing:167 --[[User:Eb4890|Eb4890]] 17:03, 26 October 2010 (UTC)
** You can apparently make one with a laser cutter http://www.thingiverse.com/thing:167 --[[User:Eb4890|Eb4890]] 17:03, 26 October 2010 (UTC)
*** This one looks 300x easier to make though http://www.thingiverse.com/thing:5265 --[[user:ciaran.moooney|Ciarán]]
*** This one looks 300x easier to make though http://www.thingiverse.com/thing:5265 --[[user:ciaran.mooney|Ciarán]]
**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.
**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.
** I have the motor mechanism (with gearbox and speed control) for a large peristaltic pump. It needs the roller and tube mechanism building. - artag


=== Slicing dispensers ===
=== Slicing dispensers ===
Line 45: Line 56:
* Possibly easiest to get an off-the-shelf meat slicer, and modify it for automatic feeding. --[[User:JamesHarrison|James Harrison]] 15:54, 2 August 2010 (UTC)
* Possibly easiest to get an off-the-shelf meat slicer, and modify it for automatic feeding. --[[User:JamesHarrison|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 --[[User:JamesHarrison|James Harrison]] 18:28, 2 August 2010 (UTC)
* Muz suggested using a wire to pull across the face of the stick as an alternative - needs more research --[[User:JamesHarrison|James Harrison]] 18:28, 2 August 2010 (UTC)
* Could use a fan blade with sharpened edge to slice salami and propel onto pizza face


=== Cup dispensers ===
=== Cup dispensers ===
Line 65: Line 77:


Bonus points for heat containment with flappy doors on each side, maybe even servo-operated doors.
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:
# Printer object
# 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? ==
== Why? ==
Line 72: Line 219:
* 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''
* 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 [[User:Ms7821|Ms7821]] 14:34, 2 August 2010 (UTC)
** If you're selling it, there's a duty of care, so need to avoid food poisoning [[User:Ms7821|Ms7821]] 14:34, 2 August 2010 (UTC)
*** there's a duty of care whether you're selling or not. But if you're selling, there could arguably be implied consumer protection terms, too.
**** Yes, I didn't meant to imply there wasn't one otherwise, although if you're selling it there's a far clearer responsibility. My point was more that it would be better to avoid doing it for promotion - it's just something cool for us to use. [[User:Ms7821|Ms7821]] 19:54, 4 June 2011 (UTC)
**** [http://www.noisebridge.net/pipermail/tastebridge/2011-June/000361.html Here's] a timely example of what happens when you look too commercial when food's involved.
*** 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. --[[User:JamesHarrison|James Harrison]] 15:49, 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. --[[User:JamesHarrison|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??? --[[User:Nigle|Nigle]] 16:01, 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??? --[[User:Nigle|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)? [[User:Phae|Phae]] 16:23, 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)? [[User:Phae|Phae]] 16:23, 2 August 2010 (UTC)
***Exceptionally hungry hackers will gladly lick it clean
** Could have a separate meat dispensing mechanism to avoid crosscontamination
** 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
* Improves health and safety in the space by encouraging people not to hack on an empty stomach
Line 80: Line 231:
* Possible tie-in with local health clubs for people to work off the calories added?
* 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 [[User:Ms7821|Ms7821]] 00:06, 4 August 2010 (UTC)
** The Hackney Community College has a gym court, which is rolling distance away [[User:Ms7821|Ms7821]] 00:06, 4 August 2010 (UTC)
== Commercial Pizza Printers ==
There exists a motivation to sell these pizza printers in the real world.  One very prominent example rose to power in 2012, The A1 Concepts "Let's Pizza" machine.  However, it has been some time since the initial market splash and we have yet to see any of these printers available for customer engagement in the London area.
[http://www.letspizza.co.uk/ A1 Concepts Let's Pizza (Possibly the Least Vapourware of the following):]
{{#ev:youtube|j7_lxiU8eLM}}
PizTop Pizza Printer Vending Machine
{{#ev:youtube|ChQ8ylWiq80}}
WonderPizza Vending Machine
{{#ev:youtube|TzqQv9gf93U}}
[[Category:Projects]]

Latest revision as of 17:39, 23 April 2015

PizzaPrinter



QR code


How a pizza printer should operate

The "Pizza Printer" is both a proposed project and an in-joke at London Hackspace. The intention is to create a machine capable of producing bespoke pizza on demand with minimal effort for the operators (including cleaning effort). The joke is that this project is almost as old as the hackspace, and the subject of frequent, in-depth discussion, but never even the beginnings of a working machine.

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
  • Consumer - to process cooked food item into hackery

Possible designs

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.

  • Peristaltic 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.
    • I have the motor mechanism (with gearbox and speed control) for a large peristaltic pump. It needs the roller and tube mechanism building. - artag

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)
  • Could use a fan blade with sharpened edge to slice salami and propel onto pizza face

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)
      • there's a duty of care whether you're selling or not. But if you're selling, there could arguably be implied consumer protection terms, too.
        • Yes, I didn't meant to imply there wasn't one otherwise, although if you're selling it there's a far clearer responsibility. My point was more that it would be better to avoid doing it for promotion - it's just something cool for us to use. Ms7821 19:54, 4 June 2011 (UTC)
        • Here's a timely example of what happens when you look too commercial when food's involved.
      • 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)
      • Exceptionally hungry hackers will gladly lick it clean
    • 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)

Commercial Pizza Printers

There exists a motivation to sell these pizza printers in the real world. One very prominent example rose to power in 2012, The A1 Concepts "Let's Pizza" machine. However, it has been some time since the initial market splash and we have yet to see any of these printers available for customer engagement in the London area.

A1 Concepts Let's Pizza (Possibly the Least Vapourware of the following): {{#ev:youtube|j7_lxiU8eLM}}

PizTop Pizza Printer Vending Machine {{#ev:youtube|ChQ8ylWiq80}}

WonderPizza Vending Machine {{#ev:youtube|TzqQv9gf93U}}