Arduino Based Rover - Semester Capstone Project
C++ implemented on an Arduino & Other Micro Controllers
C++ implemented on an Arduino & Other Micro Controllers
This project will document the steps to create an Arduino based Rover.Β It will be all about learning to use the Arduino Micro-controller and Learning to program it with C and C++, while implementing what you have learned, on a Robot Rover.Β The Rover will have a number of sensors integrated. You will build a drive system, power system and Sensor interface.Β There will be a number of driving challenges, both Remote Controller and Autonomous.Β
Learning Objective:
<List Them>
I'm a huge supporter of Open Source and Creative Commons resources.Β This is another way of saying Free, Equitable and Accessible resources...Β π½οΈ π§ π° π ππ οΈ πΌοΈ - Want to Support Me on this endeavor?
Let's get started... Its going to be a wild, fun, awesome ride...
Web Site: WWW.STEAMCLOWN.ORG | Contact: TopClown@STEAMClown.org | LinkedIn: Jim Burnham | TikTok: STEAM Clown
Consider Supporting my Open Source STEAM Curriculum Development -- Patrion: Jim The STEAM ClownΒ | Amazon: Amazon Classroom Wishlist, Β
Note: TEACHERS!!!! If you are going to use any of these lessons or labs, please let me know.Β I would really like to understand how you are using this material.Β I want to know what works, what does not work, what would you like me to add, and how I can make it better.Β If you changed something, let me know, because it's probably a good idea and you should share it with me, so I can add it and share with everyone else.Β
This Module or lesson is how I teach in my class. Many of the lessons might be specific to my class, but you could probably adjust them for your class.Β I'll try to make them a neutral as I can, so they can be used in any Mathematics, Physics, Computer Science, or any other Engineering / Technology class.Β Let me know how I can make that better. I'll try to keep this unit current and relevant.Β Please let me know if any resource links are broken or not accessible.
Send me email at TopClown@STEAMClown.org Β You can also Join the STEAM Clown's Mailing List.Β If you want to Unsubscribe, click my Unsubscribe From Mailing List link
I would like to thank <Your Company or Organization Here> for their generous support of my classroom and curriculum development.Β <Your Company or Organization Here> has <Your value proposition, call to action, & related content and message>Β
(If you would like to sponsor this, or other Modules or presentation, please contact TopClown@STEAMClown.orgΒ or check out my "How To Help Page"
If you would like to sponsor other Curriculum Development, check out my "How To Help Page" or contactΒ TopClown@STEAMClown.orgΒ
Primer: Β "Aaron, I can imagine no way in which this thing could be considered anywhere remotely close to safe. All I know is I spent six hours in there and I'm still alive... You still want to do it?"
As with any activity, please make sure you are using appropriate safety equipment. Β If you are coding, writing, reading, or working a lab, make sure you stand up and stretch every hour or so,Β Please consider any safety issues connecting to a Raspberry Pi, Arduino, computers and other electronic equipment.
Is building an Arduino based Rover fun?
Microcontroller - A compact integrated circuit designed to govern a specific operation in an embedded system; the heart of an Arduino board.
Digital and Analog I/O - Input and output signals; digital refers to binary (HIGH/LOW), analog involves a range of values (e.g., from sensors).
Sketch vs Program - A C++ program written in the Arduino IDE, typically composed of setup() and loop() functions.
Variables and Data Types - Core programming concepts including int, float, char, and bool used to store and manipulate data.
Functions - Modular blocks of code that perform specific tasks; include built-in Arduino functions (digitalWrite(), delay()) and user-defined ones.
Control Structures - Programming logic used for decision-making and repetition: if, else, for, while, etc.
Pin Mapping - Assigning functions to physical pins on the Arduino; crucial for circuit interaction and correct I/O operation.
Serial Communication - Data exchange between the Arduino and a computer (or other devices) using protocols like UART via Serial.print().
Library - Pre-written code that extends Arduino functionalityβlike controlling displays, motors, or sensors easily.
Embedded System - A hardware-software system designed for a dedicated function; Arduino projects exemplify embedded systems in practice.
<Overview of the Rover project and how we will learn about sensors, power, motors and stuff with C++ and Arduinos and Rovers
Over Arching Goals - Arduino & C++ - π° Slide Presentation
Goal #1 - Learn basic C++ syntax using a C++/G++ compiler - π Coding / π οΈ LAB Activity
Goal #2 - Learn how to C++ stuff on an Arduino - π Coding / π οΈ LAB Activity
Goal #3 - Use the C++ you have learned on and Arduino, on a Robot Rover - π Coding / π οΈ LAB Activity
<Overview of the Rover project and how we will learn about sensors, power, motors and stuff with C++ and Arduinos and Rovers
Rover Lab / Steps - π° Slide Presentation
Rover Lab #1 - Rover Base - π Hardware Build / π οΈ LAB Activity
Rover Lab #2 - Battery & Power On - Rover Power Plate Base - π Hardware Build / π οΈ LAB Activity
Rover Lab #3 - Battery Power to 5 Volts - Rover Power Plate Base - π Hardware Build / π οΈ LAB Activity
Rover Lab #4 - Motor Controller - Rover Power Plate Base - π Hardware Build / π οΈ LAB Activity
Rover Lab #5 - Arduino - Rover Arduino Plate Base - π Hardware Build / π οΈ LAB Activity
Rover Lab #6 - Arduino - Spin The Motors - π Coding /π Hardware Build / π οΈ LAB Activity
Rover Lab #7 - Arduino - Ultrasonic - π Coding /π Hardware Build / π οΈ LAB Activity
Β TINKERCADΒ - Make learning fun with 3D design, Circuits, and Codeblocks.Β TinkerCAD not only lets you learn 3D design, simulate electronic circuits and learn to code.Β You can build a circuit that includes an Arduino, and you can run simulated code.Β You don't need to have the physical hardware.Β You can simulate real world hardware on your computer.Β Re-create ann Arduino, Breadboard & LED lab on your computer.Β Sign up and play
Sign Up & Create A TinkerCAD Account - βοΈ Sign Up / - π° Slide Presentation
C++ Programming - Your First Arduino Design - π Coding / π οΈ LAB Activity - π° Slide Presentation
C++ Programming - Using An Arduino & A Breadboard - π Coding / π οΈ LAB Activity - π° Slide Presentation
<Overview of the Rover project and how we will learn about sensors, power, motors and stuff with C++ and Arduinos and Rovers
Over Arching Goals - Arduino & C++ - π° Slide Presentation
Goal #1 - Learn basic C++ syntax using a C++/G++ compiler - π Coding / π οΈ LAB Activity
Goal #2 - Learn how to C++ stuff on an Arduino - π Coding / π οΈ LAB Activity
Goal #3 - Use the C++ you have learned on and Arduino, on a Robot Rover - π Coding / π οΈ LAB Activity
This Lesson is coming soon - click here to be notified when it's available - Coding & Micro Controller Newsletter
Β Overview
C++ / Arduino - <Title> - Lesson Tutorial
C++ / Arduino - <Title> - Slide Presentation
Arduino Is An Open-source Electronics Platform, with easy to use hardware & software. It is intended for anyone making interactive projects.Β Arduino can sense & control itβsΒ environment. it is good at receiving information from sensors on input pins.Β It can be use to affect its surroundings by controlling lights, motors, actuators, etc on output pins.Β You can tell your Arduino what to do.Β You can write code in the Arduino programming language of C++.Β
C++ / Arduino -Β Arduino Introduction - π° Slide Presentation
Signup for the Replit Browser coding IDE - βοΈ Sign Up / - π° Slide Presentation
Signup for TinkerCAD (Browser based Arduino simulation) - βοΈ Sign Up / - π° Slide PresentationΒ
This Lesson will cover "Asking Questions" and Looping or Iterating.Β We will explore how C++ asks questions, what the answer can be and what to do based on that answer.
Β Overview
C++ / Arduino - IF /ELSE IF / ELSE - Lesson Tutorial (Coming Soon)
C++ / Arduino - IF /ELSE IF / ELSE Β - π° Slide Presentation
In most computer programming languages, a while loop is a control flow statement that allows code to be executed repeatedly based on a given Boolean condition.Β The while loop can be thought of as a repeating if statement.
Β Overview
C++ / Arduino - While Loops - Lesson Tutorial
C++ / Arduino - While Loops - π° Slide Presentation
This Lesson will introduce you to the for loop coding control structure.Β This loop structure, lets you preform an operation for a specific, pre-calculated number of times.
Β Overview
C++ / Arduino - For Loops - Lesson Tutorial
C++ / Arduino - For Loops - π° Slide Presentation
This Lesson is all about reading the Arduino Analog pins
Β Overview
C++ / Arduino - Reading Analog Pins - Lesson Tutorial
C++ / Arduino - Reading Analog Pins - π° Slide Presentation
This Lesson is an introduction to using an Arduino to read the analog value produced by a Photoresistor in a Voltage divider circuit.
Β Overview
C++ / Arduino - Rube Goldberg - Reading Analog Values From A Potentiometer - Lesson Tutorial
C++ / Arduino - Rube Goldberg - Reading Analog Values From A Potentiometer - π° Slide Presentation
This Lesson is an introduction to using an Arduino to read the analog value produced by a Photoresistor in a Voltage divider circuit.
Β Overview
C++ / Arduino - Rube Goldberg - Reading Analog Values From A Photoresistor - Lesson Tutorial
C++ / Arduino - Rube Goldberg - Reading Analog Values From A Photoresistor - π° Slide Presentation
This Lesson is all using an Ultrasonic sensor to measure distance.Β Using the Arduino, you can make decisions about how close or fare something is. Β If a wall is too close, stop the robot.Β Sound an alarm if an object is moved too far away...
Β Overview
C++ / Arduino - Ultrasonic - Measuring Distance Lab - Lesson Tutorial
C++ / Arduino - Ultrasonic - Measuring Distance Lab - π° Slide Presentation
This Lesson is all using LCD display to communicate with a User
Β Overview
C++ / Arduino - User Interface & Communication - Liquid Cristal Displays Lab - Lesson Tutorial
C++ / Arduino - User Interface & Communication - Liquid Cristal Displays Lab - π° Slide Presentation
This Lesson is all using LCD display to do more than just display a message.Β In this Lesson/Lab, you will create a menu structure to let a user make choices and selections to control a program flow.
Β Overview
C++ / Arduino - User Interface & Communication - Liquid Cristal Displays Lab - Lesson Tutorial
C++ / Arduino - User Interface & Communication - Liquid Cristal Displays Lab - π° Slide Presentation
Let's make some sound.Β The Arduino can create Tones, and you can use this to create sound and even music
Β Overview
C++ / Arduino - User Interface & Communication - Sound / Tones Lab - Lesson Tutorial
C++ / Arduino - User Interface & Communication - Sound / Tones Lab - π° Slide Presentation
Analog inputs - POT, PHOTO
Analog - five buttons, 1 input
This Lesson is coming soon - click here to be notified when it's available - Coding & Micro Controller Newsletter
Β Overview
C++ Programming - <Title> - Lesson Tutorial
C++ Programming - <Title> - Slide Presentation
Lessons I'm Going To Add
This Lesson is all using an Ultrasonic sensor to measure distance.Β Using the Arduino, you can make decisions about how close or fare something is. Β If a wall is too close, stop the robot.Β Sound an alarm if an object is moved too far away...
Tell me which to work on first? - Coding & Micro Controller Newsletter
Β Overview
C++ / Arduino - Program Timing - Stop Using delay(1000) - π° Slide Presentation
C++ / Arduino - Multiple Buttons on 1 Analog Pin - π° Slide Presentation
C++ / Arduino - Program Timing - Interrupts - π° Slide Presentation
C++ / Arduino - More on Functions and Libraries - π° Slide Presentation
C++ / Arduino - User Interface & Communication - 8X8 LED Matrix - π° Slide Presentation
C++ / Arduino - User Interface & Communication - I2C Communication - RGB LEDS - π° Slide Presentation
C++ / Arduino - User Interface & Communication - Serial Communication - π° Slide Presentation
C++ / Arduino - User Interface & Communication - Connecting A Keyboard - π° Slide Presentation
C++ / Arduino - User Interface & Communication - Graphics on OLED Screen - π° Slide Presentation
C++ / Arduino - Sensing The World - IR Reflective Sensors - π° Slide Presentation
C++ / Arduino - Sensing The World - Load Sensors - π° Slide Presentation
C++ / Arduino - Sensing The World - 9-Axis Sensors - π° Slide Presentation
C++ / Arduino - User Interface & Communication - Bluetooth Communication - π° Slide Presentation
C++ / Arduino - User Interface & Communication - WIFI Communication - π° Slide Presentation
C++ / Arduino - User Interface & Communication - RFID Communication - π° Slide Presentation
Still thinking...
This Lesson is all about reading the Arduino Analog pins
Β Overview
C++ / Arduino - Rube Goldberg - 1 Arduino 1 Sensor 1 Motor - Lesson Tutorial
C++ / Arduino - Rube Goldberg - 1 Arduino 1 Sensor 1 Motor - π° Slide Presentation
This Lesson is all about spinning a salvaged DC motor.Β Most DC motors pulled from a printer really should be running at 9+ volts, will run at 5 volts. This lab is about breadboarding a motor with out an Arduino orΒ controller.
Β Overview
C++ / Arduino - Rube Goldberg - Spin A DC Motor Lab - Lesson Tutorial
C++ / Arduino - Rube Goldberg - Spin A DC Motor Lab - π° Slide Presentation
This Lesson is all about spinning a salvaged DC motor using an Arduino to control it.Β This lab should work, and while most DC motors pulled from a printer will run at 5 volts, normally the Arduino is not really meant to drive a load like a DC motor.Β Later you will also use a Motor Controller, but for now try just spinning a motor and control it with a program. Β It should work, but there are better ways to do this that you will learn later.
Β Overview
C++ / Arduino - Rube Goldberg - Using An Arduino To Spin A Motor Lab - Lesson Tutorial
C++ / Arduino - Rube Goldberg - Using An Arduino To Spin A Motor Lab - π° Slide Presentation
This Lesson is all about spinning a salvaged DC motor.Β Most DC motors pulled from a printer really should be running at 9+ volts, will run at 5 volts. This lab is about breadboarding a motor with out an Arduino orΒ controller.
Β Overview
C++ / Arduino - Rube Goldberg - Introduction to Servos & Servo Control - Lesson Tutorial
C++ / Arduino - Rube Goldberg - Introduction to Servos & Servo Control - π° Slide Presentation
This Lesson is all about using a Relay to control larger voltages with smaller voltages.Β The Arduino is a low voltage (5 volts) low current (200mA I/O) device, but using a Relay, you can control large voltages - 24 -200 DC volts or even 240 AC voltage
Β Overview
C++ / Arduino - Rube Goldberg - Relays - Controlling Big Voltage - Lesson Tutorial
C++ / Arduino - Rube Goldberg - Relays - Controlling Big Voltage - π° Slide Presentation
This Lesson is an introduction to Solenoids and how these Electro-Magnetic devices work and how they can be used to move a load, leaver, or even push something. This lesson comes after the Relay lesson/labs, because Solenoids typically need to be switched with 24 volts DV/AC and an Arduino can't do that directly... So you use a Relay to control the voltage to the Solenoid.
Β Overview
C++ / Arduino - Rube Goldberg - Solenoids - Lesson Tutorial
C++ / Arduino - Rube Goldberg - Solenoids - π° Slide Presentation
This Lesson is coming soon - click here to be notified when it's available - Professional Development Newsletter
Mechatronics - <topic> - π Lesson Tutorial
Mechatronics - <topic> - π½οΈ Video / Podcast
Mechatronics - <topic> - π° Slide Presentation (Coming Soon)
Mechatronics - <topic> - LAB #1 - π οΈ LAB Activity
Mechatronics - <topic> - LAB #2 - π οΈ LAB Activity
Mechatronics - <topic> - LAB #3 - π οΈ LAB Activity
If you are a teacher and want to connect and teach this Lesson or Module, discuss how I teach it, give me feedback, please contact me at TopClown@STEAMClown.orgΒ
To access this Lesson Plan and the Teacher collaboration area, you will have needed to connect with me so I can Share the content with you.Β Please go toΒ the Teachers & Partner Page, check out my Licensing and fill out my Collaboration and Curriculum Request Form.Β I'll review and then grant you access to the requested areas and lesson plans if they exist.
If you have questions or feedback on how I can make a presentation, lesson, lab better please give use my Feedback Form.
Iβll work on getting these in, but itβs the last thing I want to work on :-) When I have them updated, Iβll move to the top of the Lesson Plan.Β
NGSS: <list standard numbers>
California CTE Standards: <list standard numbers>
Related Instructional Objectives (SWBAT):Β <list standard numbers>
CCSS: nnn, RSIT: nnn, RLST: nnn, WS: nnn, WHSST: nnn, A-CED: nnn, ETS: nnnΒ <list standard numbers>
Main Standard:
Priority standards:
National Standards:
Reference Text Book - Basic College Mathematics with Early Integers 4th edition - Elayn Martin-Gay - University of New Orleans - Pearson
Reference Sites -Β
https://imgbin.com/png/ZJtzkYZZ/under-construction-png
Understanding Course Structure and Certification Opportunities
Getting Started with C++ Programming
Differentiating between machine and high-level languages
Understanding machine code and compilation
Working with variables, integers, and characters
Utilizing comments in code
Basics of flow control
Dealing with streams and basic I/O operations
Writing simple programs
Module 1 Test
Controlling program flow
Exploring more data types
Conditional instructions: if, else, switch
Understanding loops and controlling loop execution
Working with logic, bitwise, and arithmetic operators
Introduction to vectors and multidimensional arrays
Declaring and initializing structures
Module 2 Test
Designing, declaring, and invoking functions
Understanding pointers and their usage
Different methods of passing parameters and their purpose
Working with default parameters and inline functions
Understanding overloaded functions
Sorting data
Managing memory dynamically
Module 3 Test
Understanding arrays of pointers
Working with conversions
Manipulating strings: declarations, initializations, assignments
Utilizing strings as examples of objects: methods and properties
Declaring and using namespaces
Handling exceptions in code
Module 4 Test
C Essentials 2 β Final Test (Score 70% or more to qualify for a 20% discount on the CPE exam)
Become CPE certified (Paid Option)
Module 1: Absolute Basics - Introduction to Computer Programming
languages: natural and artificial;
machine languages;
high-level programming languages,
obtaining the machine code: compilation process;
variables;
integer values in real life and in C++;
integer literals;
characters;
comments;
the basics of flow control;
dealing with streams and basic I/O operations;
writing simple programs.
Module 2: Advanced flow control and data aggregates
how to control the flow of the program;
more data types;
conditional instructions: if, else, switch;
loops and controlling the loop execution;
logic, bitwise and arithmetic operators;
vectors, multidimensional arrays;
declaring and initializing structures.
Module 3: Extending expressive power: pointers, functions, and memory
designing, declaring, and invoking functions;
pointers;
different methods of passing parameters and their purpose;
default parameters;
inline functions;
overloaded functions;
sorting;
memory on demand.
Module 4: Accessing various data types
arrays of pointers;
conversions;
strings: declarations, initializations, assignments;
strings as an example of objects: (methods and properties)
using and declaring namespaces;
dealing with exceptions.
Section 1 Test
Key: π° Slides / Audio π§ / π½οΈβΆοΈ Video/YouTube / π§βΆοΈπ½οΈ Audio/Video / β¨ Resources /Β πΌοΈ Tutorial / π Reading Activity / π Writing Activity / π π Reading/Writing / π Coding / π οΈ LAB Activity / π Quiz /Β π Review /Β βοΈ Mastery Check / βοΈ Sign Up /π Extra Credit / πΈοΈ Web Links / π©π½βππ§π½βππ§πΏβππ©βπ« Class / π΅οΈππ Certificate / ποΈ π Collecting Survey Data
/π§ Review / π¦Ύ Practice / πLevel Up /
ποΈπ¦π€π―Β π§
- π¦ Special Project -
Assignment Type: β Establishing (Minimum Standard) / βοΈ Developing (Digging Deeper) / π Aspiring (Putting It Together)
This is an β Establishing Assignment (Minimum Standard)Β - "Everyone Do" Assignment
This is an βοΈ Developing (Digging Deeper) - "Everyone Should Do, To Stretch" Assignment
This is an π Aspiring (Putting It Together)Β - "When you have done the β Establishing andβοΈ Developing" Assignment
π Formative Quiz - π Review
π Quiz -π Mastery Path
π Summative Quiz -βοΈ Skills Mastery Check
Quiz - verify that they are all listed as a "Formative", "Mastery Path", or "Summative"Β
π Formative Quiz - These are quizzes that the students can take a few times. I have them either set for unlimited times, or 3-5 times, where the final score is their average. The idea is that these Formative Quizzes are designed for students to learn and master a skill.Β while I want them to ger 100%, and when it's set to unlimited tries, the student should get 100% eventually.Β When the quiz is set to 3-5 tries with an average, then they should be prepared and should take the quiz seriously. I set the quiz to not show the right answer, but I do let them see their wrong answer.Β I also put the explanation of the right and wrong answer in the right and wrong answer prompt for each question.Β That way they can see why they got the answer wrong and learn from that experience.Β Β
8.1.0.3.2.4 - Python - Ch 3 - Functions - Quiz #2 -Built-In Functions - π Formative Quiz
π Quiz -π Mastery Path - These Mastery path quizzes are to be presented after the student has had a chance to do some labs and some Formative quizzes. Β The goal is to let students have 2 chances to take this quiz, and take the average of the 2 attempts.Β Based on the average, they will be presented with a Canvas Mastery Path, where they will have an option for take additional quiz and assignments to help with remediation.Β This will get them ready to take the Summative Quizzes.
8.1.0.3.3.1 -Β Python - Ch 3 - Functions - Mastery Quiz #1 - π Quiz -π Mastery Path
π Summative Quiz -βοΈ Skills Mastery Check - These Mastery path quizzes are to be presented after the student has had a chance to do some labs and some Formative quizzes. Β The goal is to let students have 2 chances to take this quiz, and take the average of the 2 attempts. That will be their final module/subject topic grade.
8.1.0.3.3.1 -Β Python - Ch 3 - Functions - Skills Mastery Check Quiz #1 - π Summative Quiz -βοΈ Skills Mastery Check