What is the HERO Board?
The HERO Board is an open-source, Arduino Uno-compatible microcontroller board included in every 30 Days Lost in Space kit. It runs the same ATmega328P chip as the classic Arduino Uno, which means every Arduino Uno tutorial, library, and shield works out of the box.
Open Source
The HERO Board is fully open source. You can view the schematics, PCB layout, and bill of materials on GitHub:
github.com/HowardCraft/HERO-Board
Feel free to study the design, suggest improvements, or even manufacture your own. That's the spirit of open-source hardware.
Key Specifications
| Feature | Value | |---------|-------| | Microcontroller | ATmega328P | | Clock Speed | 16 MHz | | Operating Voltage | 5V | | Input Voltage (recommended) | 7–12V | | Digital I/O Pins | 14 (6 with PWM) | | Analog Input Pins | 6 (A0–A5) | | Flash Memory | 32 KB (0.5 KB used by bootloader) | | SRAM | 2 KB | | EEPROM | 1 KB | | USB | Type-B (for programming and power) |
Pin Layout
Digital Pins (0–13)
| Pin(s) | Function | Notes | |--------|----------|-------| | 0 (RX), 1 (TX) | Serial communication | Avoid for general I/O — used for USB/Serial | | 2 | Digital I/O, External Interrupt 0 | Great for buttons with interrupts | | 3~ | Digital I/O, PWM, Interrupt 1 | One of 6 PWM pins | | 4 | Digital I/O | General purpose | | 5~ | Digital I/O, PWM | Timer0-based PWM | | 6~ | Digital I/O, PWM | Timer0-based PWM | | 7 | Digital I/O | General purpose | | 8 | Digital I/O | General purpose | | 9~ | Digital I/O, PWM | Timer1-based PWM | | 10~ | Digital I/O, PWM, SS | SPI slave select; Timer1-based PWM | | 11~ | Digital I/O, PWM, MOSI | SPI data out; Timer2-based PWM | | 12 | Digital I/O, MISO | SPI data in | | 13 | Digital I/O, SCK, Built-in LED | SPI clock; onboard LED for quick testing |
Pins marked with ~ support PWM (analogWrite).
Analog Pins (A0–A5)
| Pin | Function | Notes | |-----|----------|-------| | A0–A3 | Analog input | 10-bit ADC (0–1023) | | A4 (SDA) | Analog input / I2C data | Used by OLED, sensors over I2C | | A5 (SCL) | Analog input / I2C clock | Used by OLED, sensors over I2C |
All analog pins can also be used as digital pins (numbered 14–19).
Power Pins
| Pin | Description | |-----|-------------| | 5V | Regulated 5V output (from USB or regulator) | | 3.3V | Regulated 3.3V output (up to 50mA) | | GND | Ground — multiple pins available on both sides | | VIN | Raw voltage input (7–12V) — bypasses USB | | RESET | Pull LOW to reset the board |
Powering the Board
| Method | Voltage | When to Use | |--------|---------|-------------| | USB cable | 5V from computer | Programming + light circuits | | DC barrel jack | 7–12V | Standalone projects away from the computer | | VIN pin | 7–12V | Battery packs, external supplies |
When powered via USB and barrel jack simultaneously, the board automatically selects the higher voltage source.
Programming the HERO Board
In the Arduino IDE
- Plug in the USB cable
- Open Tools > Board and select "Arduino Uno"
- Open Tools > Port and select the COM port that appeared
- Write your code (or open an example sketch)
- Click Upload (right arrow button)
Board Not Showing Up?
- Windows: You may need the CH340 USB driver (the HERO Board uses a CH340G USB-to-serial chip). Download from the CH340 driver page.
- Mac: Modern macOS versions include CH340 support. If not, install the driver above.
- Linux: CH340 is supported out of the box on most distributions.
Select the Right Board
Since the HERO Board is Arduino Uno-compatible, always select "Arduino Uno" as the board type in the Arduino IDE. Do not select "Arduino Mega" or any other board.
Memory Limits
With 32 KB of flash and 2 KB of SRAM, you'll need to be mindful of memory on larger projects:
- Strings eat SRAM fast: Use
F()macro to keep string literals in flash:Serial.println(F("Hello!")) - Large arrays: Store lookup tables in PROGMEM
- Library overhead: Some libraries (like U8g2) use significant SRAM for display buffers (~1 KB for a 128x64 OLED)
Built-in LED
Pin 13 has an LED soldered directly on the board. You can use it for quick debugging without any external wiring:
void setup() {
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13, HIGH);
delay(500);
digitalWrite(13, LOW);
delay(500);
}
If this sketch runs and the LED blinks, your board is working.
HERO Board vs Arduino Uno
| Feature | HERO Board | Arduino Uno | |---------|-----------|-------------| | Microcontroller | ATmega328P | ATmega328P | | Clock | 16 MHz | 16 MHz | | USB Chip | CH340G | ATmega16U2 | | Form Factor | Standard Uno | Standard Uno | | Shield Compatible | Yes | Yes | | Open Source | Yes (GitHub) | Yes | | Price | Included in kit | ~$25 standalone |
The only functional difference is the USB-to-serial chip (CH340G vs ATmega16U2). This may require a driver install on some systems but has zero effect on code or functionality.
Tips
- Test first: When you get your kit, upload the Blink sketch before building any circuit. If pin 13's LED blinks, everything is good.
- Disconnect before wiring: Always unplug USB before changing your breadboard circuit to avoid accidental shorts.
- Pin 13 quirk: Pin 13 has an onboard LED and resistor, which can interfere with some input circuits. Prefer other pins for sensitive inputs.
- Reset button: If your code gets stuck in a bad loop, press the reset button on the board to restart the sketch.
- Don't exceed 40mA per pin: Each I/O pin can source or sink a maximum of 40mA. Use transistors or MOSFETs for higher-current loads.
- Total current limit: The 5V regulator can supply ~500mA total across all pins. Plan accordingly when using multiple LEDs or displays.