You are not Logged In!

Difference between revisions of "Public:Electrical Onboarding 2021"

From Illini Solar Car Wiki
Jump to navigation Jump to search
m (more firmware onboarding project link edits)
(→‎Planned Dates/Deadlines: Updated for spring)
 
(11 intermediate revisions by 4 users not shown)
Line 4: Line 4:
 
* [https://drive.google.com/drive/u/2/folders/0B7YhnHcx_i7dTHpzamJBRE54aFE?resourcekey=0-YTW5-s5Zb2TNn0HvnDSSYg Google Drive]
 
* [https://drive.google.com/drive/u/2/folders/0B7YhnHcx_i7dTHpzamJBRE54aFE?resourcekey=0-YTW5-s5Zb2TNn0HvnDSSYg Google Drive]
 
* Wiki
 
* Wiki
 +
 +
=== Planned Dates/Deadlines ===
 +
Spring onboarding will be a shortened and more self paced version of the typical fall onboarding process. This page contains all the tutorials and instructions needed to install all our software and complete the onboarding projects. Like always if you have any questions feel free to ask during meetings or on slack.
 +
 +
 +
 +
Monday 2/7: Finish Git setup, install and setup Kicad.
 +
 +
Wednesday 2/9: Finish Kicad Project Schematic and create PR
 +
 +
Saturday 2/12: Finish Kicad Layout
 +
 +
Monday 2/14: Setup MCUExpresso and finish Firmware project
 +
 +
Wednesday 2/16: End of onboarding info presentation, finish any remaining projects/installation
 +
 +
Saturday 2/19: Receive Mentors and Projects, first meeting as full members.<B> Get OpenLab access by this date</B>
 +
 +
 +
 +
As Spring onboarding is self guided and paced, these dates are a rough guideline of where you should be in order to be on track to finish everything by the end of onboarding. It is encouraged to work ahead if you are able to, or to take more time if needed.
 +
 
=== GitHub Instructions ===
 
=== GitHub Instructions ===
 
GitHub is a tool we use to share all of our work as a team. It is a great way to ensure all the current work stays updated and there are very little conflicts when working together. Most industry professionals use GitHub for code, however we also use it with our KiCad projects as well as code. '''Git is hard to learn so don't be upset if you don't understand how it works at the end of onboarding, you'll get more practice and become a pro later :)'''
 
GitHub is a tool we use to share all of our work as a team. It is a great way to ensure all the current work stays updated and there are very little conflicts when working together. Most industry professionals use GitHub for code, however we also use it with our KiCad projects as well as code. '''Git is hard to learn so don't be upset if you don't understand how it works at the end of onboarding, you'll get more practice and become a pro later :)'''
Line 16: Line 38:
 
KiCad is an electrical CADing software that our team uses to design the custom circuit boards (aka PCBs) for the solar car. All of our designs exist on the [https://github.com/IlliniSolarCar/PCB Illini Solar Car GitHub page] in the PCB repository. You will clone this repository and any hardware contribution you make to the team will be in here forever :)
 
KiCad is an electrical CADing software that our team uses to design the custom circuit boards (aka PCBs) for the solar car. All of our designs exist on the [https://github.com/IlliniSolarCar/PCB Illini Solar Car GitHub page] in the PCB repository. You will clone this repository and any hardware contribution you make to the team will be in here forever :)
  
# Clone the GitHub [https://github.com/IlliniSolarCar/PCB PCB repository] onto your computer by following the '''Initial Setup''' instructions [[GitHub/PCB|here]].
+
# First clone the PCB repository and set up KiCad following the instructions in [[User:Rkajjam2|Rahul's]] first [https://www.youtube.com/watch?v=6VV7DvNGEA8&list=PLYWKqdG09eYLCqh8V8gjJpYXOJ60yJ5xG&index=2 KiCad youtube tutorial] or the wiki instructions below.
# Go through the [[KiCad]] '''First Time Setup''' instructions
+
#* To clone the GitHub [https://github.com/IlliniSolarCar/PCB PCB repository] onto your computer follow the '''Initial Setup''' instructions [[GitHub/PCB|here]].
# Follow [[User:Rkajjam2|Rahul's]] KiCad [https://www.youtube.com/playlist?list=PLYWKqdG09eYLCqh8V8gjJpYXOJ60yJ5xG youtube tutorial] series '''(only the first 3 videos for now)''' to complete the first introduction project to familiarize yourself with the software
+
#* To setup KiCad follow the [[KiCad]] '''First Time Setup''' instructions.
# Start working on the Onboarding Projects below! We created a series of projects to act as goals to progress yourselves with KiCad. We have 2 intro projects planned out for now and a 3rd as an optional project. Depending on your pace we could add more. '''You don’t have to complete all of them. Just do your best :D'''
+
# Follow [[User:Rkajjam2|Rahul's]] KiCad [https://www.youtube.com/playlist?list=PLYWKqdG09eYLCqh8V8gjJpYXOJ60yJ5xG youtube tutorial] series '''(only the next 3 videos for now)''' to complete the first introduction project to familiarize yourself with the software
 +
# Start working on the Onboarding Projects below! We created a series of projects to act as goals to progress yourselves with KiCad. We have 1 required project and 2 additional harder ones for if you have extra time after completing the first. '''You don’t have to complete all of them. Just do your best :D'''
 
# '''While working on the onboarding projects''' take a look at these useful guidelines.
 
# '''While working on the onboarding projects''' take a look at these useful guidelines.
 
#* [[Schematic Conventions|KiCad Schematic Conventions]] - has information about specifics regarding each part of the schematic design from naming conventions to symbol creation to part selection
 
#* [[Schematic Conventions|KiCad Schematic Conventions]] - has information about specifics regarding each part of the schematic design from naming conventions to symbol creation to part selection
 
#* [[Layout Standards|KiCad Layout Standards]] - has information about the design guidelines for PCBs and illustrates what is allowed and what isn't
 
#* [[Layout Standards|KiCad Layout Standards]] - has information about the design guidelines for PCBs and illustrates what is allowed and what isn't
# '''After Completing the schematic for your first onboarding project''' watch the [https://youtu.be/Z-K7Q_TfRrM 4th video from the KiCad playlist] and put your work on the PCB repository
+
# '''After Completing the schematic for your first onboarding project''' watch the [https://youtu.be/Z-K7Q_TfRrM 5th video from the KiCad playlist] and put your work on the PCB repository
 
# Finish the layout and push the changes to your branch to get more feedback
 
# Finish the layout and push the changes to your branch to get more feedback
 
# Repeat with the rest of the onboarding projects
 
# Repeat with the rest of the onboarding projects
  
 
==== KiCad Onboarding Projects: ====
 
==== KiCad Onboarding Projects: ====
# <u>Onboarding Goal 1 (insert dates)</u>
+
# <u>Onboarding Goal 1:</u> In this project, it will be much like the tutorial video, except with additional circuitry. You will require 2 buttons and 2 LED’s for this project.
 
#* Requires 2 buttons, and 2 LEDs
 
#* Requires 2 buttons, and 2 LEDs
 
#* When button 1 is pressed, LED 1 turns on
 
#* When button 1 is pressed, LED 1 turns on
 
#* When both buttons are pressed, both LEDs are on
 
#* When both buttons are pressed, both LEDs are on
 
#* When only button 2 is pressed, neither LED is turned on
 
#* When only button 2 is pressed, neither LED is turned on
# <u>Onboarding Goal 2 (insert dates)</u>
+
# <u>Onboarding Goal 2: '''(OPTIONAL CHALLENGE PROJECT):'''</u> Create a 3-input NAND gate using 3 buttons and an LED
 
#* Requires 3 buttons and 1 LED
 
#* Requires 3 buttons and 1 LED
 
#* When all buttons are pressed, the LED turns off
 
#* When all buttons are pressed, the LED turns off
 
#* Else, the circuit remains turned on
 
#* Else, the circuit remains turned on
# <u>Onboarding Goal 3 '''(OPTIONAL CHALLENGE PROJECT)'''</u>
+
# <u>Onboarding Goal 3 '''(OPTIONAL CHALLENGE PROJECT):'''</u> Create an XOR gate that is implemented using 2 inputs and 1 LED output. This project can be done in many more ways than the first two, so if you can think of a creative solution that bends the outline below a little bit, by all means try it out.
 
#* 2 inputs and 1 LED output
 
#* 2 inputs and 1 LED output
 
#* When both buttons are not pressed, the light is off
 
#* When both buttons are not pressed, the light is off
Line 54: Line 77:
  
 
==== Onboarding Project Goals ====
 
==== Onboarding Project Goals ====
The firmware onboarding projects are meant to help you broaden your understanding of the basics of programming, the C++ language, and ISC's codebase so that you can start contributing to actual firmware projects that make the car run. You'll write code to do things like blink an LED or write a message to an OLED display, and in the process learn how to build, flash, and debug your own code.
+
The firmware onboarding projects are meant to help you broaden your understanding of the basics of programming, the C++ language, and ISC's codebase so that you can start contributing to actual car firmware projects. You'll write code to do things like blink an LED or write a message to an OLED display, and in the process learn how to build, flash, and debug your own code.
 +
 
 +
Here are some links below to help you get started.
  
Here are some links below to help you get started. If you're familiar with C++, you can probably skip links 1 and 3 - I'd still recommend going through link 2 as it provides a reasonably detailed explanation of ISC firmware.
+
'''Project 1 is the only official firmware onboarding project. Project 2 is an optional (and harder) project, but recommend for people interested in writing more firmware.'''
  
# [[Onboarding 2021 - What is Firmware?|What is firmware?]]
+
#[[Onboarding 2021 - What is Firmware?|What is firmware?]]
# [[General:Firmware|More detailed explanation of firmware]]
+
#[[General:Firmware|More detailed explanation of firmware]]
# [[Onboarding Fall 2021 - Basics of C++|Basics of C++ (with examples from our code)]]
+
#[[Onboarding Fall 2021 - Basics of C++|Basics of C++ (with examples from our code)]] - the Intro, Variables, Operators, Macros, Conditionals, Functions, Basics of C++ Files, and Objects sections might be helpful for Project 1.
## For those not familiar with C++/OOP,  the Intro, Variables, Operators, Macros, Conditionals, Functions, Basics of C++ Files, and Objects sections might be helpful for Project 1.
+
#<u>Project 1</u> - [[Onboarding Fall 2021 - Project 1 (LED Blinking)|LED blinking project]]
# '''Project 1''' - LED blinking project (WILL ADD LINK)
+
#[https://wiki.illinisolarcar.com/w/index.php/General:Firmware#Communication_Protocols Basics of communications protocols]
# [https://wiki.illinisolarcar.com/w/index.php/General:Firmware#Communication_Protocols Basics of communications protocols]
+
#<u>Project 2</u> - [[Onboarding Fall 2021 - Project 2 OLED Display|OLED Display project]] (Optional Challenge)
# '''Project 2''' - OLED Display project (Challenge) (WILL ADD LINK)
 

Latest revision as of 22:51, 4 February 2022

This page is created to integrate all the electrical onboarding links onto a single page and help provide a flow for the onboarding process. In general, there will be 4 methods of accessing all the electrical team's information for onboarding:

Planned Dates/Deadlines

Spring onboarding will be a shortened and more self paced version of the typical fall onboarding process. This page contains all the tutorials and instructions needed to install all our software and complete the onboarding projects. Like always if you have any questions feel free to ask during meetings or on slack.


Monday 2/7: Finish Git setup, install and setup Kicad.

Wednesday 2/9: Finish Kicad Project Schematic and create PR

Saturday 2/12: Finish Kicad Layout

Monday 2/14: Setup MCUExpresso and finish Firmware project

Wednesday 2/16: End of onboarding info presentation, finish any remaining projects/installation

Saturday 2/19: Receive Mentors and Projects, first meeting as full members. Get OpenLab access by this date


As Spring onboarding is self guided and paced, these dates are a rough guideline of where you should be in order to be on track to finish everything by the end of onboarding. It is encouraged to work ahead if you are able to, or to take more time if needed.

GitHub Instructions

GitHub is a tool we use to share all of our work as a team. It is a great way to ensure all the current work stays updated and there are very little conflicts when working together. Most industry professionals use GitHub for code, however we also use it with our KiCad projects as well as code. Git is hard to learn so don't be upset if you don't understand how it works at the end of onboarding, you'll get more practice and become a pro later :)

  1. Go to the GitHub wiki page and ensure you have a working version of Git on your computer. Look through the Installing Git section of the page.
  2. Look through Jarod's git youtube tutorials to get a better understanding of why we use git as well as a few basic commands
  3. If you'd like more practice with Git, checkout these other interactive tutorials to learn more:

KiCad Instructions

KiCad is an electrical CADing software that our team uses to design the custom circuit boards (aka PCBs) for the solar car. All of our designs exist on the Illini Solar Car GitHub page in the PCB repository. You will clone this repository and any hardware contribution you make to the team will be in here forever :)

  1. First clone the PCB repository and set up KiCad following the instructions in Rahul's first KiCad youtube tutorial or the wiki instructions below.
    • To clone the GitHub PCB repository onto your computer follow the Initial Setup instructions here.
    • To setup KiCad follow the KiCad First Time Setup instructions.
  2. Follow Rahul's KiCad youtube tutorial series (only the next 3 videos for now) to complete the first introduction project to familiarize yourself with the software
  3. Start working on the Onboarding Projects below! We created a series of projects to act as goals to progress yourselves with KiCad. We have 1 required project and 2 additional harder ones for if you have extra time after completing the first. You don’t have to complete all of them. Just do your best :D
  4. While working on the onboarding projects take a look at these useful guidelines.
    • KiCad Schematic Conventions - has information about specifics regarding each part of the schematic design from naming conventions to symbol creation to part selection
    • KiCad Layout Standards - has information about the design guidelines for PCBs and illustrates what is allowed and what isn't
  5. After Completing the schematic for your first onboarding project watch the 5th video from the KiCad playlist and put your work on the PCB repository
  6. Finish the layout and push the changes to your branch to get more feedback
  7. Repeat with the rest of the onboarding projects

KiCad Onboarding Projects:

  1. Onboarding Goal 1: In this project, it will be much like the tutorial video, except with additional circuitry. You will require 2 buttons and 2 LED’s for this project.
    • Requires 2 buttons, and 2 LEDs
    • When button 1 is pressed, LED 1 turns on
    • When both buttons are pressed, both LEDs are on
    • When only button 2 is pressed, neither LED is turned on
  2. Onboarding Goal 2: (OPTIONAL CHALLENGE PROJECT): Create a 3-input NAND gate using 3 buttons and an LED
    • Requires 3 buttons and 1 LED
    • When all buttons are pressed, the LED turns off
    • Else, the circuit remains turned on
  3. Onboarding Goal 3 (OPTIONAL CHALLENGE PROJECT): Create an XOR gate that is implemented using 2 inputs and 1 LED output. This project can be done in many more ways than the first two, so if you can think of a creative solution that bends the outline below a little bit, by all means try it out.
    • 2 inputs and 1 LED output
    • When both buttons are not pressed, the light is off
    • When both buttons are pressed, the light is off
    • Only one button can be pressed for the light to turn on

Firmware Instructions

In order to control our various hardware components, we write firmware code to allow various processes to happen. For example if the brake is pressed, we have a hall effect sensor that gets triggered which sends an enable signal to our Dash in order to turn on the brake lights. All of our firmware is written in C++ and we use MCUXpresso, an eclipse based IDE.

Setup

  1. Clone the GitHub b-fw repository onto your computer by following the Initial Setup instructions here
  2. Go through the MCUXpresso setup instructions. Don't worry about setting up ARGO-fw, just b-fw is fine
  3. Follow the Building and Debugging Code instructions to ensure you are able to setup the project files and build the skeleton code. Don't worry about the Flashing/Debugging Section for now; we'll work on getting that situated as you get your firmware project closer to being completed

Onboarding Project Goals

The firmware onboarding projects are meant to help you broaden your understanding of the basics of programming, the C++ language, and ISC's codebase so that you can start contributing to actual car firmware projects. You'll write code to do things like blink an LED or write a message to an OLED display, and in the process learn how to build, flash, and debug your own code.

Here are some links below to help you get started.

Project 1 is the only official firmware onboarding project. Project 2 is an optional (and harder) project, but recommend for people interested in writing more firmware.

  1. What is firmware?
  2. More detailed explanation of firmware
  3. Basics of C++ (with examples from our code) - the Intro, Variables, Operators, Macros, Conditionals, Functions, Basics of C++ Files, and Objects sections might be helpful for Project 1.
  4. Project 1 - LED blinking project
  5. Basics of communications protocols
  6. Project 2 - OLED Display project (Optional Challenge)