The I2C (read as I square C) smart DC motor controller is designed using the Atmel 8-bit AVR Atmega168 microcontroller and configured to act as the I2C slave device where it could be controlled by other microcontroller or microprocessor through the I2C SDA (serial data) and SCL (serial clock) interface. In the first part we have accomplished a basic DC motor controller tasks i.e. differential steering and speed control using pulse width modulation (PWM). In this second part article I will put all the features described in Building the I2C Smart DC Motor Controller with Atmel AVR Microcontroller article – Part 1, this mean we will adding more features to the I2C smart DC motor controller firmware which include wheel rotation and servo control.
In order to make it more interesting and fun, in this part 2, I will build the telepresence robot which equipped with wireless serial protocol over Bluetooth, wireless 2.4Ghz camera mounted on the standard servo, and Sharp GP2D120 infrared range sensor as shown in this following picture.
The telepresence robot basically is a remote operating robot equipped with camera and sensors, therefore we could operate the robot from distance. Telepresence robot is used in many institutions in the world such academic/research, military, and space exploration to explore remote location or area where is too danger for human being to be present at that particular location.
Therefore as an electronics hobbyist building this kind of robot is just a dream in many years ago because it is expensive, but nowadays as more and more cheap and sophisticated wireless electronic modules are available in the market, now we could take part in the excitement of controlling this telepresence robot from our own mission control laptop at home as I did (see the video at the end of this article).
This articles also serve as a learning purpose of how we could combined two most popular 8-bit brand microcontrollers in the market i.e. 8-bit 20 pin PIC16F1829 microcontroller from Microchip as the I2C master controller where it will communicate through a serial Bluetooth protocol to a laptop and to the Atmel AVR ATmega168 microcontroller that serve as the I2C slave for controlling DC motors, servo, and reading an analog input. The following picture show the block diagram of the telepresence robot we will build in this article.
Ok let’s take a look at all the electronic components, modules and software required to develop this project:
1. The I2C Smart Motor Controller components as described in Building the I2C Smart DC Motor Controller with Atmel AVR Microcontroller – Part 1 and the electronic schematic
2. The PICJazz 20PIN Learning and Development Board with PIC16F1829 microcontroller from ermicro
3. Bluetooth serial module, I used CSR BC417143 Bluetooth chip module from DFRobot
4. 2 x Wheel Encoder Module, I used 3PA wheel encoder from DFRobot
5. Mini 2.4GHz Wireless Camera and USB DVR from ebay
6. Atmel AVR Studio 6.0 for coding and debugging environment
7. Atmel AVR Programmer such as Atmel mkII programmer to program the I2C Smart Motor Controller Firmware
8. Microchip MPLAB IDE version 8.86 for the I2C Master Controller
9. Microchip Serial Bootloader AN1310 v1.05r, to program the AVRJazz 20PIN board.
10. TeraTerm or PuTTy to communicate with the Serial Bluetooth
11. Web Cam Viewer, I used WebCamViewer v1.0 program from http://www.bustatech.com/
12. Microsoft Visual Studio 2012 Express for compiling and running the I2C Bluetooth Control application
13. Atmel AVR ATmega168, Microchip PIC16F1829, SN74LVC1G14, and L293D Datasheet.
The following is the complete C code for the I2C Smart Motor Controller using Atmel ATMega168 Microcontroller:
For more detail: Telepresence Robot using Microchip PIC16F1829 and Atmel AVR ATmega168 I2C Smart DC Motor Controller Microcontroller – Part 2