Cabe Atwell wanted a way to have a robot serve up a mixed drink efficiently and economically. He developed the Drinkmotizer, which uses a Raspberry Pi in combination with an Arduino to construct the dream project of many a maker. What makes this drink mixing robot different from other designs? Cabe says this machine builds for just over $1,300 USD which makes it less expensive than the others.
The user clicks on a drink icon on the touchscreen which is interpreted by the R-Pi. The Arduino receives the serial drink protocol (Recipe) from the Raspberry Pi and controls the motor routine based on the recipe. The Arduino receives the values separated by commas. We use the Serial.parseInt() function to place each comma separated value into an array. We then parse out the array and assign individual variables. Once these variables are assigned, we check the values of these variables and move the motor accordingly to each drink module position. The positions are fixed and have a set number of steps in order to move the motor until the cup is directly under the pour spout. The program will check the number of shots in the recipe and dispense the first shot then wait about 4 seconds for the drink module chamber to refill and pour the second shot before moving on to the rest of the recipe. The program also checks whether or not there is any more drink modules left to pour when executing the recipe. When no more drinks are left to pour, the program considers the drink complete and returns to the first position (home). The number of steps are added when the platform passes under the drink dispensers. When the program considers the drink complete, it takes the total number of steps added at its current position and moves the motor, that many steps, in the opposite direction. The platform returns to the exact place when it started the drink.
The protocol includes pour durations for the chasers based on the recipe received. The chasers are poured last, after the liquor. The protocol value for the chaser is a time in milliseconds. This variable is passed directly into the delay for the solenoid that allows the chaser to flow. Once the drink has returned to home, the loop starts over waiting for drink data from the Pi. The Motor has an acceleration and deceleration routine which is used to achieve top speed and come to a gradual rest instead of abruptly stopping the motor. Starting the motor at top speed will cause it to stutter when under the load of the lead screw. A gradual start makes for smooth operation and achieving top speed without problems.
Visit Element14 for schematic, BOM, code links and details.