Engineers Garage

  • Electronic Projects & Tutorials
    • Electronic Projects
      • Arduino Projects
      • AVR
      • Raspberry pi
      • ESP8266
      • BeagleBone
      • 8051 Microcontroller
      • ARM
      • PIC Microcontroller
      • STM32
    • Tutorials
      • Audio Electronics
      • Battery Management
      • Brainwave
      • Electric Vehicles
      • EMI/EMC/RFI
      • Hardware Filters
      • IoT tutorials
      • Power Tutorials
      • Python
      • Sensors
      • USB
      • VHDL
    • Circuit Design
    • Project Videos
    • Components
  • Articles
    • Tech Articles
    • Insight
    • Invention Stories
    • How to
    • What Is
  • News
    • Electronic Product News
    • Business News
    • Company/Start-up News
    • DIY Reviews
    • Guest Post
  • Forums
    • EDABoard.com
    • Electro-Tech-Online
    • EG Forum Archive
  • DigiKey Store
    • Cables, Wires
    • Connectors, Interconnect
    • Discrete
    • Electromechanical
    • Embedded Computers
    • Enclosures, Hardware, Office
    • Integrated Circuits (ICs)
    • Isolators
    • LED/Optoelectronics
    • Passive
    • Power, Circuit Protection
    • Programmers
    • RF, Wireless
    • Semiconductors
    • Sensors, Transducers
    • Test Products
    • Tools
  • Learn
    • eBooks/Tech Tips
    • Design Guides
    • Learning Center
    • Tech Toolboxes
    • Webinars & Digital Events
  • Resources
    • Digital Issues
    • EE Training Days
    • LEAP Awards
    • Podcasts
    • Webinars / Digital Events
    • White Papers
    • Engineering Diversity & Inclusion
    • DesignFast
  • Guest Post Guidelines
  • Advertise
  • Subscribe

How to design pick-and-place robot using Arduino

By Ashutosh Bhatt June 19, 2024

In this project, we’ll design an omnidirectional, moving pick-and-place robot. First, let’s cover how the robot is built.

The robot’s build

Figure 1. The various components of the pick-and-place robot.

As shown in Figure 1, the robot consists of two sections:

  • An omnidirectional moving platform
  • A robotic arm

The omnidirectional platform
The robot is built using one circular wooden plate, three dc gear motors, and three omnidirectional wheels.

The wooden plate is 8-mm thick and 500 mm in diameter. The three dc gear motors are of 12V and 300 rpm. They’re fixed at the bottom side of wooden plate using clamps at a specific angle as shown. All three motors are fixed at an angle of 120o from one another.

The omnidirectional wheels are attached to the dc motor shaft directly, using the given screw in the motor shaft.

The robotic arm

  • The arm is built using 3D printed parts and six dc servo motors. These motors give it six degrees of freedom (DoF).
  • The base servo motor full rotates the arm clockwise or anticlockwise from 0o to 160o.
  • The lower servo is used to move the lower arm up and down in 50o movements.
  • The upper servo is used to move the upper arm up and down in 50o movement.
  • The wrist roll servo is used to rotate the grip wrist clockwise or anticlockwise, as ±60o on either side of the center position.
  • The wrist yaw servo moves the grip wrist up and down from 0 o to 90o.
  • The grip servo is used to open or close the grip to ??

Block diagram
The robot system is made of two sections:

1. Remote control section: used to remotely control all of the robot’s movements

2. Robot control section: used to actuate the three dc motors and six servo motors. It also controls the robot’s motion basd on the commands from the remote control.

The remote control section

Figure 2. The block diagram of the omnidirectional PnP robot, using Arduino NANO and the HC12 module.

The primary building blocks of the remote control include Arduino NANO board, the joystick, pushbuttons, the HC12 RF trans-receiver module, and an LED.

Arduino NANO: The remote control’s MCU responsible for the complete operation of this section. 

  1. It reads analog outputs generated from the joystick
  2. It reads digital inputs from buttons
  3. It serially transmits different codes using the RF trans-receiver module
  4. It indicated that code is being transmitted via the LED

Joystick: The two-axis joystick has two potentiometers internally and is moved in either direction (up-down and left-right). 

Note: the resistance value varies. This will generate variable analog output voltages, Vx and Vy. These two voltages are given as input to Arduino NANO’s internal ADC. The joystick controls the motion of the omnidirectional base (platform), which moves in all directions as per the joystick. 

Pushbuttons: These give digital input (logic 0) to Arduino, control the robotic arm’s movement, and control the six servo motors. Two buttons are required for each servo motor, for a total of 12 buttons. 

HC12 module: This is an RF trans-receiver module that works on the 434 MHz frequency. It receives code (data) serially from Arduino and transmits it.

LED: This light blinks every time that code is transmitted.

The robot control section

Figure 3. This bock diagram shows the main parts of the robot’s control section.

 The main building blocks of the robot’s control section include Arduino, Bluetooth, the HC12 module, the motor driver, and the dc and servo motors.

Arduino NANO: Similar to the remote-control section, Arduino is also used as an MCU in this control section and is responsible for its full operation. 

  1. It receives transmitted code from the Bluetooth or HC12 modules
  2. It moves the robot in the required direction by controlling the three dc motors
  3. It controls the robotic arm’s movement by generating PWM signals to control the six servo motors

Bluetooth module: It receives transmitted code from a smartphone’s Bluetooth and sends it to Arduino for further action.

HC12 module: It receives transmitted code from the remote control’s HC12 module and sends it to Arduino.

Motor driver module: It provides the dc motors with the required voltage and current. The motor drive receives input from Arduino and drives the three dc motors based on the robot’s desired movements.

Dc motors: The three dc motors provide omnidirectional movement to the robot (via the wheels).

Servo motors: The six dc servo motors provide the robotic arm with six different movement options (6 DoF), allowing it to “pick-and-place” objects.

Circuit diagram for the remote control
The remote control circuit consists of Arduino NANO, the HC12 module, a joystick, pushbuttons, an LED, and a battery.

Figure 4. The remote control’s circuit diagram for the omnidirectional pick-and-place robot.

There are 12 pushbuttons connected to Arduino’s digital pins D0 – D11. Each button’s other terminal is connected to the ground.

  • The HC12 module has four connecting pins: (1) Vcc (2) Gnd (3) Tx, and (4) Rx.
  • The Vcc pin is connected to Arduino’s 5V output pin and the Gnd pin is connected to the circuit ground. The Tx and Rx pins are connected to Arduino’s A2 (16) and A3 (17) pins, respectively.
  • The joystick has four connecting pins: (1) Vcc (2) Gnd (3) Vx, and (4) Vy.
  • The Vcc pin is connected to Arduino’s 5V output pin and the Gnd pin is connected to the circuit ground. The Vx and Vy pins are connected to Arduino’s A0 and A1 pins, respectively.
  • The LED is connected to digital pin D13.

The robot’s control circuit:

Figure 5. The control circuit diagram for the omnidirectional pick-and-place robot.

 

  • The HC05 module has four connecting pins: (1) Vcc (2) Gnd (3) Tx, and (4) Rx.
  • The Vcc pin is connected to Arduino’s 5V output pin and the Gnd pin is connected to the circuit ground. The Tx and Rx pins are connected to Arduino’s A2 (16) and A3 (17) pins, respectively.
  • The HC12 module has four connecting pins: (1) Vcc (2) Gnd (3) Tx, and (4) Rx.
  • The Vcc pin is connected to Arduino’s 5V output pin and the Gnd pin is connected to the circuit ground. The Tx and Rx pins are connected to Arduino’s A4 (18) and A5 (19) pins, respectively.
  • The dc motors A, B, and C are connected to digital output pins through the motor driver modules. The digital pins are provided as input to the motor driver modules and its output are connected to motors.
  • The digital pins D2 and D4 drive motor A. The pins D7 and D8 drive motor B. The pins D12 and D13 drive motor C.
  • The six servo motors are driven by six of Arduino’s analog (PWM) outputs. The servo motor signal input pins are connected to the analog ouput pins based on the table below.

The circuit’s operation

The remote control’s circuit operation
The only function of the remote control is to transmit a specific code when any of the 12 buttons is pressed or the joystick is moved. When a button is pressed, the Arduino pin connects to the ground. The pin receives logic ‘0’ as an input, so Arduino detects that the button was pressed. Arduino then transmits one particular character as the code for each button pressed (see the table below).

Next, Arduino sends this code serially to the HC12 module, which transmits it using the 434 MHz carrier frequency.

When the joystick moves from left to right, its one-pot resistance value varies. The change in resistance varies the Vx voltage of the joystick from 0 to 5 V. Arduino reads this analog voltage on pin A0 and converts it into a digital value between 0 to 1023. When this value is above 700 or below 300, it will transmit the code.

Similarly, when the joystick is moved up and down, its pot resistance value varies, which varies the joystick’s Vy voltage from 0 to 5 V. Arduino reads this analog voltage on pin A1 and converts it into a digital value between 0 to 1023. When this value is above 700 or below 300, it will transmit the code.

For any omnidirectional movement, the joystick is moved diagonally, “left-right-up-n-down.” Arduino will transmit four more codes for each of the four directional movements below.

The remote control transmits 12 + 8 = 20 different codes, including 12 codes for the robotic arm’s movement and eight codes for the omnidirectional platform movement.

The robot’s control circuit operation
This circuit receives the code from the remote control or a smartphone via Bluetooth. It controls the movement of the omnidirectional platform and the robotic arm. It also controls the direction of the three dc motors and the angle of the six servo motors, based on the desired movement for the robot.

The three dc motors move the robot forward and backward in eight different directions. The angles of the six servo motors are increased or decreased to achieve the full 6 DoF.

The HC12 module receives transmitted code from the remote control and sends it serially to Arduino. The code can be transmitted from a smartphone via Bluetooth, controlled through an Android app. The code is received by the HC05 module and sent serially to Arduino. The transmitted code is the same, regardless of whether it is sent from the remote control or a smartphone.

Arduino receives up to 20 different codes, such as W, A, D, X, Q, E, Z, C, P, O, I, U (provided in the above tables). When it receives the codes W, A, D, X, Q, E, Z, and C, (from the joystick), it moves the omnidirectional platform. When it receives the codes P, O, I, etc. (from the pushbuttons), it moves the robotic arm.

When code from the joystick is received to move the platform, Arduino will rotate the three dc motors forward and backward, according to the code from the omnidirectional platform.

When code is received from the pushbuttons, Arduino generates six PWM signals to control the angles of the six servo motors to move the robotic arm.

To control the robot’s movement by using smartphone, you must have an Android app that sends codes via Bluetooth. The android app work as remote control. The operation of the remote control and robot’s control circuit works because of the below software program, which must be uploaded to both Arduino NANO boards.

Software program
The programs for the remote control and robot’s control are developed using the Arduino IDE software. It’s written in Arduino C/C++ language.

Remote control program
This program performs the following tasks:

  1. Reads digital inputs from 12 buttons
  2. Reads two analog input voltages from the joystick
  3. Serially sends specific character as a code to the HC12 module when any button is pressed or the joystick is moved
  4. Blinks the LED when code is transmitted

It uses Arduino’s inbuilt “SoftwareSerial” library to communicate with the HC12 module. Here is the program code.

The code

Robot control program:

It performs following tasks

  1. It receives data (code) from either HC12 or HC05 module serially
  2. It reads and compares the received code.
  3. It will rotate 3 DC motors clockwise and anticlockwise to give omnidirectional movement to platform.
  4. It will generate 6 PWM signals to control angles of 6 servos.

It uses inbuilt “SoftwareSerial” and “Servo” libraries of Arduino to serially communicate with HC12 and control servo motors. Here is the program code.

The video

 

You may also like:

  • beginners guide
    Basic Electronics 01 – Beginners guide to setting up an…

  • What are soft robots?

  • What materials are used to build robots?

  • Understanding the degree of freedom in robots

  • What are different types of industrial robots?

  • What are the components of robotic arms and industrial robots?

  • What is a Robot Operating System (ROS)?

  • Smartphone operated shopping cart controlled using bluetooth

Filed Under: Arduino Projects, Electronic Projects, Featured Contributions, Video
Tagged With: Arduino, arduinonano, electronicproject, pickandplace, remotecontrol, robot, roboticarm, video
 

Next Article

← Previous Article
Next Article →

Questions related to this article?
👉Ask and discuss on EDAboard.com and Electro-Tech-Online.com forums.



Tell Us What You Think!! Cancel reply

You must be logged in to post a comment.

EE TECH TOOLBOX

“ee
Tech Toolbox: 5G Technology
This Tech Toolbox covers the basics of 5G technology plus a story about how engineers designed and built a prototype DSL router mostly from old cellphone parts. Download this first 5G/wired/wireless communications Tech Toolbox to learn more!

EE Learning Center

EE Learning Center
“engineers
EXPAND YOUR KNOWLEDGE AND STAY CONNECTED
Get the latest info on technologies, tools and strategies for EE professionals.

HAVE A QUESTION?

Have a technical question about an article or other engineering questions? Check out our engineering forums EDABoard.com and Electro-Tech-Online.com where you can get those questions asked and answered by your peers!


RSS EDABOARD.com Discussions

  • System for measuring the amount of Joules delivered from a capacitor discharge.
  • Two sections broadband impedance matching
  • The GaN revolution must now happen?
  • How to find the resonance frequency and impedance of a planar spiral coil in HFSS?
  • PhD for Electronics Designers

RSS Electro-Tech-Online.com Discussions

  • The Analog Gods Hate Me
  • Impact of Tariffs on PCB Fab
  • More fun with ws2812 this time XC8 and CLC
  • I Wanna build a robot
  • Wierd makita battery

Featured – LoRa/LoRaWan Series

  • What is the LoRaWAN network and how does it work?
  • Understanding LoRa architecture: nodes, gateways, and servers
  • Revolutionizing RF: LoRa applications and advantages
  • How to build a LoRa gateway using Raspberry Pi
  • How LoRa enables long-range communication
  • How communication works between two LoRa end-node devices

Recent Articles

  • The top five AI startups to watch in 2025
  • STMicroelectronics unveils SoC based on secure MCU
  • Nexperia’s 48 V ESD diodes support higher data rates with ultra-low capacitance design
  • Taoglas releases Patriot antenna with 18 integrated elements covering 600 to 6000 MHz
  • Amphenol RF introduces SMPM to SMPM assemblies on RG-178 cable

EE ENGINEERING TRAINING DAYS

engineering

Submit a Guest Post

submit a guest post
Engineers Garage
  • Analog IC TIps
  • Connector Tips
  • Battery Power Tips
  • DesignFast
  • EDABoard Forums
  • EE World Online
  • Electro-Tech-Online Forums
  • EV Engineering
  • Microcontroller Tips
  • Power Electronic Tips
  • Sensor Tips
  • Test and Measurement Tips
  • 5G Technology World
  • Subscribe to our newsletter
  • About Us
  • Contact Us
  • Advertise

Copyright © 2025 WTWH Media LLC. All Rights Reserved. The material on this site may not be reproduced, distributed, transmitted, cached or otherwise used, except with the prior written permission of WTWH Media
Privacy Policy

Search Engineers Garage

  • Electronic Projects & Tutorials
    • Electronic Projects
      • Arduino Projects
      • AVR
      • Raspberry pi
      • ESP8266
      • BeagleBone
      • 8051 Microcontroller
      • ARM
      • PIC Microcontroller
      • STM32
    • Tutorials
      • Audio Electronics
      • Battery Management
      • Brainwave
      • Electric Vehicles
      • EMI/EMC/RFI
      • Hardware Filters
      • IoT tutorials
      • Power Tutorials
      • Python
      • Sensors
      • USB
      • VHDL
    • Circuit Design
    • Project Videos
    • Components
  • Articles
    • Tech Articles
    • Insight
    • Invention Stories
    • How to
    • What Is
  • News
    • Electronic Product News
    • Business News
    • Company/Start-up News
    • DIY Reviews
    • Guest Post
  • Forums
    • EDABoard.com
    • Electro-Tech-Online
    • EG Forum Archive
  • DigiKey Store
    • Cables, Wires
    • Connectors, Interconnect
    • Discrete
    • Electromechanical
    • Embedded Computers
    • Enclosures, Hardware, Office
    • Integrated Circuits (ICs)
    • Isolators
    • LED/Optoelectronics
    • Passive
    • Power, Circuit Protection
    • Programmers
    • RF, Wireless
    • Semiconductors
    • Sensors, Transducers
    • Test Products
    • Tools
  • Learn
    • eBooks/Tech Tips
    • Design Guides
    • Learning Center
    • Tech Toolboxes
    • Webinars & Digital Events
  • Resources
    • Digital Issues
    • EE Training Days
    • LEAP Awards
    • Podcasts
    • Webinars / Digital Events
    • White Papers
    • Engineering Diversity & Inclusion
    • DesignFast
  • Guest Post Guidelines
  • Advertise
  • Subscribe