I was using an Atmega32 based Arduino clone for the low level hardware control of my personal robot Chippu. But soon ran into problems as the code size increased and the inbuilt RAM of 2kb overflowed often, and it caused the ROS node running on Arduino to go out of sync. Also I needed to drive about 16 servo motors , and my Arduino permitted only a maximum of 12. So the only alternative was to go for a powerful Arduino Mega 2560.
But since I am still studying and not earning, I didnt had enough resources to buy a brand new Arduino Mega, so at first i decided to design my own board based on an Atmega2560. Luckily enough, before setting out to building my own board, I came across a project called Wiring.
Wiring is an open project initiated by Hernando Barragán (University of Los Andes, Architecture and Design School). It builds on Processing, the open source programming language and environment initiated by Ben Fry and Casey Reas. Arduino was inpired by Wiring and is basically the same thing. It is programmed in the Wiring language. Officially Wiring boards are available with Atmega128 or with Atmega644. I found the one with Atmega128 suiting to my requirements. It had a code memory of 128 k and RAM of 4 kB, could drive 24 servos, so seems satisfactory to my needs.
Wiring skethces and Arduino sketches are fully compatible and all the Arduino libraries also works for Wiring. I got the ROS sketches running satisfactorily on them.
Well, I came across an AVR development board based on Atmega128, developed by Nex-Robotics, India.
It was awfully priced at about 600 Rs. It had voltage regulators, FRC connectors for I/O ports, RS232 port and all the bells and whistles. I made certain modifications to it.The 14.7456 MHz crystal was replaced with a 16 Mhz one, as in the case of the Wiring Board. Also, the RS232 level shifter- MAX 232 was replaced by an FTDI USB to serial converter, and finally the Wiring bootloader was burnt using USBASP.
Now a new problem had arisen….. mapping the pins of Wiring Board to the AVR development board. I had to go through the schematics of both those boards to understand and map the pins. The mapping is as follows: