Ozeki Bob-E Mini Controller Shield

The Ozeki Bob-E Mini Controller Shield is a servo controller between a Raspberry Pi (1/2/3) and a maximum of 4 servo motors.

It contains an ATmega328P microcontroller so you can program it just like an Arduino Nano using the Arduino IDE environment. But you should be aware that not every pin is led out from the 328P chip so it has less pinouts then an Arduino Nano. As a reference you can check out the Arduino Nano specifications. A reset button can be also found on this module like on the Arduino Nano. The module connects to the Raspberry Pi via a 2x20 pin socket. It uses the serial communication port (RX/TX) to send and recieve data from the Raspberry Pi. This port can also be used to upload programcodes to the shield, but if you would like you can upload your codes from outside sources too by using a CP2102 Module for example. This is an USB 2.0 to TTL 6PIN Serial Converter.

Figure 1 - Ozeki Bob-E Mini Controller Shield photos


Specifications:

  • IC: ATmega328P
    • Clock Speed: 16 MHz
    • Flash Memory: 32 KB
    • SRAM: 2 KB
    • EEPROM: 1 KB
  • Power supply from DC jack (12V)
  • 3A resettable fuse
  • Status LEDs: power, TX, RX, D13, D10
  • Can be fitted on a Raspberry Pi (1/2/3) via a 2x20 pin socket (Figure 1)
  • Product dimensions (width x length, length is equal to Pi length):
    2.72in.[69.00mm]×3.35in.[85.00mm]

Figure 2 - This is how it can connect to a RaspberryPI 3, 2 or 1

Required hardware

  • Raspberry PI 1/2/3
  • Ozeki Bob-E Mini Controller Shield

Source code to install on the shield


Before you upload this code to your Arduino, please format the EEPROM...
#include <OzIDManager.h>
#include <OzServoController.h>

OzIDManager* manager;
OzServoController* servocontroller;

void setup()
{
  Serial.begin(115200);

  manager = new OzIDManager;
  manager->_sendACK = true;
  manager->_checksum = true;

  OzCommunication::setIDManager(manager);

  servocontroller = new OzServoController;
  //pin 5, MG996R servo (motor min -60, motor max +60)
  servocontroller->AddMotorconfig(5, ServoMotors::SERVO_MG996R);
  //pin 6, MG996R servo (motor min -60, motor max +60), starting angle +20
  servocontroller->AddMotorconfig(6, ServoMotors::SERVO_MG996R, 20);
  //pin 7, MG996R servo (motor min -60, motor max +60), starting angle -30
  servocontroller->AddMotorconfig(7, ServoMotors::SERVO_MG996R, -30);
  //pin 8, motor min -60, motor max +60, starting angle +10
  servocontroller->AddMotorconfig(8, -60, 60, 10);

  manager->sendLinkSetup();

  int x=1; 
  manager->sendLinkSetup();
  manager->PrintWelcomeLine(servocontroller, x++, "MyServoMotors");
  servocontroller->showMotorDetails();
}

void loop()
{
  OzCommunication::communicate();
}

More information