To learn microcontroller, many students & engineers spend way too much time in asking, which Microcontroller (MCU) is the best. My suggestion is to pick any and start instead of just asking.
The aim of this article is to give direction to a beginner, how to start, what all topics to cover in order to learn about microcontrollers.
Learn the basics of electronics
Before you start learning about microcontrollers, you must have some basic understanding of Electronics, otherwise, it will be difficult to understand all the concepts and do the programming effectively.
Some of the best embedded design engineers are also good hardware engineers. Please go through the hardware section of the article “What to learn to become a good embedded design engineer” to know more.
Overview of Microcontrollers
After you have gained a basic understanding of electronics, it’s components, go through the overview of Microcontroller to gain some theoretical understanding. What are the building blocks of the microcontroller, how it works, etc? Some eBooks are available here.
Refer book: The 8051 Microcontroller and Embedded Systems: Using Assembly and C by Muhammad Ali Mazidi (Author) for basic MCU, programming concepts. I have referred the same book during my time in 2003–2005, while I was getting training at Emtech Foundation, New Delhi, under the guidance of Mr. Naveen Kumar.
Basic C Programming
Later Google, YouTube websites became my best mentors :). You should also learn the basics of C programming before you start actual practicals. I suggest an all-time favorite Let Us C by Yashavant Kanetkar (Author).
Pick any microcontroller development board of your choice. If I have to select, I will take any STMicroelectronics’s STM32 Discovery board or Microchip’s PIC16/18F Series MCU development board as they are quite affordable and gives you access to may IOs/interfaces with onboard programmer & debugger. You will need to buy different modules for other interfaces if they are not already available on the MCU development board.
Image Credit: Google Image Search
Basic Microcontroller Interfaces
Learn each of the following basic interfaces, one by one (application circuit & programming both). With each interface, I have mentioned a few example devices which could be used for learning, I would suggest you interface all of them:
Output- slow/fast, Input- pooling, interrupt. LEDs, Buzzer, Keys, Matrix Keypad, Rotatory Encoder, Segment Display, Character LCD, Graphic LCD, Color TFT display.
Analog to Digital Converter (ADC)
Read voltage from potentiometer, LM35, LDR, etc.
EEPROM, RTC, Accelerometer Sensors, etc.
FLASH / FRAM Memory, SPI based Displays like Graphical LCD, TFT display.
Send and receive data to/from PC (RS232), RS485, GSM / GPRS Modem, WiFi Module, GPS module, etc.
DC Motor using H-Bridge, RGB LED.
Advanced Microcontroller interfaces
After you have got experience with above interfaces, you should move to advanced interfaces (you might need to use an OS) like using DMA, SDIO for SD/MMC card interface, USB client for PC communication, USB Host for connecting other USB devices like Keyboard, Pendrive, etc., Ethernet, File System (FAT32, etc.), Command Line Interface, etc.
Hope this helped you understand how to start learning microcontrollers.