Skip to content
365 changes: 365 additions & 0 deletions WindowsBlinkTutorial.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,365 @@
# ECE 196 Website

The ECE 196 website, visit [here](https://ece-196.github.io/docs).

---
title: ESP32 Digital Privacy Window Tutorial
date: 2025-06-06
authors:
- name: Jason Young
---

![Digital Privacy Window System](image/path)

## Introduction

This tutorial will guide you through building a Digital Privacy Window system using an ESP32 DevBoard to control a switchable (electrochromic or liquid crystal) window film. The motivation is to enable dynamic privacy and solar control for smart homes, offices, or any space where on-demand window opacity is desirable. By following this tutorial, you will gain hands-on experience in embedded programming, hardware integration, and smart device prototyping.

### Learning Objectives

- Interface an ESP32 DevBoard with a digital privacy window film.
- Program the ESP32 to control window transparency via GPIO.
- Understand the principles behind electrochromic and liquid crystal films.
- Assemble, test, and troubleshoot basic embedded hardware.
- Document and communicate technical processes and results.

### Background Information

A digital privacy window uses switchable film (electrochromic or liquid crystal) that changes between transparent and opaque states when voltage is applied. This technology is used in offices, healthcare, retail, and homes to provide privacy at the touch of a button or via automation. The ESP32 DevBoard is a powerful, Wi-Fi/Bluetooth-enabled microcontroller that can be programmed to control such films through its GPIO pins.

**Alternatives:**
- Smart blinds/shades (mechanical, less sleek)
- Traditional curtains (manual, less automated)
- Other microcontrollers (Arduino Uno, less powerful than ESP32)

**Key Concepts:**
- *PDLC (Polymer Dispersed Liquid Crystal)*: Film scatters light when unpowered, becomes clear when voltage aligns the crystals.
- *Electrochromic Film*: Tints gradually with voltage.
- *GPIO*: General-purpose input/output pin on the ESP32, used to switch the window state.

---

## Getting Started

Before you begin, you’ll need to install software and gather hardware components.

### Required Downloads and Installations

- **Arduino IDE**
Download from [arduino.cc](https://www.arduino.cc/en/software) and install for your OS (Windows, macOS, Linux).
[Arduino IDE Install Guide](https://www.arduino.cc/en/Guide/HomePage)

- **ESP32 Board Support Package**
In Arduino IDE:
- Go to File > Preferences and add:
`https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json`
- Tools > Board > Boards Manager > Search “ESP32” > Install.

- **USB-to-Serial Drivers**
Only if your ESP32 board is not detected. Download from the chip manufacturer’s website (e.g., CP210x or CH340).

### Required Components

| Component Name | Quantity |
| ---------------------------------- | -------- |
| ESP32 DevBoard | 1 |
| USB Data Cable (ESP32) | 1 |
| Electrochromic or LC Window Film | 1 |
| MOSFET or Relay Module | 1 |
| Power Supply (per film specs) | 1 |
| Jumper Wires | 5+ |
| Breadboard (optional) | 1 |

### Required Tools and Equipment

- Computer (Windows/macOS/Linux)
- Internet access
- (Optional) Soldering station
- (Optional) Multimeter

---

## Part 01: Setting Up the ESP32 Development Environment

### Introduction

This section covers installing and configuring the Arduino IDE and ESP32 Board Support so you can program your ESP32 DevBoard.

### Objective

- Install Arduino IDE and ESP32 board support.
- Connect ESP32 to your computer and verify communication.
- Upload a test program to confirm setup.

### Background Information

You’ll need basic computer skills and familiarity with installing software. No prior microcontroller experience is required.

### Components

- Computer
- ESP32 DevBoard
- USB Data Cable

### Instructional

1. Download and install the Arduino IDE from [arduino.cc](https://www.arduino.cc/en/software).
2. Open Arduino IDE. Go to File > Preferences. Add
`https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json`
to “Additional Boards Manager URLs.”
3. Go to Tools > Board > Boards Manager. Search for “ESP32” and install “ESP32 by Espressif Systems.”
4. Connect your ESP32 to your computer. Install drivers if needed.
5. Select your board (e.g., “ESP32 Dev Module”) and port under Tools.
6. Open File > Examples > 01.Basics > Blink. Upload to the ESP32.
7. If the onboard LED blinks, your setup is complete!

---

## Example

### Introduction

Let’s test your setup by uploading the “Blink” sketch to your ESP32.

### Example

// ESP32 Blink Example
int LED_BUILTIN = 2;
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH);
delay(1000);
digitalWrite(LED_BUILTIN, LOW);
delay(1000);
}


**Visual:**
![ESP32 Blink Example](image/path-to-blink-visual)

### Analysis

- Confirms Arduino IDE and ESP32 board support are working.
- Verifies USB communication.
- Demonstrates the upload process for future code.

---

## Additional Resources

### Useful links

- [ESP32 Guide – DroneBot Workshop](https://dronebotworkshop.com/esp32-intro/)
- [Arduino IDE Download](https://www.arduino.cc/en/software)
- [ESP32 Arduino Core Documentation](https://docs.espressif.com/projects/arduino-esp32/en/latest/)
- [ESP32 Getting Started Guide (Espressif)](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/)
- [YouTube: ESP32 Arduino IDE Tutorial](https://www.youtube.com/watch?v=MPW_Efjzv8U) [3]

---

## Part 02: Understanding and Preparing the Privacy Window Film

### Introduction

This section introduces switchable privacy films and prepares you for installation and testing.

### Objective

- Understand how electrochromic and liquid crystal films work.
- Prepare the film for installation and testing.
- Learn best practices for handling and cleaning.

### Background Information

Switchable films use voltage to change between clear and opaque states. Proper handling and testing before installation are critical to avoid damage.

### Components

- Privacy window film (electrochromic or LC)
- Power supply (per film specs)
- Clean glass or acrylic panel

### Instructional

1. Inspect the film for any damage before use.
2. Test the film by connecting it to the power supply; observe the transition between states.
3. Clean the glass thoroughly before applying the film—80% of installation issues are due to dirt.
4. Carefully peel and apply the film, following manufacturer’s instructions for alignment and adhesion.
5. Connect film wiring to the power supply, ensuring correct polarity and voltage.

---

## Example

### Introduction

We’ll test the privacy film’s switching function before installation.

### Example

**Visual:**
![Privacy Film Test](image/path-to-film-test-visual)

**Steps:**
- Connect wires as per film datasheet.
- Apply power; film should turn clear.
- Remove power; film returns to opaque.

### Analysis

- Confirms film is functional before installation.
- Demonstrates the principle of voltage-controlled transparency.
- Ensures no defects before permanent mounting.

---

## Additional Resources

### Useful links

- [Everything You Need to Know About Switchable Glass and Film](https://www.youtube.com/watch?v=MPW_Efjzv8U) [2]
- [DIY Window Film Installation Videos](https://www.apexfilms.ca/video-tutorials) [6]
- [How to Install Privacy Window Film - YouTube](https://www.youtube.com/watch?v=B9jrkrm5Nj4) [4]

---

## Part 03: Wiring and Controlling the Privacy Window with ESP32

### Introduction

This section covers connecting the ESP32 to the privacy film and programming it to control transparency via a GPIO pin.

### Objective

- Wire the ESP32 to a relay or MOSFET for safe film control.
- Write code to toggle the film’s state.
- Test dynamic switching via software.

### Background Information

The ESP32 cannot drive the film directly (due to voltage/current requirements), so a relay or MOSFET acts as a switch. GPIO pins send control signals to these components.

### Components

- ESP32 DevBoard
- Relay or MOSFET module
- Privacy window film (installed)
- Jumper wires
- Power supply (for film)

### Instructional

1. Connect the ESP32 GPIO pin to the relay or MOSFET control input.
2. Wire the relay/MOSFET output to the privacy film and its power supply.
3. In Arduino IDE, write a sketch that toggles the GPIO pin HIGH/LOW to switch the film.
4. Upload the code and observe the window film switching between states.

---

## Example

### Introduction

Let’s program the ESP32 to switch the privacy film on and off with a button press.

### Example

#define FILM_PIN 5

void setup() {
pinMode(FILM_PIN, OUTPUT);
}

void loop() {
digitalWrite(FILM_PIN, HIGH); // Film ON (clear)
delay(5000);
digitalWrite(FILM_PIN, LOW); // Film OFF (opaque)
delay(5000);
}

text

**Visual:**
![ESP32 to Relay/MOSFET to Film](image/path-to-circuit-visual)

### Analysis

- The ESP32 toggles the relay/MOSFET, switching the film.
- Demonstrates embedded control of physical hardware.
- Code can be extended for remote, sensor, or scheduled control.

---

## Additional Resources

### Useful links

- [ESP32 Arduino Core Documentation](https://docs.espressif.com/projects/arduino-esp32/en/latest/)
- [Smart Glass Country: Smart Film Installation Guide](https://www.smartglasscountry.com/installation/)
- [YouTube: Switchable Privacy Glass / Smart Glass](https://www.youtube.com/watch?v=SaZWW5nASZk) [5]

---

## Part 04: Troubleshooting, Safety, and Best Practices

### Introduction

This section addresses common issues, safety tips, and best practices for a reliable, safe installation.

### Objective

- Identify and resolve common hardware/software issues.
- Apply safe handling and wiring practices.
- Document and communicate troubleshooting steps.

### Background Information

Working with high voltages and delicate films requires caution. Many issues stem from wiring errors, poor connections, or software bugs.

### Components

- All previously listed components
- Multimeter (for diagnostics)

### Instructional

1. Double-check all wiring before applying power.
2. Use a multimeter to verify voltages at each stage.
3. If the film does not switch, check:
- Power supply output
- Relay/MOSFET operation
- ESP32 GPIO output
- Film wiring and connections
4. Consult datasheets and guides for troubleshooting tips.
5. Always disconnect power before making changes to the circuit.

---

## Example

### Introduction

We’ll diagnose a non-switching film.

### Example

- Use a multimeter to check voltage at the film terminals when the relay/MOSFET is activated.
- Use Arduino IDE’s Serial Monitor to print GPIO states for debugging.

### Analysis

- Confirms whether the issue is in software, wiring, or hardware.
- Reinforces safe diagnostic practices.

---

## Additional Resources

### Useful links

- [ESP32 Troubleshooting Guide](https://randomnerdtutorials.com/esp32-troubleshooting-guide/)
- [DIY Window Film Installation Videos](https://www.apexfilms.ca/video-tutorials) [6]
- [Smart Privacy Glass Installation Guide](https://www.smartglasscountry.com/installation/)

Loading