Set Up & First Motion
Week 1Assemble the arm, install the firmware in one click, and jog every joint. The whole module exists to buy the "it moved!" moment before any code.
The course · grades 5-12
Eight modules. Thirteen weeks. Two tracks running side by side for grades 5-8 and 9-12. Every module ends with a gripper mission on a desk, not a quiz.
Junior is shorter, not easier in ambition. A two-minute placement quiz picks the track, and a student can switch.
Modules unlock in order, because module 4 genuinely needs module 2 to have happened.
Assemble the arm, install the firmware in one click, and jog every joint. The whole module exists to buy the "it moved!" moment before any code.
Turn a pose into an instruction, and a list of instructions into a program. Junior uses blocks; senior writes Servo, attach() and write() directly.
Pick something up without breaking it or the servo. This is where the physics gets real: a servo told to close past the object stalls, draws current, and resets the board. That is a genuine engineering lesson delivered by a three-dollar part.
The canonical robot task, done reliably ten times in a row. Loops and pose arrays stop being abstractions the moment copy-paste starts failing.
The intellectual peak. Stop thinking in joint angles and start thinking in millimetres. Senior derives the two-link solution from atan2 and the law of cosines, then finds out what happens when acos is handed 1.0000001.
Maps to Ontario MCR3U. These labs grade on printed numbers, so they pass in the simulator with no arm attached, which is what keeps the course moving before kits arrive.
The two joysticks, the button and the LED. The arm starts responding to the world instead of replaying a script, and students discover that a joystick at rest never reads exactly centre.
A program that runs unattended and survives things going wrong. Where students learn that delay() makes a robot deaf, and millis() lets it listen.
Design a task nobody set you, and make the arm do it. Junior chooses from four mission cards; senior writes a spec, builds it, films a ninety-second demo, and reflects on one thing that did not work.
Not by comparing your code to ours. By running it and checking what the hardware did.
Really compiled, by arduino-cli, then executed on a simulated ATmega328P in the browser. There is no pattern-matching on your source.
A check says things like "the shoulder was commanded to 90 degrees", measured from the actual servo pulse the simulator produced. Any code that achieves it passes.
Every check carries written feedback naming the change and where to make it, not just "incorrect". A lab whose starter code already passes is rejected before it ships.
| Module | CSTA | NGSS | Ontario |
|---|---|---|---|
| 00 Set Up | 2-CS-01, 2-CS-02 | MS-ETS1-1 | n/a |
| 01 Joints & Angles | 2-AP-11, 2-AP-13 | MS-ETS1-2 | ICS2O B1 |
| 02 The Gripper | 2-AP-14, 3A-AP-17 | MS-PS3-1 | ICS2O B2, TEJ2O A2 |
| 03 Pick & Place | 3A-AP-14, 3A-AP-16 | MS-ETS1-3 | ICS3U B2, B3 |
| 04 Coordinates & IK | 3B-AP-11, 3A-AP-18 | HS-ETS1-2, HS-PS2-1 | MCR3U A1, ICS3U B3 |
| 05 Sensing | 3A-CS-02, 3A-AP-13 | HS-ETS1-3 | TEJ3M B1, ICS3U C1 |
| 06 Automation | 3B-AP-12, 3B-AP-14 | HS-ETS1-4 | ICS4U B1, B2 |
| 07 Capstone | 3B-AP-21, 3B-AP-23 | HS-ETS1-2 | ICS4U C2, TEJ4M A3 |
Module 4 is worth showing a maths department: atan2, acos and the law of cosines land squarely in MCR3U, and here they have a job to do rather than a worksheet to fill.
Module 0's first lab is open to everyone, no account needed. It runs in the simulator, so you can try it before an arm exists on your desk.