Crash Course Arduino and Microcontroller Development

Crash Course Arduino and Microcontroller Development

English | MP4 | AVC 1280×720 | AAC 44KHz 2ch | 128 lectures (111h 24m) | 98.2 GB

Learn the Fundamentals of Embedded Systems, Firmware and Programming

Crash Course Arduino and Microcontroller Development is designed to transform the complex world of embedded engineering into an accessible and enjoyable experience for students and hobbyists alike. This unique course covers a wide range of topics from the ground up, requiring no impossible prerequisites. With over 128 lectures and 111+ hours of video content, my aim was to create a comprehensive guide that takes you from a novice to a confident master in embedded engineering, microcontrollers, and Arduino.

We will explore everything from basic electronics and microprocessor architecture to the intricacies of the Arduino platform, ARM, and programming. You’ll learn essential C/C++ programming skills to write your own code, optimize it, and understand advanced concepts like interrupts, data structures, multitasking, and object-oriented programming. Using simulators, compilers, IDEs, CAD, schematic entry programs, and various electrical test equipment, we will uncover the mysteries of communication protocols and signals, allowing you to see and understand the underlying processes.

Our journey will be hands-on and practical, with each lecture combining theory, calculations, and real-world examples. We’ll build simulations, construct physical hardware, test, and run our creations. This is not a scripted course but a genuine, one-on-one learning experience where I share my 40+ years of expertise in electronics and coding. Expect to have fun, learn deeply, and maybe even blow a few things up along the way!

Additionally, this course includes my college textbook, “Design Your Own Video Game Console” (aka “The Black Art of Video Game Console Design”), free of charge in PDF format. This 800+ page book will serve as a valuable reference throughout the course.

Join me in this exciting adventure into the world of embedded engineering and unlock your potential to create anything you can imagine.

What you’ll learn

  • Learn about microcontrollers, microprocessors and their internal architecture including how instructions are executed, ALUs, Buses, MMUs, DMA and more.
  • Master embedded engineering theory and pratice from blinking an LED to building complex systems with sensors, actuators and displays.
  • Learn the Arduino platform’s hardware, software and APIs as a working platform to bridge the gap to more complex systems like ARM later in the course.
  • Understand C/C++ from the ground up and how to write effective firmware for embedded systems and memory/compute constrained systems.
  • Learn how processors run at the bare metal level including inline and external assembly language programming and interfacing with C/C++.
  • Conquer advanced Computer Science subjects such as optimization theory, data structures, recursion, interrupts, and Big O analysis.
  • Explore multitasking on microcontrollers by developing an interrupt based-round-robin kernal as well as using FreeRTOS.
  • Become expert in numerous tools such as compilers, Arduino IDE, TinkerCAD, EasyEDA, Replit, VSCode, CodeLite, WokWi, Fritzing, MPLabX, STM32CubeIDE, and more.
  • Learn electronics fundamentals like Ohm’s and Kirchhoff’s laws, circuit analysis, how passive components work, transistors, and FETs.
  • Understand the basics of analog and digital systems and building both combinational and sequential logic circuits with TTL/CMOS ICs.
  • Overcome programmable logic and the fundamentals of CPLDs, PALs, GALs, and FPGAs along with a primer on hardware description languages and CUPL.
  • Understand various memories types such as FLASH, RAM, SRAM, EEPROM and their different applications.
  • Conquer power management and sleep modes and how to shut peripherals down in your embedded designs, wake from interrupts, and manage power effectively.
  • Understand how to read datasheets, do research, dig into APIs and documentation like the pros.
  • Discover simulation software to test your ideas and build systems virtually before committing to physical hardware.
  • Learn how to build embedded projects on the bench with solderless breadboards, point to point wiring and tactics to make these builds work at high speed.
  • Understand how to use test equipment properly such as digital multimeters, oscilloscopes, logic analyzers, and power supplies.
  • Build numerous bench projects including a complete Arduino based game console running a 3D wire-frame game, equipped with RGB LCD, game pad, sound and more!
  • Master one of the fastest growing and highest paid engineering fields in the world.
Table of Contents

Getting Started with Embedded Engineering
1 Course Overview and Welcome!
2 Installation and Setup
3 Installation and Setup – CodeLite IDE and Compiler

Introduction to Microprocessors and Microcontrollers
4 Microprocessors and Computer Architecture Fundamentals
5 Microprocessors, Microcontrollers, ALUs, Assembly Language and More
6 Processor Design Primer ALU, Control Unit, RTL Logic and Processor Fundamentals
7 Introduction to the Arduino, Hardware, Software, Documentation and Datasheet

Arduino IDE, Coding, and Hardware Primer
8 Introduction to the Arduino UNO, Hardware, IDE, API, Programming and Simulation
9 Hands on with the Arduino, Parts Kits, Solderless boards and Component Intros
10 Blinking an LED with C++ in Hardware
11 Simulating our Arduino Hardware and Code Online with TinkerCAD and Wokwi
12 More Simulation with Code API Emulation on Replit
13 Building a Game From Scratch The Simon Memory Game, Hardware Design
14 Building a Game From Scratch The Simon Memory Game, Hardware Build
15 Building a Game From Scratch The Simon Memory Game, Coding and Firmware
16 Finishing the Simon Game and Introduction to Serial Debugging
17 Porting Simon to Online Simulation

Tools and Test Equipment Overview
18 Basic Hand Tools for Electronics
19 Working with Soldering Irons and Hot Air Machines without Burning Yourself!
20 Multimeters, Oscilloscopes, Logic Analyzers, Signal Generators and Power
21 Hands on with Test Equipment and Real-Time Experiments with Logic Analyzers

Into the Abyss – Electronics Theory and Fundamentals Primer
22 The Fundamentals of Electricity, Charge, Current, Voltage, Resistance and Fields
23 Ohm’s Law, Basic Circuit Analysis, Series and Parallel Circuits
24 Understanding Power, Series and Parallel Batteries, Voltage Dividers and EasyEDA
25 Ohm’s Law++, Kirchhoff’s Laws; KVL and KCL
26 Capacitors, Electric Fields, Physics, Charging and Discharging
27 Inductors, Magnetic Fields, Flux, Lenz’s & Faraday’s Law, ChargingDischarging
28 Reactance, Impedance, Phasors, AC Analysis of Series Capacitive Circuits
29 Low Pass Filters, Transfer Functions, Gain, Decibels
30 Low Pass Filter Bench Build, Simulation, Arduino Tone Generator
31 Basic Semiconductor Devices, Diodes, Rectification, LEDs, Simulation
32 Transformers, DC Rectification, Understanding Datasheets
33 Transistor Theory and Applications
34 Mosfet Theory and Practical Applications
35 Introduction to Digital Electronics, Boolean Algebra, Gates, and Logic Families
36 TTLCMOS Logic Gates, Driving, Sinking Current, Packages and Prototyping
37 Review of Common TTLCMOS ICs and Bench Demo of Gates
38 Simulating a Digital Logic Gate Module Using the Arduino
39 A Tour of Programmable Logic (RAM, FLASH, PALs, GALs, CPLD, FPGA) and Bench Demo

C++ (along with C) Primer and Fundamentals from the Ground Up
40 Introducing CC++, History and Programming Concepts for Embedded Systems
41 Understanding CC++ Compilers, Code Generation and Tools
42 Working with IDEs, Compiling C++ Programs, and a Bit of Arduino Code
43 C++ Primer Crash Course, Arduino Emulation and Coding
44 Setting up our C++ Test Platforms
45 C++ Fundamentals, Headers, External Libraries, Printing
46 C++ Variables, Intrinsic Types, Naming Conventions, and more printf() Formatting
47 C++ Variables, Globals, Locals, Basic Types, Math Operators, and Precedence
48 C++ Mathematics, Understanding Base-N Number Systems with Binary, Hex & Octal
49 C++, Programming Style Guide and Conventions, Macros, Conditional Compilation
50 C++, Built in Math Operators, Binary Bitshift Operations and Using the Debugger
51 More C++ Logical Operators, Conditionals and the if Statement, Type Casting
52 C++ Looping Constructs, for and while
53 C++ Switch Statements, Arrays, Strings
54 C++ Strings, Arrays, Arduino Strings and Functions
55 C++ Measuring Time, Nested Loops and Hardware Build (Finally!)
56 C++ Console IO C and C++ methods, VT100 Gamepad Hardware Demo
57 C++ Data Structures, Structs, Enums, Linked Lists and Trees
58 C++ Pointers and References (The Dreaded Duo)
59 C++ Classes, Methods, Properties and Object Oriented Basics
60 C++ Advanced Classes, Constructors, Destructors, Operator Overloading
61 C++ More Advanced Class Topics, Copy Constructors, Assignments, Deep and Shallow
62 C++ Built in Objects and Including External Arduino Libraries
63 C++ Understanding Microcontroller Memory Management, Globals, Locals, Statics
64 C++ Memory Management and the Heap – Part II
65 C++ Working with Arduino External Libraries and Objects and a Little Recursion

Introducing the World of Arduino, AVR 8-Bit Processors, ATmega 328p & Firmware
66 Introduction to Arduino AVR 8-Bit Architecture; 8-bit Ports, GPIOs and ADC
67 Interfacing to 7-Segment Displays, Switches, Keypads, Rotary Encoders and More
68 Interfacing to 7-Segment Displays, Keypads, Rotary Encoders, & Bench Build II
69 Filtering and Debouncing Deep Dive
70 Analog Interfacing to Potentiometers and Joysticks
71 C++ Exercise Converting the Joystick Code to a Class
72 Interfacing to LEDs and NeoPixels

Advanced Microcontroller Development and Arduino Embedded Internals
73 Assembly Language and Microcontroller Fundamentals, Inline AVR 328p
74 Assembly Language, Memory, Registers, IO Space, GPIOs, Interfacing with CC++
75 Working with the UARTs in Assembly
76 Using External Assembly Language and Memory Mapped IO
77 Using External Assembly Language Part II – Writing a Math API
78 Using External Assembly Language Part III – Variables, Tables, and Addressing
79 Understanding Microcontroller In Circuit Programming, AVRDUDE, and Fuse Bits
80 Understanding Microcontroller ICP Programming and Configuring the Clock Out Bits
81 Understanding Microcontroller Clocking, Scaling, PLLs and More
82 Understanding Sleep Modes, Interrupts, Polling and Multitasking
83 More Advanced Interrupts and Coding Interrupt Service Routines
84 Understanding Timers, Counters, PWM and Measuring Temporal Events
85 Understanding Timers, Counters, PWM, Timer Interrupts and Waveform Generation
86 Using the Timer and Interrupt Arduino APIs and Pin Change Interrupts
87 Using the Timer and Interrupt Arduino APIs, Pin Change Interrupts Demo – Part II
88 More Advanced Pin Change Interrupts and PIR Sensors
89 The Watchdog Timer Woof Woof
90 Power Consumption and Sleep Modes
91 More Sleep and Power Saving Modes
92 Direct Memory Access (DMA)
93 Memory Management Units (MMUs), External Bus Interfaces and External Memories
94 Advanced Debugging, Desktop and Embedded Debugging Ideas for Arduino
95 Optimization Theory, Assembly Optimization Cycle Counting, Fixed Point Math
96 Optimization Theory, Big O, Fixed Point Math – Part II
97 Advanced Optimization and Data Structures; Linked Lists, Trees & Searching
98 Advanced Optimization, Math Optimizations, Look up Tables, Clock Counting & More
99 Advanced Optimization, Taylor and Maclaurin Approximations and Fixed Point Math
100 Understanding Multitasking and Real-Time Operating Systems for Embedded
101 Multitasking, Implementing a Mini Kernel with Interrupts
102 Multiasking with our Kernel, LED, Photocell, Servo, Temp Sensor – Part II
103 FreeRTOS and True Multitasking

Digital Communication Protocols and Interfacing RS-232, UART, SPI, I2C & 1-Wire
104 Serial Protocols UARTs and RS-232 – Part I
105 Serial Protocols UARTs and RS-232 – Part II, Bench Demo of Terminals
106 Serial Protocols UARTs and RS-232 Part III, ClientServer
107 Introduction to Serial Peripheral Interface (SPI) Protocol
108 Serial Peripheral Interface (SPI), Interfacing to a Temperature Sensor – Part II
109 Serial Peripheral Interface (SPI), Interfacing to a Temperature Sensor-Part III
110 Serial Peripheral Interface (SPI), Controlling a Digital POT – Part IV
111 Serial Peripheral Interface to an LCD and Game Console Build – Part I
112 SPI Interface to an LCD and 3D Game Port to Game Console – Part II
113 I2C Serial Protocol, Introduction to Wire Library, Temp and Real Time Clock
114 I2C Serial Protocol (Inter IC Communications), Interfacing to a Digital POT
115 I2C Serial Protocol Digital POT Circuit Bench Build, and Demo and Analysis
116 I2C Serial Protocol, SI7021 Temperature and Humidity Sensor Review and Build
117 I2C Serial Protocol, Measuring Time with the DS1307 RTC (Real Time Clock)
118 I2C Serial Protocol – Working with Accelerometers and Gyros

Advanced Tools for Arduino and Embedded Development
119 Developing with the Ardunio WebCloud IDE
120 Introducing the New and Improved() Arduino IDE 2.x IDE
121 Working with Visual Studio Code + PlatformIO
122 Visual Studio Code + PlatformIO – Adding Basic Debug Support
123 MPLAB X IDE for AVR and PIC, ARM Cortex M0-M7, Part I – Overview and Install
124 MPLAB X IDE for AVR and PIC, ARM Cortex M0-M7, Part II – Building Hello World

Into the Abyss with ARM Cortex M-Series Processors
125 ST Micro ARM Cortex Microcontroller and Processor Primer
126 Building Apps with STM32CubeIDE – Part I
127 Building Apps with STM32CubeIDE (UARTS & IO) – Part II
128 Building Apps with STMicroCubeIDE (Debugging) – Part III

Homepage