Learning Goals 5 min
Yesterday you met the family. Today you turn "know all the boards" into a systematic checklist that picks the right one for any project. By the end of this lesson you will be able to:
- Use a five-question checklist to filter the Arduino family down to 1–2 candidate boards for any project brief.
- Estimate program size and RAM use from a feature list, and reject under-spec'd boards before wasting time.
- Balance hard requirements (must work) against soft ones (would be nice) so cost and effort stay in budget.
Warm-Up 10 min
Pick three project ideas from your head — wild ones are fine. Some examples:
- A weather station that tweets daily summaries.
- A wearable rhythm game (mat that lights up when you stomp).
- A self-driving line-follower for the school maker fair.
- An aquarium pump scheduler with phone notifications.
For each, jot down: what radios it needs, how many GPIO, how much RAM, voltage, power source, battery hours.
New Concept · The five-question checklist 25 min
Q1 — Does it need a radio? Which kind?
| Need | Best fit |
|---|---|
| None | UNO R3, Mega, Nano |
| Bluetooth Classic only | UNO + HC-05 module (cheapest) |
| BLE | Nano 33 BLE, UNO R4 WiFi, Nano ESP32, MKR WiFi 1010 |
| WiFi only | Nano ESP32, ESP8266 NodeMCU, MKR WiFi 1010 |
| WiFi + BLE | ESP32 family, UNO R4 WiFi, MKR WiFi 1010 |
| LoRa (long range) | MKR WAN 1310, LoRa add-on shields |
| Cellular | MKR GSM 1400, MKR NB 1500 |
Q2 — How many GPIO do you actually need?
Count every input and output:
- Buttons + switches + sensors (digital + analog).
- LEDs / motors / servos / displays.
- Add 2 for SPI (SCK + COPI + CIPO, with per-device CS).
- Add 2 for I²C (SDA + SCL — shared).
- Add 2 for serial (TX + RX if you talk to another microcontroller).
| GPIO total | Boards |
|---|---|
| ≤ 14 + 6 analog | UNO, Nano |
| ≤ 22 | Most modern boards |
| ~ 54 | Mega 2560 |
| > 54 | Add an I²C / SPI I/O expander (PCF8574, MCP23017) to any small board |
Q3 — How much memory will the sketch need?
Rough estimates for adding common features:
| Feature | Flash needed | RAM needed |
|---|---|---|
| Bare blink + Serial | ~2 KB | ~100 B |
| + Adafruit_GFX + SSD1306 | +15 KB | + 1 KB (framebuffer) |
| + ArduinoJson | +5 KB | + JsonDocument size |
| + WiFi + HTTP client | +30 KB | + 5 KB |
| + HTTPS (TLS) | +50 KB | + 30 KB during handshake |
| + ArduinoBLE | +20 KB | + 4 KB |
| + TensorFlow Lite Micro | +100 KB | + 50 KB+ |
Sum the estimates. Compare with the candidate board's flash/RAM. UNO's 2 KB RAM eats out fast: HTTPS alone won't fit. ESP8266's 80 KB RAM handles WiFi + HTTPS + a few KB of state comfortably.
Q4 — What's the power source?
| Power source | Best fit |
|---|---|
| USB always plugged | Any board |
| Mains adapter | Any board, ~5 V regulator |
| 2 AA / coin cell | Low-power boards: Nano 33 BLE, MKR + sleep modes |
| 4 AA / LiPo | Most ESP / UNO with battery shield |
| Solar + LiPo | ESP32 + TP4056 charger + careful deep sleep |
Q5 — What's the budget?
Cheapest first. For a one-off school project the savings don't matter; for a 30-student class deploying 30 devices, band 1 vs band 4 matters a lot. Prices change, so this course uses price bands: band 1 is the cheapest, and each band up costs roughly twice as much.
| Price band per board | Options |
|---|---|
| 1 · cheapest | Nano clone, NodeMCU ESP8266 |
| 2 · cheap | ESP32 DevKit, Nano ESP32, UNO R3 |
| 3 · mid-priced | Nano 33 BLE, MKR WiFi 1010, UNO R4 WiFi |
| 4 · pricey | Nano 33 BLE Sense |
| 5 · most expensive | Portenta H7 |
The decision tree
- Answer Q1 — radio. Filter the list.
- Answer Q2 — GPIO. Filter further.
- Answer Q3 — memory. Eliminate under-spec.
- Answer Q4 — power. Confirm low-power option if needed.
- Answer Q5 — pick the cheapest survivor.
Worked Example · Pick three boards live 25 min
Brief 1 — Smart Plant Monitor (L03-44)
Requirements list:
- WiFi for dashboard + alerts. (Q1)
- 1 analog (soil) + 1 GPIO (status LED) = 2 GPIO. (Q2)
- WebServer + HTTPS for webhooks: ~80 KB flash, ~35 KB RAM. (Q3)
- USB wall wart, runs continuously. (Q4)
- Budget: band 1–2. (Q5)
Pick
NodeMCU ESP8266. WiFi ✓, 11 GPIO ✓, 80 KB RAM ✓ (HTTPS fits in headroom), USB-powered ✓, band 1. The cheapest qualifying board.
Brief 2 — Wearable Gesture-Trigger
Requirements:
- BLE for phone connection. (Q1)
- 1 IMU (on-board), 1 LED. (Q2)
- TFLite Micro for gesture classification: ~150 KB flash, ~50 KB RAM. (Q3)
- Coin cell / LiPo, runs hours. (Q4)
- Budget: band 4. (Q5)
Pick
Nano 33 BLE Sense. BLE ✓, on-board IMU ✓, 1 MB flash + 256 KB RAM ✓ (TFLite fits), low-power ✓, band 4. Even cheaper option Nano 33 BLE (no Sense suffix) if you bring an external IMU and skip the microphone.
Brief 3 — Maker-fair robot car with phone control + obstacle avoidance + WiFi telemetry
Requirements:
- WiFi + BLE (or just one). (Q1)
- 4 motor IN + 2 enable + 2 sensor (HC-SR04) + 1 LED = 9 GPIO. (Q2)
- WebSocket + sensor sampling: ~50 KB flash, ~20 KB RAM. (Q3)
- 2S LiPo or 4 × AA. (Q4)
- Budget: band 2. (Q5)
Pick
ESP32 DevKit. WiFi + BLE ✓, 24 GPIO ✓, 520 KB RAM ✓, runs from 5V battery via on-board regulator ✓, band 2. Cheap, complete.
Avoid: UNO R3 + WiFi shield + BLE shield = clunky stack of 3 boards that costs more than the ESP32 alone. The ESP32 era killed the "shield stack" pattern.
Basic 5 min
A weather display uses four features from the Q3 table. They are: blink + Serial, GFX + SSD1306, ArduinoJson (1 KB document), and WiFi + HTTP client.
- Use the Q3 table to add up the flash and the RAM it needs.
- Add 50 % headroom to the RAM total.
- Does it fit a UNO R3 (2 KB RAM)? A Nano 33 BLE (256 KB RAM)?
It works if you show each sum line by line and give a yes or no for both boards.
Challenge 1 5 min
A desk robot has these parts. It also prints to the Serial Monitor.
2 servos · 1 DHT11 · 4 buttons · 1 buzzer · 1 I²C OLED · 3 dimmable LEDs · 1 HC-SR04 · 1 potentiometer
- Count the pins it needs. Remember I²C, the HC-SR04's two pins and USB Serial on D0/D1.
- The UNO has 20 usable pins (D0–D13 and A0–A5). Does it fit?
- Write the
const intpin block for a UNO. The 3 LEDs need PWM pins that still work with the Servo library.
It works if your pin block compiles and no pin is used twice. Every LED must sit on 3, 5, 6 or 11.
Challenge 2 5 min
A teammate chose a UNO R3 for a phone-checked weather logger. It uses an OLED, ArduinoJson with a 1 KB document, WiFi and HTTPS to a web service.
- Total its flash and RAM from the Q3 table. Show why the UNO fails.
- Run the five questions. Find the cheapest board in the Q5 table that passes every one.
- Work out how many times more RAM your board has than the logger needs.
It works if your totals are right and your board passes Q1 (WiFi) as well as Q3 (memory).
Challenge 3 · Code the board picker 10 min
Turn the five-question checklist into a sketch. It asks questions in the Serial Monitor and prints a board.
- Ask for the radio: 0 = none, 1 = BLE, 2 = WiFi, 3 = WiFi and BLE.
- Ask for the number of pins, and the RAM needed in KB.
- Ask if it needs a built-in motion sensor (IMU): 0 = no, 1 = yes.
- Use
if/else ifto print one board name.
Use a helper function that waits for a number:
int askNumber(const char* question) {
Serial.println(question);
while (Serial.available() == 0) {
}
int answer = Serial.parseInt();
while (Serial.available() > 0) {
Serial.read();
}
return answer;
}It works if the three Worked Example briefs print NodeMCU ESP8266, Nano 33 BLE Sense and ESP32 DevKit.
Recap 5 min
Board choice is a 5-question filter, not a feel. Radios first, then GPIO, then memory, then power, then cost. Pick the cheapest qualifying board with reasonable headroom. Most school projects land on three families: UNO R3 (simple), ESP8266/ESP32 (WiFi), Nano 33 BLE family (BLE / low-power / ML). Tomorrow we tackle the practical side: what breaks when you move a UNO sketch to a Nano 33 BLE, and how to fix it.
- Hard requirement
- Something the project absolutely needs. Filter out boards that don't meet these.
- Soft requirement
- Nice-to-have. Used to choose between qualifying boards but doesn't exclude any.
- Headroom
- Spare capacity (RAM, flash, GPIO) beyond what the current feature set uses. Lets you add features later without re-spec'ing.
- Decision tree / flowchart
- A series of yes/no questions that funnel to a recommendation. The most reliable way to pick boards consistently.
- I/O expander
- An I²C or SPI chip that adds GPIO. Use when a small board doesn't have enough pins natively.
- Deep sleep
- Microcontroller mode where almost everything is off, drawing µA. Required for any long-life battery project. Covered in L04-37.
- OEM project
- A design intended to ship as a product. Picks based on cost / power / availability much more strictly than a hobby project.
Extra Mission 5 min
Part 1 — Design a gadget through the checklist
Pick a project idea you have been thinking about — a plant waterer, a reaction game, a bedroom door alarm. On paper, run it through the five questions.
Your design must include:
- A one-sentence job for the gadget.
- A written answer to each of Q1 to Q5, with numbers for pins and memory.
- The board it picks, and the runner-up you rejected.
- A quick drawing of the parts around the board.
Part 2 — Make it
Type your answers into your Challenge 3 board picker. Does it agree with you? If not, fix the picker or your answers. Then build the core of the gadget on the UNO with parts from Levels 1–3.
Bring back next class: the picker's answer (a screenshot), the gadget sketch, and a photo of the circuit. For ARD-L04-03, also bring a UNO sketch and any non-UNO board.