FB pixel

Arduino Hardware - The First Impressions 1.1

Published

Hi there! Today I’m going to talk about Arduinos. I know, this might sound funny: there are thousands of articles, books, tutorials, videos and other content about the Arduino. What can I say about it that’s new? Well, actually nothing. I will just try to shift the focus from the Arduino coding to my thoughts and impression of the Arduino boards in general.

What is an Arduino?

When I say “Arduino board”, I actually lie. I don’t have any. Neither do most of you. Why is that so? Arduino is an open-source project which means you can design your own board which is compatible with the original one (or not, if you so desire) and produce it without any licensing fees. The only strict condition of the Arduino founders is that you can’t name your product “Arduino”, that’s why there are so many “something-uino” brands. You can see a rough list here: List of Arduino boards and compatible systems

The original Arduino boards can be found on the official site arduino.cc. You can see that there are a lot of them, and the prices start with 9 Euros for the Arduino Nano Every board. I won’t lie, I just saw this Nano Every board the first time, and it seems to be quite an interesting solution in comparison to the older Arduino Nano. However, my goal is not to compare the boards, you can do it yourself on the arduino.cc site.

Why are Arduino’s so Popular?

Let’s now think about the secret of the success of these boards. When I first dealt with them I was wondering, “What is this phenomenon?” I had been programming microcontrollers for several years when Arduino appeared and initially I looked at them as toys for beginners. But then I had to reconsider my thoughts.

In the previous series of tutorials devoted to the PIC10F200 MCU I tried to prove that you don’t need a powerful MCU to make the majority of your devices. From this perspective even the cheapest Mini board with the ATMega168P MCU with 16 KB of flash is excessive. But this is true when you have experience programming microcontrollers. If you are a beginner, you write ugly and non-optimized code (sorry, but it’s true), and some extra kilobytes of the memory seem to be a good price for the happiness of making your own working device. So, in this way, even if it’s overkill, if it makes it easier for people to jump in, that makes me fine with it.

The other advantage of the Arduino is the huge ecosystem. There are hundreds (probably even thousands) of different boards, modules, and shields that you can connect to your Arduino-compatible board and use them. It’s also really easy because almost every such extension board has a well-documented library and code examples. And this is the thing that made me like Arduino. When you need to test some hardware, for example, sensor, display, SD-card reader, RF module, etc., you just connect it to the Arduino board, load the example sketch, and voila! - it works (or doesn’t work but usually because of a connection mistake or faulty board). Sometimes the extension modules seem very funny to me, like pushbutton or LED or buzzer (see Figure 1).

Figure 1. Simple extension boards of Arduino ecosystem.
Figure 1. Simple extension boards of Arduino ecosystem.

But these modules allow people who never held a soldering iron in their hands to assemble their own devices using just some connection wires. And this brings more and more people into the world of electronics and encourages them to improve their knowledge and skills in this field. And that’s wonderful!

I’m still excited when I realize that for a couple bucks you can buy the Nano board which is totally self-sufficient in that you don’t need to buy or assemble a programmer and don’t need to solder anything, you just plug and play! When I started with the microcontrollers there was no such luxury, I assembled my first programmer based on two transistors, and it was connected to the LPT port of the PC (I would guess a lot of readers don’t even remember what it is). Anyway, let’s leave my nostalgic thoughts and return to the present time.

Introduction to some of the Arduino Flavors

I will talk about what I have and my personal experience. As I wrote in the Introduction, I have a bunch of Arduino Arduino-compatible boards: Uno, Nano, Mega 2560, Due, Micro, Mini (see Figure 2 - 7)

Figure 2. Uno board.
Figure 2. Uno board.
Figure 3. Nano board
Figure 3. Nano board
Figure 4. Mega 2560 board.
Figure 4. Mega 2560 board.
Figure 5. Due board.
Figure 5. Due board.
Figure 6. Micro board.
Figure 6. Micro board.
Figure 7. Mini board.
Figure 7. Mini board.

I took all these pictures from the Aliexpress site, and you may have noticed that none of the boards have the text “Arduino” on it. Because nobody wants to be sued, even Chinese manufacturers who seem to be afraid of nothing.

So why are these boards that popular over the original Arduino ones? The answer is simple - price. For instance, the original Arduino Uno costs 20 Euros while the Chinese Uno costs about $3.50USD. How did they achieve such a difference? First of all, they used cheaper parts. In the original board, the ATMega32U MCU is used as the USB-to-UART bridge (which is needed to load the firmware into the target MCU), while in Chinese boards the CH340 converter is used which costs much less. Also, in Chinese boards cheaper and less reliable parts are used. And to be sure, the manufacturing costs in Italy and China are somewhat different.

Characteristics of different Arduino Boards

Let’s briefly consider the main characteristics of these boards (Table 1).

Table 1. Boards characteristics.
Table 1. Boards characteristics.

As you can see, most boards use ATmega microcontrollers which are the part of the AVR family of Atmel Corporation (now Atmel is the part of Microchip), only Due board uses the ATSAM3X8E which is an obsolete ARM Cortex-M3 based MCU made by Atmel.

Also you can notice that Uno, Nano and Mini have almost the same characteristics. And it’s not surprising - they use the same ATmega328P MCU (well, Nano and Mini can have ATmega168P MCU which is the same as ATmega328P but has half the Flash memory, and thus such versions cost even less). Moreover, Uno and Nano have the same schematics, Nano just has a smaller size and has the option for an additional two analog inputs. Mini is the same as Nano, but it doesn’t have the USB-to-UART bridge, so it’s smaller and cheaper.

The Micro board has the ATmega32U4 microcontroller which has the internal hardware USB module unlike the ATmega328P, and thus it doesn’t need the USB-to-UART bridge. The other benefit of this module is that you can make devices that are USB-connected, like card-readers, keyboards, gamepads, mice and even proprietary devices.

The Mega 2560 board doesn’t have the USB module but it has way more inputs/outputs and memory (both Flash and RAM), see Table 1. Other than that, it doesn’t have any benefits, it has the same AVR core, and the same frequency.

The most advanced board among the ones listed in Table 1 is Due. It has the same form-factor as Mega 2560 and the same number of digital I/O. But thanks to the 32-bit ARM Cortex-M3 core it is much more powerful. First, its frequency is 84 MHz unlike 16 MHz in other boards, it also has much more memory than even the ATmega2560 MCU. It has the hardware USB module but unlike ATmega32U4, this module can operate in the OTG mode which means this MCU can act both like a USB host and USB device. Also it has two DAC (digital-to-analog converter) outputs which none of the listed above boards have.

Now let’s talk about the common features of these boards. They all have a low-dropout regulator (LDO) which means you can power the board with any voltage from 7V to 12V. All LDOs provide an output voltage of 5V to the MCU except for the Due board, which uses 3.3V. All boards have 0.1” pitch connectors (female on the Uno, Due, and Mega 2560; or male on Mini, Micro, and Nano).

Unfortunately, the boards don’t have a unified USB connector: Uno and Mega 2560 use the large USB-B, Nano uses mini-USB, and Micro and Due have micro-USB. This requires having different cables if you use different types of boards which is not convenient.

Other things they have in common are: the Reset button, the power LED, and the user LED connected to one of the GPIOs of the MCU.

When you connect the boards to the PC, it’s recognized as a COM-port, using which you can both download your code to the board and exchange data with it, but we’ll talk about this in more detail next time when we consider the Arduino software.

Application Examples

Curious readers probably still have some questions, like “OK, you told me a lot about the boards, their characteristics, their applications, but what on the Earth do these kilobytes, megahertz, and other parameters actually mean? Is it a lot or not? What exactly can I make using these boards?” Those are fair questions, and I’ll try to answer them as well.

As for the characteristics of the boards, I would say: yes, even the most simple Mini board with ATmega168P MCU has enough memory for most home projects. As you remember (if you read our previous series of tutorials) the PIC10F200 MCU has 256 words of Flash memory, or 384 bytes. The ATmega168P has 16 kBytes of the Flash memory which is 42 times more! Well, Arduino code is not as optimized as Assembly but that is still a lot of memory for your projects.

The same with the RAM. The PIC10F200 has 16 bytes while ATmega168P has 2048 bytes which is 128 times more! You can fit an array of about 2000 elements of ‘char’ type or 1000 elements of ‘int’ type etc. These numbers don’t seem that small, right? And remember, this is the smallest available microcontroller on these boards.

As for the working frequency, 16 MHz is also quite fast.

Let me tell you about the device I made using the Mini board. It was a logger (Figure 8) and you can see the Mini board integrated into a custom board that I designed. It measured the voltages at four analog inputs at 200 Hz, converted the values into Float format, and wrote them to an SD card. Also, it checked the values and controlled three relays if some of the values exceeded given limits. Moreover, it had an LCD and buttons to provide a user interface, and also had an external RTC to put time stamps in the log. And this is using the baseline Mini board! Frankly, I was really impressed with the fact that it managed all these functions.

Figure 8. The logger board.
Figure 8. The logger board.

The other example that I made (full disclosure, I just assembled it but didn’t write the program, yet it’s still a good example of what can be done) is the Easter egg painter. I found this project on Thingiverse and decided to repeat at home (Figure 9).

Figure 9. Egg painter.
Figure 9. Egg painter.

In figure 9 I just tested the painter that’s why the printed images are so ugly (don’t judge me). You can find more images at Thingiverse. This device consists of an Uno board, connected to a PC and receiving commands from it. The Uno controls two stepper motors and one servo, so frankly there are not that many connections. But still this project may be one that you want to try for yourself.

As for the Mega 2560 board. I saw people use them to build their own 3D-printers (How to make 3D Printer at home, for instance). Even then, it’s still excessive, but it’s a good solution for this application.

I also made a big project for an industrial application based on the Due board. Unfortunately, I can’t tell you about it because of an NDA but I think I can share that it consists of a very high-speed proprietary serial interface, SD-card, user interface with an LCD and other features. We ultimately had to replace the Due with another board but only because we needed a higher frequency. I also still can’t make a program bigger than 512 kB even though the number of features and interfaces increased significantly.

So you probably can consider the Mega 2560 and Due boards as having almost unlimited Flash memory, at least at the beginning.

My Advice on Which Board is Best For You

I want to give you some advice about choosing the right board based on my experience of using them.

If you need the board for prototyping, it’s better to select the Uno. It’s large, it has female connectors and possibility of soldering the male connectors (see figure 2). Thus you can use different kinds of Dupont cables. Also, the marking is very clear and it’s hard to make a mistake when you plug in the cables.

If you want to use a breadboard, it’s better to choose the Nano board, because it can be easily plugged into the breadboard with the male connectors located in parallel on the opposite sides of the board. Also, you should take into the consideration that the Nano board (the same as Mini and Micro) doesn’t have the barrel power socket, so you will need to apply the supply voltage to the pins VIN and GND (in case you don’t power your board from USB).

The Mini board is the best for using in your end devices, not prototypes. It’s small, it’s cheap, it’s easy to install. The only thing is that it doesn’t have the USB-to-UART bridge, and thus you need an external bridge to program this board. Nevertheless you can even use the bridge of the Uno or Nano board for this purpose. Otherwise you can buy the separate board which will cost you less than one buck (figure 10).

Figure 10. Standalone USB-to-UART bridge based of CH340 chip.
Figure 10. Standalone USB-to-UART bridge based of CH340 chip.

The application of the Mega 2560 board is a device that requires a lot of connections and a lot of code. I’ll be honest with you, I’ve never used this board even though I have it, I just can’t imagine where I can apply it. Perhaps robotics where you’re driving a lot of peripherals and receiving input from many sensors but don’t require very advanced processing?

The Micro board is good in applications where a permanent USB connection is required. As I mentioned before, it can be some USB-to-’some interface’ bridge, keyboard, gamepad, midi device, data logger, card reader, etc. You can use it the same way as a Nano though, but please keep in mind that the Micro board is about twice as expensive as the Nano board.

And finally, the Due board. You can use it in the application where the other boards fail because of the lack of productivity, CPU frequency, pin number (except for Mega 2560), or interfaces. This is a really powerful board, and it can do really great things, so if your needs are limited with the simple weather station or LED clock, I beg you not to use this board, stop shooting a cannon at the sparrows!


Summary

I think this is all I wanted to tell you about the Arduino hardware. If you need details, you can go to the official Arduino site and read more about the boards. By the way, you will find a lot of new boards there which I didn’t mention here, and maybe they will interest you more (at least I was interested in some of them when I entered this site to write the current tutorial).

The next time we’ll talk about the Arduino IDE, its advantages and flaws. So see you soon!

Make Bread with our CircuitBread Toaster!

Get the latest tools and tutorials, fresh from the toaster.

What are you looking for?