February 12, 2026

Power line communication using KQ-130F and Arduino

Here we have 4 different projects about Power line communication using KQ-130F / KQ-330 and Arduino.

 

Power line communication using KQ-130F and Arduino

 

Parts list:

Arduino board

Power line communication module KQ-130F / KQ-330

FTDI (USB to TTL serial converter)

LCD 16X2 with I2C

Common mode chock 

Power Supply 5V 1A 


Filtering Circuit:

Power line communication using KQ-130F and Arduino

First Project:

This code sending "Hello" to the receiver every 2 seconds

 

Receiver Circuit:

Power line communication using KQ-130F and Arduino


Transmitter Circuit:

Power line communication using KQ-130F and Arduino


 Watch this video for more details: 

 


 

 Code:

 

void setup() {
  Serial.begin(9600);  // To Computer
  Serial1.begin(9600); // To KQ-130/330
}

void loop() {
  // Send "Hello" to the power line
  Serial1.println("Hello");

  // If the module receives something from the power line, print it to the screen
  while (Serial1.available()) {
    Serial.write(Serial1.read());
  }

  delay(2000);
}

 

Second Project:

This code control 5 LEDs (Red, green, blue, yellow and white) using serial command.

For example to turn on the Red you have to write " RED ON " in serial monitor 

To turn off the Red you have to write " RED OFF " in serial monitor 

The same thing for other colors.

You can also turn on all LEDs at the same time using this command " ALL ON 

 

const int RED = 2;
const int GREEN = 3;
const int BLUE = 4;
const int WHITE = 5;
const int YELLOW = 6;

void setup() {
  Serial.begin(9600);  
  Serial1.begin(9600);  

  pinMode(RED, OUTPUT);
  pinMode(GREEN, OUTPUT);
  pinMode(BLUE, OUTPUT);
  pinMode(WHITE, OUTPUT);
  pinMode(YELLOW, OUTPUT);
 
  Serial.println("System Ready: Sending ALL-ON / ALL-OFF now supported.");
}

void loop() {
  if (Serial1.available() > 0) {
    String burst = Serial1.readStringUntil('\n');
    burst.toUpperCase();

    // --- MASTER COMMANDS (ALL) ---
    if (burst.indexOf("ALL") != -1) {
      if (burst.indexOf("ON") != -1) {
        digitalWrite(RED, HIGH);
        digitalWrite(GREEN, HIGH);
        digitalWrite(BLUE, HIGH);
        digitalWrite(WHITE, HIGH);
        digitalWrite(YELLOW, HIGH);
      }
      else if (burst.indexOf("OFF") != -1) {
        digitalWrite(RED, LOW);
        digitalWrite(GREEN, LOW);
        digitalWrite(BLUE, LOW);
        digitalWrite(WHITE, LOW);
        digitalWrite(YELLOW, LOW);
      }
    }

    // --- INDIVIDUAL COLORS ---
    // RED
    if (burst.indexOf("RED") != -1) {
      if (burst.indexOf("ON") != -1) digitalWrite(RED, HIGH);
      else if (burst.indexOf("OFF") != -1) digitalWrite(RED, LOW);
    }
    // GREEN
    if (burst.indexOf("GREEN") != -1) {
      if (burst.indexOf("ON") != -1) digitalWrite(GREEN, HIGH);
      else if (burst.indexOf("OFF") != -1) digitalWrite(GREEN, LOW);
    }
    // BLUE
    if (burst.indexOf("BLUE") != -1) {
      if (burst.indexOf("ON") != -1) digitalWrite(BLUE, HIGH);
      else if (burst.indexOf("OFF") != -1) digitalWrite(BLUE, LOW);
    }
    // WHITE
    if (burst.indexOf("WHITE") != -1) {
      if (burst.indexOf("ON") != -1) digitalWrite(WHITE, HIGH);
      else if (burst.indexOf("OFF") != -1) digitalWrite(WHITE, LOW);
    }
    // YELLOW
    if (burst.indexOf("YELLOW") != -1) {
      if (burst.indexOf("ON") != -1) digitalWrite(YELLOW, HIGH);
      else if (burst.indexOf("OFF") != -1) digitalWrite(YELLOW, LOW);
    }

    // Clear buffer for the next burst
    while(Serial1.available() > 0) Serial1.read();
  }
}

 

 

Third Project:

This code is similar to the previous one, except i used a relay instead of white LED and connect it to 220V AC light bulb. 

To turn on the light bulb you have to write " Lamp ON " in serial monitor 

 

const int RED = 2;
const int GREEN = 3;
const int BLUE = 4;
const int LAMP = 5;    // Changed from WHITE to LAMP
const int YELLOW = 6;

void setup() {
  Serial.begin(9600);  
  Serial1.begin(9600);  

  pinMode(RED, OUTPUT);
  pinMode(GREEN, OUTPUT);
  pinMode(BLUE, OUTPUT);
  pinMode(LAMP, OUTPUT);
  pinMode(YELLOW, OUTPUT);

  // Normal situation: All LEDs OFF, Lamp pin HIGH (OFF for active-low)
  digitalWrite(RED, LOW);
  digitalWrite(GREEN, LOW);
  digitalWrite(BLUE, LOW);
  digitalWrite(YELLOW, LOW);
  digitalWrite(LAMP, HIGH); // LAMP starts HIGH (Normal/Off)
 
  Serial.println("System Ready. Lamp is currently HIGH (OFF).");
}

void loop() {
  if (Serial1.available() > 0) {
    String burst = Serial1.readStringUntil('\n');
    burst.toUpperCase();

    // --- MASTER COMMANDS (ALL) ---
    if (burst.indexOf("ALL") != -1) {
      if (burst.indexOf("ON") != -1) {
        digitalWrite(RED, HIGH);
        digitalWrite(GREEN, HIGH);
        digitalWrite(BLUE, HIGH);
        digitalWrite(YELLOW, HIGH);
        digitalWrite(LAMP, LOW);  // Inverse: On = LOW
      }
      else if (burst.indexOf("OFF") != -1) {
        digitalWrite(RED, LOW);
        digitalWrite(GREEN, LOW);
        digitalWrite(BLUE, LOW);
        digitalWrite(YELLOW, LOW);
        digitalWrite(LAMP, HIGH); // Inverse: Off = HIGH
      }
    }

    // --- INDIVIDUAL CONTROL ---
   
    // LAMP (Inverse Logic)
    if (burst.indexOf("LAMP") != -1) {
      if (burst.indexOf("ON") != -1) digitalWrite(LAMP, LOW);
      else if (burst.indexOf("OFF") != -1) digitalWrite(LAMP, HIGH);
    }

    // RED
    if (burst.indexOf("RED") != -1) {
      if (burst.indexOf("ON") != -1) digitalWrite(RED, HIGH);
      else if (burst.indexOf("OFF") != -1) digitalWrite(RED, LOW);
    }
   
    // GREEN
    if (burst.indexOf("GREEN") != -1) {
      if (burst.indexOf("ON") != -1) digitalWrite(GREEN, HIGH);
      else if (burst.indexOf("OFF") != -1) digitalWrite(GREEN, LOW);
    }

    // BLUE
    if (burst.indexOf("BLUE") != -1) {
      if (burst.indexOf("ON") != -1) digitalWrite(BLUE, HIGH);
      else if (burst.indexOf("OFF") != -1) digitalWrite(BLUE, LOW);
    }

    // YELLOW
    if (burst.indexOf("YELLOW") != -1) {
      if (burst.indexOf("ON") != -1) digitalWrite(YELLOW, HIGH);
      else if (burst.indexOf("OFF") != -1) digitalWrite(YELLOW, LOW);
    }

    // Clear buffer
    while(Serial1.available() > 0) Serial1.read();
  }
}

 

 

4th project:

This is a pager so when you write a message, it appears on the 16x2 LCD.

You need to start and end your message with two brackets like this  [[ Your message here ]] .


#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);

const int buzzerPin = 7;      
String currentMsg = "";      

void setup() {
  Serial.begin(9600);
  Serial1.begin(9600);
 
  pinMode(buzzerPin, OUTPUT);
  digitalWrite(buzzerPin, LOW);

  lcd.init();
  lcd.backlight();
  lcd.print("Triple Beep Mode");
  delay(1500);
  lcd.clear();
}

void loop() {
  if (Serial1.available() > 0) {
    String raw = Serial1.readStringUntil('\n');
   
    int startIdx = raw.indexOf("[[");
    int endIdx = raw.indexOf("]]");

    if (startIdx != -1 && endIdx != -1 && endIdx > startIdx) {
      String cleanMsg = raw.substring(startIdx + 2, endIdx);
     
      String filteredMsg = "";
      for (int i = 0; i < cleanMsg.length(); i++) {
        if (cleanMsg[i] >= 32 && cleanMsg[i] <= 126) {
          filteredMsg += cleanMsg[i];
        }
      }

      if (filteredMsg.length() > 0 && filteredMsg.length() <= 32) {
        // Only alert if the message is new
        if (filteredMsg != currentMsg) {
          updateLCD(filteredMsg);
          playTripleBeep();
        }
      }
    }
  }
}

void updateLCD(String msg) {
  currentMsg = msg;
  lcd.clear();
 
  if (msg.length() <= 16) {
    lcd.setCursor(0, 0);
    lcd.print(msg);
  } else {
    lcd.setCursor(0, 0);
    lcd.print(msg.substring(0, 16));
    lcd.setCursor(0, 1);
    lcd.print(msg.substring(16, 32));
  }
}

// The new, less annoying notification sound
void playTripleBeep() {
  for (int i = 0; i < 3; i++) {
    digitalWrite(buzzerPin, HIGH);
    delay(150);             // Short beep
    digitalWrite(buzzerPin, LOW);
    delay(100);             // Short silence between beeps
  }
}

February 02, 2026

How to add more channels to your oscilloscope / Multiplexer for Oscilloscope

By using this electronic circuit you can convert a single channel oscilloscope into 4 channel oscilloscope using an analog Multiplexer.

It works only for Analog Oscilloscope !

Maximum frequency tested was less than 100 KHz.

Maximum input voltage must be less than the battery/supply voltage (9V), however by using a voltage divider (97X Attenuation) it is possible to connect it to the mains 3 phase 400V voltage.

How to add more channels to your oscilloscope / Multiplexer for Oscilloscope


How to add more channels to your oscilloscope / Multiplexer for Oscilloscope


Parts list:

IC NE555

IC CD4066

IC CD4017 

Resistor 1K (2pcs)

Resistor 510K (8pcs) 

Capacitor 1000uF 16V

Capacitor 10uF (4pcs) 

Capacitor 100nF

Capacitor 1nF 

Potentiometer 10K (8pcs)

Potentiometer knob (8pcs)

BNC Jack Female Connector PCB Mount (5pcs) 

Slide switch (4pcs) 

IC Socket 8 pin 

IC Socket 14 pin 

IC Socket 16 pin  

Battery 9V with holder 

 

Circuit:

 

How to increase number of channels on your analog oscilloscope / Multiplexer for Oscilloscope

Watch this Video for more details:

 


 

 

January 11, 2026

Educational Logic Gate Training kit without IC

This is an Educational Logic Gate Training kit on PCB Without using IC, By using Diode and Transistor.

It illustrate the basic operation concept of 8 different logic gates using LED indicator, including:

AND Gate 

NAND Gate 

OR Gate 

NOR Gate 

XOR Gate 

XNOR Gate 

NOT Gate 

Buffer  


Educational Logic Gate Training kit without IC


Educational Logic Gate Training kit without IC

Parts list:

Diode M7 or any other diode with DO-214AC package (2pcs)

Resistor 2.2K SMD 1206 (18pcs) 

Resistor 1K SMD 1206 (2pcs)

Resistor 470 SMD 1206

Transistor L-6 or any other NPN with SOT-23 package (4pcs)   

Bridge diode MB10S (2pcs)

Blue 5mm LED (8pcs)

Red 5mm LED (8pcs)

Yellow 5mm LED (6pcs)

Slide SPDT mini vertical Switch 3pin 2 position 

Push button micro tactile switch 2pin (14pcs)

12V Battery with holder (model 23A)

 

Circuit:

The first circuit with input LEDs (used in the PCB) and the second circuit without input LEDs ! 

Educational Logic Gate Training kit without IC

 

Educational Logic Gate Training kit without IC

You can Download the Gerber File of this PCB from here:

 https://www.pcbway.com/project/shareproject/Logic_Gate_Training_kit_without_IC_10bcf3bc.html

Educational Logic Gate Training kit without IC

Watch this Video for more Details:

 


December 15, 2025

Active / Ideal Full Bridge Rectifier

This circuit is an Active / Ideal Full Bridge Rectifier using IC TEA2208T .

It can rectifies the AC voltage without any voltage drop, unlike the ordinary bridge rectifier that have voltage drop 1 to 2V.

Input voltage= 22V to 264V AC

Maximum Current = Depends on the MOSFET you used

Frequency= 50Hz, 60Hz or 400Hz (up to 1000Hz).

 

Active / Ideal Full Bridge Rectifier using IC TEA2208T

Parts list:

IC TEA2208T

N-channel MOSFET (4pcs) Read the note bellow 

Resistor 10K (4pcs)

Capacitor 220nF (2pcs)  

Capacitor 2.2uF  

 

Circuit:

NOTE: Finding a high voltage MOSFET with very low internal resistance is challenging !  

I used FDD8N50NZ with 0.85 ohm Rds-ON which is not very good, But you can try:

IPB60R380P6 (0.38 ohm) 

IPD65R190C7 (0.19 ohm) 

IPB60R060C7ATMA1 (0.06 ohm) THE BEST !

For Low voltage (60V for example) use 50N06 (0.02 ohm).

Active / Ideal Full Bridge Rectifier using IC TEA2208T

 

You can download the Gerber file of this PCB from PCBWay:

 https://www.pcbway.com/project/shareproject/Active_Ideal_Full_Bridge_Rectifier_c911baa3.html


Watch this Video for more Details:

 


 

November 19, 2025

Tester for Touch Screen Digitizer without using microcontroller

By using this circuit you can Test the 4-wire Resistive Touch Screen Digitizer sensor without using Arduino or any other microcontroller.

Tester for Touch Screen Digitizer without using microcontroller


Tester for Touch Screen Digitizer without using microcontroller

Parts list:

IC LM3914(2pcs)

IC CD4049

IC CD4053(2pcs)

IC CD4047

LED 5mm (45pcs) 

Multiturn potentiometer 10K (2pcs)

Capacitor 1uF (2pcs)

Capacitor 100nF

Resistor 10K (9pcs) 

Resistor 1K (2pcs) 

ON/OFF switch 

IC Socket 18pin (2pcs) 

IC Socket 16pin (3pcs) 

IC Socket 14pin 

4wire Resistive touch screen digitizer sensor 

9V Battery with battery cable/holder 

 

Circuit:

 

Tester for Touch Screen Digitizer without using microcontroller

You can download the Gerber file of the PCB from PCBWay:

https://www.pcbway.com/project/shareproject/Tester_for_Touch_Screen_Digitizer_without_using_microcontroller_12346bb9.html

Tester for Touch Screen Digitizer without using microcontroller

Watch this Video for more Details:

 


 

November 12, 2025

Voltage regulator with high input voltage using LR8

This is a Voltage regulator with high input voltage up to 450V DC using IC LR8N3

Maximum output current is between 10mA to 30mA. 

Minimum input voltage is 13.2V.

Output voltage is adjustable between 1.2V up to 435V DC, depends on the value of R1 and R2.

 

Voltage regulator with high input voltage using LR8

Parts list:

IC LR8N3

Diode 1N4007

Resistor 68K (2pcs)

Resistor R1 and R2 (calculate the value by formula below)

Bridge rectifier DB107

LED 

Capacitor 10uF 400V

Capacitor 1000uF 16V (for 12V output)

Capacitor 100nF 


Circuit for 12v output:

For 12v output you need 16v capacitor, For 24v output you need 35v capacitor, For 350v output you need 400v capacitor, and so on.

Voltage regulator with high input voltage using LR8

Circuit for adjustable output:

Voltage regulator with high input voltage using LR8

 

Formula to calculate the output voltage based on value of R1 and R2 in ohm:

Voltage regulator with high input voltage using LR8

Calculation for 12V output, (R1 must be 51K and R2 must be 330K):

Voltage regulator with high input voltage using LR8

You can download the Gerber file of the PCB from PCBWay:

 https://www.pcbway.com/project/shareproject/Voltage_Regulator_LR8_57b21cb8.html

Voltage regulator with high input voltage using LR8

 

Watch this Video for more Details:

 


 

October 29, 2025

DC UPS for router and printer

This is a DC Uninterruptible Power Supply (UPS) for router and printer using capacitors instead of battery.

It running the load for very short time (seconds) to solve the problem of ATS delay time.


DC UPS for router and printer

DC UPS for router and printer

 

DC UPS for router and printer 

 

Parts list:

Capacitor 150uF 450V or 400V (11pcs)

Resistor 100 ohm 25 watt

Resistor 100K 0.25 watt (2pcs) 

LED 5mm

Diode 10A10

Bridge rectifier D35SB100

Connector HB-825

AC Fuse 10A

DC fuse 10A

Socket SS-801 (2pcs)


Circuit: 

DC UPS for router and printer

You can download the Gerber file of the PCB from PCBWay:

 https://www.pcbway.com/project/shareproject/DC_UPS_for_Printers_and_WiFi_Routers_57e49864.html

DC UPS for router and printer

Formula to calculate the running time depend on the load and size of the capacitors

C= capacity in farad

I= current of the load in amp 

T= running time in second

V start = maximum voltage of the capacitor (rms x 1.4142) 

V stop = minimum voltage before load turns off

 

NOTE: In LED light bulbs the current (I) is almost constant in any voltage due to constant current driver used in most LED bulbs which make it easier to calculate the running time, But for other loads with constant voltage driver this formula could gives inaccurate results. 

DC UPS for router and printer 

Watch this Video for more Details:

 


 

August 27, 2025

Multilevel inverter Sinewave 12V to 220V

This circuit is an Unusual Inverter with Staistep output waveform that convert 12V or 24V DC into 220V AC. It is called Multilevel inverter.

Maximum output power is less than 240W.

Inverter staistep waveform 12V to 220V

Inverter staistep waveform 12V to 220V
 

Sinewave after using low pass LC filter:

Inverter staistep waveform 12V to 220V

Parts list:

IC NE555

IC CD4017(2pcs)

IC 7812 

Optocoupler PC817 (6pcs) 

MOSFET IRFZ44n (6pcs) 

Diode 10A10 (4pcs) 

Diode 1N4148 (8pcs) 

Capacitor 2200uF 10V (4pcs) 

Capacitor 680uF 16V 

Capacitor 100nF (4pcs) 

Capacitor 100nF 400V (2pcs) 

Capacitor 1uF 400V 

Inductor 100uH 

Resistor 10K (8pcs)

Resistor 1K (6pcs)

Resistor 100 ohm (6pcs)

Resistor 10 ohm (2pcs)

Switch

IC Socket 8dip

IC Socket 16dip (2pcs)

Center taped transformer (for 4 x 6v batteries use 18-0-18 and for 4 x 3.7v batteries use 9-0-9)

Battery Cable


Circuit:

 

Inverter staistep waveform 12V to 220V

You can download the Gerber file of this PCB from PCBWay:

 https://www.pcbway.com/project/shareproject/12V_to_220V_Inverter_7ebb6e48.html

Inverter staistep waveform 12V to 220V

 

Inverter staistep waveform 12V to 220V

Watch this Video for more Details: