Making the Robot Waiter RoboBioca

I have written three articles so far with reference to the design, electronics, programming, and assembly of the RoboBioca robot. This is the fourth article of the series and I will describe the whole project.

List of RoboBioca project articles:

  1. Making A Robot Claw
  2. How To Control NEMA 17 Stepper Motor With Arduino And A4988 Driver
  3. How To Control Servo Motors With Arduino (No Noise, No Vibration)

I have created this robot waiter to help us promoting the sea buckthorn organic juice. The robot consists of a rotating base to manage the juice shots and a robotic arm that takes one shot at a time and serve it to the customer.

The construction lasted 5 weeks during which I changed the old printer with a new one, I printed dozens of components, and I had several nights when I slept no more than 4 hours per night. The result of this marathon in which I’ve created RoboBioca was sensational for me. Also, the reaction of visitors from the BIOFACH 2019 Nuremberg trade fair that came into contact with the robot was far beyond my expectations.

I had big emotions for the servo motors used in the robotic arm. I was afraid that the servo would not work for more than 20-30 juice shots. The surprise was that the robotic arm resisted and served over 300 juice shots and still working.

Hardware and Software Technologies
The software area is covered by the IoT application Blynk and an Arduino sketch. I use Blynk to send commands to the robot. I installed it on an Android tablet, but it works just as easily on my smartphone. Communication between the tablet and robot is via Bluetooth.

The hardware part is more complex and includes a robot arm and a rotating platform for plastic cups. The robot arm is a 6-axis SainSmart kit that imitates the industrial design. The initial version of the kit has been subjected to changes at the end-effector and performance.

The steps to built RoboBioca
I have made a CAD design of the rotating base and robot claw. The robotic arm was not designed in CAD. I did not consider that a CAD design could help me to finish the project since it physically exists and it worked. The next step was to divide the project into several small parts that can be built and tested independently of the other modules. I have finished building each part and then I assemble the complete robot.

The modules of the project:

  1. The robot claw
  2. The robot arm
  3. The base with cup holders
  4. The application for robot control
  5. The pump

The robot claw

I have described in this article how I designed, printing and programming the robotic claw.

The end effector is a robot claw used to:

  • grab a small plastic cup with juice;
  • detect if the plastic cup was grabbed. I use a limit switch sensor to detect the plastic cup;
  • detect when the plastic cup is taken over;

The two robotic claws are driven by a single servo motor. Actually, only one of the two claws is attached to the servo motor shaft. Through a gear wheel system, the rotation of the claw attached to the servo drives the movement of the second claw.

One of the claws of the end-effector hosted a limit switch sensor. The sensor is used to detect the plastic cup. In other words, if there is a plastic cup -> the sensor is closed; if the plastic cup is missing -> the sensor is open. In this way, I know whether or not there is a plastic cup between the robot claw. In addition, I use the same sensor to know if the plastic cup is taken by the customer. After the customer raises the juice shot, I know that the plastic cup is taken and the arm can enter into the standby position or take another shot with juice.

The files to 3D print the robot claw can be downloaded from Thingiverse.

The robot arm

I had bigger expectations from the robotic arm. My expectations were that the servo motors would run for a longer time during the tests. Finally, I have changed two of the five servo motors of the arm with two more powerful servo motors. I had some mistakes in controlling the servos, and maybe it’s one of the reasons two servos broke so fast. The good part of this kit is that the servo motor replacement is very easy. The even better news is that the MG996R servo is very cheap. It has the price of a few dollars.

Besides the problem with the servo motors that broke down, I had trouble controlling them. I have described all the issues in this article.

The robot arm is used to pick up the juice shot and serve it. The arm is programmed to wait in a certain position until the customer takes the plastic cup with juice. After the plastic cup is picked up from the claws, the robot waits for a few seconds and then returns to standby position.

One of the upgrades made to the initial version of the kit was at the end-effector. In the initial version, the kit comes with two SG90 servo motors. These servo motors are very small for what I needed. I changed both of them with a single powerful servo to drive the two claws.

The base with cup holders

The rotating base with the plastic cup holders was made from scratch. Everything you see with yellow in this project is designed and 3D printed by me.

It took about 30 minutes to print the gear attached to the stepper motor. Another 6 hours and a half to print the gear that fixes and supports the plastic cup holders. The same gear is driven by the stepper motor to rotate the cup holders. And the last time I have printed the four cup holders – three and a half hours for each. In total, there were around 21 hours of printing.

All components have been printed with ABS and PLA materials. I managed to get prints that look acceptable since I’ve used a low-cost 3D printer. I didn’t include the printing time of the unused pieces. For various reasons, I have a lot of printed components and not used in this project. Some of the reasons are poor print quality or changing project parameters. The time spent printing those parts was at least twice as much compared to the time used to print the components used in the final project.

To assemble the rotating base I used M2x25mm hex socket head bolts. I need support to fix the big gear at the center. I used binder clips and duct tape to fix the components before giving the holes and fix the parts.

Let’s get back and know how the rotating base works.

The base support has one main leg and is the base of the upper part of the platform, a limit switch arm, the cup holders and the pump.

The stepper motor has its own support and can be fixed in several positions. It has attached a gear wheel that in turn engages another large geared wheel. The latter is also the support for the four parts of the cup holders.

The second limit switch sensor used in the project is to detect if the plastic cup is in the cup holder. If the sensor is open, the stepper motor rotates the base until the switch sensor is closed. If the sensor is closed, it means I have a cup in the cup holder and I can turn on the pump to put organic juice into the plastic cup.

The switch sensor has its own support that can be rotated around the base for calibration. The sensor position is depending on to stop the base with the cup holders. The rotating base must stop in an optimal position for the pump and the robotic arm. If the base places the plastic cup in an area outside the pump or robotic arm, the pump will put juice outside the cup, and the robotic arm will not be able to lift it.

The application for robot control

The robot receives wireless commands via Bluetooth from a tablet. The first time I tried with the RemoteXY application. I used the licensed version. I have configured the application with a large button labeled “Bioca”. The application was continuously disconnected from the Bluetooth module of the robot. After many attempts to fix this problem, I gave up the RemoteXY application and switched to Blynk.

With Blynk everything went smoothly and I have a Bluetooth connection for long hours. If you ask how I realized the problem is in the application and not to the hardware or code written by me, the explanation is simple – Blynk runs smoothly without interrupting the connection with the same hardware and the same Arduino sketch.

In the Blynk application, I add a large button to command the robot, a button for connecting the Bluetooth connection, and another button for pump control.

I will start with the last button, namely the button for controlling the pump. This button is used at the end of the program to wash the entire tube system. I replaced the juice bottle with a cup with clean water and I turn on the pump. In a few minutes, the tube system used with juice is clean and ready to be used the next day.

The Bluetooth button is required to connect the tablet to the robot’s Bluetooth module. Theoretically, this step is required every time the robot start working. Because of the time slots interruption of the WiFi connection to the Internet, I have used the button several times in a day to reconnect the robot with the tablet. Mostly I reconnected the application 2-3 times per day.

I used the big button with BIOCA to command the robot. The operating mode is simple. If the button is pressed, the robot makes the entire cycle. If the robot has not completed a started cycle, any other command is ignored. An order can only be given if the robot is in standby mode.

The pump

The peristaltic pump has two essential components: an electric motor and a pump that is attached to the DC motor. The mode of operation is relatively simple. The electric motor turns on the pump which compresses the silicone tube to create a pressure difference that forces the liquids through the pump. The liquid is not touched by any part of the pump. This is one of the reasons why such pumps are used in the food or chemical applications where it is necessary for the liquid to remain sterile.

Another reason to use a peristaltic pump is the necessity to deliver a precise amount of fluid. I know if the pump goes for 8 seconds, I’ll have the amount of juice needed for a juice shot. Okay, in my case, it’s not necessary to have the same amount of juice delivered every time. The pump delivers juice depending on the amount of juice left in the bottle. This is why some juice shots distributed contain a little smaller quantity of juice than the amount of juice delivered when the juice bottle is full.

The pump I use is from Adafruit and works on 12V. I used a DC motor driver (VNH2SP30) to control the pump. The driver is powerful enough to control the pump without problems.

I’ve been worried about the fact that I’m using a 3D printed box almost hermetically sealed. In the yellow box, I have an Arduino, the stepper motor driver, the pump driver, and a step-up/step-down voltage regulator. All these are heat generators and continuous operation can lead to high temperatures inside the box.

I was lucky since in the four days of operation the temperature inside the box was not a problem that would require to stop the robot.

I controlled the pump with the VNH2SP30 motor driver. What annoys me at VNH2SP30 is the need to solder the small pins for control. As with any other driver board, there is a very small space where you need to solder the pin. It took me some time until I finished to solder all the pins and the wires.

The 5V power supply of the VNH2SP30 is made from a Pololu step-up/step-down voltage regulator. I chose this option because I have several components needed to be powered by 5V including a Bluetooth module, a stepper motor driver and the VNH2SP30 driver.

This is RoboBioca. My first robot that came into contact with a large audience. I was pleasantly surprised by the reactions of the people and how impressed were all of them when a robot served with a plastic cup of juice.


Related Posts

Don't Miss Out!

Get the latest news, tutorials, reviews and more direct to your inbox when you subscribe!