KrakenKodersLights/QUICK_FLASH_GUIDE.md

4.5 KiB

Quick Flash Guide - D1 Mini Blinkin Emulator

What You'll Build

A $7 replacement for the $35 REV Blinkin LED Driver that works identically with FTC code!

Parts List

  • D1 Mini (ESP8266) - $4
  • 2.2kΩ resistor - $0.10
  • 3.3kΩ resistor - $0.10
  • Servo extension cable - $2
  • WS2812B LED strip (30-60 LEDs) - $10-15
  • Soldering supplies

Step 1: Build the Voltage Divider

Why It's Needed

  • Servo port outputs 5V signals
  • D1 Mini only handles 3.3V
  • Without this, you'll fry your D1 Mini!

Quick Assembly

  1. Cut servo cable 6" from female connector
  2. Strip wires (Red=5V, Black=GND, White=PWM)
  3. Solder resistors like this:
White wire ──[2.2kΩ]──┬── Wire to D2
                       │
                    [3.3kΩ]
                       │
                    Black wire
  1. Heat shrink everything

Step 2: Flash the D1 Mini

Install Arduino IDE

  1. Download from arduino.cc
  2. Open Arduino IDE
  3. File → Preferences → Additional Board URLs:
    http://arduino.esp8266.com/stable/package_esp8266com_index.json
    
  4. Tools → Board → Board Manager → Search "ESP8266" → Install

Install Library

Tools → Manage Libraries → Search "Adafruit NeoPixel" → Install

Flash the Code

  1. Open D1Mini_Blinkin_Ready.ino
  2. IMPORTANT: Edit line 20-21 for your setup:
    #define NUM_LEDS 60        // Change to your LED count
    #define BRIGHTNESS 100     // Adjust brightness (0-255)
    
  3. Tools → Board → "LOLIN(WEMOS) D1 R2 & mini"
  4. Tools → Port → Select your COM port
  5. Click Upload (→ button)

Step 3: Wire Everything

Final Connections

Servo Port          D1 Mini            LED Strip
==========          =======            =========
Red ───────────────→ 5V
Black ─────────────→ GND ─────────────→ GND
White ─→[Divider]──→ D2
                     D4 ───────────────→ Data In
                                        5V ← External Power

Power Notes

  • < 30 LEDs: Can use servo port power
  • 30 LEDs: Need external 5V supply for LEDs

Step 4: Test It

With Serial Monitor

  1. Open Tools → Serial Monitor
  2. Set to 115200 baud
  3. You should see:
    D1 Mini Blinkin Emulator v2.0
    Kraken Koders FTC Team
    Ready for PWM signal...
    

With FTC Robot

  1. Configure as servo in robot config
  2. Name it "blinkin"
  3. Use this test code:
RevBlinkinLedDriver blinkin = hardwareMap.get(RevBlinkinLedDriver.class, "blinkin");
blinkin.setPattern(RevBlinkinLedDriver.BlinkinPattern.RAINBOW_RAINBOW_PALETTE);

Troubleshooting

LEDs Don't Light

  • Check D4 → LED data connection
  • Verify LED strip arrow points away from D1 Mini
  • Test with simple color first

No PWM Reading

  • Measure voltage divider output (should be ~3V)
  • Check servo port is powered
  • Verify resistor values

Wrong Colors

  • Some strips are RGB instead of GRB
  • Change line in code:
    // Change from:
    Adafruit_NeoPixel strip(NUM_LEDS, LED_DATA_PIN, NEO_GRB + NEO_KHZ800);
    // To:
    Adafruit_NeoPixel strip(NUM_LEDS, LED_DATA_PIN, NEO_RGB + NEO_KHZ800);
    

D1 Mini Keeps Resetting

  • Too many LEDs for power supply
  • Reduce brightness or LED count
  • Add external 5V power

Quick Test Without Robot

Use a servo tester or Arduino to generate PWM:

// Arduino test signal generator
void setup() {
  pinMode(9, OUTPUT);
}
void loop() {
  // Sweep through patterns
  for(int pw = 1000; pw <= 2000; pw += 10) {
    digitalWrite(9, HIGH);
    delayMicroseconds(pw);
    digitalWrite(9, LOW);
    delay(20);
  }
}

Pattern Reference

PWM (μs) Pattern
1005-1015 Rainbow
1065 Confetti
1315 Breath Red
1325 Breath Blue
1515 Solid Red
1645 Solid Blue
1595 Solid Green
1675 Solid White
1995 Off

Success Checklist

  • Voltage divider outputs 3V (measured)
  • D1 Mini powers on
  • Serial monitor shows "Ready"
  • Green sweep on startup
  • Responds to PWM changes
  • Works with FTC code

Total Cost

  • D1 Mini: $4
  • Resistors: $0.20
  • Cable: $2
  • Total: $6.20 (vs $35 for REV Blinkin)

Need Help?

  • Check serial monitor for debug info
  • Onboard LED blinks = receiving PWM
  • Green startup = code running
  • No response = check voltage divider

You now have a fully functional Blinkin emulator for 1/5 the price!