Embedded Systems Design
WiFi communication | Android | VEXpro | GPS | Navigation |
HTC Saphire (ADP2) | Nexus S | Nexus 7 | ARM | VEXpic |
WiFi communication
- Java Knock Knock Example (KnockKnock Code, Android KnockKnock Code)
- Setting up a wireless network. There are two types of wireless networks: Ad hoc (also called local link) and infrastructure. Nodes in an ad hoc network determine their own ip address, usually from the 169.254.x.x address pool. Here is a video on setting up an ad hoc network on OS X, WinXP, and WinVista. Despite what the video claims this is not an access point (infrastructure) setup. The Android OS is set up by default not to connect to an ad hoc network. It won't automatically assign itself an address.
- Wikipedia overview of 802.11
- Android to Android Server/Client Example
- Charles: Web debugging proxy application for Windows, OS X, and Linux
- Fiddler: Web debugging proxy application for Windows
Android
- Official Android Developers Site
- Android Hello World
- Rooting the Google Ion
- Factory Images for Nexus Devices
- Nexus Root Toolkit
- Android Fastboot details
- Android Apps
- HTC Dream & Magic JTAG
- Speeding Up Android Emulator
- HTC Developers Site
- The dedicated site for the HTC Google IO (adp2) phone is missing.
- Here are my downloaded copies of the HTC original ROMS with some bash install scripts. Also, included in the are several CyanogenMods.
- CyanogenMod (pronounced sigh-AN-oh-jen-mod,) is a customized, aftermarket firmware distribution for several Android devices
Programming the VEXpro
- VEXpro ARM9 Microcontroller: This is the main page for the VEXpro.
- Quickstart: You are a VEXPro ARM9 owner and you just opened the box.
- VEXPro ARM9 and TerkOS User Guide: Welcome and Introduction
- libqwerk: The VEXPro Hardware Abstraction Library
GPS
- Official GPS site U.S. Governments official website on GPS.
- Wikipedia article on GPS Nice article on GPS with fair depth.
- Global Positioning System Overview
- Publications and Standards from the National Marine Electronics Association (NMEA) / NMEA 0183 For a mere $250, you too can have the standard.
- NMEA data Reverse engineering of NMEA standard.
- Wikipedia NMEA 0183 Wikipedia's page on the NMEA 0183 standard.
- gpsd — a GPS service daemon gpsd is a service daemon that monitors one or more GPSes attached to a host computer through serial or USB ports, making all data on the location/course/velocity of the sensors available to be queried on TCP port 2947 of the host computer.
- Slides on GPS
- Android GPS Class Example
Navigation
- An Introduction to the Kalman Filter
- The Kalman Filter
- Kalman Filter example application in Java based on the code below
- Kalman Filter in Java
- Kalman Filter in Java2
HTC Sapphire
Nexus S
- XDA
- Google's Nexus S
- Tear down
Nexus 7
ARM
- ARM Information Center - Need to register, but then gives you access to the reference manuals.
- ARM Architecture Reference Manual
- ARM Products - ARM9
- Wikipedia - ARM9
- ARM Products - ARM11
- Wikipedia - ARM11
- Wikipedia - Cortex-A8
- TI - Cortex-A8
- Cortex-A8 Processor
Kinect
- Open Kinect
- Installation for Ubuntu
- OpenKinect frequently asked questions
- What causes the black shadows?
- Transmission rate and no depth coding - Pixel has a value of 2047 when there is no depth information
- Kinect example code
Bluetooth
- Official Sites
- Bluetooth.com - The Official BluetoothR Wireless Info Site The official website for the Bluetooth short range wireless connectivity standard. Includes news, events, and product support.
- Bluetooth Core Specification v2.0
- The Official Bluetooth Membership Site Provides discussion groups, marketing and technological resources for developers.
- Overviews
- Java
- JSR 82 Bluetooth API and OBEX API The Javadoc for javax.bluetooth
- BlueCove Since JSR 82 is just a specification and Oracle doesn't provide an implementation, you need to find one. This is the open source version.
- Wireless Application Programming with J2ME and Bluetooth
- Using the Java APIs for Bluetooth Wireless Technology
- Part 1 - API Overview
- Part II: The Java APIs for Bluetooth Wireless Technology
- An Echoing Client/Server Application Using Bluetooth An example java bluetooth implementation
Programming the VEXpic
- Open Source Programming Tools for Vex: I recommend this API for anyone with some programming experience. The following instructions worked for me. Your mileage may vary :-) . You will need decent system admin skills and the appropriate compilers to get the following to work. Running the configure usually will tell you what tools you are missing. More details are provided at the source file sites.
- OpenVex API
- intelitek Easy C for Vex controller
General
- Install gputils. This is the assembler and linker.
- Install sdcc. This is the compiler and associated libraries.
- Download and compile the latest version of roboctl. This is my version with patches. This is the firmware loader.
- Download the latest version of OpenVex. This is my version with patches. Run make in the top level directory. The firmware.hex file should be created.
Ubuntu
I got this to work on 11 Sep 2012 on Ubuntu 12.04 with gputils (0.13.7-1), sdcc (2.9.0-5), OpenVex (0.5.0), libbacon (1.2.1), and roboctl (0.3.8). Enter the italicized text in a terminal window.
Snow Leopard
- port install gputils sdcc roboctl
- Follow the general directions for OpenVex.
WinXP - You can use the Intelitek Loader that comes with the Vex Programming kit.
- From source. Enter the text in a terminal/command window.
- Uncompress the gputils download and cd into the top the distributions level directory. Run ./configure, make all, then make install.
- Uncompress the sdcc download and cd into the top the distributions level directory. Run ./configure, make all, then make install.
- For roboctl and OpenVex see the general instructions above.
Serial Communication: Computer to VEX
- Computer
- Vex
- PIC18F8520 - Microchip
- picpres.pdf: Kyle's Presentation
Additional Vex Programming resources
- PGRM STATUS Light won't turn off?
- EECS 690: Robot Intelligence Course with many links about Vex programming.
- Sample Vex Code Apparently this was written for MPLAB. Will need some editing to work.
- 7 Day free trial of EasyC Handy for debugging hardware issues