JL1N-20MR: Re-Purposing the PLC for Home Automation

Jason IP3 min read
Other ManufacturerPLC HardwareTechnical Reference
Licensed PE Working through this on a live machine? A Maine-licensed engineer can take it from here — included with IMD hardware, by the hour for everything else. Book an engineer

The JL1N-20MR examined here is reported to resemble an FX1N-20MR and uses an STM32F103RCT6 CPU. No manufacturer schematic or verified hardware documentation is available in the evidence, so treat every pin assignment below as a reverse-engineered finding and validate it on the specific board before connecting field wiring.

Confirmed Device Markings and Reported Power Behavior

Item Reported finding Engineering constraint
Controller JL1N-20MR The claimed FX1N-20MR compatibility is unverified.
CPU STM32F103RCT6 Select the matching MCU target when building firmware.
Supply Board reportedly operated from 12 V to 24 V This observation is not a verified input-voltage rating.
Regulators Onboard 5 V and 3.2 V rails were reported Measure both rails before programming or attaching peripherals.
Outputs Eight relays, reported active HIGH Control output states during startup to prevent unintended operation.
Inputs Twelve inputs, reported active when pulled to ground Verify the interface circuitry before driving an MCU pin directly.

Boot, Programming, and Board-Control Signals

BOOT0 is reportedly LOW by default and can be changed to HIGH with a jumper. BOOT1, mapped to PA2, is reportedly held LOW. With BOOT0 HIGH, programming was completed through USART1 using PA9 and PA10 and the stm32loader utility. The onboard serial port was traced to USART3, with TX on PC10 and RX on PC11.

The reset signal is reported at the common point between R24 and C14 and is active LOW. The run LED maps to PB6. The RUN switch may connect PC1 to ground, but that mapping remains uncertain and requires continuity testing. Analog input was traced to PA4; the analog-output mapping is unknown.

Reported Digital I/O Map

Channel MCU pin Reported behavior
Y0 PD2 Relay output, active HIGH
Y1 PA12 Relay output, active HIGH
Y2 PB10 Relay output, active HIGH
Y3 PB11 Relay output, active HIGH
Y4 PB12 Relay output, active HIGH
Y5 PB13 Relay output, active HIGH
Y6 PB14 Relay output, active HIGH
Y7 PB15 Relay output, active HIGH
X0 PA0 Input, active when pulled to ground
X1 PA1 Input, active when pulled to ground
X2 PC5 Input, active when pulled to ground
X3 PC6 Input, active when pulled to ground
X4 PC7 Input, active when pulled to ground
X5 PC4 Input, active when pulled to ground
X6 PA6 Input, active when pulled to ground
X7 PA7 Input, active when pulled to ground
X8 PB0 Input, active when pulled to ground
X9 PB1 Input, active when pulled to ground
X10 PA3 Input, active when pulled to ground
X11 PC12 Input, active when pulled to ground

Firmware Build and Verification Procedure

  1. Disconnect loads from all relay contacts, confirm the STM32F103RCT6 marking, and verify the reported power, ground, reset, boot, serial, and I/O connections on the actual PCB.
  2. Set BOOT0 HIGH with the board jumper while keeping the reported BOOT1 state LOW, then connect the programmer through USART1 on PA9 and PA10.
  3. Program a minimal image with stm32loader. Working firmware was reportedly built with STM32Cube and with PlatformIO using the following configuration:
platform = ststm32
board = genericSTM32F103RC
framework = arduino

First test the run LED on PB6 and read inputs without attached field circuits. Exercise each relay individually only after configuring all reported output pins to a known inactive state. Confirm that each physical channel matches the table; a different board revision may use different routing.

FAQ

Which MCU is used in the JL1N-20MR PLC?

The examined board is marked STM32F103RCT6. Confirm the marking on your board before selecting the firmware target.

Which pins program the JL1N-20MR through its bootloader?

The reported programming connection uses USART1 on PA9 and PA10 with BOOT0 set HIGH; BOOT1 on PA2 is reported LOW. Programming was completed with stm32loader.

What PlatformIO settings build JL1N-20MR firmware?

A working build was reported with platform = ststm32, board = genericSTM32F103RC, and framework = arduino. Verify relay and input mappings before connecting automation loads.

Back to blog