Intro: Smart Robot
A robot is a machine, especially one programmable by a computer, capable of carrying out a complex series of actions automatically. With the advancement of technology the tasks done by humans in their daily life are being automated to make the task easier and more efficient. Volvic has been designed for this very purpose. It has been created by merging various technologies into one so that all the help required can be found in one place.
Volvic was an inspiration of BB-9E from the movie star wars. Ever since I've watched that movie, I wanted to have one. There are lots of toys available in the market, But, Building one and Playing with it gives more satisfaction.
The ultimate goal of this project is to develop a new generation of AI robot, capable to support human beings in all those activities which require the ability to interact actively, understanding voice commands and act accordingly, display date and time, answering simple questions, controlling as an RC car and capable of capturing video (and sometimes audio) of a location without the subjects' knowledge. It is mainly controlled through an Android phone which is connected to it through Bluetooth. Based on Android features such as Google Voice Recognition and Tilt sensing, it can really behave like a cute, smart robot.
Volvic's head is attached to the top of the body by the help of magnets. We have made it run separately, hence it can be used as a digital table clock.
Step 1: Components
- Arduino UNO (2)
- Bluetooth Module HC-05
- L293D Motor Driver Board
- APR33A3 Voice Module
- DS3231 RTC Module
- I2C Module
- LCD 16x2
- DC Motors (2)
- 12v Battery
- 9g Servo
- Wheel (2)
- Power Bank
- 8 ohm Speaker
- Jumper Wires
- Android Device
- Caster Wheel
- L-shaped Clamps (2)
- Hot Glue Gun
- Wire Cutter
- Hack Saw
- Sand Paper
- Zip Ties
- Arduino IDE
Talking about the Android, it won't be a great issue to posses one because most have it nowadays. But having newer versions (above 5.0) might increase the performance. Try to buy motors having moderate rpm (60 to 100). This would help to keep the speed of the robot under control, as no other speed control circuit is installed. Considering the Bluetooth, HC 05 is suitable for the robot because it is cheap enough, and the performance is outstanding too. I've used a power bank to power up the arduino. A 9v battery can be used instead. We couldn't find a better Voice Module so we used a local made module. Up to 8 Voices can be recorded on this Module.
we used 2 Arduinos, one for the body and the other for the head. The head displays the date and time on the LCD.
Step 2: Build the Chasis
We used 2 globes, one for head and other for the body. the bigger globe is 35 cm diameter and the smaller globe is 22 cm diameter. the big globe is used for the body and the small one for the head.
Steps to build the chasis:
- Cut the big globe half.
- Draw a 28 cm diameter circle on a white drawing paper.
- Measure the thickness of the wheels.
- Draw the design of the wooden plank on the paper as shown in pic 4.
- Paste the design on the wood.
- Make the Wooden plank as per the design as shown in pic 8.
- Mark the holes to be drilled as shown in the pic 9.
- Drill all the holes.
- Select a PVC pipe of 4 cm Diameter and 18 cm Length. The PVC pipe holds the servo motor on one opening and is attached to the wooden plank.
- Cut a small portion of the pipe as shown in the pic 11. This helps in connecting the wires from the motors with the modules.
- Attach the L-shaped clamps to the plank and install the motors.
- Attach the 12v Battery to the plank. We used zip ties to attach the 12v battery, so that we can remove it by simply sliding the battery left or right.
Step 3: Circuit Diagram
MOTORS AND BATTERY TO MOTOR DRIVER BOARD (L293D) :- (shown in fig 2)
consider two motors A,B.
MOTOR A is connected to M1 - OUT and MOTOR B is connected to M2 - OUT.
connect +ve ( red wire ) of the 12v battery to '+' on motor dirver board and -ve ( black wire) of the 12v battery to '-' on motor driver board.
MOTOR DRIVER BOARD (L293D) TO ARDUINO :- ( shown in fig 3)
M1-IN to DIGITAL PINS 8,9
M2-IN - DIGITAL PINS 10,11
BLUETOOTH MODULE TO ARDUINO UNO :-
TX - RX( DIGITAL PIN 0)
RX - TX (DIGITAL PIN 1)
VDD( or VCC) - 5V
GND - GND
SERVO MOTOR TO ARDUINO UNO :-
SIGNAL (ORANGE WIRE) - DIGITAL PIN 12
VDD ( RED WIRE) - 3.3V
GND ( BROWN WIRE ) - GND
Step 4: Voice Module
APR33A3 Voice Module is a local made module. It is used to play voice files for the robot. This Voice module has 8 pins and can store 8 voices/sounds. The 8 pins of the voice module are connected to pins 2, 3, 4, 5, 6 and 7 on Arduino Uno.
Steps to record and play voices/sounds:
- Connect the VCC and GND pins to the Arduino.
- Connect the Speaker as shown in the circuit diagram.
- Upload the code.
- Connect the M7 pin of the voice module to digital pin 7 on the Arduino.
- The switch must be on record mode (rec).
- Record the sound/voice (answer) through the MIC.
- In order to play the sound/voice, disconnect the VCC and GND pins.
- Push the switch on play mode.
- Connect the M7 pin to GND pin on Arduino.
- The corresponding voice/sound will be heard.
- Repeat steps 4 to 9 for other 6 pins (ie, M6 to digital pin 6, M5 to digital pin 5, M4 to digital pin 4, M3 to digital pin 3 and M2 to digital pin 2).
- Once the sounds/voices are uploaded, connect the VCC and GND pins to the Arduino.
- Connect all the pins of the voice module as shown in circuit diagram.
- Make sure the switch is on play mode.
Note- Make sure the answers match the questions which are defined in the code.
Step 5: Code
NOTE- The videos will be uploaded ASAP!!.
Step 6: Voice Control
Interfacing Arduino Uno with Voice Module:
APR33A3 Voice Module is used to play voice files for the robot. This Voice module has 8 pins and can store 8 voices/sounds. The 8 pins of the voice module are connected to pins 2, 3, 4, 5, 6 and 7 on Arduino Uno. When a question is asked, the AMR Voice App converts the speech to text format and sends it to the Arduino over Bluetooth module Hc-05. Initially all the pins are set to logic 1. On receiving the text query, the Arduino checks if the query is present in the database. When the query is detected, logic 0 is passed to the Voice Module and the respective sound is played. The respective voice is played through 8ohms speaker, connected to APR33A3 module.
Step 7: Gesture and Bluetooth RC Control
Interfacing Arduino with L293D Motor Driver Board using Gesture Control App:
The gesture control or motion control mode is done through the Android. In this mode, the robot can be controlled as an RC car by using the Android as the steering wheel. The Gesture Control App uses the phone’s accelerometer to determine the angle at which the phone is tilted. Then a character (A, B....) is sent to the robot through Bluetooth. The Arduino receives the respective character and sends it to the L293D Motor Driver Board. If the phone is tilted ahead, character A is sent and robot moves forward. When tilted back, character B is sent and the robot moves backward and so on for left and right. When the Android is placed horizontally, the character E is sent and the robot stops moving.
The two DC motors are connected to out-pin on L293D Motor Driver Board. A 12v power supply is connected to positive and negative pins on L293D Motor Driver Board. The in-pins of L293D Motor Driver Board are connected to pins 8, 9, 10 and 11 on the Arduino Uno.
Interfacing Arduino with Bluetooth RC Controller App:
The Bluetooth RC Control mode is done through the Android. In this mode, the robot can be controlled as an RC car by pressing the desired buttons in the App. There are different buttons in the app, each having different characters associated with it. When any key is touched, a character is sent to the robot over Bluetooth, just like the gesture control mode. Further, the same characters are sent when the respective keys are touched, and the robot follows the incoming characters. The App has the 360 and -360 degree buttons to make the robot look right and left
Step 8: Build the Body
A small piece of thermocol is used to cover the zip ties holding the battery.
- Fix all the components to the wooden plank.
- The pvc pipe is fixed in the middle of the plank
- The Servo motor is attached to the top of the pvc pipe using Hot glue.
A local made voice module (APR33AR Voice Module) is used. This module produces less sound, hence we used an amplifier.
Step 9: Volvic's Magnetic Mechanism
- Cut a rectangular piece of hard plastic of 12 cm long, 4 cm wide and 2 mm thick.
- mark the center.
- Drill a small hole using a screw.
- Fix 2 Neodymium Magnets on both ends of the plastic piece using strong glue (shown in pic 2)
- Mount the plastic piece to the servo motor (shown in pic 3)
The plus shaped clip is used to fix the servo motor.
Install the half of Big globe (above the internal mechanism) then throw your magnets where the magnet is located from the other side. Let them attract each other. Hence You don't have to take measurements in order to find the exact position of the other the magnets from the other end.
Step 10: Making Volvic's Head
- Cut the small globe half
- Mark the measurements of the LCD screen
- Cut the marked portion
- Paint the globe.
- Draw a circle of the diameter of the globe on a piece of cardboard.
- Cut the cardboard. This is used as a base of the head.
The head can be detachable, hence can be used as a digital table clock. It can be powered using a power bank, or a 9v battery. It displays the time in hours, minutes and seconds along with day, month and year.
We added a small spy cam. This cam is capable of capturing video (and sometimes audio) of a location without the subjects' knowledge. It can record a video upto 30 mins in both 1080P and 720P.
Click on the link to get one!!
Step 11: Circuit Diagram for the Head
This is a step-by-step guide for the circuit:
Connect the I2C Module to the LCD 16x2
Connect RTC Module to I2C Module:
RTC GND to I2C GND
RTC VCC to I2C VCC
RTC SDA to I2C SDA
RTC SCL to I2C SCL
Connect RTC Module to Arduino Uno
RTC GND to Arduino GND
RTC VCC to Arduino 3.3v
RTC SDA to Arduino SDA
RTC SCL to Arduino SCL
Follow the video to connect LCD to Arduino Uno using I2C Module.
Follow the video to configure the RTC Module.
Note- The connections made in the video are complex. Follow the steps to configure the RTC Module from the video.
Step 12: Code
Step 13: Working Theory
Interfacing Arduino with LCD 16x2 and I2C Module:
I2C module acts as a backbone to the LCD. The blue potentiometer on the I2C is used to adjust the backlight for better display on the LCD. I²C uses two bidirectional open-drain lines, Serial Data Line (SDA) and Serial Clock Line (SCL), pulled up with resistors. The SDA pin is connected to SDA pin on Arduino, SCL pin to SCL pin on Arduino, GND pin to GND pin on Arduino and the VCC pin is connected to 5v pin on Arduino Uno. When a power supply is given to the Arduino, logic 1 is passed to the I2C Module and the message is displayed on the LCD screen. When the power supply is turned off, logic 0 is passed to the I2C Module and the LCD is turned off.
Step 14: Conclusion
A robot is a machine, especially one programmable by a computer, capable of carrying out a complex series of actions automatically. Artificial intelligence (AI, also machine intelligence, MI) is intelligence demonstrated by machines, in contrast to the natural intelligence (NI) displayed by humans and other animals. Volvic is a smart robot that can make daily life of human beings easier. It is a fun robot that provides interaction, security and notification. It is a robot which makes use of simple technology which has large scope for enhancement. Volvic can be further enhanced to make it more efficient and affordable so that it can be available for daily use for people.
Step 15: Future Enhancements
The current technology in Volvic can only answer a fixed and predetermined amount of questions. This can be further enhanced by making use of artificial intelligence so that it can identify the question and provide a suitable response even though the same question can be asked in different ways. Volvic cannot provide any response for questions that are not uploaded; hence, a suitable response needs to be provided so that the user can know that it is not able to answer the question.
The camera used in Volvic can only provide basic live feed during the time that it is monitoring. Further enhancement can be provided to this technology by introducing the concept of face recognition. This enhancement can help identify the people being monitored, and if there is a new face that hasn't been uploaded, then Volvic can send a notification or sound an alarm.
Volvic makes use of Bluetooth connectivity, although Bluetooth technology has its advantages, its major drawback is its range. The Bluetooth technology being used has a very large range but it cannot provide the remote access that wifi technology can. The implementation of wifi technology can help the user to gain remote access.
The present technology in Volvic provides a fixed database for interaction, in other words it cannot answer what it doesn't know. The provision of access to the internet can allow it to browse for an answer. This enhancement can also improve the notification system of Volvic.
Decrease in weight:
Hardware materials which are smaller and lighter can be used. This can provide faster speed and less battery drainage.
A more efficient and longer life battery can be used. Instead of using a 12v battery, 4 AA batteries can be used to decrease the weight.