Difference between revisions of "Interfacing the PIC32 with an Android device"

From Mech
Jump to navigationJump to search
Line 1: Line 1:
[[Image:NU32_LCD.jpg|thumb|500 px|The touchscreen demo in action|right]]
[[Image:NU32_LCD.jpg|thumb|300 px|The touchscreen demo in action|right]]


== Introduction ==
== Introduction ==

Revision as of 10:46, 30 September 2012

The touchscreen demo in action

Introduction

Learn to connect an Android device and a PIC32 microprocessor. This guide was developed with the NU32 (2012 version).

Getting Started

You'll need the following hardware:

  • A PIC32 microprocessor (i.e. the NU32 development board)
  • An Android device running at least version 2.2
  • USB cables:
    • Type-A to Mini-B cable (computer to PIC32)
    • Type-A to Micro-B cable (computer to Android device)
    • A spare USB cable with a Micro-B end (Android device to PIC32)

and the following software:

  • Microchip's MPLAB X with the C32 compiler (download from Microchip's website
  • Eclipse (download from the Eclipse project's website -- Eclipse Classic recommended)
  • Android SDK (download from the Android website and follow the instructions to link it to Eclipse)

Optionally, you'll want the HD44780, a 2 by 16 character LCD with libraries available for the PIC32.

In addition, you'll need the starter code associated with this documentation, FILE_LINK_HERE. The code includes the String Passing Demo, a firmware/application pair that passes raw sequences of bytes back and forth, interpreted as strings. There's also the Android Sensor Demo, a firmware/application pair that shows you how to access the GPS, camera, touchscreen, and microphone of the Android device to collect data that may be useful for the PIC.

The PIC32 firmware is written in C and compiled with MPLAB X and C32; the Android applications are written in Java and are built with Eclipse. Be sure to take advantage of the features in MPLAB X and Eclipse. These IDEs can quickly rename variables, jump to where a function is defined, and perform other refactoring that will save you time when programming.

Accessing USB on the PIC

First, you'll need a USB cable to connect your Android device to the PIC. You'll probably need the following:

  • Spare USB cable with a Micro-B end
  • (2) capacitors in the 1 uF range
  • Soldering iron
  • Red, black, green, and white wire
  • Electrical tape

Cut the non-Micro-B end off your USB cable. Inside the outer insulation, you should see four wires: a red wire (VBUS), a black wire (GND), a green wire (D+), and a white wire (D-). Solder each stranded wire to a solid wire of the same color, and wrap the joints in electrical tape so they don't accidentally bump into each other.

On the NU32 board, you'll need to solder wires to the VBUS and VUSB pads right below the microprocessor.

Now, you'll need to wire everything up. Here's the diagram from the PIC32MX reference manual: Media:Pic32_usb_wiring.pdf. We can ignore VBUSON and wire VBUS directly to 5V. D+ is G2 and D- is G3 on the NU32. When you power on your development board and connect your Android device, the device should begin charging.

String Passing Demo

Unzip the folder you downloaded earlier. From the applications folder, import String Passing Demo into Eclipse. From the firmware folder, import String Passing Demo into MPLAB X. Connect your Android device to your computer and write the program onto the device by pressing the green play button. In MPLAB X, build the firmware and write the .hex file onto the PIC.

Start the String Passing Demo on your Android device. Then turn on the PIC and connect it. If you see "Hello from PIC32!" on your Android device, congratulations!


Firmware

Application

Android Sensor Demo

This code contains demonstrations of four Android sensors: the GPS/location service, the camera, the touchscreen, and the microphone.

GPS demo

The location demonstration will try to determine the device's current location. It will transmit the coordinates to the PIC and the PIC will return the location directly across the world (the antipode). For Chicago, this is southwest of Australia in the ocean.

Camera demo

The camera demo captures a 640 by 480 image. It saves the image as a .jpeg, then samples a 50 by 50 pixel portion in the middle and sends that to the PIC. The PIC inverts the RGB data and sends the sample back.

Touchscreen demo

The touchscreen demonstration detects where you've touched the screen and indicates this with the purple cursor. It scales the touch location to a float between 0 and 1 (for both axes) and sends this pair of floats to the PIC. The PIC controls the orange cursor, which moves around (pseudo)randomly.

Microphone demo

The microphone demo captures data from the Android device's microphone but doesn't do much with it. The level bar in the application shows the maximum amplitude found in the previous sample. It sends up to 100 bytes of each sample to the PIC, which comments on the loudness.