Moving Holonomic Robot

From Lofaro Lab Wiki
Jump to: navigation, search

Two file are needed to be able to move the Holonomic Robot. UART_pi_move.ino contains the state machine for UART communication with the Raspberry Pi Zero and it also has the code for generating the PWM signals for the three motors and setting their directions. The Arduino Software IDE could be used to flash the code to the Pro Mini. contains the controller to be able to move the robot with a keyboard from the Pi zero. The two files can be obtained from running the following command:

  git clone

Arduino Pro Mini

The following pins are used on the Arduino Pro Mini:

  Pins (3,9,10) - PWMs for Motors 1, 2, and 3.
  Pins (11,12,13) - Direction control (through a NOT gate) for Motors 1, 2, and 3.
  Pin RX1 - UART connected to TX from Pi (Note: 5V (Arduino) to 3V(Pi) voltage divider is needed to protect the Pi, since the Arduino RX1 is 
            seen to be set to HIGH sometimes.
  Pin RAW - Unregulated voltage upto 12V (regulated to 5V using on board regulator).
  Pin GND - Ground for all the components

UART_pi_move.ino - UART communication is as follows:

Pi -> Mini Pro

  1. Send 1 or 2 or 3 [Wheel No.]
  2. Send 5 or 6 [Wheel Dir.]
  3. Send 0 - 255 [Duty cycle sent is converted from percent to be in range [0 - 255]]
  4. Repeat for number of wheels (i.e 3)
  5. Sending 1 and then 8 at anytime triggers ASM RESET

Raspberry Pi Zero

Not much setup is needed on the Pi Zero. The only connections needed are:

  Pin 8 (UART0_TXD) - Connected to the Arduino Pro Mini through the 5V->3V voltage divider
  Pin 6 (GND) - Ground for all the components

The UART Rx was not needed since the Arduino doesn't have to send back any data, however it could be connected for debugging purposes. - This program accepts keystrokes from the user to control the robot.

  1. (W,A,S,D) - Forward, Left, Backward, Right
  2. (N,M) - Rotate CCW, Rotate CW
  3. (J,L) - Circle CCW, Circle CW
  4. (K,Q) - Stop Moving, Quit Program

To run this file 'cd' to the directory you copied and run the command 'sudo python'