90 lines
4.2 KiB
Markdown
90 lines
4.2 KiB
Markdown
# Corsair Strafe RGB Mk. 2 Automatic Backlight
|
|
|
|
This project automatically controls the RGB backlight of a Corsair Strafe RGB
|
|
Mk. 2 keyboard based on ADC readings from an attached light dependent resistor.
|
|
The backlight automatically turns bright white when the LDR reading is below
|
|
a programmed threshold and otherwise keeps it at a dim level
|
|
|
|

|
|
|
|
## Setup
|
|
|
|
### Hardware
|
|
|
|
You will need the following hardware to make the device:
|
|
- Raspberry Pi Pico
|
|
- USB extension cable
|
|
- light dependent resistor such as GL5528 (specific part number may vary)
|
|
- 10k ohm resistor (resistance value may vary)
|
|
|
|
You will need to cut the USB extension in half and connect the wires from the
|
|
female end to the Raspberry Pi Pico. The default configuration is to attach the
|
|
USB's green wire to pin 1/GP0 and USB's white wire to pin 2/GP1. You will also
|
|
need to connect the red to 5V VBUS/VSYS (since you'll be powering from the
|
|
USB host device, VBUS should be fine) and the black to any ground pin. Pin 38
|
|
is the closest and most convenient. While you can connect the Raspberry Pi Pico
|
|
to the host device using the micro USB port and a micro USB cable, since
|
|
you have already sacrificed half of the USB extension cable, you might as well
|
|
use the male half to create a standard USB-A connection. If you wish to do so,
|
|
then simply connect the red and black wires of the male connector end to
|
|
VBUS (5V) and GND, respectively. For the data wires, you can solder them to the
|
|
two test points TP2 and TP3 on the back of the Raspberry Pi Pico. The white
|
|
cable goes to TP2 and the green cable to TP3.
|
|
|
|

|
|
|
|
The LDR should then be connected to the ADC2 pin (pin 34/GP28) and 3.3V (pin 36)
|
|
or alternatively to the ADC_VREF (pin 35) and the regular resistor between ADC2
|
|
and any ground, including ADC_GND (pin 33). The results look something like
|
|
the following.
|
|
|
|

|
|
|
|
The individual wires on the USB can be fragile, so hot glue or other strain
|
|
relief is a good idea. There is also a [model for a 3D printed
|
|
enclosure](pico-usb-ldr.stl) that you can use to place the Pico inside with a
|
|
hole for the LDR to detect ambient light.
|
|
|
|

|
|
|
|
## Software
|
|
|
|
Flash the [corsair_kb_rgb.uf2](corsair_kb_rgb.uf2) file to the Raspberry Pi
|
|
Pico, and connect the keyboard to the female USB port and insert the male USB
|
|
connector of the device into your host device such as PC.
|
|
|
|
If you wish to change the ADC reading threshold for changing the lighting,
|
|
you can do so in the `get_light` function of
|
|
[corsair_strafe2.c](corsair_strafe2.c).
|
|
|
|
You can change the color used in the two different modes inside the `rgb_task`
|
|
function of [corsair_strafe2.c](corsair_strafe2.c).
|
|
|
|
If you used a different ADC pin than ADC2, you can change the selected ADC pin
|
|
in the `startADC` function of [corsair_strafe2.c](corsair_strafe2.c).
|
|
|
|
For any of the changes above, you will need to modify the
|
|
[CMakeLists.txt](CMakeLists.txt) file and compile the program yourself. You
|
|
will need to change `PICO_SDK_PATH` and `PICO_PIO_USB_PATH` to the
|
|
directories where you have the
|
|
[Raspberry Pi Pico SDK](https://github.com/raspberrypi/pico-sdk) and
|
|
[Pico-PIO-USB](https://github.com/sekigon-gonnoc/Pico-PIO-USB) library
|
|
downloaded on your machine.
|
|
|
|
## Licensing
|
|
|
|
This software is distributed under the [GNU General Public License version
|
|
3](LICENSE), with the exception of the libraries in the following section.
|
|
|
|
## Credits
|
|
|
|
The project uses code from the following sources:
|
|
- [OpenRGB](https://gitlab.com/CalcProgrammer1/OpenRGB/) for code related to
|
|
Corsair's RGB lighting protocol [peripheral controller](https://gitlab.com/CalcProgrammer1/OpenRGB/-/tree/master/Controllers/CorsairPeripheralController)
|
|
licensed under GNU-GPLv2
|
|
- [Pico-PIO-USB](https://github.com/sekigon-gonnoc/Pico-PIO-USB/) for templates
|
|
used from the [host_hid_to_device_cdc](https://github.com/sekigon-gonnoc/Pico-PIO-USB/tree/control-keyboard-led/examples/host_hid_to_device_cdc)
|
|
example released under the MIT license
|
|
- [TinyUSB](https://github.com/hathach/tinyusb) for templates used in
|
|
[tusb_config.h](tusb_config.h) distributed under the MIT license
|