230 lines
13 KiB
HTML
230 lines
13 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>Multi-Functional RC Controller (MFC) — Projects — Ertunç Özbay</title>
|
||
<meta name="description" content="Engineering documentation for the ESP32-S3-N16R8 Multi-Functional RC Controller (MFC) by Ertunç Özbay: 2.4 GHz nRF24L01+ PA+LNA telemetry, K-Silver Hall-effect gimbals, ST7789 IPS TFT + MicroSD SPI2 bus, KiCad schematic, and Phase 1/2 hardware build.">
|
||
<link rel="icon" type="image/svg+xml" href="../assets/images/favicon.svg">
|
||
<link rel="stylesheet" href="../assets/css/style.css">
|
||
</head>
|
||
<body>
|
||
<a class="skip-link" href="#main-content">Skip to main content</a>
|
||
|
||
<header class="site-header">
|
||
<div class="container header-inner">
|
||
<a class="site-brand" href="../index.html">
|
||
<span class="brand-mark" aria-hidden="true">EÖ</span>
|
||
<span>
|
||
Ertunç Özbay
|
||
<span class="brand-subtitle">embedded // hardware // open-source</span>
|
||
</span>
|
||
</a>
|
||
|
||
<button class="nav-toggle" type="button" data-nav-toggle aria-expanded="false" aria-controls="primary-navigation">
|
||
<span aria-hidden="true">☰</span>
|
||
<span data-nav-label>Menu</span>
|
||
</button>
|
||
|
||
<nav id="primary-navigation" class="site-nav" data-site-nav aria-label="Main navigation">
|
||
<ul class="nav-list">
|
||
<li><a class="nav-link" href="../index.html">Home</a></li>
|
||
<li><a class="nav-link" href="../about.html">About</a></li>
|
||
<li><a class="nav-link" href="../projects/index.html" aria-current="page">Projects</a></li>
|
||
<li><a class="nav-link" href="../blog/index.html">Blog</a></li>
|
||
<li><a class="nav-link" href="../lab.html">Lab</a></li>
|
||
<li><a class="nav-link" href="../contact.html">Contact</a></li>
|
||
</ul>
|
||
</nav>
|
||
</div>
|
||
</header>
|
||
|
||
<main id="main-content">
|
||
<div class="container">
|
||
<nav class="breadcrumb" aria-label="Breadcrumb">
|
||
<a href="index.html">← Back to Projects</a>
|
||
</nav>
|
||
|
||
<article>
|
||
<header class="workshop-hero">
|
||
<div class="card-meta">
|
||
<span class="badge badge-progress">Status: Rev 0.1 Carrier Built → Phase 2 Console Expansion</span>
|
||
<span>Project 01 // ESP32-S3-N16R8 • 2.4 GHz RF • ESP-IDF C99</span>
|
||
</div>
|
||
<h1><span class="gradient-title">Multi-Functional RC Controller (MFC)</span></h1>
|
||
<p class="hero-lead">
|
||
A custom 2.4 GHz wireless transmitter and embedded control console powered by an <strong>ESP32-S3-N16R8</strong> (Dual-Core LX7 @ 240 MHz, 16 MB Flash, 8 MB Octal PSRAM) and an <strong>nRF24L01+ PA+LNA</strong> RF transceiver.
|
||
</p>
|
||
<p class="reading-width">
|
||
Designed to serve as a universal handheld and desktop transmitter for external robotic platforms (such as my <a href="rc-autonomous-vehicle.html">4WD RC & Autonomous Vehicle</a>) while integrating dual K-Silver Hall-effect joysticks, a 1.3" ST7789 IPS TFT display, MicroSD storage, and MAX4466 audio capture.
|
||
</p>
|
||
<div class="button-row">
|
||
<a class="btn btn-primary" href="https://github.com/ertunc-ozbay/multi-functional-controller" rel="noopener noreferrer">💻 View GitHub Repository</a>
|
||
<a class="btn btn-youtube" href="#poc-video">🎬 Watch PoC Video Slot</a>
|
||
<a class="btn btn-secondary" href="index.html">All Projects</a>
|
||
</div>
|
||
</header>
|
||
|
||
<!-- YouTube Proof-of-Concept Video Placeholder -->
|
||
<section id="poc-video" class="poc-video-section" aria-labelledby="mfc-video-heading">
|
||
<div class="poc-video-card">
|
||
<span class="section-label">🎬 Proof of Concept // YouTube Video Showcase</span>
|
||
<h2 id="mfc-video-heading">YouTube Proof-of-Concept Demonstration</h2>
|
||
<!-- Ready-to-use YouTube Embed Placeholder: Replace src when uploaded -->
|
||
<div class="poc-video-screen" role="region" aria-label="YouTube Proof of Concept Video Placeholder">
|
||
<div class="poc-play-badge" aria-hidden="true">
|
||
<div class="poc-play-triangle"></div>
|
||
</div>
|
||
<span class="poc-status-pill">🎥 YouTube PoC Video — Recording / Coming Soon</span>
|
||
<div class="poc-video-title">ESP32-S3 Multi-Functional Controller — Hardware & 2.4 GHz RF Telemetry Demo</div>
|
||
<p class="poc-video-desc">
|
||
Upcoming YouTube demonstration covering the Rev 0.1 perfboard carrier power-on test, 2.4 GHz nRF24L01+ packet transmission, Hall-effect gimbal ADC sampling, and ST7789 IPS TFT UI rendering.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- Early Prototype Hardware Gallery -->
|
||
<section class="section-block" aria-labelledby="p1-gallery">
|
||
<span class="section-label">01 // Early Prototype Build (Rev 0.1 Perfboard Carrier)</span>
|
||
<h2 id="p1-gallery">Very Early Prototype Hardware Gallery</h2>
|
||
<p class="reading-width">
|
||
<em>Note:</em> The photos below show the <strong>very early Phase 1 (Rev 0.1) perfboard carrier build</strong> (click any image to zoom). Currently populated: female/male pin header sockets, 100 µF electrolytic bulk decoupling capacitor, ESP32-S3-N16R8 module, nRF24L01+ 2.4 GHz radio header, and 3.3V/5V/GND power distribution rails. These photos will be updated as the Phase 2 DT-100 desktop console modules are installed.
|
||
</p>
|
||
<div class="card-grid">
|
||
<figure class="card card-amber" style="margin:0;">
|
||
<img class="zoomable-img" src="../assets/images/TOP_VIEW.png" alt="Top view of the early Rev 0.1 Multi-Functional Controller perfboard carrier" style="width:100%; height:auto; border-radius:8px; margin-bottom:0.75rem;">
|
||
<figcaption>
|
||
<strong>Top View (Rev 0.1):</strong> Early perfboard carrier showing dual 22-pin female header sockets for the ESP32-S3, power rail pin headers, and the 100 µF bulk capacitor.
|
||
</figcaption>
|
||
</figure>
|
||
<figure class="card card-amber" style="margin:0;">
|
||
<img class="zoomable-img" src="../assets/images/SIDE_VIEW_WITH_ANTENNA.png" alt="Side view of the Multi-Functional Controller with 2.4 GHz nRF24L01+ SMA duck antenna" style="width:100%; height:auto; border-radius:8px; margin-bottom:0.75rem;">
|
||
<figcaption>
|
||
<strong>RF Transceiver Profile:</strong> Side profile with the nRF24L01+ PA+LNA 2.4 GHz module and external SMA whip antenna mounted on the carrier.
|
||
</figcaption>
|
||
</figure>
|
||
<figure class="card card-amber" style="margin:0;">
|
||
<img class="zoomable-img" src="../assets/images/BOTTOM_VIEW.png" alt="Bottom solder-side point-to-point wiring of the Rev 0.1 perfboard carrier" style="width:100%; height:auto; border-radius:8px; margin-bottom:0.75rem;">
|
||
<figcaption>
|
||
<strong>Bottom Solder Routing:</strong> Hand-soldered point-to-point bus and power distribution traces on the underside of the phenolic perfboard.
|
||
</figcaption>
|
||
</figure>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- KiCad Schematic -->
|
||
<section class="section-block" aria-labelledby="p1-schematic">
|
||
<span class="section-label">02 // Hardware Schematic Capture</span>
|
||
<h2 id="p1-schematic">Early KiCad 9.0 Schematic (<code>mfc-1.svg</code>)</h2>
|
||
<figure class="schematic-frame">
|
||
<img class="zoomable-img" src="../assets/images/mfc-1.svg" alt="KiCad schematic diagram of the ESP32-S3 Multi-Functional Controller" style="background:#ffffff; border-radius:8px; padding:0.5rem;">
|
||
<figcaption class="schematic-caption">
|
||
Early prototype KiCad schematic (<code>mfc-1.kicad_sch</code>) — click to zoom full-screen.
|
||
</figcaption>
|
||
</figure>
|
||
</section>
|
||
|
||
<!-- Confirmed ESP32-S3 Pinout -->
|
||
<section class="section-block reading-width" aria-labelledby="p1-pinout">
|
||
<span class="section-label">03 // Verified ESP32-S3-N16R8 Pinout & Bus Architecture</span>
|
||
<h2 id="p1-pinout">Master Node GPIO Allocation</h2>
|
||
<p>
|
||
Because the <strong>ESP32-S3-N16R8</strong> reserves <code>GPIO 35–37</code> internally for its 8 MB Octal PSRAM and 16 MB SPI Flash, all peripherals are mapped across safe ADC1, SPI2, and PCNT pins:
|
||
</p>
|
||
<table class="spec-table">
|
||
<thead>
|
||
<tr>
|
||
<th scope="col">Subsystem / Peripheral</th>
|
||
<th scope="col">ESP32-S3 GPIO</th>
|
||
<th scope="col">Interface & Engineering Notes</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td><strong>Dual Hall-Effect Joysticks (4 Axes)</strong></td>
|
||
<td><code>GPIO 4, 5, 6, 7</code></td>
|
||
<td>12-bit SAR <code>ADC1</code> (<code>LX, LY, RX, RY</code>) — avoids ADC2 Wi-Fi/RF conflicts</td>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>MAX4466 Electret Mic Preamp</strong></td>
|
||
<td><code>GPIO 1</code></td>
|
||
<td><code>ADC1_CH0</code> analog audio envelope & FFT voice input</td>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>Shared SPI2 Bus (MOSI / MISO / SCK)</strong></td>
|
||
<td><code>GPIO 11 / 13 / 12</code></td>
|
||
<td>High-speed SPI2 bus shared by nRF24L01+, ST7789 TFT, and MicroSD</td>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>nRF24L01+ 2.4 GHz Radio</strong></td>
|
||
<td><code>CE: 9, CSN: 10</code></td>
|
||
<td>Dedicated 100 µF electrolytic + 100 nF ceramic decoupling on 3.3V rail</td>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>1.3" ST7789 IPS TFT (240×240)</strong></td>
|
||
<td><code>CS: 40, DC: 41, RST: 42</code></td>
|
||
<td>Hardware Chip Select added so TFT shares SPI2 cleanly with nRF24 & SD</td>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>MicroSD Card Module</strong></td>
|
||
<td><code>CS: 39</code></td>
|
||
<td>Stores telemetry logs, profiles, and UI assets over SPI2</td>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>Rotary Encoder (KY-040)</strong></td>
|
||
<td><code>CLK: 15, DT: 16, SW: 17</code></td>
|
||
<td>Hardware <code>PCNT</code> quadrature decoder with 1000 ns glitch filter</td>
|
||
</tr>
|
||
<tr>
|
||
<td><strong>2N2222A BJT Low-Side Switch</strong></td>
|
||
<td><code>GPIO 21</code> (via 1 kΩ base R)</td>
|
||
<td>Drives external loads with <code>1N4001</code> / <code>1N5817</code> flyback protection</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</section>
|
||
|
||
<!-- Phase 1 vs Phase 2 BOM -->
|
||
<section class="section-block reading-width" aria-labelledby="p1-bom">
|
||
<span class="section-label">04 // Build Roadmap & Phase 2 Console BOM</span>
|
||
<h2 id="p1-bom">From Rev 0.1 Carrier to the DT-100 Desktop Console</h2>
|
||
<div class="callout-box amber">
|
||
<span class="callout-title">Phase 2 Hardware Upgrade (Direnc.net Procurement List)</span>
|
||
<p>
|
||
The controller is transitioning from the bare Rev 0.1 perfboard carrier into a professional desktop console housing. Once the Phase 2 components below are mounted, the ESP-IDF firmware will be updated with drivers for each module:
|
||
</p>
|
||
<ul style="margin-bottom:0;">
|
||
<li><strong>Enclosure:</strong> DT-100 Desktop Instrument Case (Black ABS, <code>190 × 137 × 59 mm</code>)</li>
|
||
<li><strong>Joysticks:</strong> 2× K-Silver High-Precision Hall-Effect 2-Axis Gimbals</li>
|
||
<li><strong>Display & Storage:</strong> 1.3" ST7789 IPS TFT LCD (240×240) + SPI MicroSD Card Module</li>
|
||
<li><strong>Audio Preamp:</strong> MAX4466 Electret Microphone Amplifier with Adjustable Gain</li>
|
||
<li><strong>Power & Switching:</strong> MT3608 2A DC-DC Boost Converter, 12–24V White LED Waterproof Latching Switch, KTS303 3-Pin Toggle Switch, 180° Slide Switch</li>
|
||
<li><strong>Discrete Protection:</strong> 2N2222 NPN BJT Transistor, 1N5817 1A 20V Schottky Diode, 1N4001 1A 50V Rectifier Diode (DO-41)</li>
|
||
</ul>
|
||
</div>
|
||
</section>
|
||
</article>
|
||
|
||
</div>
|
||
</main>
|
||
|
||
<footer class="site-footer">
|
||
<div class="container footer-inner">
|
||
<div>
|
||
<strong>Ertunç Özbay</strong> — Electrical & Electronics Engineering Student • <a href="mailto:ertuncozbayh@gmail.com">ertuncozbayh@gmail.com</a>
|
||
</div>
|
||
<ul class="footer-links" aria-label="Footer links">
|
||
<li><a href="../projects/index.html">Projects</a></li>
|
||
<li><a href="../blog/index.html">Blog</a></li>
|
||
<li><a href="../lab.html">Lab</a></li>
|
||
<li><a href="../contact.html">Contact</a></li>
|
||
<li><a href="https://github.com/ertunc-ozbay" rel="noopener noreferrer">GitHub</a></li>
|
||
<li><a href="https://www.linkedin.com/in/ertunc-ozbay" rel="noopener noreferrer">LinkedIn</a></li>
|
||
</ul>
|
||
</div>
|
||
</footer>
|
||
|
||
<script src="../assets/js/main.js"></script>
|
||
</body>
|
||
</html>
|