The heart of the rover is the ATmega328P based Arduino Uno board. The rover uses an ESP8266 module for communication over WiFi and a L293D based motor shield for driving the motors.
Here's the connection diagram:
Initially I planned for a 4 wheel drive and purchased a 4WD chassis via Amazon but later I modified it as a rear wheel drive to extend battery life.
The ESP8266 module had a default baud rate of 115200. I changed it to 57600 as it seemed to work perfect without random characters in the AT command responses.
Here's a comparison between the responses for baud 57600 and 115200
The Android app
The rover can be operated using the Android app. The app prompts for the IP address of the rover which is 192.168.4.1 by default. When the connect button is pressed, the app tries to connect to the server running in the ESP8266 module at port 8468.
If the connection is successful, the direction keys appears.
Arduino sketch: https://github.com/ajaysreedhar/RovrFourRF1
Android app: https://github.com/ajaysreedhar/RovrFourController
ESP8266 AT commands: https://github.com/espressif/esp8266_at/wiki