Testing & Validation
Testing & Validation
Thorough testing procedures to ensure your Moto32 is functioning correctly before motorcycle installation.
Safety First
Test Equipment
Required
- Multimeter (voltage, continuity, resistance modes)
- 12V Power Supply (current-limited bench supply recommended)
- USB-C Cable (for programming and serial monitoring)
- Test LEDs (with appropriate resistors, 470Ω-1kΩ)
- Alligator Clips or jumper wires
Optional
- Oscilloscope (for signal analysis)
- Current meter (clamp or inline)
- Automotive test light
- Load resistors (10Ω, 10W) for load testing
- Fuse tester
Pre-Power Visual Inspection
Before applying any power:
Checklist
- All components soldered properly
- No visible solder bridges between pins
- All ICs oriented correctly (pin 1 markers align)
- All diodes in correct polarity
- All MOSFETs oriented correctly
- USB-C connector securely attached
- No cold solder joints or lifted pads
- PCB clean of flux residue
- No damaged traces or components
- All required components present (check BOM)
Continuity Tests
Test for shorts with multimeter (continuity mode):
Test Points | Expected Result |
---|---|
12V to GND | Open circuit (no continuity) |
3.3V to GND | Open circuit |
12V to 3.3V | Open circuit |
USB D+ to GND | High resistance (10kΩ+) |
USB D- to GND | High resistance (10kΩ+) |
First Power-Up (USB Only)
Step 1: USB Power Test
- Connect USB-C cable to computer (Moto32 unpowered)
- Watch carefully for:
- Smoke (disconnect immediately if seen)
- Unusual smells
- Excessive heat on any component
- Check Device Manager (Windows) or
lsusb
(Linux):- CH340 device should appear
- May show as "USB Serial" or "CH340"
Expected Current Draw:
- Initial: <100mA
- Idle: 50-80mA typical
- Programming: 150-200mA
Step 2: Voltage Measurements
With USB connected, measure voltages:
Test Point | Expected | Tolerance |
---|---|---|
3.3V Rail | 3.3V | ±0.15V (3.15-3.45V) |
ESP32 VCC | 3.3V | ±0.1V |
CH340 VCC | 3.3V | ±0.1V |
USB VBUS | ~5V | 4.75-5.25V |
If voltages are wrong:
- No 3.3V: Check buck converter (U3) orientation and soldering
- Low voltage: Short circuit or damaged regulator
- Fluctuating: Poor solder joints or intermittent connection
Step 3: Serial Communication Test
- Open Arduino IDE Serial Monitor or PlatformIO terminal
- Set baud rate to 115200
- Press Reset button on Moto32 (or disconnect/reconnect USB)
- You should see ESP32 boot messages:
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00...
Success: Communication working! Failure: Check CH340 soldering, USB cable, drivers.
Programming Test
Upload Test Firmware
- Open Arduino IDE or PlatformIO
- Use the basic test firmware
- Click Upload
- Wait for "Connecting..." message
- Hold BOOT button if needed
- Upload should complete successfully
Verify:
- Compile finishes without errors
- Upload completes (progress to 100%)
- "Hard resetting via RTS pin" message
- ESP32 boots into new firmware
12V Power System Test
Step 1: Initial 12V Power-Up
Setup:
- Disconnect USB (test with 12V only)
- Connect 12V bench supply:
- Positive (+) to Moto32 12V input
- Negative (-) to Moto32 GND
- Set current limit to 500mA
- Power ON
Observations:
- Current draw should stabilize at <200mA
- No smoke or unusual smells
- No excessive heat on any component
- 3.3V rail should be present and stable
Step 2: Voltage Verification
Measure with multimeter:
Test Point | Expected Value |
---|---|
12V Input | 12.0V ±0.5V |
3.3V Rail | 3.3V ±0.1V |
Buck Converter Output | 3.3V |
ESP32 Module VCC | 3.3V |
Step 3: Load Test
- Gradually increase current limit: 500mA → 1A → 2A
- Monitor voltage stability
- Check temperature of:
- Buck converter (U3) - should be warm, not hot
- ESP32 module - slightly warm
- MOSFETs - cool (no load yet)
Expected Current Draw (No Load):
- Idle: 100-150mA
- Wi-Fi active: 200-300mA
- Peak: <500mA without loads
Output Testing
Test Setup
Connect test loads to each output:
Output Terminal
│
[LED] ← Test LED
│
[470Ω] ← Current limiting resistor
│
GND
Alternative: Use automotive test light (12V bulb) for higher current test.
Output Activation Test
Upload this test firmware:
void testOutputs() {
const int outputs[] = {1, 2, 3, 4, 5, 6, 7, 8};
for(int i = 0; i < 8; i++) {
Serial.print("Testing Output ");
Serial.println(i + 1);
digitalWrite(outputs[i], LOW); // Turn ON
delay(1000);
digitalWrite(outputs[i], HIGH); // Turn OFF
delay(500);
}
}
Verify Each Output:
- LED lights when output activated
- LED turns off when output deactivated
- Voltage at output: ~12V when ON, ~0V when OFF
- No flickering or instability
- Smooth on/off transitions
Output Voltage Measurement
For each output, measure with multimeter:
State | Voltage (Output to GND) | Notes |
---|---|---|
OFF (HIGH) | <0.5V | MOSFET fully blocking |
ON (LOW) | 11.5-12V | Close to supply voltage |
On-Resistance Drop | <0.5V | At 1A load |
Load Current Test
Connect increasing loads:
- LED (20-50mA): Should work perfectly
- Small bulb (1A): Measure voltage drop
- 5A load (optional): Use power resistor or automotive bulb
Monitor:
- MOSFET temperature (should be warm, not hot)
- Voltage drop across MOSFET
- Circuit current draw
- Buck converter stability
Input Testing
Pull-Up Test
All inputs should have internal pull-ups enabled in firmware:
pinMode(INPUT_PIN, INPUT_PULLUP);
Test:
- Measure input voltage with multimeter: Should be ~3.3V (pulled high)
- Short input to GND: Should read 0V
- Release: Should return to 3.3V
Switch Simulation
Connect push button between input and GND:
- Upload firmware with input monitoring
- Press button: Serial should show "Input Active"
- Release: Serial shows "Input Inactive"
- Test debouncing with rapid presses
Functional Tests
Test 1: Basic I/O Mapping
Map a button to an LED:
int buttonPin = 9;
int ledPin = 1;
void loop() {
bool pressed = (digitalRead(buttonPin) == LOW);
digitalWrite(ledPin, pressed ? LOW : HIGH);
}
Verify: LED responds immediately to button press.
Test 2: Turn Signal Flasher
void loop() {
static unsigned long lastFlash = 0;
static bool state = false;
if(millis() - lastFlash > 500) {
state = !state;
lastFlash = millis();
digitalWrite(OUT5_PIN, state ? LOW : HIGH);
}
}
Verify: Output flashes at ~1Hz (500ms on, 500ms off).
Test 3: Multiple Outputs Simultaneously
Activate several outputs at once:
digitalWrite(OUT1_PIN, LOW); // Headlight
digitalWrite(OUT3_PIN, LOW); // Tail light
digitalWrite(OUT4_PIN, LOW); // Brake light
Monitor:
- All outputs active simultaneously
- 3.3V and 12V rails remain stable
- Current draw increases appropriately
- No interference between outputs
Long-Term Stability Test
Burn-In Test
Run for 2-4 hours:
- Power from 12V supply
- Activate half the outputs (simulate riding at night)
- Cycle remaining outputs periodically
- Monitor:
- Temperature stability
- Voltage rails remain stable
- No unexpected resets
- Serial output shows no errors
What to Watch:
- Thermal: Components reach steady-state temperature
- Electrical: No voltage droops or fluctuations
- Software: ESP32 runs without crashes or watchdog resets
Vibration Test (Optional)
If you have access to vibration test equipment:
- Secure Moto32 to vibrating surface
- Apply motorcycle-like vibration (10-50 Hz)
- Run functional tests during vibration
- Inspect solder joints after test
Protection Circuit Tests
Reverse Polarity Test
- Set power supply to 12V, 500mA limit
- Deliberately connect backwards (+ to GND, - to 12V)
- Expected: No damage, no power-up (D1 blocks reverse voltage)
- Disconnect, reconnect correctly
- Verify unit still functions normally
Overvoltage Test
- Gradually increase supply voltage: 12V → 14V → 16V
- Monitor 3.3V rail (should remain stable)
- At 16-18V, buck converter should regulate properly
- Do not exceed 20V (rated max for buck converter)
Short Circuit Output Test
- Activate one output
- Momentarily short output to GND (1-2 seconds)
- Expected: MOSFET may get hot, but should survive
- Remove short
- Verify output still functions
Note: MOSFETs can handle short circuits briefly. Prolonged shorts will overheat and potentially damage the device.
Final Validation Checklist
Before installation on motorcycle:
- All 8 outputs tested and working
- All inputs respond correctly
- USB programming and serial communication working
- 3.3V rail stable under all conditions
- 12V input handling correct (9-16V range)
- No unexpected resets or crashes
- Thermal performance acceptable
- Solder joints inspected and acceptable
- Protection circuits verified
- Firmware uploaded and tested
- Documentation of pin assignments complete
Pass/Fail Criteria
PASS Criteria
All of the following must be true:
- ✅ 3.3V rail: 3.15-3.45V under all conditions
- ✅ All 8 outputs activate and deactivate correctly
- ✅ Output voltage: >11.5V when ON (@1A load)
- ✅ USB communication functional
- ✅ ESP32 programs and runs reliably
- ✅ No excessive heat (all <80°C under load)
- ✅ Current draw reasonable (<200mA idle, <5A under full load)
- ✅ No resets or crashes during testing
- ✅ Reverse polarity protection works
FAIL Criteria (Do Not Install)
Any of these indicates a problem:
- ❌ 3.3V rail out of spec or unstable
- ❌ Any output not working
- ❌ Excessive current draw (>500mA idle)
- ❌ Components overheating (>90°C)
- ❌ Random resets or crashes
- ❌ USB communication fails
- ❌ Shorts between power rails
- ❌ Visible damage to components
If unit fails: Troubleshoot and repair before installation. See Troubleshooting Guide.
Test Documentation
Record Your Results
Create a test report:
Moto32 Unit Test Report
Date: [Date]
Unit Serial: [If you're tracking multiple units]
POWER TESTS:
☐ USB power-up: PASS/FAIL
☐ 3.3V rail voltage: _____V
☐ 12V operation: PASS/FAIL
☐ Current draw (idle): _____mA
OUTPUT TESTS:
☐ Output 1: PASS/FAIL, Voltage: _____V
☐ Output 2: PASS/FAIL, Voltage: _____V
[... continue for all 8]
FUNCTIONAL TESTS:
☐ Programming: PASS/FAIL
☐ Serial communication: PASS/FAIL
☐ Input response: PASS/FAIL
☐ Burn-in (2hrs): PASS/FAIL
FINAL: PASS/FAIL
Notes: [Any observations]