Introduction: S.H.I.E.L.D - Is Someone Watching You?

I saw a lot of videos of embarrassed people when they didn't noticed that their microphone or camera were on, and it gave me the idea to this project.

I've wrote a simple application in C# that detects when the camera or microphone are being used and pop a notification with the program name. In addition, I have a simple board with 2 WS2812B LEDs and buzzer that beeps and light up when it receives notification from the software.

The hardware is Arduino based and the communication is done via serial to keep it simple and let beginners an easy start program to play with.

Please checkout the project GitHub repository for complete source code:
https://github.com/tlevis/S.H.I.E.L.D

Supplies

  • 2 x WS2812B
  • 1 x 5v Buzzer
  • 1 x Micro USB breakout board
  • 1 x Female USB type A breakout board
  • 8 x 3mm x 1.8mm circle neodymium magnet

Step 1: Electronics

The electronics here is very simple
I've used 2 addressable LEDs (WS2812B), buzzer and micro USB connector.
Everything is wired according to the attached schema.

At the Arduino side, it is just a simple USB type A connector that connects to 5v, GND and pins 8 & 9.

Step 2: 3D Printing the Case

I've designed a simple case that contains the electronics with two slits for the acrylic signs.
Around the LEDs I've placed support for the signs so they won't tilt.
In the bottom of the case I've placed 4 magnets so it can fit to the mount on the screen easily.

Print one of each stl file.

Step 3: Acrylic Sings Engraving

I used my desktop CNC machine, SainSmart CNC 3018-PROVer.
I've searched for free icons and convert them to vector with inkview software

Step 4: Programming

Here we have the client side application that is C# (for Windows) and the Arduino code.
You can find them here.

To monitor when the camera or microphone are being used, I'm monitoring the following path in Windows Registry:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\CapabilityAccessManager\ConsentStore\webcam

and

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\CapabilityAccessManager\ConsentStore\microphone

Every time we get change notification we need to search the tree for changes.
When device is being used, the LastUsedTimeStop is 0, so we search for it and parse the key to get the application name to show it in the notification.

The communication between the Arduino and the C# program is via serial.
The messages are JSON so it will be easy to migrate the communication to something else if we want to do so in the future.