In this post I will discuss about the Arduino Duemilanove which is one of the microcontroller development boards among other Arduino Boards. In the previous posts I have discussed the Arduino UNO, MICRO, PRO MINI, MEGA and other popular Arduino microcontroller development boards. This article is oriented around the Arduino Duemilanove.
After reading this post the reader will learn the basics of the Arduino Duemilanove, difference between Arduino Duemilanove and other Arduino Boards, the programming of Duemilanove, applications and specifications of the Arduino Duemilanove. So sit back, keep reading and enjoy learning.[otw_is sidebar=otw-sidebar-2]
Arduino Duemilanove like other Arduino microcontroller development boards is the open-source microcontroller development board based on the ATMEGA168 or ATMEGA328 microcontroller IC. Duemilanove is an Italian word which means “2009” and is coined from the year of its release. It is important to note here that the Arduino UNO is based on the ATMEGA328P microcontroller IC. Arduino Duemilanove is quite similar in shape and specifications to the Arduino UNO but has a main difference that is the microcontroller IC on which either board is based. Arduino Duemilanove has 14 digital input / output pins out of which 6 are PWM enabled and are available on the header just like the Arduino UNO. Duemilanove has 6 analog input pins and a header for input and output voltage. The Duemilanove is plug and play module which means that it has a USB port mounted on board through which the computer is connected and can be used to program and monitor the Duemilanove board. Arduino Duemilanove also has power jack on board and an ICSP header. The Arduino Duemilanove looks like the one in the following image:
Observe the resemblance of the Arduino Duemilanove with the Arduino UNO boards. Notice from the above image that the Duemilanove has on board USB to UART bridge which makes it plug and play it is different from the MICRO and Lilypad which needs external USB to UART converter module in order to program them. The Digital Input / Output pins, the Analog input pins and voltage pins of the microcontroller IC fanned out to the headers on the edges of the board just like the Arduino UNO.[otw_is sidebar=otw-sidebar-3]
The pinout of the microcontroller IC on which the Arduino Duemilanove is based is shown in the following figure:
The block diagram of the Microcontroller IC is shown in the following image:
Arduino Integrated Development Environment (IDE):
In the post on the Arduino UNO we learned that the Arduino UNO can easily be programmed using the Arduino IDE. The Arduino Duemilanove can also be programmed in the similar way; that is the programming of the Arduino Duemilanove is not different from that of the Arduino UNO, however it should be kept in mind that Arduino Duemilanove has different number of pins and different pin configuration. The care should be taken while configuring the Arduino Duemilanove pins. As most of you might have known that in order to program a microcontroller one need to write the code in the editor, and then compile that code in the compiler after which you get the HEX file of that code and later upload that HEX file in the microcontroller IC using another program. In case of Arduino all these steps are performed in single software which is called the Arduino IDE. By integrated Development Environment it means that all the steps that editor, compiler, burner are integrated in the same software. In short Arduino Duemilanove is quite easy to program it is just a matter of few clicks. It is important to note here that the board should be selected before uploading the code that is before uploading the code from Arduino IDE one need to select the board to which he / she is intended to burn the program. From tools select board as Arduino Duemilanove otherwise the error will occur and your board would not get programmed .I will go through in detail about how to write a code and upload it in Arduino Duemilanove later in the post.
Arduino Duemilanove Features:
Let us now learn some of the common specifications of the Arduino Duemilanove microcontroller development board.
- Microcontroller IC: ATMEGA 168 or ATMEGA 328
- Operating Voltage: 5 Volts
- Input Voltage: 6 to 20 volts.
- Digital I/O Pins: 14 (of which 6 provide PWM (Pulse Width Modulation) output)
- Analog Input Pins: 6
- DC Current per I/O Pin: 40 mA (This is the current that can be sourced or sink into and out of the Input / Output pins)
- DC Current for 3.3V Pin: 50 mA
- Flash Memory: 16 kilo Bytes (ATMEGA168) or 32 kilo Bytes (ATMEGA328) of which 2 kilo Bytes are used by Boot-loader.
- SRAM: 1 kilo Byte (ATMEGA168) or 2 kilo Bytes (ATMEGA328).
- EEPROM: 512 Bytes (ATMEGA 168) or 1 kilo Byte (ATMEGA328).
- Clock Speed: 16 MHz.
Notice from the specifications of the Arduino Duemilanove that it resemble a lot with the Arduino UNO.
Arduino Duemilanove Pinout:
Let us now dive into the discussion about the pinout of the Arduino Duemilanove. As described earlier that the Arduino Duemilanove is based on the ATMEGA168 microcontroller IC so it follows that the pinout of the Arduino Duemilanove is simply that of the ATMEGA168 microcontroller but note here that the Arduino Duemilanove has its own nomenclature for its pins and here I will use the nomenclature used by the Arduino Duemilanove for pin reference.
As pointed out earlier that the Arduino Leonardo has total 14 Digital Input / Output pins. The digital Input / Output pins can receive a digital signal or transfer a digital signal. Out of these 14 Digital Input / Output pins 6 are PWM (Pulse Width Modulation) enabled, the PWM phenomenon and its applications will be discussed later in the post and some pins can also be configured as either SPI (Serial Peripheral Interface) or I2C (Inter-Integrated Circuit) computer bus. The Arduino Duemilanove also has one UART with Rx and Tx signals on pin number 0 and 1 respectively that are used for serial communication. The headers on the other side of the Arduino Duemilanove bear the voltage pins and the Analog pins. There are total 6 analog pins on the Arduino Leonardo. Unlike Digital pins these pins can just act as Input pins, that are these pins can only receive signal and cannot provide signal or voltages, that is why they are called Analog inputs. These analog inputs are actually the inputs of the Analog to Digital Converter inside the ATMEGA 168 microcontroller. These pins can be connected to the output of the analog sensors. Six different analog sensors can be connected to the Arduino Leonardo simultaneously.
The third header of the Arduino Leonardo bears the voltage pins that are used to power up the Arduino Duemilanove board, these pins are also used to deliver power from the Arduino Duemilanove board to other peripheral devices or the sensors attached to the Arduino Leonardo microcontroller development board.
Let us now discuss in detail the digital Input / Output pins, Analog input pins and Voltage pins of the Arduino Leonardo
Arduino Duemilanove Digital Input / Output Pins:
As described in the previous section that the Arduino Duemilanove has total 14 digital input / output pins out of which 6 input / output pins are PWM enabled. Some of these Digital Input / Output pins can also serve as the SPI (Serial Peripheral Interface) or I2C interface (Inter-Integrated Circuit). The detailed description is shown in the following figure:
The function that the digital input / output pins perform depends upon the coding of the Arduino Duemilanove. That is whether the pin number A5 (SDA, serial data) and A6 (SCK, Serial Clock) functions simply as Analog inputs or they are used as the Inter-Integrated Circuit (I2C) bus depends upon the coding that specifies their functionality using particular functions. Simply the pin number 16 (SS), 17 (MOSI, Master Out Slave In), 18 (MISO, Master In Slave Out), 19 (SCK, Serial Clock) constitute the SPI (Serial Peripheral Interface) computer bus and they function as the digital Input / output depending upon the programming. It is also important to note here that the Digital Input / Output pins are called as Input / Output because either they can be used as Input in which case they are intended to receive the signals from sensor or transducer (digital) or they can be used as Output in which case they drive the actuators such as relays.
The functionality of the Digital Input / Output pins as either Input or Output is determined by the code also. It is important to realize here that digital input / output pins can only supply a limited amount of current which is not sufficient to drive the motors or relays therefore we need to use drivers such as stepper motor driver or L298 DC motor driver. I will come to the coding of the Arduino Duemilanove later in this post. Another point worth mentioning is that seven out of the 14 digital input / output pins 6 are PWM enabled pins that is these pins can provide PWM (Pulse Width Modulation) signal as output. These PWM pins find applications in which we need to regulate something for example the speed of the motor or brightness of the lamp.
Before concluding this section it is important to note that SPI interface is present on the ICSP header and has no connection on the Digital Input / Output pins as in the case of the Arduino UNO.
Arduino Duemilanove Analog Pins:
As pointed earlier that the Arduino Duemilanove has 6 analog pins which are actually the inputs of the ADC (analog to digital converter). These analog pins are input only that is they can only be used to read the analog signal or voltage and cannot drive the signal outwards. With the help of these pins the Arduino Duemilanove can read analog signals from six different analog sensors. A variety of analog sensors are available in the markets which are used to measure different physical phenomenon for example LDR (Light Dependent resistor), Flex sensor etcetera. Another important thing to mention here that the analog input pins A5 and A6 together constitute the I2C (Inter-Integrated circuit) computer bus. Analog pin number A5 functions as the (Serial Data) and A6 functions as the (Serial Clock) and together become the I2C bus.
Arduino Duemilanove PWM Pins:
Let us now discuss the PWM pins of the Arduino Duemilanove in some detail. As mentioned in the previous section that the Arduino Duemilanove has 6 PWM pins which are numbered as 3, 5, 6, 9, 10 and 11. These digital pins can deliver the PWM signal as output. The PWM is the abbreviation of the Pulse Width Modulation and it is a phenomenon in which we adjust the width of the pulse according to the requirement of the applications. For example if one needs to regulate the speed of the motor or the brightness of the lamp this can be achieved by varying the width of the PWM signal. The power delivered by the PWM signal is the average of the signal for which it is zero and for which it is maximum. If the width of the PWM signal for which the signal remains HIGH is greater than more power will be delivered and thus reducing the width will cause the reduction in the power delivered. The width of the PWM signal for which the signal remains HIGH during its time period is referred to as the Duty Cycle of the PWM signal. The PWM pins are also used to control the angular position of the Servo motors.
Arduino Duemilanove Schematics:
The schematic design of the Arduino Duemilanove has many similarities with the Arduino UNO but of course is unique. The schematic of the Arduino Duemilanove is as shown in the following figure:
Arduino Duemilanove Applications:
Before discussing the programming language of the Arduino Duemilanove let us first know the applications of the Arduino Duemilanove for motivation. So basically the Arduino Duemilanove can be used in any system that requires the microcontroller. Some of the embedded systems in which the Arduino Duemilanove can be used are listed below:
- IR remote based Home Automation System.
- Bluetooth controlled Home Automation System.
- IoT enabled Home Automation System.
- Auto Intensity Control of Street Lights.
- Mobile lifter.
- Hurdle Avoiding Vehicle.
- Wall climbing vehicle.
- Autonomous vehicle.
- Robotic arm.
- Parking lot Counter System.
- Emergency Lighting and many more
Arduino Duemilanove programming language:
One of the perks that make Arduino Duemilanove quite popular among the hobbyists and beginners is it’s easy to use programming language and programming. The programming language used by the Arduino Duemilanove is the C++. The Arduino Duemilanove IDE has a well-defined function for each task that is easy to remember. As an example the function that specifies the Arduino Duemilanove digital Input / Output pin to work as input is:
Here in this function there are two arguments. First argument is the pin number which we want to make input or output and second argument specifies the property that is input or output to the pin number used. The detailed discussion on programming the Arduino Duemilanove will come later in the next posts.
That is all for now I hope this post would be helpful for you. In the next post I will come up with more interesting topics. Till then stay connected, keep reading and enjoy learning.