Dukebot

Updated June 30, 2007.

News!

JBRD has evolved! The final design has been reached and it is now in software development stage as the Marmaduke board. Marmaduke also features a 2-channel DAC and even a MIDI interface.

Marmaduke

What?

The main objective of the Javabotics project is to explore the use of the Java language and its associated technologies to control and manage distributed systems and devices for robotic and real-time applications.

Our main inspiration is the work done by the people of the MIT Media Lab who developed the Handy Board and the Handy Cricket. The Cricket is a very nice and simple board for educational uses but it lacks the features of a flexible board for industrial applications. One of the milestones of the Javabotics project is to define a reference platform, aka 'JBRD', where it will be possible to test and verify how the Java technologies behave with industrial networks and industrial applications. Of course, this doesn't mean you won't be able to build and control toys as with the Cricket board. ;o)

Check the files area for precompiled downloads and the CVS repository for the latest documentation.

Why?

...

When?

The immediate goal is to define and test the JBRD architecture and its interoperability with Java components. Please note that running any flavor of Java directly on the board is not part of the project's first steps.

  • Discuss and define the board features.
  • Design the board and build a prototype.
  • Prepare a board support package (BSP) with the necessary IP cores and basic code.
  • Implement a simple control framework or port a license-compatible RTOS to the board.
  • Select, implement and test Java interoperability stubs and host code with a real application.
  • Analyze the possibility to implement a JVM on-board.
  • ...

Where?

Javabotics development is hosted at the javabotics Java.net site.

How?

JBRD main features:

  • Uses a low cost ARM7TDMI microcontroller as main controller.
  • Uses an FPGA as peripheral controller for maximum versatility (interface, hardware acceleration, custom control unit).
  • Uses USB to connect the device to a PC for configuration, debugging and communication.
  • Uses the I²C bus for local communication.
  • Uses a CAN-type physical interface to implement a bus for distributed control.
  • Has an IrDA transceiver to talk to devices like Palms and notebooks (for field programming, remote control or data downloading).
  • Has an ADC on-board.
  • Has a MicroSD card interface to store parameters, code or non-volatile data such as the FPGA configuration.
  • Has an on-board dual motor driver.

Who?

...

Protocol implementation ideas

  • Direct RMI/JRMP/JERI coding.
  • Jini surrogate architecture (USB <-> CAN).
  • Direct IIOP coding.
  • Custom CORBA over CAN.
  • ...

Javabotics Reference Design (JBRD)

Here is a simple block diagram of the JBRD board. Overviews of block functionality follow below.

Javabotics Reference Design (JBRD) Javabotics Reference Design (JBRD) PCB

Description

ARM microcontroller (Atmel AT91 SAM7S64)

The JBRD's brain is a low cost, low power ARM7TDMI microcontroller.

FPGA (Xilinx Spartan-3 XC3S200)

The FPGA implements peripheral interfacing, communication adapters and flexible custom control units using the benefits of reconfigurable computing.

Programmable oscillator (Linear LTC6903/4)

An optional programmable oscillator is used to supply a range of frequencies to the FPGA for precise peripheral clocking if needed.

USB interface

The built-in USB device controller of the AT91 MCU is used for programming and as main communication channel. The same USB interface may power the board during configuration if power consumption is less than 2.5W in this mode.

I²C-compatible bus interface

Local board-to-board communication can be realized over an I²C bus.

PINC - CAN interface (TI SN65HVD233/4/5)

Communication with other devices over long distances is carried out by a High-Speed Controller Area Network physical interface. Baud rates up to 1Mbps are supported, depending on maximum cable length.

Currently the physical CAN bus interface is used with a custom protocol dubbed PINC (for 'Pinc Is Not Can') implemented with a lightweight controller in the FPGA.

IrDA-compatible interface, SIR or IrCOMM (Agilent HSDL-3000)

The JBRD has an optional IrDA transceiver for infrared communication with palmtop and laptop devices.

General purpose Input/Output ports

A number of 0.0_+3.3V general purpose port IOs from the MCU and FPGA are provided in two-row 100-mil headers. Power signals are also exported there.

8-channel ADC

The AT91 MCU provides an 8-channel 10-bit ADC. 4 exclusive ADC inputs are buffered and the other 4 are shared with IOs.

Dual coil driver for motor control (Allegro 3968)

A dual peripheral driver optimized for motor control is be provided on-board. The driver may be used to drive two independent DC motors or the two coils of a stepper motor.

MicroSD card interface

The JBRD has one connector for a MicroSD card. The main use of this card is to store code, configuration parameters (e.g. FPGA bitstream) and arbitrary data.

Power (TI TPS76701QD, TPS704XX)

The JBRD is powered by a +5V supply, either through the USB VBUS (low power) or using an external supply (high power). The other voltages required by the devices are generated on board. The external supply has priority over the power provided by the USB bus. The same external supply is used in the connectors and motor driver.


Copyright ©2007 Pablo Bleyer Kocik