IKEA Frekvens - VIPnytt/Frekvens GitHub Wiki

πŸ’‘ IKEA Frekvens LED multi-use light

Article number: 504.203.53

πŸ“Œ Schematics

LED panel schema

             β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ SPI CS
             β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ SPI SCLK
             β”‚   β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ SPI MOSI
             β”‚   β”‚   β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ OE
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”Όβ”€β”€β”€β”Όβ”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β” β”‚
β”‚ β”‚     GND LAK CLK DA  EN  VCC β”‚ β”‚
β”‚ β”‚                             β”‚ β”‚
β”‚ β”‚ SW1      U2 β”Œβ”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β”€β”΄β” β”‚ β”‚
β”‚ β”‚ SW2  89F112 β””β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”€β”¬β”˜ β”‚ β”‚
β”‚ β”‚ COM                β”‚        β”‚ β”‚
β”‚ β”‚               β”Œβ”€β”  β”‚        β”‚ β”‚
β”‚ β”‚            U3 ─ β”œ  β”‚        β”‚ β”‚
β”‚ β”‚         LM358 ─ β”œβ”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”Όβ”€ Amplifier
β”‚ ─ IR            ─ β”œ           β”‚ β”‚
β”‚ β”‚               ─ β”œ           β”‚ β”‚
β”‚ β”‚ MIC           β””β”€β”˜           β”‚ β”‚
β”‚ β””β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚ GND LAK CLK DA  EN  VCC DC- DC+ β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”Όβ”€β”€β”˜
                           β”‚   └──── +4 V DC
                           └──────── 0 V DC

Buttons schema

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ COM SW1 SW β”‚
β””β”€β”€β”Όβ”€β”€β”€β”Όβ”€β”€β”€β”Όβ”€β”˜
   β”‚   β”‚   └─── Button 2
   β”‚   └─────── Button 1
   └─────────── 0 V DC

Power supply schema

              β”Œβ”€β”€β”€β”€β”€β”€β”€β”
100-240 V AC ── L   + β”œβ”€ +4 V DC
     Neutral ── N   - β”œβ”€ 0 V DC
              β””β”€β”€β”€β”€β”€β”€β”€β”˜

ESP32 schema

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚            VIN β”œβ”€ +4 V DC
β”‚            3V3 β”œβ”€ +3.3 V DC
β”‚            GND β”œβ”€ 0 V DC
β”‚                β”‚
β”‚           SCLK β”œβ”€ SPI SCLK
β”‚           MOSI β”œβ”€ SPI MOSI
β”‚                β”‚
β”‚ Digital output β”œβ”€ SPI CS
β”‚ Digital output β”œβ”€ OE
β”‚                β”‚
β”‚  Digital input β”œβ”€ Button 1
β”‚  Digital input β”œβ”€ Button 2
β”‚                β”‚
β”‚   Analog input β”œβ”€ Amplifier
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Logic level shifter schema

   0 V DC ────────┬──────── 0 V DC
+3.3 V DC ────┐   β”‚   β”Œβ”€β”€β”€β”€ +4 V DC
           β”Œβ”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”€β”΄β”€β”€β”
           β”‚ VCC GND VCC β”‚
   SPI CS ── A1  ──►  B1 β”œβ”€ SPI CS
 SPI SCLK ── A2  ──►  B2 β”œβ”€ SPI SCLK
 SPI MOSI ── A3  ──►  B3 β”œβ”€ SPI MOSI
       OE ── A4  ──►  B4 β”œβ”€ OE
           β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸš€ Getting started

Opening up

After loosening the four screws and opening the back panel, there’s eight nuts held in place by four plastic clips. Once those and the four screws in the bottom are removed, everything slides out easily.

Disconnect the buttons

The next step is to disconnect the buttons from the green PCB, SW1, SW2 and COM.

Removing the U2 chip

This step can be a bit challanging; removing the 89F112 chip labeled U2 from the green PCB.

[!TIP] If the integrated microphone is not needed, the entire green PCB can be desoldered from the LED panel. This makes the modification easier, while still allowing the board to be re-soldered back on later if desired.

Wiring the microphone

For the microphone to be functional, connect a wire from the LM358 amplifier labeled U3 pin 7 to an analog input on the ESP32.

[!TIP] Since the 89F112 chip must be desoldered, it might be easier to connect from U2 pad 11 instead.

The Missing IR sensor

The device was originally designed with an IR sensor in mind, but the feature was never implemented in production β€” leaving the IR pad unused.

The hole next to C10 was reserved for this purpose and can still be used to mount an IR sensor, enabling a capability that was planned in the original design but never realized.

Wiring the LED panel

Next up is attaching the ESP32, via the logic level shifter. There’s two noteworthy locations, the first one is on top of the green PCB, and the second one is the six unlabeled pads at bottom left. There’s no difference between them except for DA, where the labeled one on top is input and the unlabeled at bottom is output.

[!CAUTION] The two left-most unlabeled pads will be blocked by the chassis.

Connecting the button

The last step is to connect the buttons: SW and SW1 each connect to separate pins on the ESP32, while COM connects to GND.

[!TIP] On the stock wiring harness, the red power button SW1 uses the black wire, and the yellow mode button SW uses the white wire. They both share a red wire for COM.

↔️ Logic level shifter

For safe and reliable communication between the ESP32 and the LED panel, a suitable logic level shifter is required. An TXU0104 is the ideal choice for this application, but alternatives such as the TXB0104/TXB0108, and even TXS0104E/TXS0108E are reported to work as well, although with some minor caveats.

The SCT2024 operates at 4 V and uses pull-resistors on its inputs β€” which can feed unsafe voltages back into the ESP32. To protect the microcontroller and ensure consistent communication, all signal lines should go through a level shifter, not just those that are at risk.

[!WARNING] Some users have reported success without level shifting, but this is outside the specifications of both ESP32 and SCT2024. Skipping it can lead to unstable behavior, and even damage the ESP32.

πŸ› οΈ Hardware considerations

The IKEA Frekvens hardware isn’t perfect, but there’s room for improvements for those who desire.

Capacitors

The original 89F112 chip lacked dimming capabilities, but the ESP32 enables full PWM dimming. Because PWM involves rapid switching, it can stress the power supply and introduce noise. Decoupling capacitors are recommended to smooth out these fluctuations, improving stability and preventing timing issues.

The SCT2024 datasheet suggests a total of β‰ˆβ‰₯85 Β΅F, placed as close as possible to the SCT2024 chips and LEDs. Instead of a single large capacitor, it is generally better to use two smaller ones.

Easily accessible soldering points:

  • VCC / GND pads β€” near the top of the panel
  • DC+ / DC- pads β€” near the middle

[!NOTE] Capacitors are optional β€” consider adding if you already have some available, or if you notice flicker or instability.

πŸ”§ Configuration

Label Type Constant
LAK Digital output PIN_CS
CLK SPI SCLK PIN_SCLK
DA SPI MOSI PIN_MOSI
EN Digital output PIN_OE
SW1 Digital input PIN_SW1
SW Digital input PIN_SW2
U3 pin 7 Analog input PIN_MIC

Power and ground

Supplies power to both logic and LEDs.

  • DC+/DC- is intended to supply high current to the LEDs.
  • VCC/GND is intended as outputs for low current components handling the logic.
  • Both are tied together internally on the PCB.

[!CAUTION] To prevent backfeeding, never connect the ESP32 to USB while the 4β€―V power supply is connected β€” even if it is unplugged from the mains.

SPI CS

Chip Select for the LED drivers.

Any digital output pin can be used.

Configure in secrets.h:

#define PIN_CS 1 // LAK

[!NOTE] Logic level shifter recommended.

[!WARNING] Avoid strapping pins as this pin is pulled LOW with 25 kΞ© resistance. On ESP32 classic it is recommended to use specialized pins, such as CS (sometimes labeled SS on older boards).

SPI SCLK

Serial clock for SPI communication.

Any SPI SCLK pin can be used.

Configure in secrets.h:

#define PIN_SCLK 2 // CLK

[!NOTE] Logic level shifter recommended.

SPI MOSI

Master-out data line for SPI.

Any SPI MOSI pin can be used.

Configure in secrets.h:

#define PIN_MOSI 3 // DA

[!NOTE] Logic level shifter recommended.

Output Enable

Enables or disables LED output.

Any digital output pin can be used.

Configure in secrets.h:

#define PIN_OE 4 // EN

[!IMPORTANT] Logic level shifter required.

[!WARNING] Avoid strapping pins as this pin is pulled HIGH with 25 kΞ© resistance.

Buttons

Button inputs for user interaction.

Optional to connect. Use RTC-capable digital input pins for best compatibility.

Configure in secrets.h:

#define PIN_SW1 5 // SW1
#define PIN_SW2 6 // SW

[!IMPORTANT] Avoid strapping pins as these is pulled LOW when pressed.

Microphone amplifier

Analog input from the microphone amplifier.

Optional to connect. Use an ADC1-channel analog pin for best compatibility.

Configure in secrets.h:

#define PIN_MIC 7 // U3 pin 7

[!WARNING] Avoid strapping pins as this pin is biased.

πŸ“ Template

Configure in .env:

# Device type
IKEA_FREKVENS='true'

# Names
NAME='Frekvens'     # optional
HOSTNAME='frekvens' # optional

Configure in secrets.h:

#pragma once

// GPIO pins
#define PIN_CS 1   // LAK
#define PIN_SCLK 2 // CLK
#define PIN_MOSI 3 // DA
#define PIN_OE 4   // EN
#define PIN_SW1 5  // SW1
#define PIN_SW2 6  // SW
#define PIN_MIC 7  // U3 pin 7

// Wi-Fi credentials
#define WIFI_SSID "name"
#define WIFI_KEY "secret"

// Weather location (optional)
#define LATITUDE "0.000"
#define LONGITUDE "0.000"

πŸ”— Resources

A collection of external links for deeper exploration β€” including teardowns, mods, datasheets, and community projects β€” provided for reference only and with no formal connection to this project.