NOTICE: The Processors Wiki will End-of-Life on January 15, 2021. It is recommended to download any files or other content you may need that are hosted on processors.wiki.ti.com. The site is now set to read only.

ZumoRemote

From Texas Instruments Wiki
Jump to: navigation, search

In the summer 2015, TI Santa Barbara summer interns developed an Energia project to control a Zumo robot chassis known as ZumoCC3200. The ZumoCC3200 project developed several different features, one of which featured the ability to send manual motor control commands. By using keystrokes ('w'/'a'/'s'/'d' or 'l'/'r'), a user can manually control the ZumoCC3200's motors over a wireless TCP socket connection.

The ZumoRemote project is an extension to the ZumoCC3200 to function as its complement. It’s purpose is to serve as a wireless manual remote control to the ZumoCC3200 using a CC3200 Launchpad, an Educational Boosterpack MKII and a custom hardware voltage divider "shim" PCB.

In developing this project, the application served to demonstrate multiple objectives:

  • Provide an engaging and fun interactive demo.
  • Demonstrate code portability when developed on top of TI-RTOS drivers
  • Establish a compatible wireless WiFi link with the ZumoCC3200
  • Reuse the existing ZumoCC3200 Energia project (Minor enhancements are OK)
  • Familiarize ourselves with ADCs in an RTOS using the BP’s Joystick
  • Find issues or niches in our software on which we can improve on

Hardware[edit]

This section gives a brief description on various hardware components used in this project.

ZumoCC3200[edit]

The ZumoCC3200's hardware is a 100% reuse. Full project documentation and assemble instructions are found here.

ZumoRemote[edit]

The ZumoRemote consists of a CC3200 launchpad and 2 boosterpacks combined together:

CC3200 Launchpad[edit]

The CC3200 Launchpad was chosen due to the integrated on-chip WiFi transceiver. By using the on-chip transceiver, it made it possible to use a dedicated SPI bus to the Educational Boosterpack's LCD controller.

Educational Boosterpack MKII[edit]

Given the peripherals on the Educational Boosterpack MKII, it is an ideal platform to function as a remote control to the ZumoCC3200. The boosterpack has two components that provides an ideal user interface. A LCD screen and a joystick.

LCD screen[edit]

The LCD screen is used as means to display the system status to the user. The LCD screen itself uses a HX8353E LCD controller and is controlled via GPIO pins and an SPI.

Joystick[edit]

The joystick is the primary and intuitive manual remote control interface to the ZumoCC3200. The joystick is an analog sensor. Its position is tracked by reading in two separate analog voltage outputs. One voltage output corresponds to the X-axis and the other for the Y-axis.

ADC voltage divider 'shim'[edit]

The CC3200 Launchpad has a 1.5Vref for the ADC. The shim scales the 3.3V of the joystick on the Educational Boosterpack MKII to 1.5V as needed by the CC3200 Launchpad. You can find the Eagle design files used by this project, here: Media:ZumoShim.zip

Software[edit]

This section gives a brief description on various software components used in this project.

ZumoCC3200[edit]

The ZumoCC3200 is powered using Energia MT. Various Energia sketches can run in a multi-threaded using the TI-RTOS kernel and its drivers. All of the documentation for the ZumoCC3200 is found here.

ZumoRemote[edit]

Unlike the ZumoCC3200, the ZumoRemote is a TI-RTOS application to demonstrate code portability when developing on TI-RTOS drivers. The LCD module used in this project is a 100% reused from software developed on an MSP432. In addition to the LCD module, the ZumoRemote consists of two other key software modules that control the remote's functionality and are described below.

ZumoRemote Software Overview Diagram

Example Overview[edit]

The following link contains the complete CCS project to build the ZumoRemote Application. Please refer to the app_readme.txt in the ZumaRemote's project for details on how to run the application (e.g. calibrate the ADC, etc).

ZumoRemote CCS project zip

The example was developed with TI-RTOS for SimpleLink 2.14.01.20 and CCS 6.1.0. [For full disclosure...there are two warnings in the project that you can ignore. We'll get this cleaned soon:)]

LCD module (reused an existing module)[edit]

As just mentioned, the LCD module for this project was originally developed using an MSP432 Launchpad and intended to be used by the MSPWare's Graphics Library. As the driver utilizes the TI-RTOS SPI and GPIO drivers, porting this module from the MSP432 to the CC3200 was pretty easy and did not require any changes to the source files (other than expected configuration structure changes in the board files).

Joystick module[edit]

The Joystick module is a simple use-case of using an ADC in a TI-RTOS application. The purpose of this module is to collect raw ADC values from the joystick's X and Y position and convert this data to corresponding left and right motor velocities. The logic details in translating the joysticks location to the proper motor behavior was taken from Team Mauser[1]. You can read his detailed write-up at the link provided below in the references.

ZumoRemote module[edit]

The purpose of the ZumoRemote module is to manage a WiFi TCP socket connection with the ZumoCC3200. When a socket connection is established, it is ready to accept various motor commands while returned the ZumoCC3200's IMU data.

The ZumoRemote uses the 'l'/'r' commands (instead of 'a'/'w'/'s'/'d'). The "a,w,s,d" commands generate discrete "on" or "off" motor movements, whereas with joystick operations, some degree of variability in its motor maneuvers is required.

The command syntax is as follows: l<value>,r<value><LF>

  • l and r correspond to the left and right motors respectively.
  • The command is terminated with a <LF> (newline '\n').
  • <value> is a signed between +100 and -100.
  • +100 is the fastest speed going in the forward direction.
  • -100 is the fastest speed going in the reverse direction.
  • 0 is a full stop.

Controller task[edit]

The controller task governs the high-level functionality of the ZumoRemote by joining all three modules together. The Controller's task has a the following critical functions:

  1. Display the current system status onto the LCD screen
  2. Calibrate the joystick's extreme X and Y positions
  3. Relay the Joystick module's motor velocities to the ZumoRemote module's for transmission to the ZumoCC3200

Summary[edit]

In overall, the project was a lot of fun! While there are many different ways to implement this application, the basic remote control functionality has been achieved. In its current state, the ZumoCC3200 is very responsive to the ZumoRemote's joystick controls. With that said, there is always room for improvement both in design and functionality. Some future enhancement ideas for this project are listed below:

  • Add the ZumoRemote application to flash and add the Fuelpack BP for cordless battery operation (need to work out I2C pins)
    • Use I2C driver to read in battery status onto the LCD
    • Good demo to show our power-aware TI-RTOS drivers
  • Enhance the GUI on the LCD screen for better user experience
    • Add instructions on how to calibrate the joystick
    • Show WiFi status (IP address)
    • Use a PWM to limit LCD screen’s power consumption
  • Evaluate the MQTT protocol with a ZumoRemote and/or multiple ZumoCC3200s.
  • Add a Camera for additional functionality
    • Add UART Camera to RedBear CC3200 (UART-based module)
    • Display camera images onto ZumoRemote’s LCD

References[edit]

Template:Reflist

E2e.jpg {{
  1. switchcategory:MultiCore=
  • For technical support on MultiCore devices, please post your questions in the C6000 MultiCore Forum
  • For questions related to the BIOS MultiCore SDK (MCSDK), please use the BIOS Forum

Please post only comments related to the article ZumoRemote here.

Keystone=
  • For technical support on MultiCore devices, please post your questions in the C6000 MultiCore Forum
  • For questions related to the BIOS MultiCore SDK (MCSDK), please use the BIOS Forum

Please post only comments related to the article ZumoRemote here.

C2000=For technical support on the C2000 please post your questions on The C2000 Forum. Please post only comments about the article ZumoRemote here. DaVinci=For technical support on DaVincoplease post your questions on The DaVinci Forum. Please post only comments about the article ZumoRemote here. MSP430=For technical support on MSP430 please post your questions on The MSP430 Forum. Please post only comments about the article ZumoRemote here. OMAP35x=For technical support on OMAP please post your questions on The OMAP Forum. Please post only comments about the article ZumoRemote here. OMAPL1=For technical support on OMAP please post your questions on The OMAP Forum. Please post only comments about the article ZumoRemote here. MAVRK=For technical support on MAVRK please post your questions on The MAVRK Toolbox Forum. Please post only comments about the article ZumoRemote here. For technical support please post your questions at http://e2e.ti.com. Please post only comments about the article ZumoRemote here.

}}

Hyperlink blue.png Links

Amplifiers & Linear
Audio
Broadband RF/IF & Digital Radio
Clocks & Timers
Data Converters

DLP & MEMS
High-Reliability
Interface
Logic
Power Management

Processors

Switches & Multiplexers
Temperature Sensors & Control ICs
Wireless Connectivity