Please bookmark this page!
Welcome to the RoboJackets Firmware training repository!
- Location: Skiles 271 (Except for 9/18 (Skiles 171))
- Time: 6:00pm - 8:00pm on Thursdays or Fridays
- Bring: Your computer
Here is a breakdown of what firmware training is week-to-week:
- Week 1: What is firmware? General Arduino + Digital IO
- Week 2: Analog IO + Interrupts
- Special!: Hive Soldering Training
- Week 3: Communication Protocols
- Week 4: Driver Design
- Week 5: State Machines + RTOSes
This repository will be updated each week to contain the solution to the last week's labs as well as the presentation for the current week. All presentations will be present in the presentations folder. Additionally, all labs will be in their respective week's directory within the labs folder.
In week 1, we will be learning what firmware is and what you can do with it. Additionally, this lecture will discuss the basics of coding and digital inputs and outputs.
For week 1, there is one lab, blink. Blink is the classic "Hello World" of the Arduino world. In this lab, you will be learning how to interface with the Arduino Nano to blink the onboard led.
In week 2, we will be learning about control flow, digital inputs, and analog IO.
For week 2, there are three labs, switch-buttons, pwm, and potentiometer-control. Switch buttons teaches how to read digital inputs and use interrupts. PWM teaches the basics of manually generating pwm signals. Potentiometer control teaches how to control the value of analog outputs via an analog input.
In week 3, we will be learning about common communication protocols used in embedded systems.
For week 3, there are two labs, serial-control and i2c-imu. Serial Control details how you can use the serial interface on the Arduino to debug and control the peripherals connected to the training board. I2C IMU shows how to use a library to read values from the IMU over i2c and how you can use this to make a simple shake on/off switch.
In week 4, we will be learning about how to design and create drivers to work with peripheral devices.
For week 4, there is one lab, imu-driver-design. This lab has you create a driver for the MPU6050 IMU connected to the firmware training board. It also contains the code to complete week-3 lab 2 as a test for your IMU driver.
In week 5, we will be learning about state machines and I'll teach a little bit about real time operating systems.
For week 5, there is only one lab, state-machines. This lab has you creating a combination lock using inputs on the training board.