187 lines
9.9 KiB
HTML
187 lines
9.9 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en" data-theme="light">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>Lab & Experiment Notebook - Ertunç Özbay</title>
|
||
<meta name="description" content="Workshop lab notebook of Ertunç Özbay: ESP32-S3 hardware protection notes, RLE MIDI-to-C compression tools, Linux Wine/DX11 experiments, and reverse-engineering study logs.">
|
||
<link rel="icon" type="image/svg+xml" href="assets/images/favicon.svg">
|
||
<link rel="stylesheet" href="assets/css/style.css?v=3">
|
||
</head>
|
||
<body>
|
||
<a class="skip-link" href="index.html#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">Electrical & Electronics Engineering</span>
|
||
</span>
|
||
</a>
|
||
|
||
<div class="header-controls">
|
||
<div class="theme-switcher" role="group" aria-label="Theme"><button type="button" class="theme-btn active" data-set-theme="light">Light</button><button type="button" class="theme-btn" data-set-theme="dark">Dark</button></div>
|
||
|
||
<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">Projects</a></li>
|
||
<li><a class="nav-link" href="blog/index.html">Blog</a></li>
|
||
<li><a class="nav-link" href="lab.html" aria-current="page">Lab</a></li>
|
||
<li><a class="nav-link" href="contact.html">Contact</a></li>
|
||
</ul>
|
||
</nav>
|
||
</div>
|
||
</div>
|
||
</header>
|
||
|
||
<main id="main-content">
|
||
<div class="container">
|
||
<section class="workshop-hero" aria-labelledby="lab-heading">
|
||
<span class="workshop-eyebrow"> WORKSHOP BENCH // LAB NOTEBOOK</span>
|
||
<h1 id="lab-heading"><span class="gradient-title">Lab & Experiment Notebook</span></h1>
|
||
<p class="hero-lead">
|
||
Welcome to my open workbench. This page tracks my real engineering experiments, hardware debugging breakthroughs, Python/Rust tooling scripts, and reverse-engineering study notes.
|
||
</p>
|
||
</section>
|
||
|
||
<!-- Section 1: Current experiments -->
|
||
<section class="section-block" aria-labelledby="lab-current">
|
||
<div class="section-header">
|
||
<div>
|
||
<span class="section-label">Active Bench Breakthroughs</span>
|
||
<h2 id="lab-current">Recent Hardware & Firmware Experiments</h2>
|
||
</div>
|
||
</div>
|
||
<div class="card-grid-2">
|
||
<div class="card card-synth">
|
||
<div class="card-top">
|
||
<div class="card-meta">
|
||
<span class="badge badge-experimental">Solved on Breadboard</span>
|
||
<span>ESP32 Dual-Core · Python RLE</span>
|
||
</div>
|
||
<h3>Defeating the 30 Hz MIDI "Strobe-Light" Bug & Piezo Bass Roll-Off</h3>
|
||
<p>
|
||
While building the <a href="projects/midi-breadboard-instrument.html">16-Track MIDI Breadboard Instrument</a>, raw MIDI delta-slices caused the LEDs and 1.3" SPI OLED to strobe violently. Writing a custom Run-Length Encoding (RLE) compressor in Python (<code>midi_to_c.py</code>) and transposing bass-heavy tracks like <em>Seven Nation Army</em> +2 octaves solved both flash exhaustion and piezo acoustic roll-off.
|
||
</p>
|
||
</div>
|
||
<div class="card-actions">
|
||
<a class="btn btn-cyan" href="assets/downloads/midi_to_c.py" download="midi_to_c.py">Download midi_to_c.py</a>
|
||
<a class="btn btn-emerald" href="assets/downloads/desk_rave_16track_esp32.c" download="mmcontroller.c">Download 16-Track C Code</a>
|
||
<a class="btn btn-secondary" href="projects/midi-breadboard-instrument.html">Full MIDI Project →</a>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="card card-amber">
|
||
<div class="card-top">
|
||
<div class="card-meta">
|
||
<span class="badge badge-progress">Hardware Rev 0.1 → Phase 2</span>
|
||
<span>ESP32-S3-N16R8 · SPI2 Bus</span>
|
||
</div>
|
||
<h3>ESP32-S3 Octal PSRAM Pin Collisions & Shared SPI2 Arbitration</h3>
|
||
<p>
|
||
On the <a href="projects/multi-functional-controller.html">Multi-Functional RC Controller</a>, the ESP32-S3-N16R8 reserves <code>GPIO 35–37</code> for internal Octal PSRAM/Flash. We remapped the shared SPI2 bus (<code>MOSI: 11, MISO: 13, SCK: 12</code>) with dedicated hardware CS lines for the nRF24L01+ (<code>CSN: 10</code>), MicroSD (<code>CS: 39</code>), and ST7789 IPS TFT (<code>CS: 40</code>).
|
||
</p>
|
||
</div>
|
||
<div class="card-actions">
|
||
<a class="btn btn-cyan" href="assets/downloads/mfc-1.kicad_sch" download="mfc-1.kicad_sch">Download KiCad Schematic</a>
|
||
<a class="btn btn-emerald" href="assets/downloads/mfc_esp32s3_firmware.c" download="mmcontroller.c">Download S3 Firmware</a>
|
||
<a class="btn btn-secondary" href="projects/multi-functional-controller.html">Full Controller Page →</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- Section 2: Software and conversion tools -->
|
||
<section class="section-block" aria-labelledby="lab-software">
|
||
<div class="section-header">
|
||
<div>
|
||
<span class="section-label">Code & Systems Tooling</span>
|
||
<h2 id="lab-software">Custom Compilers & Linux Runtime Tools</h2>
|
||
</div>
|
||
</div>
|
||
<div class="card-grid-2">
|
||
<div class="card card-coral">
|
||
<div class="card-top">
|
||
<div class="card-meta">
|
||
<span class="badge badge-coral">KiCad · Hardware Design</span>
|
||
<span>Schematic & PCB Capture</span>
|
||
</div>
|
||
<h3>KiCad Schematic Capture for ESP32-S3 Hardware (<code>mfc-1.kicad_sch</code>)</h3>
|
||
<p>
|
||
In <a href="projects/multi-functional-controller.html">multi-functional-controller</a>, we captured a complete modular schematic linking dual Hall-effect analog gimbals, a 16-channel CD74HC4067 multiplexer, an nRF24L01+ PA+LNA RF module, and an SSD1306 I2C OLED display to an ESP32-S3.
|
||
</p>
|
||
</div>
|
||
<div class="card-actions">
|
||
<a class="btn btn-emerald" href="/assets/downloads/mfc-1.kicad_sch" download="mfc-1.kicad_sch">Download KiCad Schematic</a>
|
||
<a class="btn btn-secondary" href="projects/multi-functional-controller.html">View Hardware Page →</a>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="card card-emerald">
|
||
<div class="card-top">
|
||
<div class="card-meta">
|
||
<span class="badge badge-active">Python 3 · mido</span>
|
||
<span>Embedded Audio Tooling</span>
|
||
</div>
|
||
<h3>RLE MIDI-to-C Struct Compiler (<code>midi_to_c.py</code>)</h3>
|
||
<p>
|
||
Converts multi-channel `.mid` files into compact C99 <code>SequenceStep</code> struct arrays (<code>{frequency, duration, kick_drum, hi_hat}</code>), automatically routing MIDI Channel 10 and low bass notes (<code>< MIDI 50</code>) to hardware percussion buzzers.
|
||
</p>
|
||
</div>
|
||
<div class="card-actions">
|
||
<a class="btn btn-secondary" href="https://git.ertuncozbay.dev/ertunc-ozbay/midi-breadboard-instrument/src/branch/main/scripts/midi_to_c.py" rel="noopener noreferrer">View Script on Git Server →</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- Section 3: Reverse-engineering learning -->
|
||
<section class="section-block" aria-labelledby="lab-re">
|
||
<div class="section-header">
|
||
<div>
|
||
<span class="section-label">System Internals</span>
|
||
<h2 id="lab-re">Reverse-Engineering & Low-Level Study Log</h2>
|
||
</div>
|
||
</div>
|
||
<div class="callout-box magenta">
|
||
<span class="callout-title">Looking Under the Hood</span>
|
||
<p>
|
||
I study reverse engineering using <strong>Ghidra</strong>, <strong>x64dbg</strong>, <strong>radare2</strong>, and <strong>Cheat Engine</strong> to understand how compiled C/C++ binaries, memory layouts, calling conventions, and hardware registers work at the machine instruction level.
|
||
</p>
|
||
<p style="margin-bottom:0;">
|
||
Every time I inspect a compiled binary or debug an ESP32 panic backtrace, it reinforces why deep knowledge of C, memory alignment, and Assembly is indispensable.
|
||
</p>
|
||
</div>
|
||
</section>
|
||
|
||
</div>
|
||
</main>
|
||
|
||
<footer class="site-footer">
|
||
<div class="container footer-inner">
|
||
<div>
|
||
<strong>Ertunç Özbay</strong> - Electrical & Electronics Engineering Student · <a href="mailto:ertunc.ozbay@outlook.com">ertunc.ozbay@outlook.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://git.ertuncozbay.dev/ertunc-ozbay" rel="noopener noreferrer">Git Server</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?v=3"></script>
|
||
</body>
|
||
</html>
|