ZachLabs Arduino

Introduction

I created this document for the AP Computer Science Principles course at Tesla STEM High School. My primary goal was to create a kit with twice as many parts as the SparkFun Tinker Kit for half the price by ordering directly from AliExpress. This required a new curriculum for the new set of parts. The parts list for the kit is below.

My personal goal was to create a new curriculum that deliberately emphasized having students build complete projects from scratch, instead of giving them completed circuits and asking them to fill in blanks in the code or rearrange code snippets to make the program work. The result is a set of labs that each introduce a new component, provide a fully working example of a circuit with code, and pose an assignment that asks students to remix the circuits and code from this and previous labs into something new that satisfies a specification.

Assumptions

This curriculum was written for AP CSP students who had already been introduced to Scratch and then Python. Neither is necessary, but there are places where the curriculum talks about how the Arduino's C++ is different from Python. Programming microcontrollers can be confusing, so starting to program with a more forgiving language in a programming environment with better feedback (i.e. Python, on both counts) is something worth considering.

This curriculum also assumes that someone has shown you how to install the Arduino IDE, hook up your Arduino over USB, configure the board and serial port settings in the Arduino IDE, and upload a program to the Arduino. Instructions for this may be added in the future, but can be easily found elsewhere, if not figured out experimentally.

One of the stronger design choices I made was to avoid talking too much about electronics in any of the labs. There are references made to voltage and current, and students with a basic understanding of circuits will probably have fewer questions about wiring things up, but the document generally shows how to hook things up in a way that requires no understanding of electronics. I think about it in terms of "circuit patterns", with examples of how to hook up parts like switches and LEDs and instructions for how to repeat those patterns (like selecting which I/O pins to use). After using this curriculum we got feedback from some students that they would have liked to see circuit diagrams, something I may add to individual labs or as an appendix in the future.

Parts List

Here's a full list of the parts that we used to build our kits, with prices and links from June 2021:

Description Quantity Unit Price Total Price Source
Cardboard storage box 1 $0.90 $0.90 Amazon
Small zip-lock baggies (3"x5") 5 $0.02 $0.10 Amazon
Custom stickers for storage boxes (4"x2") 1 $0.50 $0.50 PsPrint / UPrinting
Arduino Uno (Blue) 1 $4.18 $4.18 Great Wall Electronics
Half-sized breadboard (White) 1 $1.11 $1.11 Great Wall Electronics
Jumper wires (M-M, 10cm) 40 $0.02 $0.64 Great Wall Electronics
Jumper wires (M-F, 20cm) 10 $0.02 $0.20 Great Wall Electronics
16x2 character LCD 1 $2.63 $2.63 Great Wall Electronics
Servo motor (9g) 2 $1.45 $2.90 Great Wall Electronics
Touch sensor (Blue) 1 $0.22 $0.22 Great Wall Electronics
Rotary encoder 1 $0.52 $0.52 Great Wall Electronics
X/Y joystick module 1 $0.46 $0.46 Great Wall Electronics
Photoresistor 1 $0.04 $0.04 Great Wall Electronics
Blue LED (B to B) 5 $0.01 $0.04 Great Wall Electronics
Green LED (G to G) 5 $0.01 $0.04 Great Wall Electronics
Red LED (R to R) 5 $0.01 $0.04 Great Wall Electronics
Yellow LED (Y to Y) 5 $0.01 $0.04 Great Wall Electronics
Ultrasonic rangefinder 1 $0.64 $0.64 Great Wall Electronics
Battery holder (4x AA) 1 $0.70 $0.70 Great Wall Electronics
Power jack for battery holder (DC005 Male) 1 $0.13 $0.13 Great Wall Electronics
RGB LED (Diffused Cathode) 5 $0.02 $0.10 Samiore
Potentiometer (10k) 3 $0.10 $0.29 Samiore
Knob for potentiometer 1 $0.08 $0.08 A+A Technology
Piezo speaker 3 $0.09 $0.26 A+A Technology
Pushbutton (6x6x6) 10 $0.02 $0.15 A+A Technology
Two-way switch (SPDT) 5 $0.01 $0.07 A+A Technology
LED bar graph 1 $0.26 $0.26 Survy2014
LED 7-segment display (Common Cathode) 1 $0.10 $0.10 DSSRQI Official
Resistor (330R) 20 $0.00 $0.10 DSSRQI Official
Resistor (10K) 5 $0.00 $0.02 DSSRQI Official
Full-size USB cable (6ft) 1 $1.40 $1.40 Monoprice

I wasn't able to find a pre-assembled battery pack on AliExpress, so instead we ordered a bunch of battery packs and power jacks and soldered them together while assembling the kits. If you don't need to run the kits on batteries (they're kind of wasteful, requiring 4x non-rechargable AA batteries) feel free to omit them. The custom stickers can also be skipped, or sourced from somewhere else, but make the kits feel more complete. Here's a PSD template based on the sticker we used. There's also a printable resistor diagram that can be cut out and included with each bag of resistors.

The prices above are vague and don't always include shipping, but the final price was about $20 per kit. I've listed some sellers for your convenience, but it's very possible that they won't be selling these items in the future, or that prices will change, or any number of problems like that. AliExpress is cheap, but not convenient!

We didn't run into this problem, but when importing goods from another country you may have to pay import fees, the rules of which vary depending on where you live. In the USA it seems that shipments under $800 are exempt? This is certainly not my area of expertise. I only write this vague warning because I wouldn't want you to get unexpectedly burned!

Credits

Many thanks to Andy Christensen at Tesla STEM High School for letting me volunteer in his classroom and helping me write this document by providing me with his original lessons and extensively proofreading and suggesting improvements.

With the exception of the piano keyboard diagram in Lab 6, which comes from this site, all of the images in this document are either made by me, copied from Wikipedia, or copied from an AliExpress store page linked in the parts list above. The wiring diagrams started in Fritzing, but ended up in Photoshop so that I could make better looking wires.