Embedded System - Arduino





What is it ?


Arduino is a kind of development kit with a Microcontroller and a bunch of IO pins on the board. It is well designed for wide varieties of embedded system and become even better applicable for prototyping IoT devices. For the last couple of years, so many kinds of Microcontroller application development board in the market, but followings would be the reason why Arduino is so wide spread comparing to other solutions. (See Wikipedia : Arduino for history and introduction)

  • OpenSource Hardware
  • Super Easy Programming
  • Very Low Cost
  • Huge Community
  • Widevariety of Sensors /Actuators/ Modules compatible to the board


OpenSource Hardware : Arduino Hardware itself is OpenSource. It means the schematics of the board is open to everybody and anybody can download it and manufacture it. So you would see Arduino board from so many different manufacturers. The board not coming from the original developer are called clone. For general users like me, I think this helps keep the price of the board at low cost and make it even lower if you decided to go with clones. However, some clones may not keep up-to-date with latest software / drivers and causing various trouble. So, if you are completely new to Arduino board, I would recommend you to start with Original board and then try with clones later.


Super Easy Programmine  : If you are completely new to Microcontroller / Embedded application, building the first simple program would be very challenging even when you have pretty good knowlege of programming in general purely software based programming. Microcontroller would be a different area that requires a little bit of different mindset Arduino programming evironment is designed in such a way that you can make at least something work with two or three lines of code (See Basic Test section and find how easy it is). However, this is not all. Something Super easy at the beginning would lead to a lot of restrictions at later phase (especially in some high level application). However, in Arduino you can write a program not only in Arduino native language but also in C, even in Assembly language so that you can do almost everything unless it is limited by hardware or microcontroller chipset.


Very Low Cost : For now (as of Jul 2016), Arduino would not be the lowest cost solution with similar functionalities. However, I am pretty sure that it used to be one of the lowest cost solution and triggered the whole industry to release various different solutions with similar price. Even now, I think such a nice solution with only around 30 dollars would be considered as very low cost solution. One thing I am not so satisfied is the price of various shields (a kind of extension board for Arduino). It seems that price for most of the shield is more expensive than the Arduino board itself.


Huge Community :  In think of the biggest advantage of Arduino for now is huge community. Whatever you want to try with Arduino, you probably find the same or similar thing done by others. You can easily find document or YouTube that would help you.


Widevariety of Sensors /Actuators/ Modules compatible to the board : Theoretically, you can connect any sensors/ modules /actuators to any kind of controller board if you build up a proper interface circuit between the board and those components. But what if you have very clumsy hand for soldering, not much knowledge of building electric circuit and most of all you don't like to do such a circuit building.. just interested in microcontroller programming like me ? For those people, the best solution should be those device or module that can be hooked up to the board without special interface board. Since Arduino has become a kind of de facto standard in the industry, there are many companies who release sensors, actutators in the form of small modules that can directly hooked into Arduino. Personally this is one of the biggest advantage to me.


Followings are some of the variations of Arduino boards available in the market, I am using Arduino UNO and most of the information in this site is based on Arduino UNO but it would apply to other models as well.





Reference :


[1] Introduction to Embedded Systems  (YouTube)

[2] Introduction to Arduino (YouTube)

[3] The Arduino IDE (YouTube)

[4] Appropriate Microcontroller Use (YouTube)

[5] Interfacing Circuits  (YouTube)

[6] Basic Circuits Background  (YouTube)

[7] Overview of the ATMega328P Processor(YouTube)

[8] Arduino General Purpose Input/Output Pins (YouTube)

[9] Arduino Timers and Counters (YouTube)

[10] Arduino Analog Inputs (YouTube)

[11] Arduino Interrupt Processing Part I  (YouTube)

[12] Arduino Interrupts Part 2 (YouTube)

[13] Serial Communications -- USART (YouTube)

[14] Serial Communications: I2C and SPI (YouTube)

[15] Introduction to Assembly Language (YouTube)

[16] Arduino Assembly Language Commands (YouTube)

[17] Assembly Registers, Functions and the STACK (YouTube)

[18] Assembly Functions, Arrays, and Indirect Addressing (YouTube)

[19] Arduino Assembly Program Flow, Timers, I/O (YouTube)

[20] Hands On Arduino 1: Timers & Interrupts (YouTube)

[21] Hands On Arduino 2: Incremental Encoders, Part 1 (YouTube)