Site icon DIY Usthad

Tripwire Automatically Minimizes Your Tabs When Someone Walks By

tripwire which minimize window

tripwire which minimize window

Do you always slack off on your computer and worry about getting busted? Not anymore because today we are going to make a Tripwire which automatically minimizes your tabs when someone walks by.

Video

Before we going to the project let me thanks allpcb.com for sponsoring this project.

ALLPCB is an ultrafast PCB super factory as well as an Internet-based manufacturing company. We are committed to building an electronic collaborative manufacturing service platform. We serve enterprises related to consumer electronics, communication equipment, industrial control, instruments and apparatus, intelligent hardware, “Internet of Things” and “Industry 4.0” solutions, etc. We offer professional one-stop service, including PCB manufacturing, PCB assembly and components sourcing.

Theory

This project mainly contains two modules RECEIVER (Rx) and a TRANSMITTER (Tx). The Rx module is the one which we connect to the computer’s USB port which will receive a signal to execute the pre-written script whenever there is a trigger happens in the Tx module.

Features

Hide all your windows
Lock your computer
Execute a custom script to do whatever you want!

Icons made by Pixel perfect from www.flaticon.com

Supported Platforms

Windows
Linux

Mac OSX
Android

Hardware Required

ComponentsAliExpressDIY Usthad
Arduino Pro Mini
Arduino Pro Micro
nRF24 Module x2
IR Obstacle sensor
Li-ion Battery 3.7v
Battery Charging module

Schematic & PCB

Transmitter (TX)

Receiver (RX)

PCB

Transmitter (Tx)

Code


/*
   www.diyusthad.com
   www.youtube.com/c/diyusthad
*/

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

#define ir 3

RF24 radio(5, 8); // CE, CSN

const byte address[6] = "00001";
boolean irState = HIGH;
boolean preIrState = HIGH;

void setup() {
  radio.begin();
  radio.openWritingPipe(address);
  radio.setPALevel(RF24_PA_MIN);
  radio.stopListening();

  pinMode(ir,INPUT_PULLUP);

  Serial.begin(9600);
}

void loop() {
  const int trigger = 1;

  irState = digitalRead(ir);

 if(preIrState != irState)
 {
    Serial.println("detected");
    radio.write(&trigger, sizeof(trigger));
    preIrState = irState;
   
 }
  
}

Receiver (Rx)

Code


/*
  by Mohamed Najad, www.diyusthad.com
  www.youtube.com/c/diyusthad

*/

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <Keyboard.h>

RF24 radio(5, 3); // CE, CSN

const byte address[6] = "00001";

int os = 1; //osx = 1, windows = 2, linux = 3
int function = 3; //lock the computer = 1, minimize active window = 2 , show desktop = 3, custom script = 4

void setup() {
  Serial.begin(9600);
  radio.begin();
  radio.openReadingPipe(0, address);
  radio.setPALevel(RF24_PA_MIN);
  radio.startListening();
  Keyboard.begin();
}

void loop() {
  if (radio.available()) {
    int trigger;
    radio.read(&trigger, sizeof(trigger));

    if (trigger == 1)
    {
      switch (os)
      {
        case 1: //osx
          switch (function)
          {
            case 1://lock computer
              Keyboard.press(KEY_LEFT_GUI);
              Keyboard.press(KEY_RIGHT_CTRL);
              Keyboard.press('q');
              delay(100);
              Keyboard.releaseAll();
              Serial.println(trigger);
              while (1);


            case 2: //minimize active window
              Keyboard.press(KEY_LEFT_GUI);
              Keyboard.press('m');
              delay(100);
              Keyboard.releaseAll();
              Serial.println(trigger);
              while (1);


            case 3: //show desktop
              Keyboard.press(KEY_F11);
              Keyboard.press('m');
              delay(100);
              Keyboard.releaseAll();
              Serial.println(trigger);
              while (1);


            case 4: //custome script
              while (1);


          }

        case 2: //windows
          switch (function)
          {
            case 1: //lock
              Keyboard.press(KEY_LEFT_GUI);
              Keyboard.press('l');
              delay(100);
              Keyboard.releaseAll();
              Serial.println(trigger);
              while (1);


            case 2: //minimize active window
              Keyboard.press(KEY_LEFT_GUI);
              Keyboard.press('m');
              delay(100);
              Keyboard.releaseAll();
              Serial.println(trigger);
              while (1);


            case 3: // show desktop
              Keyboard.press(KEY_LEFT_GUI);
              Keyboard.press('d');
              delay(100);
              Keyboard.releaseAll();
              Serial.println(trigger);
              while (1);


            case 4: //custome script
              while (1);


          }

        case 3: //linux
          switch (function)
          {
            case 1:
              while (1);


            case 2:
              while (1);


            case 3:
              while (1);


            case 4:
              while (1);


          }

        case 4: //custom
        
          while (1);

      }

    }
  }
}

Inspired by dekuNukem‘s daytripper.

Exit mobile version