4.5 KiB
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
- Cut servo cable 6" from female connector
- Strip wires (Red=5V, Black=GND, White=PWM)
- Solder resistors like this:
White wire ──[2.2kΩ]──┬── Wire to D2
│
[3.3kΩ]
│
Black wire
- Heat shrink everything
Step 2: Flash the D1 Mini
Install Arduino IDE
- Download from arduino.cc
- Open Arduino IDE
- File → Preferences → Additional Board URLs:
http://arduino.esp8266.com/stable/package_esp8266com_index.json - Tools → Board → Board Manager → Search "ESP8266" → Install
Install Library
Tools → Manage Libraries → Search "Adafruit NeoPixel" → Install
Flash the Code
- Open
D1Mini_Blinkin_Ready.ino - IMPORTANT: Edit line 20-21 for your setup:
#define NUM_LEDS 60 // Change to your LED count #define BRIGHTNESS 100 // Adjust brightness (0-255) - Tools → Board → "LOLIN(WEMOS) D1 R2 & mini"
- Tools → Port → Select your COM port
- 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
- Open Tools → Serial Monitor
- Set to 115200 baud
- You should see:
D1 Mini Blinkin Emulator v2.0 Kraken Koders FTC Team Ready for PWM signal...
With FTC Robot
- Configure as servo in robot config
- Name it "blinkin"
- 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!