# ESP32 FlatPanel – Wiring & BOM ## What to buy | Item | Purpose | Notes | |------|---------|-------| | IRLZ44N N-channel MOSFET × 2 | LED brightness + dew heater control | Logic-level: 3.3 V gate from ESP32 is sufficient. One per load. | | 100 Ω resistor × 2 (1/4 W) | MOSFET gate current limiting | One per MOSFET | | 10 kΩ resistor × 2 (1/4 W) | MOSFET gate pull-down | Ensures loads are off at boot | | White LED strip or panel (12 V) | Flat-field illumination surface | High-CRI (Ra > 90) recommended. Size to scope aperture. | | Frosted acrylic sheet | Light diffuser | 3 mm thick, cut to scope outer diameter | | Dew heater element (12 V, ~5-10 W) | Prevents flat panel misting up | Nichrome wire mat, resistive heating tape, or commercial dew strap cut to fit. ~24 Ω for 6 W at 12 V. | | LM2596 or MP1584 buck converter module | 12 V → 5 V for servo | Set output to 5.0 V before connecting | | 12 V DC power supply (≥ 4 A) | Powers everything | LED 2 A + dew heater 0.5 A + servo 1 A peak | | 1N4007 diode | Optional: reverse-polarity protection on 12 V input | | | Prototype / strip board | Assembly | | | JST connectors or screw terminals | Clean connections | | | Aluminium or 3D-printed enclosure | Mechanical housing | | --- ## Component roles | Component | Role | |-----------|------| | Arduino Nano ESP32 | Main controller: WiFi, Alpaca server, PWM, servo | | MG995 servo | Rotates the flat panel lid in / out of the telescope light path | | SG90 micro servo | Spare / future use (e.g., secondary aperture cover) | | 28BYJ-48 stepper | Spare / future use (e.g., precision ND-filter wheel for extra dimming) | | IRLZ44N MOSFET | Controls LED strip power via PWM from ESP32 | --- ## Wiring diagram ``` 12 V PSU ──────────────────────────────────────────── 12 V rail │ │ │ LM2596 buck (set to 5 V) │ ├──[IN+]──[OUT+]──────────────── 5 V rail │ │ [IN-]──[OUT-]─────────────── GND rail │ │ │ └── GND ──────────────────────── GND rail │ │ ┌─────────── Arduino Nano ESP32 ───────────────────┐ │ │ VIN ◄──── 5 V rail │ │ │ GND ◄──── GND rail │ │ │ │ │ │ D9 ──────────────────────────► MG995 Signal │ │ │ 5 V rail ─────────────────────► MG995 VCC (5V) │ │ │ GND ──────────────────────────► MG995 GND │ │ │ │ │ │ D3 ──[100 Ω]──► MOSFET-A Gate (LED) │ │ │ GND ──[10 kΩ]──► MOSFET-A Gate (pull-down) │ │ │ MOSFET-A Source ──► GND rail │ │ │ MOSFET-A Drain ──► LED- │ │ │ │ │ │ D5 ──[100 Ω]──► MOSFET-B Gate (dew heater) │ │ │ GND ──[10 kΩ]──► MOSFET-B Gate (pull-down) │ │ │ MOSFET-B Source ──► GND rail │ │ │ MOSFET-B Drain ──► Heater- │ │ └──────────────────────────────────────────────────┘ │ │ LED strip/panel: LED+ ◄────────────────── 12 V rail ──┤ LED- ◄────────────────── MOSFET-A Drain │ Dew heater: Heater+ ◄────────────────── 12 V rail ───┘ Heater- ◄────────────────── MOSFET-B Drain ``` ### MOSFET pinout (IRLZ44N TO-220, flat face towards you) ``` Gate | Drain | Source 1 2 3 ``` Connect: - Gate (1) → 100 Ω → D3, with 10 kΩ from Gate to GND - Drain (2) → LED strip negative lead - Source (3) → GND rail --- ## Servo signal cable colours (standard) | Colour | Signal | |--------|--------| | Brown / Black | GND | | Red | VCC (5 V) | | Orange / Yellow / White | Signal (PWM) | --- ## Pin summary | ESP32 pin | Function | Config define | |-----------|----------|---------------| | D9 | MG995 servo signal | `SERVO_PIN` | | D3 | LED PWM (MOSFET-A gate) | `LED_PWM_PIN` | | D5 | Dew heater PWM (MOSFET-B gate) | `DEW_HEATER_PIN` | --- ## Dew heater element sizing | 12 V supply | Resistance | Power | Suitable for panel size | |-------------|------------|-------|------------------------| | 48 Ω | 3 W | Up to 3″ aperture | | 24 Ω | 6 W | 4-6″ aperture (recommended) | | 12 Ω | 12 W | 8″+ aperture | Use nichrome wire, resistive heating tape, or a commercial dew strap wound flat under the acrylic diffuser. The MOSFET PWM keeps average power proportional to the 0-100 % setting — you do not need to match exact resistance; just aim for 5-10 W at 12 V. --- ## Choosing between WiFi and USB mode | | WiFi (Alpaca) | USB Serial (Alnitak) | |-|--------------|---------------------| | Cable required | No | Yes (USB-A to USB-C) | | Works with | ASCOM Remote, our INDI driver | N.I.N.A. built-in, SGPro, APT, indi_flipflat, our INDI driver | | Dew heater control | Via Alpaca Action (our driver) | Via custom T/U serial commands (our driver only) | | Debug output | Set `SERIAL_DEBUG true` | Set `SERIAL_DEBUG false` | | Discovery | mDNS + UDP broadcast | COM port / /dev/ttyUSBx | For USB mode, edit `config.h` and set `SERIAL_DEBUG false` before flashing, then open the COM port at **9600 baud** in your software. --- ## First-time setup checklist 1. Set LM2596 output to **5.0 V** (measure with multimeter) *before* connecting servo. 2. Edit `firmware/src/config.h` — set `WIFI_SSID`, `WIFI_PASSWORD`. - For USB-only use: also set `SERIAL_DEBUG false`. 3. Adjust `SERVO_OPEN` / `SERVO_CLOSED` angles for your mechanical setup. 4. Flash firmware via PlatformIO: `pio run -t upload`. 5. **WiFi mode**: open Serial Monitor (9600 baud) — note the printed IP address, then browse to `http://:11111/management/v1/configureddevices`. 6. **USB mode**: connect to the COM port at 9600 baud and send `>P000` — you should receive `*P19000`. --- ## ASCOM setup (Windows) 1. Install [ASCOM Platform 6.6+](https://ascom-standards.org/Downloads/Index.htm). 2. Install [ASCOM Remote](https://github.com/ASCOMInitiative/ASCOM.Alpaca.Simulators/releases) (acts as Alpaca → COM bridge). 3. In ASCOM Remote, add a **CoverCalibrator** device pointing to `http://esp32-flatpanel.local:11111`. 4. In your imaging software (N.I.N.A., SGPro, APT) select the "ASCOM Remote CoverCalibrator" driver. --- ## INDI setup (Linux / Raspberry Pi) ```bash # Build dependencies sudo apt install libindi-dev libcurl4-openssl-dev nlohmann-json3-dev cmake # Build cd flatpanel/indi-driver cmake -B build -DCMAKE_INSTALL_PREFIX=/usr cmake --build build -j$(nproc) sudo cmake --install build # Run (KStars/Ekos will load it automatically once installed) # Or manually: indiserver indi_esp32_flatpanel ``` In KStars → Ekos, select **ESP32 FlatPanel** in the Aux device drop-down. - **WiFi mode**: select "WiFi / Alpaca" in the Connection Mode switch, enter the host (`esp32-flatpanel.local`) and port (11111), then connect. - **USB mode**: select "USB Serial (Alnitak)", enter the serial port (`/dev/ttyUSB0` or `/dev/ttyACM0`), then connect. The dew heater slider is available in both modes. **Alternative for USB mode (no custom driver needed):** The existing `indi_flipflat` driver (ships with INDI) speaks standard Alnitak and will control brightness and cover. It will not control the dew heater — use our driver for that. ```bash indiserver indi_flipflat # Select port /dev/ttyUSB0, baud 9600 ```