feat: global colorful redesign, sync all 4 GitHub projects, add YouTube PoC video placeholders, and add Gmail contact
This commit is contained in:
parent
d9127ac7d9
commit
7e3356c383
16 changed files with 21223 additions and 617 deletions
84
about.html
84
about.html
|
|
@ -4,7 +4,7 @@
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>About — Ertunç Özbay</title>
|
<title>About — Ertunç Özbay</title>
|
||||||
<meta name="description" content="About Ertunç Özbay: Electrical and Electronics Engineering student at Bülent Ecevit University, exploring hardware, software, embedded systems, C, and reverse engineering.">
|
<meta name="description" content="About Ertunç Özbay: Electrical and Electronics Engineering student at Bülent Ecevit University, exploring hardware, software, embedded systems, C, Rust, and reverse engineering.">
|
||||||
<link rel="icon" type="image/svg+xml" href="assets/images/favicon.svg">
|
<link rel="icon" type="image/svg+xml" href="assets/images/favicon.svg">
|
||||||
<link rel="stylesheet" href="assets/css/style.css">
|
<link rel="stylesheet" href="assets/css/style.css">
|
||||||
</head>
|
</head>
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
<span class="brand-mark" aria-hidden="true">EÖ</span>
|
<span class="brand-mark" aria-hidden="true">EÖ</span>
|
||||||
<span>
|
<span>
|
||||||
Ertunç Özbay
|
Ertunç Özbay
|
||||||
<span class="brand-subtitle">workshop // notebook // lab</span>
|
<span class="brand-subtitle">embedded // hardware // open-source</span>
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
|
|
@ -42,10 +42,10 @@
|
||||||
<main id="main-content">
|
<main id="main-content">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<section class="workshop-hero" aria-labelledby="about-heading">
|
<section class="workshop-hero" aria-labelledby="about-heading">
|
||||||
<span class="workshop-eyebrow">ABOUT // IDENTITY & APPROACH</span>
|
<span class="workshop-eyebrow">⚡ ABOUT // IDENTITY & ENGINEERING APPROACH</span>
|
||||||
<h1 id="about-heading">About Me & This Workshop</h1>
|
<h1 id="about-heading"><span class="gradient-title">About Me & This Engineering Studio</span></h1>
|
||||||
<p class="hero-lead">
|
<p class="hero-lead">
|
||||||
I am a student who enjoys building things, understanding systems, and learning by going deeper than the first explanation.
|
I am an Electrical & Electronics Engineering student at Bülent Ecevit University who builds hardware, writes low-level C and Rust software, and learns by going deeper than the first explanation.
|
||||||
</p>
|
</p>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
@ -53,21 +53,18 @@
|
||||||
<span class="section-label">01 // Who I Am</span>
|
<span class="section-label">01 // Who I Am</span>
|
||||||
<h2 id="story-heading">Learning by Building and Investigating</h2>
|
<h2 id="story-heading">Learning by Building and Investigating</h2>
|
||||||
<p>
|
<p>
|
||||||
My interests span both hardware and software. I do not want to limit myself to only one layer of a system. I want to understand how physical components, electronics, firmware, and higher-level software work together.
|
My interests span both hardware and software. I do not want to limit myself to only one layer of a system—I want to understand how physical components, electronics, firmware, and higher-level software work together.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
I am currently studying embedded systems, circuit analysis, C programming, and technical reporting. In the future, I want to study Assembly and continue developing my programming skills with C++, Python, Rust, and other technologies.
|
Right now, my active work centers on <strong>ESP32 / ESP32-S3 embedded systems in ESP-IDF (ISO C99 & FreeRTOS)</strong>, circuit analysis, KiCad schematic capture, Python hardware tooling, and Rust systems programming on Arch Linux.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
I love open source, freedom, and making things that are useful, unusual, or simply fun. I am using this website to document my progress, express myself, share what I build, and find people who enjoy learning and creating together.
|
I love open source, freedom, and making things that are useful, unusual, or simply fun. I use this website to document my progress, share real schematics and firmware, and connect with people who enjoy building and learning together.
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
I am currently studying Electrical and Electronics Engineering at Bülent Ecevit University. I am still exploring my exact future specialization, but I am especially interested in areas where hardware, software, human judgment, and practical engineering meet.
|
|
||||||
</p>
|
</p>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<figure class="schematic-frame" aria-label="Hardware and software layers diagram">
|
<figure class="schematic-frame" aria-label="Hardware and software layers diagram">
|
||||||
<img src="assets/images/hardware-software-bridge.svg" alt="Diagram showing three connected layers: Layer 1 Circuits and Electronics, Layer 2 Embedded and Low-Level C Programming, and Layer 3 Tools and Human Judgment." width="760" height="220">
|
<img class="zoomable-img" src="assets/images/hardware-software-bridge.svg" alt="Diagram showing three connected layers: Layer 1 Circuits and Electronics, Layer 2 Embedded and Low-Level C Programming, and Layer 3 Tools and Human Judgment." width="760" height="220">
|
||||||
<figcaption class="schematic-caption">
|
<figcaption class="schematic-caption">
|
||||||
Connecting physical circuits, low-level code, and high-level software tools rather than treating them as separate worlds.
|
Connecting physical circuits, low-level code, and high-level software tools rather than treating them as separate worlds.
|
||||||
</figcaption>
|
</figcaption>
|
||||||
|
|
@ -88,68 +85,54 @@
|
||||||
I often think about technology through a simple car analogy: if I want to drive a car responsibly, I should understand at least the basics of its steering, dynamics, brakes, and other important systems. If I understand how the car works and how to drive it, I can make good decisions, recognize problems early, teach someone else, and know what to ask for when something needs attention.
|
I often think about technology through a simple car analogy: if I want to drive a car responsibly, I should understand at least the basics of its steering, dynamics, brakes, and other important systems. If I understand how the car works and how to drive it, I can make good decisions, recognize problems early, teach someone else, and know what to ask for when something needs attention.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
I want to approach AI in the exact same way. I know AI is changing both hardware and software workflows, and I use AI tools when experimenting. However, I do not want to use AI blindly. I want to understand systems deeply enough to guide AI, evaluate its output, recognize mistakes, and take responsibility for the final result.
|
I approach AI in the exact same way. I use AI tools when experimenting, but I do not want to use AI blindly—I want to understand the hardware registers, pin strapping rules, and software architecture deeply enough to evaluate output critically and take full responsibility for the final system.
|
||||||
</p>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section class="section-block reading-width" aria-labelledby="re-heading">
|
|
||||||
<span class="section-label">03 // Looking Under the Hood</span>
|
|
||||||
<h2 id="re-heading">Learning Reverse Engineering Honestly</h2>
|
|
||||||
<p>
|
|
||||||
I am also interested in reverse engineering, and I am interested in understanding how software and systems work internally. I am still learning reverse engineering and experimenting with reverse-engineering tools—I do not pretend to be an expert.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
So far, I have experimented with tools such as <strong>Cheat Engine</strong>, <strong>Ghidra</strong>, and <strong>x64dbg</strong> to investigate and configure aspects of online game mechanics. In some of those experiments, AI tools generated or helped with parts of the code, and I did not yet fully understand every part of the underlying code that was produced.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Being honest about that gap is important to me: that experience is actually what pushed me to study low-level programming, C, and future Assembly more seriously. My goal is not to pretend that I already understand everything—my goal is to understand more each time I investigate a system.
|
|
||||||
</p>
|
</p>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section class="section-block" aria-labelledby="interests-heading">
|
<section class="section-block" aria-labelledby="interests-heading">
|
||||||
<div class="section-header">
|
<div class="section-header">
|
||||||
<div>
|
<div>
|
||||||
<span class="section-label">04 // Technical Map</span>
|
<span class="section-label">03 // Technical Stack</span>
|
||||||
<h2 id="interests-heading">Areas I Am Studying & Exploring</h2>
|
<h2 id="interests-heading">Areas I Am Building & Exploring</h2>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="card-grid">
|
<div class="card-grid">
|
||||||
<div class="card">
|
<div class="card card-amber">
|
||||||
<div class="card-top">
|
<div class="card-top">
|
||||||
|
<span class="section-label">Embedded & Electronics</span>
|
||||||
<h3>Current Focus</h3>
|
<h3>Current Focus</h3>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Hardware and software interaction</li>
|
<li>ESP32 & ESP32-S3 (ESP-IDF v5.2.2, FreeRTOS)</li>
|
||||||
<li>Embedded systems & microcontrollers</li>
|
<li>ISO C99 firmware & SPI/ADC/LEDC/PCNT peripherals</li>
|
||||||
<li>Electronics & circuit analysis</li>
|
<li>2.4 GHz nRF24L01+ RF telemetry & power decoupling</li>
|
||||||
<li>C programming</li>
|
<li>KiCad schematic capture & perfboard prototyping</li>
|
||||||
<li>Building and testing real systems on breadboards</li>
|
|
||||||
<li>Technical documentation and reporting</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="card">
|
<div class="card card-synth">
|
||||||
<div class="card-top">
|
<div class="card-top">
|
||||||
<h3>Next Learning Milestones</h3>
|
<span class="section-label">Systems & Tooling</span>
|
||||||
|
<h3>Software & Reverse Engineering</h3>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Assembly language fundamentals</li>
|
<li>Rust & C++ systems programming on Arch Linux</li>
|
||||||
<li>Deeper C++ and systems programming</li>
|
<li>Python RLE data compression & hardware scripts</li>
|
||||||
<li>Python for tooling and conversion scripts</li>
|
<li>Wine / DirectX 11 runtime internals & TLS alignment</li>
|
||||||
<li>Rust for reliable systems software</li>
|
<li>Binary analysis (Ghidra, x64dbg, Cheat Engine)</li>
|
||||||
<li>Learning reverse engineering (Cheat Engine, Ghidra, x64dbg)</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="card">
|
<div class="card card-emerald">
|
||||||
<div class="card-top">
|
<div class="card-top">
|
||||||
<h3>Future Directions Under Exploration</h3>
|
<span class="section-label">Roadmap</span>
|
||||||
|
<h3>Next Milestones</h3>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Embedded systems & physical computing</li>
|
<li>DT-100 desktop console assembly for the MFC</li>
|
||||||
<li>Robotics, RC vehicles, and autonomous systems</li>
|
<li>4WD RC & Autonomous Vehicle closed-loop testing</li>
|
||||||
<li>Firmware analysis & hardware-software security</li>
|
<li>YouTube Proof-of-Concept videos for all 4 projects</li>
|
||||||
<li>Open-source hardware and software tools</li>
|
<li>Custom PCB layout & Assembly language deep-dives</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -162,7 +145,7 @@
|
||||||
<footer class="site-footer">
|
<footer class="site-footer">
|
||||||
<div class="container footer-inner">
|
<div class="container footer-inner">
|
||||||
<div>
|
<div>
|
||||||
<strong>Ertunç Özbay</strong> — Personal workshop, project lab, and learning notebook.
|
<strong>Ertunç Özbay</strong> — Electrical & Electronics Engineering Student • <a href="mailto:ertuncozbayh@gmail.com">ertuncozbayh@gmail.com</a>
|
||||||
</div>
|
</div>
|
||||||
<ul class="footer-links" aria-label="Footer links">
|
<ul class="footer-links" aria-label="Footer links">
|
||||||
<li><a href="projects/index.html">Projects</a></li>
|
<li><a href="projects/index.html">Projects</a></li>
|
||||||
|
|
@ -170,6 +153,7 @@
|
||||||
<li><a href="lab.html">Lab</a></li>
|
<li><a href="lab.html">Lab</a></li>
|
||||||
<li><a href="contact.html">Contact</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://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>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load diff
BIN
assets/images/BOTTOM_VIEW.png
Normal file
BIN
assets/images/BOTTOM_VIEW.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 9.5 MiB |
BIN
assets/images/SIDE_VIEW_WITH_ANTENNA.png
Normal file
BIN
assets/images/SIDE_VIEW_WITH_ANTENNA.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.2 MiB |
BIN
assets/images/TOP_VIEW.png
Normal file
BIN
assets/images/TOP_VIEW.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 7.1 MiB |
19790
assets/images/mfc-1.svg
Normal file
19790
assets/images/mfc-1.svg
Normal file
File diff suppressed because it is too large
Load diff
|
After Width: | Height: | Size: 368 KiB |
|
|
@ -2,13 +2,56 @@
|
||||||
Ertunç Özbay — Workshop & Portfolio Script (Plain JS, No Dependencies)
|
Ertunç Özbay — Workshop & Portfolio Script (Plain JS, No Dependencies)
|
||||||
Handles:
|
Handles:
|
||||||
1. Accessible mobile navigation menu toggle (with Escape key support)
|
1. Accessible mobile navigation menu toggle (with Escape key support)
|
||||||
2. Static blog category filtering on the Blog page
|
2. Luminous Aurora / Daylight Studio theme switcher (persisted in localStorage)
|
||||||
|
3. Static blog category filtering on the Blog page
|
||||||
|
4. One-click copy email button on Contact page
|
||||||
|
5. Image lightbox for hardware prototype photos and schematics
|
||||||
========================================================================== */
|
========================================================================== */
|
||||||
|
|
||||||
(function () {
|
(function () {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
// 1. Mobile Navigation Toggle
|
// 1. Theme Switcher (Vibrant Aurora Default + Daylight Studio Mode)
|
||||||
|
var rootEl = document.documentElement;
|
||||||
|
var savedTheme = null;
|
||||||
|
try {
|
||||||
|
savedTheme = localStorage.getItem("eo-theme");
|
||||||
|
} catch (e) {}
|
||||||
|
|
||||||
|
if (savedTheme === "light" || savedTheme === "dark") {
|
||||||
|
rootEl.setAttribute("data-theme", savedTheme);
|
||||||
|
}
|
||||||
|
|
||||||
|
var navList = document.querySelector(".nav-list");
|
||||||
|
if (navList && !document.querySelector("[data-theme-toggle]")) {
|
||||||
|
var li = document.createElement("li");
|
||||||
|
var btn = document.createElement("button");
|
||||||
|
btn.type = "button";
|
||||||
|
btn.className = "theme-toggle";
|
||||||
|
btn.setAttribute("data-theme-toggle", "");
|
||||||
|
btn.setAttribute("aria-label", "Toggle color theme");
|
||||||
|
|
||||||
|
function updateThemeBtnLabel() {
|
||||||
|
var isLight = rootEl.getAttribute("data-theme") === "light";
|
||||||
|
btn.textContent = isLight ? "🌙 Aurora" : "☀️ Daylight";
|
||||||
|
}
|
||||||
|
updateThemeBtnLabel();
|
||||||
|
|
||||||
|
btn.addEventListener("click", function () {
|
||||||
|
var isLight = rootEl.getAttribute("data-theme") === "light";
|
||||||
|
var nextTheme = isLight ? "dark" : "light";
|
||||||
|
rootEl.setAttribute("data-theme", nextTheme);
|
||||||
|
try {
|
||||||
|
localStorage.setItem("eo-theme", nextTheme);
|
||||||
|
} catch (e) {}
|
||||||
|
updateThemeBtnLabel();
|
||||||
|
});
|
||||||
|
|
||||||
|
li.appendChild(btn);
|
||||||
|
navList.appendChild(li);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2. Mobile Navigation Toggle
|
||||||
var navToggle = document.querySelector("[data-nav-toggle]");
|
var navToggle = document.querySelector("[data-nav-toggle]");
|
||||||
var siteNav = document.querySelector("[data-site-nav]");
|
var siteNav = document.querySelector("[data-site-nav]");
|
||||||
|
|
||||||
|
|
@ -24,7 +67,6 @@
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// Close mobile menu when pressing Escape
|
|
||||||
document.addEventListener("keydown", function (event) {
|
document.addEventListener("keydown", function (event) {
|
||||||
if (event.key === "Escape" && siteNav.classList.contains("is-open")) {
|
if (event.key === "Escape" && siteNav.classList.contains("is-open")) {
|
||||||
navToggle.setAttribute("aria-expanded", "false");
|
navToggle.setAttribute("aria-expanded", "false");
|
||||||
|
|
@ -38,7 +80,7 @@
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// 2. Blog Category Filter (Progressive Enhancement)
|
// 3. Blog Category Filter
|
||||||
var filterButtons = document.querySelectorAll("[data-blog-filter]");
|
var filterButtons = document.querySelectorAll("[data-blog-filter]");
|
||||||
var blogCards = document.querySelectorAll("[data-blog-category]");
|
var blogCards = document.querySelectorAll("[data-blog-category]");
|
||||||
var filterStatus = document.getElementById("blog-filter-status");
|
var filterStatus = document.getElementById("blog-filter-status");
|
||||||
|
|
@ -70,4 +112,59 @@
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 4. Copy Email to Clipboard Buttons
|
||||||
|
var copyButtons = document.querySelectorAll("[data-copy-email]");
|
||||||
|
copyButtons.forEach(function (btn) {
|
||||||
|
btn.addEventListener("click", function () {
|
||||||
|
var email = btn.getAttribute("data-copy-email");
|
||||||
|
if (!email || !navigator.clipboard) return;
|
||||||
|
var originalText = btn.textContent;
|
||||||
|
navigator.clipboard.writeText(email).then(function () {
|
||||||
|
btn.textContent = "✓ Copied: " + email;
|
||||||
|
setTimeout(function () {
|
||||||
|
btn.textContent = originalText;
|
||||||
|
}, 2200);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// 5. Image Lightbox for Hardware Photos & Schematics
|
||||||
|
var zoomImages = document.querySelectorAll(".zoomable-img");
|
||||||
|
if (zoomImages.length > 0) {
|
||||||
|
var backdrop = document.createElement("div");
|
||||||
|
backdrop.className = "lightbox-backdrop";
|
||||||
|
backdrop.hidden = true;
|
||||||
|
backdrop.innerHTML =
|
||||||
|
'<button type="button" class="lightbox-close" aria-label="Close image preview">✕ Close (Esc)</button>' +
|
||||||
|
'<img class="lightbox-Backdrop-img" src="" alt="">' +
|
||||||
|
'<div class="lightbox-caption"></div>';
|
||||||
|
document.body.appendChild(backdrop);
|
||||||
|
|
||||||
|
var lbImg = backdrop.querySelector(".lightbox-Backdrop-img");
|
||||||
|
var lbCap = backdrop.querySelector(".lightbox-caption");
|
||||||
|
var lbClose = backdrop.querySelector(".lightbox-close");
|
||||||
|
|
||||||
|
function closeLightbox() {
|
||||||
|
backdrop.hidden = true;
|
||||||
|
lbImg.src = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
zoomImages.forEach(function (img) {
|
||||||
|
img.addEventListener("click", function () {
|
||||||
|
lbImg.src = img.src;
|
||||||
|
lbImg.alt = img.alt || "";
|
||||||
|
lbCap.textContent = img.alt || "";
|
||||||
|
backdrop.hidden = false;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
lbClose.addEventListener("click", closeLightbox);
|
||||||
|
backdrop.addEventListener("click", function (e) {
|
||||||
|
if (e.target === backdrop) closeLightbox();
|
||||||
|
});
|
||||||
|
document.addEventListener("keydown", function (e) {
|
||||||
|
if (e.key === "Escape" && !backdrop.hidden) closeLightbox();
|
||||||
|
});
|
||||||
|
}
|
||||||
})();
|
})();
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,8 @@
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>Blog & Build Notes — Ertunç Özbay</title>
|
<title>Blog & Build Notes — Ertunç Özbay</title>
|
||||||
<meta name="description" content="Static technical blog and learning notebook by Ertunç Özbay covering project build logs, embedded systems, circuit experiments, and C programming.">
|
<meta name="description" content="Static technical blog and learning notebook by Ertunç Özbay covering project build logs, embedded systems, circuit experiments, and C/Rust programming.">
|
||||||
<link rel="icon" type="image/svg+xml" href="../assets/images/favicon.svg">
|
<link rel="icon" type="image/svg+xml" href="../assets/images/favicon.svg">
|
||||||
<link rel="stylesheet" href="../assets/css/style.css">
|
<link rel="stylesheet" href="../assets/css/style.css">
|
||||||
</head>
|
</head>
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
<span class="brand-mark" aria-hidden="true">EÖ</span>
|
<span class="brand-mark" aria-hidden="true">EÖ</span>
|
||||||
<span>
|
<span>
|
||||||
Ertunç Özbay
|
Ertunç Özbay
|
||||||
<span class="brand-subtitle">workshop // notebook // lab</span>
|
<span class="brand-subtitle">embedded // hardware // open-source</span>
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
|
|
@ -42,13 +42,10 @@
|
||||||
<main id="main-content">
|
<main id="main-content">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<section class="workshop-hero" aria-labelledby="blog-heading">
|
<section class="workshop-hero" aria-labelledby="blog-heading">
|
||||||
<span class="workshop-eyebrow">TECHNICAL NOTEBOOK // STATIC BLOG</span>
|
<span class="workshop-eyebrow">📓 TECHNICAL NOTEBOOK // STATIC BLOG</span>
|
||||||
<h1 id="blog-heading">Blog & Build Notes</h1>
|
<h1 id="blog-heading"><span class="gradient-title">Blog & Build Notes</span></h1>
|
||||||
<p class="hero-lead">
|
<p class="hero-lead">
|
||||||
This is where I document project build logs, embedded systems learning, circuit experiments, C programming notes, reverse-engineering learning, and honest reflections on what worked and what failed.
|
Where I document hardware build logs, ESP-IDF firmware architecture, circuit debugging stories, and honest reflections on what worked and what failed.
|
||||||
</p>
|
|
||||||
<p class="reading-width" style="margin-bottom:0;">
|
|
||||||
<strong>Honest status note:</strong> This blog is a manually maintained static notebook. While I prepare my first full technical build logs, the entries below are clearly labeled as an <em>Example / Starter Note</em> and a reusable <em>Template / Draft</em> so nothing here pretends to be a finished achievement before it is written.
|
|
||||||
</p>
|
</p>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
@ -71,25 +68,22 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="card-grid-2">
|
<div class="card-grid-2">
|
||||||
<!-- Entry 1: Clearly labeled Starter/Example Note -->
|
<!-- Entry 1 -->
|
||||||
<article class="card" data-blog-category="reflections,build-logs">
|
<article class="card card-amber" data-blog-category="reflections,build-logs">
|
||||||
<div class="card-top">
|
<div class="card-top">
|
||||||
<div class="card-meta">
|
<div class="card-meta">
|
||||||
<span class="badge badge-draft">Example • Work in progress</span>
|
<span class="badge badge-draft">Starter Note</span>
|
||||||
<time datetime="2026-10-14">October 14, 2026</time>
|
<time datetime="2026-10-14">October 14, 2026</time>
|
||||||
<span>• 3 min read</span>
|
<span>• 3 min read</span>
|
||||||
</div>
|
</div>
|
||||||
<h3><a href="welcome-to-my-workshop-note.html">Why I Built This Personal Workshop & Learning Notebook (Starter Note)</a></h3>
|
<h3><a href="welcome-to-my-workshop-note.html">Why I Built This Personal Workshop & Learning Notebook</a></h3>
|
||||||
<p>
|
<p>
|
||||||
<strong>Category:</strong> Personal Learning Reflections & Open-Source Ideas
|
An introductory note explaining why I designed my site as an open engineering studio for hardware, embedded C firmware, and project build logs rather than a corporate résumé.
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
An introductory note explaining why I redesigned my site as a calm, honest workshop for hardware, software, C programming, and project build logs rather than a corporate résumé.
|
|
||||||
</p>
|
</p>
|
||||||
<ul class="tag-list" aria-label="Tags">
|
<ul class="tag-list" aria-label="Tags">
|
||||||
<li><span class="tag">workshop</span></li>
|
<li><span class="tag tag-esp">workshop</span></li>
|
||||||
<li><span class="tag">hardware-software</span></li>
|
<li><span class="tag tag-c">hardware-software</span></li>
|
||||||
<li><span class="tag">learning-in-public</span></li>
|
<li><span class="tag tag-hw">learning-in-public</span></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-actions">
|
<div class="card-actions">
|
||||||
|
|
@ -97,8 +91,8 @@
|
||||||
</div>
|
</div>
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
<!-- Entry 2: Clearly labeled Post Template -->
|
<!-- Entry 2 -->
|
||||||
<article class="card" data-blog-category="template,build-logs">
|
<article class="card card-synth" data-blog-category="template,build-logs">
|
||||||
<div class="card-top">
|
<div class="card-top">
|
||||||
<div class="card-meta">
|
<div class="card-meta">
|
||||||
<span class="badge badge-experimental">Template • Draft</span>
|
<span class="badge badge-experimental">Template • Draft</span>
|
||||||
|
|
@ -107,15 +101,11 @@
|
||||||
</div>
|
</div>
|
||||||
<h3><a href="post-template.html">[Template] Project Build Log & Technical Note Template</a></h3>
|
<h3><a href="post-template.html">[Template] Project Build Log & Technical Note Template</a></h3>
|
||||||
<p>
|
<p>
|
||||||
<strong>Category:</strong> Template / Build Log Structure
|
A reusable static HTML article template containing sections for hardware schematics, firmware architecture, what worked, what failed, and related project links.
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
A ready-to-copy static HTML article template containing placeholders for title, date, category, tags, reading time, what worked, what failed, and related project links.
|
|
||||||
</p>
|
</p>
|
||||||
<ul class="tag-list" aria-label="Tags">
|
<ul class="tag-list" aria-label="Tags">
|
||||||
<li><span class="tag">template</span></li>
|
<li><span class="tag tag-python">template</span></li>
|
||||||
<li><span class="tag">draft</span></li>
|
<li><span class="tag tag-synth">build-log</span></li>
|
||||||
<li><span class="tag">build-log</span></li>
|
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-actions">
|
<div class="card-actions">
|
||||||
|
|
@ -125,25 +115,13 @@
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section class="section-block reading-width" aria-labelledby="planned-topics-heading">
|
|
||||||
<span class="section-label">Upcoming Notebook Topics</span>
|
|
||||||
<h2 id="planned-topics-heading">What I Plan to Write About Next</h2>
|
|
||||||
<ul>
|
|
||||||
<li><strong>MIDI project development:</strong> How my conversion script turns MIDI data into C code for two active buzzers, one passive buzzer, and a 1.3-inch AMOLED display.</li>
|
|
||||||
<li><strong>RC controller & autonomous vehicle notes:</strong> Build logs and hardware-software integration lessons as components are tested.</li>
|
|
||||||
<li><strong>Embedded systems & circuit experiments:</strong> Notes from studying circuit analysis, C programming, and future Assembly experiments.</li>
|
|
||||||
<li><strong>Reverse-engineering learning notes:</strong> Beginner investigations using Cheat Engine, Ghidra, and x64dbg to understand how software works internally.</li>
|
|
||||||
<li><strong>What worked and what failed:</strong> Honest debugging stories and lessons learned when guiding and verifying AI-generated code.</li>
|
|
||||||
</ul>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
<footer class="site-footer">
|
<footer class="site-footer">
|
||||||
<div class="container footer-inner">
|
<div class="container footer-inner">
|
||||||
<div>
|
<div>
|
||||||
<strong>Ertunç Özbay</strong> — Personal workshop, project lab, and learning notebook.
|
<strong>Ertunç Özbay</strong> — Electrical & Electronics Engineering Student • <a href="mailto:ertuncozbayh@gmail.com">ertuncozbayh@gmail.com</a>
|
||||||
</div>
|
</div>
|
||||||
<ul class="footer-links" aria-label="Footer links">
|
<ul class="footer-links" aria-label="Footer links">
|
||||||
<li><a href="../projects/index.html">Projects</a></li>
|
<li><a href="../projects/index.html">Projects</a></li>
|
||||||
|
|
@ -151,6 +129,7 @@
|
||||||
<li><a href="../lab.html">Lab</a></li>
|
<li><a href="../lab.html">Lab</a></li>
|
||||||
<li><a href="../contact.html">Contact</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://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>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
|
|
||||||
145
contact.html
145
contact.html
|
|
@ -3,8 +3,8 @@
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>Contact & Collaboration — Ertunç Özbay</title>
|
<title>Contact & Collaboration — Ertunç Özbay</title>
|
||||||
<meta name="description" content="Connect with Ertunç Özbay on GitHub to discuss hardware, software, embedded systems, C programming, and open-source projects.">
|
<meta name="description" content="Contact Ertunç Özbay via Gmail (ertuncozbayh@gmail.com), Outlook, LinkedIn, or GitHub to discuss embedded systems, hardware prototyping, C/Rust programming, and open-source projects.">
|
||||||
<link rel="icon" type="image/svg+xml" href="assets/images/favicon.svg">
|
<link rel="icon" type="image/svg+xml" href="assets/images/favicon.svg">
|
||||||
<link rel="stylesheet" href="assets/css/style.css">
|
<link rel="stylesheet" href="assets/css/style.css">
|
||||||
</head>
|
</head>
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
<span class="brand-mark" aria-hidden="true">EÖ</span>
|
<span class="brand-mark" aria-hidden="true">EÖ</span>
|
||||||
<span>
|
<span>
|
||||||
Ertunç Özbay
|
Ertunç Özbay
|
||||||
<span class="brand-subtitle">workshop // notebook // lab</span>
|
<span class="brand-subtitle">embedded // hardware // open-source</span>
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
|
|
@ -42,68 +42,144 @@
|
||||||
<main id="main-content">
|
<main id="main-content">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<section class="workshop-hero" aria-labelledby="contact-heading">
|
<section class="workshop-hero" aria-labelledby="contact-heading">
|
||||||
<span class="workshop-eyebrow">CONNECT // SAY HELLO</span>
|
<span class="workshop-eyebrow">✉️ DIRECT CONTACT // OPEN COLLABORATION</span>
|
||||||
<h1 id="contact-heading">Contact & Collaboration</h1>
|
<h1 id="contact-heading"><span class="gradient-title">Contact & Collaboration</span></h1>
|
||||||
<p class="hero-lead">
|
<p class="hero-lead">
|
||||||
I want visitors here to feel like they are meeting a friend or an engineering teammate. If you enjoy building things, learning deeply, or talking about how hardware and software work together, I would be happy to connect.
|
Whether you want to talk about ESP32 embedded firmware, circuit design, Linux systems programming, or open-source hardware collaboration, feel free to reach out directly via Gmail, LinkedIn, or GitHub.
|
||||||
</p>
|
</p>
|
||||||
|
<div class="button-row">
|
||||||
|
<a class="btn btn-primary" href="mailto:ertuncozbayh@gmail.com">📧 Email Me on Gmail (ertuncozbayh@gmail.com)</a>
|
||||||
|
<button type="button" class="btn btn-secondary" data-copy-email="ertuncozbayh@gmail.com">📋 Copy Gmail Address</button>
|
||||||
|
<a class="btn btn-cyan" href="https://www.linkedin.com/in/ertunc-ozbay" rel="noopener noreferrer">🔗 Connect on LinkedIn</a>
|
||||||
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section class="section-block" aria-labelledby="contact-links-heading">
|
<section class="section-block" aria-labelledby="contact-links-heading">
|
||||||
<div class="section-header">
|
<div class="section-header">
|
||||||
<div>
|
<div>
|
||||||
<span class="section-label">01 // Where to Find Me</span>
|
<span class="section-label">01 // Direct Channels</span>
|
||||||
<h2 id="contact-links-heading">GitHub & Open-Source Links</h2>
|
<h2 id="contact-links-heading">Email, Socials & GitHub</h2>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="card-grid-2">
|
<div class="card-grid-2">
|
||||||
<div class="card">
|
<!-- Gmail Card -->
|
||||||
|
<div class="card card-coral">
|
||||||
<div class="card-top">
|
<div class="card-top">
|
||||||
<span class="section-label">GitHub Profile</span>
|
<div class="card-meta">
|
||||||
<h3><a href="https://github.com/ertunc-ozbay" rel="noopener noreferrer">github.com/ertunc-ozbay</a></h3>
|
<span class="badge badge-coral">Primary Inbox • Gmail</span>
|
||||||
|
<span>Fastest Response</span>
|
||||||
|
</div>
|
||||||
|
<h3><a href="mailto:ertuncozbayh@gmail.com">ertuncozbayh@gmail.com</a></h3>
|
||||||
<p>
|
<p>
|
||||||
Follow my open-source repositories, check out my ongoing code and hardware-software projects, or open an issue/discussion on a repository.
|
My primary personal and engineering Gmail inbox. Ideal for project discussions, schematic/code questions, internship or collaboration inquiries, and fellow student builders.
|
||||||
|
</p>
|
||||||
|
<p style="margin-bottom:0;">
|
||||||
|
<strong>Secondary / Git Email (Outlook):</strong> <a href="mailto:ertunc.ozbay@outlook.com">ertunc.ozbay@outlook.com</a>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-actions">
|
<div class="card-actions">
|
||||||
<a class="btn btn-primary" href="https://github.com/ertunc-ozbay" rel="noopener noreferrer">Visit My GitHub Profile</a>
|
<a class="btn btn-primary" href="mailto:ertuncozbayh@gmail.com">Send Email (Gmail)</a>
|
||||||
|
<button type="button" class="btn btn-secondary" data-copy-email="ertuncozbayh@gmail.com">📋 Copy Gmail</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="card">
|
<!-- GitHub & LinkedIn Card -->
|
||||||
|
<div class="card card-amber">
|
||||||
<div class="card-top">
|
<div class="card-top">
|
||||||
<span class="section-label">Website & Controller Repositories</span>
|
<div class="card-meta">
|
||||||
<h3>Project Repositories</h3>
|
<span class="badge badge-progress">Code & Professional Network</span>
|
||||||
|
<span>Open Source</span>
|
||||||
|
</div>
|
||||||
|
<h3><a href="https://github.com/ertunc-ozbay" rel="noopener noreferrer">github.com/ertunc-ozbay</a></h3>
|
||||||
<p>
|
<p>
|
||||||
Explore the source code for this static workshop website or my ongoing Multi-Functional RC Controller project:
|
Browse my ESP-IDF C99 firmware, KiCad hardware schematics, Python MIDI RLE compilers, and Rust Linux desktop tools, or connect with me on LinkedIn.
|
||||||
</p>
|
</p>
|
||||||
<ul>
|
<ul class="tag-list">
|
||||||
<li><a href="https://github.com/ertunc-ozbay/ertuncozbay.github.io" rel="noopener noreferrer">ertunc-ozbay/ertuncozbay.github.io</a> (This website)</li>
|
<li><span class="tag tag-esp">@ertunc-ozbay on GitHub</span></li>
|
||||||
<li><a href="https://github.com/ertunc-ozbay/multi-functional-controller" rel="noopener noreferrer">ertunc-ozbay/multi-functional-controller</a> (RC Controller)</li>
|
<li><span class="tag tag-c">in/ertunc-ozbay on LinkedIn</span></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="card-actions">
|
||||||
|
<a class="btn btn-cyan" href="https://github.com/ertunc-ozbay" rel="noopener noreferrer">Visit GitHub Profile</a>
|
||||||
|
<a class="btn btn-secondary" href="https://www.linkedin.com/in/ertunc-ozbay" rel="noopener noreferrer">LinkedIn Profile</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="section-block" aria-labelledby="repos-heading">
|
||||||
|
<div class="section-header">
|
||||||
|
<div>
|
||||||
|
<span class="section-label">02 // Public Open-Source Repositories</span>
|
||||||
|
<h2 id="repos-heading">Active Repositories on GitHub</h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card-grid-2">
|
||||||
|
<div class="card card-amber">
|
||||||
|
<div class="card-top">
|
||||||
|
<span class="section-label">Embedded C99 • ESP32-S3 • KiCad</span>
|
||||||
|
<h3><a href="https://github.com/ertunc-ozbay/multi-functional-controller" rel="noopener noreferrer">ertunc-ozbay/multi-functional-controller</a></h3>
|
||||||
|
<p>
|
||||||
|
ESP32-S3-N16R8 Multi-Functional Controller (MFC) featuring 2.4 GHz nRF24L01+ RF telemetry, K-Silver Hall-effect gimbals, hardware PCNT rotary decoder, and shared SPI2 display UI.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="card-actions">
|
||||||
|
<a class="btn btn-secondary" href="https://github.com/ertunc-ozbay/multi-functional-controller" rel="noopener noreferrer">Open Repository →</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card card-synth">
|
||||||
|
<div class="card-top">
|
||||||
|
<span class="section-label">Embedded C99 • Dual-Core ESP32 • Python RLE</span>
|
||||||
|
<h3><a href="https://github.com/ertunc-ozbay/midi-breadboard-instrument" rel="noopener noreferrer">ertunc-ozbay/midi-breadboard-instrument</a></h3>
|
||||||
|
<p>
|
||||||
|
Dual-core ESP32 16-track MIDI breadboard synthesizer, drum sequencer, 30 FPS SPI OLED visualizer, and Python RLE MIDI-to-C compiler (ESP-IDF v5.2.2).
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="card-actions">
|
||||||
|
<a class="btn btn-secondary" href="https://github.com/ertunc-ozbay/midi-breadboard-instrument" rel="noopener noreferrer">Open Repository →</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card card-coral">
|
||||||
|
<div class="card-top">
|
||||||
|
<span class="section-label">Rust • Linux Gaming • Wine / DirectX 11</span>
|
||||||
|
<h3><a href="https://github.com/ertunc-ozbay/pointblank-linux" rel="noopener noreferrer">ertunc-ozbay/pointblank-linux</a></h3>
|
||||||
|
<p>
|
||||||
|
Standalone Linux desktop launcher written in Rust to run Point Blank with 100% unmodified official CheatBlocker anti-cheat, automated Wine prefix setup, and DirectX 9/11.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="card-actions">
|
||||||
|
<a class="btn btn-secondary" href="https://github.com/ertunc-ozbay/pointblank-linux" rel="noopener noreferrer">Open Repository →</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card card-emerald">
|
||||||
|
<div class="card-top">
|
||||||
|
<span class="section-label">HTML5 • CSS3 • Vanilla JS</span>
|
||||||
|
<h3><a href="https://github.com/ertunc-ozbay/ertuncozbay.github.io" rel="noopener noreferrer">ertunc-ozbay/ertuncozbay.github.io</a></h3>
|
||||||
|
<p>
|
||||||
|
Source repository for this static workshop website and engineering notebook hosted at <code>ertuncozbay.dev</code>.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="card-actions">
|
||||||
|
<a class="btn btn-secondary" href="https://github.com/ertunc-ozbay/ertuncozbay.github.io" rel="noopener noreferrer">Open Repository →</a>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section class="section-block reading-width" aria-labelledby="topics-heading">
|
<section class="section-block reading-width" aria-labelledby="topics-heading">
|
||||||
<span class="section-label">02 // Let’s Talk About</span>
|
<span class="section-label">03 // Let’s Talk About</span>
|
||||||
<h2 id="topics-heading">Topics I Always Enjoy Discussing</h2>
|
<h2 id="topics-heading">Topics I Always Enjoy Discussing</h2>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Embedded systems, microcontrollers, circuit analysis, and breadboard builds</li>
|
<li><strong>Embedded Systems & Electronics:</strong> ESP32 / ESP32-S3, ESP-IDF, FreeRTOS, SPI/I2C/PWM/PCNT peripherals, schematic capture, and breadboard-to-perfboard builds.</li>
|
||||||
<li>C programming, learning Assembly, and exploring C++, Python, or Rust</li>
|
<li><strong>Systems Programming:</strong> ISO C99, C++, Rust, Python hardware tooling, and low-level memory/assembly analysis.</li>
|
||||||
<li>RC controllers, autonomous vehicle experiments, and hardware-software interaction</li>
|
<li><strong>RF Telemetry & Robotics:</strong> 2.4 GHz nRF24L01+ wireless control links, Hall-effect gimbals, and 4WD autonomous vehicle control loops.</li>
|
||||||
<li>Beginner reverse-engineering learning notes (Cheat Engine, Ghidra, x64dbg)</li>
|
<li><strong>Reverse Engineering & Linux Internals:</strong> Studying binary behavior with Ghidra, x64dbg, Cheat Engine, and Wine/Proton runtime compatibility on Arch Linux.</li>
|
||||||
<li>Open-source projects, learning in public, and using AI responsibly by understanding the underlying system</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<div class="callout-box">
|
|
||||||
<span class="callout-title">Future Community Note</span>
|
|
||||||
<p style="margin-bottom:0;">
|
|
||||||
In the future, after this static portfolio and blog have grown with more project logs and articles, I hope to add a small community discussion space where people can talk about projects and experiments directly. For now, the site stays 100% static and simple, and GitHub is the best place to reach me.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -112,7 +188,7 @@
|
||||||
<footer class="site-footer">
|
<footer class="site-footer">
|
||||||
<div class="container footer-inner">
|
<div class="container footer-inner">
|
||||||
<div>
|
<div>
|
||||||
<strong>Ertunç Özbay</strong> — Personal workshop, project lab, and learning notebook.
|
<strong>Ertunç Özbay</strong> — Electrical & Electronics Engineering Student • <a href="mailto:ertuncozbayh@gmail.com">ertuncozbayh@gmail.com</a>
|
||||||
</div>
|
</div>
|
||||||
<ul class="footer-links" aria-label="Footer links">
|
<ul class="footer-links" aria-label="Footer links">
|
||||||
<li><a href="projects/index.html">Projects</a></li>
|
<li><a href="projects/index.html">Projects</a></li>
|
||||||
|
|
@ -120,6 +196,7 @@
|
||||||
<li><a href="lab.html">Lab</a></li>
|
<li><a href="lab.html">Lab</a></li>
|
||||||
<li><a href="contact.html">Contact</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://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>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
|
|
||||||
166
index.html
166
index.html
|
|
@ -3,8 +3,8 @@
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>Ertunç Özbay — Personal Workshop, Projects & Technical Notebook</title>
|
<title>Ertunç Özbay — Embedded Systems, Hardware Lab & Open-Source Projects</title>
|
||||||
<meta name="description" content="Personal workshop and learning notebook of Ertunç Özbay: hardware and software projects, embedded systems, electronics, C programming, and open-source builds.">
|
<meta name="description" content="Personal engineering studio and workshop of Ertunç Özbay: ESP32/ESP-IDF embedded systems, hardware prototyping, C/Rust/Python tooling, and open-source builds.">
|
||||||
<link rel="icon" type="image/svg+xml" href="assets/images/favicon.svg">
|
<link rel="icon" type="image/svg+xml" href="assets/images/favicon.svg">
|
||||||
<link rel="stylesheet" href="assets/css/style.css">
|
<link rel="stylesheet" href="assets/css/style.css">
|
||||||
</head>
|
</head>
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
<span class="brand-mark" aria-hidden="true">EÖ</span>
|
<span class="brand-mark" aria-hidden="true">EÖ</span>
|
||||||
<span>
|
<span>
|
||||||
Ertunç Özbay
|
Ertunç Özbay
|
||||||
<span class="brand-subtitle">workshop // notebook // lab</span>
|
<span class="brand-subtitle">embedded // hardware // open-source</span>
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
|
|
@ -42,81 +42,140 @@
|
||||||
<main id="main-content">
|
<main id="main-content">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<section class="workshop-hero" aria-labelledby="hero-heading">
|
<section class="workshop-hero" aria-labelledby="hero-heading">
|
||||||
<span class="workshop-eyebrow">WORKSHOP BENCH // OPEN NOTEBOOK</span>
|
<span class="workshop-eyebrow">⚡ ELECTRICAL & ELECTRONICS ENGINEERING // OPEN WORKBENCH</span>
|
||||||
<h1 id="hero-heading">Hi, I’m Ertunç.</h1>
|
<h1 id="hero-heading"><span class="gradient-title">Hi, I’m Ertunç Özbay.</span></h1>
|
||||||
<p class="hero-lead">
|
<p class="hero-lead">
|
||||||
I build things, take systems apart, and learn how hardware and software work together.
|
I design embedded hardware, write bare-metal C & FreeRTOS firmware, and build open-source systems from the transistor level up to Linux desktop tooling.
|
||||||
</p>
|
</p>
|
||||||
<p class="reading-width">
|
<p class="reading-width">
|
||||||
This is my personal workshop for embedded systems, electronics, software, reverse engineering, open-source projects, and the lessons I collect while building. I enjoy making useful, strange, and sometimes purely fun things while documenting what works, what fails, and how each system develops.
|
Welcome to my engineering studio and notebook. Here I document my real hardware prototypes—from an <strong>ESP32-S3 2.4 GHz Multi-Functional RC Console</strong> and a <strong>Dual-Core ESP32 16-Track MIDI Synthesizer</strong> to a <strong>4WD Autonomous Vehicle</strong> and a <strong>Standalone Linux Game Launcher written in Rust</strong>.
|
||||||
</p>
|
|
||||||
<p class="hero-supporting-line">
|
|
||||||
Hardware + software learner • Open-source enthusiast • Student builder
|
|
||||||
</p>
|
</p>
|
||||||
<div class="button-row">
|
<div class="button-row">
|
||||||
<a class="btn btn-primary" href="projects/index.html">Explore My Projects</a>
|
<a class="btn btn-primary" href="projects/index.html">🚀 Explore All 4 Projects</a>
|
||||||
<a class="btn btn-secondary" href="lab.html">Visit the Lab Notebook</a>
|
<a class="btn btn-cyan" href="https://github.com/ertunc-ozbay" rel="noopener noreferrer">💻 GitHub (@ertunc-ozbay)</a>
|
||||||
<a class="btn btn-secondary" href="about.html">Read My Story & Philosophy</a>
|
<a class="btn btn-secondary" href="contact.html">✉️ Contact & Gmail</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="stats-strip" aria-label="Workshop highlights">
|
||||||
|
<div class="stat-pill">
|
||||||
|
<span class="stat-value">4 Active Builds</span>
|
||||||
|
<span class="stat-label">ESP32-S3, ESP32, 4WD RC & Linux/Rust</span>
|
||||||
|
</div>
|
||||||
|
<div class="stat-pill">
|
||||||
|
<span class="stat-value">ESP-IDF v5.2.2</span>
|
||||||
|
<span class="stat-label">ISO C99, Dual-Core FreeRTOS & KiCad</span>
|
||||||
|
</div>
|
||||||
|
<div class="stat-pill">
|
||||||
|
<span class="stat-value">16-Track Synth</span>
|
||||||
|
<span class="stat-label">Custom Python RLE MIDI-to-C Compiler</span>
|
||||||
|
</div>
|
||||||
|
<div class="stat-pill">
|
||||||
|
<span class="stat-value">Open Source</span>
|
||||||
|
<span class="stat-label">Schematics, Firmware & Build Logs</span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section class="section-block" aria-labelledby="active-builds-heading">
|
<section class="section-block" aria-labelledby="active-builds-heading">
|
||||||
<div class="section-header">
|
<div class="section-header">
|
||||||
<div>
|
<div>
|
||||||
<span class="section-label">01 // On the Bench</span>
|
<span class="section-label">01 // Featured Hardware & Software Builds</span>
|
||||||
<h2 id="active-builds-heading">Current Projects</h2>
|
<h2 id="active-builds-heading">Projects on My Bench</h2>
|
||||||
</div>
|
</div>
|
||||||
<a href="projects/index.html">View all project details →</a>
|
<a href="projects/index.html">View full specifications & PoC video slots →</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="card-grid">
|
<div class="card-grid-2">
|
||||||
<article class="card">
|
<!-- Project 1 -->
|
||||||
|
<article class="card card-amber">
|
||||||
<div class="card-top">
|
<div class="card-top">
|
||||||
<div class="card-meta">
|
<div class="card-meta">
|
||||||
<span class="badge badge-progress">In progress</span>
|
<span class="badge badge-progress">Hardware Rev 0.1 → Phase 2 Console</span>
|
||||||
<span>Hardware + Software</span>
|
<span>ESP32-S3 • 2.4 GHz RF</span>
|
||||||
</div>
|
</div>
|
||||||
<h3><a href="projects/multi-functional-controller.html">Multi-Functional RC Controller</a></h3>
|
<h3><a href="projects/multi-functional-controller.html">Multi-Functional RC Controller (MFC)</a></h3>
|
||||||
<p>
|
<p>
|
||||||
An ongoing project focused on RC control and hardware-software integration, built to understand how physical inputs and control logic work together.
|
A handheld 2.4 GHz wireless transmitter and embedded control console powered by an <strong>ESP32-S3-N16R8</strong> (16 MB Flash / 8 MB Octal PSRAM), <strong>nRF24L01+ PA+LNA</strong> RF transceiver, dual <strong>K-Silver Hall-effect gimbals</strong>, and shared SPI2 <strong>1.3" ST7789 IPS TFT + MicroSD</strong> bus.
|
||||||
</p>
|
</p>
|
||||||
|
<ul class="tag-list" aria-label="Technologies">
|
||||||
|
<li><span class="tag tag-esp">ESP32-S3-N16R8</span></li>
|
||||||
|
<li><span class="tag tag-c">ESP-IDF C99</span></li>
|
||||||
|
<li><span class="tag tag-hw">nRF24L01+ 2.4GHz</span></li>
|
||||||
|
<li><span class="tag tag-hw">KiCad Schematic</span></li>
|
||||||
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-actions">
|
<div class="card-actions">
|
||||||
<a class="btn btn-secondary" href="projects/multi-functional-controller.html">Project Notes</a>
|
<a class="btn btn-primary" href="projects/multi-functional-controller.html">Project Page & PoC Video</a>
|
||||||
<a class="btn btn-secondary" href="https://github.com/ertunc-ozbay/multi-functional-controller" rel="noopener noreferrer">GitHub Repo</a>
|
<a class="btn btn-secondary" href="https://github.com/ertunc-ozbay/multi-functional-controller" rel="noopener noreferrer">GitHub Repo</a>
|
||||||
</div>
|
</div>
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
<article class="card">
|
<!-- Project 2 -->
|
||||||
|
<article class="card card-synth">
|
||||||
<div class="card-top">
|
<div class="card-top">
|
||||||
<div class="card-meta">
|
<div class="card-meta">
|
||||||
<span class="badge badge-progress">In progress</span>
|
<span class="badge badge-experimental">Active Prototype</span>
|
||||||
<span>Control & Electronics</span>
|
<span>Dual-Core ESP32 • Audio & UI</span>
|
||||||
</div>
|
</div>
|
||||||
<h3><a href="projects/rc-autonomous-vehicle.html">RC and Autonomous Vehicle</a></h3>
|
<h3><a href="projects/midi-breadboard-instrument.html">MIDI Breadboard Instrument (Desk Rave 16-Track Symphony)</a></h3>
|
||||||
<p>
|
<p>
|
||||||
An ongoing project exploring RC control and autonomous vehicle behavior across electronics, control logic, and software.
|
A standalone dual-core <strong>ESP32 MIDI synthesizer, drum sequencer, and 30 FPS SPI OLED visualizer</strong> with a custom <strong>Python RLE MIDI-to-C compiler</strong> (<code>midi_to_c.py</code>), hardware PCNT rotary encoder, passive melody piezo, and dual active drum buzzers.
|
||||||
</p>
|
</p>
|
||||||
|
<ul class="tag-list" aria-label="Technologies">
|
||||||
|
<li><span class="tag tag-esp">ESP32 Dual-Core</span></li>
|
||||||
|
<li><span class="tag tag-python">Python RLE Compiler</span></li>
|
||||||
|
<li><span class="tag tag-synth">30 FPS SPI OLED</span></li>
|
||||||
|
<li><span class="tag tag-c">FreeRTOS IPC</span></li>
|
||||||
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-actions">
|
<div class="card-actions">
|
||||||
<a class="btn btn-secondary" href="projects/rc-autonomous-vehicle.html">Project Notes</a>
|
<a class="btn btn-primary" href="projects/midi-breadboard-instrument.html">Project Page & PoC Video</a>
|
||||||
|
<a class="btn btn-secondary" href="https://github.com/ertunc-ozbay/midi-breadboard-instrument" rel="noopener noreferrer">GitHub Repo</a>
|
||||||
</div>
|
</div>
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
<article class="card">
|
<!-- Project 3 -->
|
||||||
|
<article class="card card-emerald">
|
||||||
<div class="card-top">
|
<div class="card-top">
|
||||||
<div class="card-meta">
|
<div class="card-meta">
|
||||||
<span class="badge badge-experimental">In progress • Experimental</span>
|
<span class="badge badge-active">In Development</span>
|
||||||
<span>Breadboard + C Code</span>
|
<span>Robotics • Control Logic</span>
|
||||||
</div>
|
</div>
|
||||||
<h3><a href="projects/midi-breadboard-instrument.html">MIDI Breadboard Instrument</a></h3>
|
<h3><a href="projects/rc-autonomous-vehicle.html">RC and Autonomous 4WD Vehicle</a></h3>
|
||||||
<p>
|
<p>
|
||||||
A breadboard-based project that plays MIDI melodies by converting MIDI data into C code for the device, driving buzzers, an AMOLED display, and physical controls.
|
A companion 4WD robotic vehicle platform designed to pair with the 2.4 GHz Multi-Functional Controller while exploring closed-loop motor control, telemetry feedback, and autonomous obstacle-avoidance logic.
|
||||||
</p>
|
</p>
|
||||||
|
<ul class="tag-list" aria-label="Technologies">
|
||||||
|
<li><span class="tag tag-hw">4WD Robotics</span></li>
|
||||||
|
<li><span class="tag tag-c">Embedded Control</span></li>
|
||||||
|
<li><span class="tag tag-esp">2.4 GHz Telemetry</span></li>
|
||||||
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-actions">
|
<div class="card-actions">
|
||||||
<a class="btn btn-secondary" href="projects/midi-breadboard-instrument.html">Project Notes</a>
|
<a class="btn btn-primary" href="projects/rc-autonomous-vehicle.html">Project Page & PoC Video</a>
|
||||||
<a class="btn btn-secondary" href="https://github.com/ertunc-ozbay/midi-breadboard-instrument" rel="noopener noreferrer">GitHub Repo</a>
|
</div>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
<!-- Project 4 -->
|
||||||
|
<article class="card card-coral">
|
||||||
|
<div class="card-top">
|
||||||
|
<div class="card-meta">
|
||||||
|
<span class="badge badge-coral">v1.0.0 Released</span>
|
||||||
|
<span>Rust • Linux Systems & Wine</span>
|
||||||
|
</div>
|
||||||
|
<h3><a href="projects/pointblank-linux.html">Point Blank on Linux — Standalone Community Launcher</a></h3>
|
||||||
|
<p>
|
||||||
|
An all-in-one standalone Linux desktop launcher written in <strong>Rust</strong> that runs Point Blank (Zepetto / TAM) on Linux with 100% unmodified official CheatBlocker anti-cheat, automated Wine prefix provisioning, and DirectX 9 / DirectX 11 support.
|
||||||
|
</p>
|
||||||
|
<ul class="tag-list" aria-label="Technologies">
|
||||||
|
<li><span class="tag tag-rust">Rust</span></li>
|
||||||
|
<li><span class="tag tag-c">Wine / DirectX 11</span></li>
|
||||||
|
<li><span class="tag tag-python">Linux Desktop</span></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="card-actions">
|
||||||
|
<a class="btn btn-primary" href="projects/pointblank-linux.html">Project Page & PoC Video</a>
|
||||||
|
<a class="btn btn-secondary" href="https://github.com/ertunc-ozbay/pointblank-linux" rel="noopener noreferrer">GitHub Repo</a>
|
||||||
</div>
|
</div>
|
||||||
</article>
|
</article>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -125,43 +184,43 @@
|
||||||
<section class="section-block" aria-labelledby="workshop-areas-heading">
|
<section class="section-block" aria-labelledby="workshop-areas-heading">
|
||||||
<div class="section-header">
|
<div class="section-header">
|
||||||
<div>
|
<div>
|
||||||
<span class="section-label">02 // Inside This Website</span>
|
<span class="section-label">02 // Inside This Studio</span>
|
||||||
<h2 id="workshop-areas-heading">What I Document Here</h2>
|
<h2 id="workshop-areas-heading">How I Approach Engineering</h2>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="card-grid">
|
<div class="card-grid">
|
||||||
<div class="card">
|
<div class="card card-amber">
|
||||||
<div class="card-top">
|
<div class="card-top">
|
||||||
<span class="section-label">Hardware + Software</span>
|
<span class="section-label">Hardware + Software</span>
|
||||||
<h3>Understanding the Whole System</h3>
|
<h3>Understanding the Whole Stack</h3>
|
||||||
<p>
|
<p>
|
||||||
I do not want to understand only one isolated layer of a system. I study how physical components, circuits, C code, and software tools connect so I can make informed decisions and take responsibility for what I build.
|
From decoupling capacitors, BJT switches, and SPI bus arbitration up to FreeRTOS tasks and Python/Rust tooling—I study how every layer connects so I can take full ownership of what I build.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<a href="about.html">Read my systems philosophy →</a>
|
<a href="about.html">Read my engineering philosophy →</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="card">
|
<div class="card card-synth">
|
||||||
<div class="card-top">
|
<div class="card-top">
|
||||||
<span class="section-label">Lab & Experiments</span>
|
<span class="section-label">Lab & Bench Notes</span>
|
||||||
<h3>The Workshop Notebook</h3>
|
<h3>The Open Workbench</h3>
|
||||||
<p>
|
<p>
|
||||||
Not every experiment begins as a polished project. The Lab page holds my current circuit tests, MIDI-to-C conversion scripts, reverse-engineering learning notes, and open technical questions.
|
Explore my active breadboard tests, RLE MIDI-to-C compression algorithms, hardware protection fixes, and reverse-engineering study notes.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<a href="lab.html">Open the Lab page →</a>
|
<a href="lab.html">Open the Lab Notebook →</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="card">
|
<div class="card card-emerald">
|
||||||
<div class="card-top">
|
<div class="card-top">
|
||||||
<span class="section-label">Blog & Build Logs</span>
|
<span class="section-label">Direct Contact</span>
|
||||||
<h3>Learning in Public</h3>
|
<h3>Collaborate & Connect</h3>
|
||||||
<p>
|
<p>
|
||||||
A manually maintained notebook for build logs, C programming notes, embedded experiments, and honest reflections on what worked and what failed along the way.
|
Reach out directly via Gmail (<code>ertuncozbayh@gmail.com</code>), Outlook, LinkedIn, or GitHub to discuss embedded systems, electronics, or open-source builds.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<a href="blog/index.html">Browse the Blog →</a>
|
<a href="contact.html">View Contact & Email Details →</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
@ -172,7 +231,7 @@
|
||||||
<footer class="site-footer">
|
<footer class="site-footer">
|
||||||
<div class="container footer-inner">
|
<div class="container footer-inner">
|
||||||
<div>
|
<div>
|
||||||
<strong>Ertunç Özbay</strong> — Personal workshop, project lab, and learning notebook.
|
<strong>Ertunç Özbay</strong> — Electrical & Electronics Engineering Student • <a href="mailto:ertuncozbayh@gmail.com">ertuncozbayh@gmail.com</a>
|
||||||
</div>
|
</div>
|
||||||
<ul class="footer-links" aria-label="Footer links">
|
<ul class="footer-links" aria-label="Footer links">
|
||||||
<li><a href="projects/index.html">Projects</a></li>
|
<li><a href="projects/index.html">Projects</a></li>
|
||||||
|
|
@ -180,6 +239,7 @@
|
||||||
<li><a href="lab.html">Lab</a></li>
|
<li><a href="lab.html">Lab</a></li>
|
||||||
<li><a href="contact.html">Contact</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://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>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
|
|
||||||
176
lab.html
176
lab.html
|
|
@ -3,8 +3,8 @@
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>Lab & Experiment Notebook — Ertunç Özbay</title>
|
<title>Lab & Experiment Notebook — Ertunç Özbay</title>
|
||||||
<meta name="description" content="Workshop lab notebook of Ertunç Özbay: current hardware experiments, MIDI-to-C conversion tools, reverse-engineering learning notes, and open technical questions.">
|
<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="icon" type="image/svg+xml" href="assets/images/favicon.svg">
|
||||||
<link rel="stylesheet" href="assets/css/style.css">
|
<link rel="stylesheet" href="assets/css/style.css">
|
||||||
</head>
|
</head>
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
<span class="brand-mark" aria-hidden="true">EÖ</span>
|
<span class="brand-mark" aria-hidden="true">EÖ</span>
|
||||||
<span>
|
<span>
|
||||||
Ertunç Özbay
|
Ertunç Özbay
|
||||||
<span class="brand-subtitle">workshop // notebook // lab</span>
|
<span class="brand-subtitle">embedded // hardware // open-source</span>
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
|
|
@ -42,10 +42,10 @@
|
||||||
<main id="main-content">
|
<main id="main-content">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<section class="workshop-hero" aria-labelledby="lab-heading">
|
<section class="workshop-hero" aria-labelledby="lab-heading">
|
||||||
<span class="workshop-eyebrow">WORKSHOP BENCH // LAB NOTEBOOK</span>
|
<span class="workshop-eyebrow">🔬 WORKSHOP BENCH // LAB NOTEBOOK</span>
|
||||||
<h1 id="lab-heading">Lab & Experiment Notebook</h1>
|
<h1 id="lab-heading"><span class="gradient-title">Lab & Experiment Notebook</span></h1>
|
||||||
<p class="hero-lead">
|
<p class="hero-lead">
|
||||||
Welcome to my open workbench. Not everything I do starts as a structured project—this page tracks my ongoing hardware experiments, conversion scripts, reverse-engineering learning notes, playful breadboard builds, and the technical questions I am currently investigating.
|
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>
|
</p>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
@ -53,167 +53,102 @@
|
||||||
<section class="section-block" aria-labelledby="lab-current">
|
<section class="section-block" aria-labelledby="lab-current">
|
||||||
<div class="section-header">
|
<div class="section-header">
|
||||||
<div>
|
<div>
|
||||||
<span class="section-label">01 // Active Bench</span>
|
<span class="section-label">01 // Active Bench Breakthroughs</span>
|
||||||
<h2 id="lab-current">Current Experiments</h2>
|
<h2 id="lab-current">Recent Hardware & Firmware Experiments</h2>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-grid-2">
|
<div class="card-grid-2">
|
||||||
<div class="card">
|
<div class="card card-synth">
|
||||||
<div class="card-top">
|
<div class="card-top">
|
||||||
<div class="card-meta">
|
<div class="card-meta">
|
||||||
<span class="badge badge-experimental">On the Breadboard</span>
|
<span class="badge badge-experimental">Solved on Breadboard</span>
|
||||||
<span>Hardware + C</span>
|
<span>ESP32 Dual-Core • Python RLE</span>
|
||||||
</div>
|
</div>
|
||||||
<h3>Multi-Buzzer MIDI Playback & Display Sync</h3>
|
<h3>Defeating the 30 Hz MIDI "Strobe-Light" Bug & Piezo Bass Roll-Off</h3>
|
||||||
<p>
|
<p>
|
||||||
Testing how two active buzzers and one passive buzzer behave together on a breadboard alongside a 1.3-inch AMOLED screen, a rotary encoder, two buttons, and two LEDs as part of my <a href="projects/midi-breadboard-instrument.html">MIDI Breadboard Instrument</a>.
|
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>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="card">
|
<div class="card card-amber">
|
||||||
<div class="card-top">
|
<div class="card-top">
|
||||||
<div class="card-meta">
|
<div class="card-meta">
|
||||||
<span class="badge badge-progress">Ongoing Study</span>
|
<span class="badge badge-progress">Hardware Rev 0.1 → Phase 2</span>
|
||||||
<span>Control & Integration</span>
|
<span>ESP32-S3-N16R8 • SPI2 Bus</span>
|
||||||
</div>
|
</div>
|
||||||
<h3>RC Input & Vehicle Control Logic</h3>
|
<h3>ESP32-S3 Octal PSRAM Pin Collisions & Shared SPI2 Arbitration</h3>
|
||||||
<p>
|
<p>
|
||||||
Exploring how physical inputs on my <a href="projects/multi-functional-controller.html">Multi-Functional RC Controller</a> and control logic for my <a href="projects/rc-autonomous-vehicle.html">RC and Autonomous Vehicle</a> can be organized cleanly across hardware and software.
|
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>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<!-- Section 2: Hardware experiments -->
|
<!-- Section 2: Software and conversion tools -->
|
||||||
<section class="section-block" aria-labelledby="lab-hardware">
|
|
||||||
<div class="section-header">
|
|
||||||
<div>
|
|
||||||
<span class="section-label">02 // Physical Layer</span>
|
|
||||||
<h2 id="lab-hardware">Hardware Experiments</h2>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="card-grid">
|
|
||||||
<div class="card">
|
|
||||||
<div class="card-top">
|
|
||||||
<h3>Circuit Analysis & Breadboard Prototyping</h3>
|
|
||||||
<p>
|
|
||||||
Connecting classroom circuit analysis concepts to real breadboard setups—watching how physical components, buttons, encoders, buzzers, and indicator LEDs behave in practice.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="card">
|
|
||||||
<div class="card-top">
|
|
||||||
<h3>Physical Computing Interfaces</h3>
|
|
||||||
<p>
|
|
||||||
Experimenting with tactile hardware inputs (rotary encoders and push buttons) and compact displays (such as a 1.3-inch AMOLED screen) to make embedded builds interactive without relying on a PC screen.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<!-- Section 3: Software and conversion tools -->
|
|
||||||
<section class="section-block" aria-labelledby="lab-software">
|
<section class="section-block" aria-labelledby="lab-software">
|
||||||
<div class="section-header">
|
<div class="section-header">
|
||||||
<div>
|
<div>
|
||||||
<span class="section-label">03 // Code & Tooling</span>
|
<span class="section-label">02 // Code & Systems Tooling</span>
|
||||||
<h2 id="lab-software">Software and Conversion Tools</h2>
|
<h2 id="lab-software">Custom Compilers & Linux Runtime Tools</h2>
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="card-grid">
|
|
||||||
<div class="card">
|
|
||||||
<div class="card-top">
|
|
||||||
<h3>MIDI-to-C Code Conversion Script</h3>
|
|
||||||
<p>
|
|
||||||
A custom script I wrote that takes MIDI data and converts it into C code for my breadboard instrument. It bridges higher-level musical data with low-level C arrays that the hardware can play directly.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="card">
|
|
||||||
<div class="card-top">
|
|
||||||
<h3>C Programming & Future Language Exploration</h3>
|
|
||||||
<p>
|
|
||||||
Practicing C programming for embedded systems now, while preparing to study Assembly for deeper low-level understanding and expanding my toolkit with C++, Python, and Rust.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<!-- Section 4: Reverse-engineering learning -->
|
|
||||||
<section class="section-block" aria-labelledby="lab-re">
|
|
||||||
<div class="section-header">
|
|
||||||
<div>
|
|
||||||
<span class="section-label">04 // System Internals</span>
|
|
||||||
<h2 id="lab-re">Reverse-Engineering Learning</h2>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="callout-box">
|
|
||||||
<span class="callout-title">Beginner Learning Log</span>
|
|
||||||
<p>
|
|
||||||
I am learning reverse engineering and experimenting with reverse-engineering tools because I am interested in understanding how software and systems work internally.
|
|
||||||
</p>
|
|
||||||
<ul>
|
|
||||||
<li><strong>Tools I have experimented with:</strong> Cheat Engine, Ghidra, and x64dbg.</li>
|
|
||||||
<li><strong>What I tried:</strong> Investigating and configuring aspects of online game mechanics.</li>
|
|
||||||
<li><strong>Honest reflection:</strong> In some of these experiments, I used code generated with the help of AI tools and realized I did not yet understand every line of the underlying code. That realization motivated me to study C, memory concepts, and future Assembly systematically so I can read and verify what happens under the hood myself.</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<!-- Section 5: Unfinished or playful builds -->
|
|
||||||
<section class="section-block" aria-labelledby="lab-playful">
|
|
||||||
<div class="section-header">
|
|
||||||
<div>
|
|
||||||
<span class="section-label">05 // Playful Curiosity</span>
|
|
||||||
<h2 id="lab-playful">Unfinished or Playful Builds</h2>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<p class="reading-width">
|
|
||||||
I believe some of the best learning happens when building things that are unusual, playful, or simply fun. Playing MIDI melodies across two active buzzers and one passive buzzer on a breadboard started from that exact spirit—combining music, C code, and electronics just to see how far a breadboard setup can go.
|
|
||||||
</p>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<!-- Section 6: Questions I am currently investigating -->
|
|
||||||
<section class="section-block" aria-labelledby="lab-questions">
|
|
||||||
<div class="section-header">
|
|
||||||
<div>
|
|
||||||
<span class="section-label">06 // Open Questions</span>
|
|
||||||
<h2 id="lab-questions">Questions I Am Currently Investigating</h2>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-grid-2">
|
<div class="card-grid-2">
|
||||||
<div class="card">
|
<div class="card card-coral">
|
||||||
<div class="card-top">
|
<div class="card-top">
|
||||||
<h3>How do C constructs map to Assembly and hardware?</h3>
|
<div class="card-meta">
|
||||||
|
<span class="badge badge-coral">Rust • Linux x86_64</span>
|
||||||
|
<span>Wine & DirectX 11</span>
|
||||||
|
</div>
|
||||||
|
<h3>16-Byte TLS Alignment for DirectX 11 on Linux</h3>
|
||||||
<p>
|
<p>
|
||||||
As I study C programming and prepare to learn Assembly, how do compiled functions, memory layouts, and hardware registers look when inspected inside tools like Ghidra or x64dbg?
|
In <a href="projects/pointblank-linux.html">pointblank-linux</a>, we engineered a standalone Rust launcher that automatically provisions a 16-byte TLS-aligned <code>ntdll.dll</code> runtime and <code>vcrun2022</code> / <code>d3dx11_43</code> components so Point Blank runs at 200 FPS in DirectX 11 on Linux with unmodified official CheatBlocker anti-cheat.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="card">
|
<div class="card card-emerald">
|
||||||
<div class="card-top">
|
<div class="card-top">
|
||||||
<h3>How can we use AI tools without losing deep system understanding?</h3>
|
<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>
|
<p>
|
||||||
What foundational knowledge across electronics, firmware, and software is essential so a builder can guide AI effectively, spot subtle bugs, and stay fully responsible for the system?
|
Converts multi-channel `.mid` files into compact C99 <code>SequenceStep</code> struct arrays (`{frequency, duration, kick_drum, hi_hat}`), automatically routing MIDI Channel 10 and low bass notes (`< MIDI 50`) to hardware percussion buzzers.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
<!-- Section 3: Reverse-engineering learning -->
|
||||||
|
<section class="section-block" aria-labelledby="lab-re">
|
||||||
|
<div class="section-header">
|
||||||
|
<div>
|
||||||
|
<span class="section-label">03 // 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>
|
</div>
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
<footer class="site-footer">
|
<footer class="site-footer">
|
||||||
<div class="container footer-inner">
|
<div class="container footer-inner">
|
||||||
<div>
|
<div>
|
||||||
<strong>Ertunç Özbay</strong> — Personal workshop, project lab, and learning notebook.
|
<strong>Ertunç Özbay</strong> — Electrical & Electronics Engineering Student • <a href="mailto:ertuncozbayh@gmail.com">ertuncozbayh@gmail.com</a>
|
||||||
</div>
|
</div>
|
||||||
<ul class="footer-links" aria-label="Footer links">
|
<ul class="footer-links" aria-label="Footer links">
|
||||||
<li><a href="projects/index.html">Projects</a></li>
|
<li><a href="projects/index.html">Projects</a></li>
|
||||||
|
|
@ -221,6 +156,7 @@
|
||||||
<li><a href="lab.html">Lab</a></li>
|
<li><a href="lab.html">Lab</a></li>
|
||||||
<li><a href="contact.html">Contact</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://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>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>Projects — Ertunç Özbay</title>
|
<title>Projects — Ertunç Özbay</title>
|
||||||
<meta name="description" content="Hardware and software projects by Ertunç Özbay: Multi-Functional RC Controller, RC and Autonomous Vehicle, and MIDI Breadboard Instrument.">
|
<meta name="description" content="Hardware and software engineering projects by Ertunç Özbay: ESP32-S3 Multi-Functional RC Controller, ESP32 16-Track MIDI Breadboard Instrument, 4WD Autonomous Vehicle, and Point Blank Linux Launcher in Rust.">
|
||||||
<link rel="icon" type="image/svg+xml" href="../assets/images/favicon.svg">
|
<link rel="icon" type="image/svg+xml" href="../assets/images/favicon.svg">
|
||||||
<link rel="stylesheet" href="../assets/css/style.css">
|
<link rel="stylesheet" href="../assets/css/style.css">
|
||||||
</head>
|
</head>
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
<span class="brand-mark" aria-hidden="true">EÖ</span>
|
<span class="brand-mark" aria-hidden="true">EÖ</span>
|
||||||
<span>
|
<span>
|
||||||
Ertunç Özbay
|
Ertunç Özbay
|
||||||
<span class="brand-subtitle">workshop // notebook // lab</span>
|
<span class="brand-subtitle">embedded // hardware // open-source</span>
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
|
|
@ -42,117 +42,142 @@
|
||||||
<main id="main-content">
|
<main id="main-content">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<section class="workshop-hero" aria-labelledby="projects-heading">
|
<section class="workshop-hero" aria-labelledby="projects-heading">
|
||||||
<span class="workshop-eyebrow">PROJECT SHOWCASE // REAL BUILDS</span>
|
<span class="workshop-eyebrow">⚡ PROJECT SHOWCASE // VERIFIED BUILDS & REPOSITORIES</span>
|
||||||
<h1 id="projects-heading">Projects on My Bench</h1>
|
<h1 id="projects-heading"><span class="gradient-title">Engineering Projects & Open-Source Builds</span></h1>
|
||||||
<p class="hero-lead">
|
<p class="hero-lead">
|
||||||
Here are the three real projects I am currently building and documenting. Because I value honesty in technical documentation, each project page lists only confirmed components and real progress—never invented specifications.
|
Every project documented here is backed by real hardware on my bench or shipped open-source code on my GitHub—complete with verified pinouts, schematics, build photos, and dedicated slots for upcoming <strong>YouTube Proof-of-Concept (PoC) demonstration videos</strong>.
|
||||||
</p>
|
</p>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section class="section-block" aria-labelledby="project-list-heading">
|
<section class="section-block" aria-labelledby="project-list-heading">
|
||||||
<div class="section-header">
|
<div class="section-header">
|
||||||
<div>
|
<div>
|
||||||
<span class="section-label">Active Hardware & Software Builds</span>
|
<span class="section-label">Active Hardware & Software Portfolio</span>
|
||||||
<h2 id="project-list-heading">Current Projects (3)</h2>
|
<h2 id="project-list-heading">All Projects (4)</h2>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="card-grid">
|
<div class="card-grid-2">
|
||||||
<!-- Project 1 -->
|
<!-- Project 1: Multi-Functional RC Controller -->
|
||||||
<article class="card">
|
<article class="card card-amber">
|
||||||
<div class="card-top">
|
<div class="card-top">
|
||||||
<div class="card-meta">
|
<div class="card-meta">
|
||||||
<span class="badge badge-progress">Status: In progress</span>
|
<span class="badge badge-progress">Rev 0.1 Built → Phase 2 Console</span>
|
||||||
<span>Project 01</span>
|
<span>Project 01 • Embedded Hardware</span>
|
||||||
</div>
|
</div>
|
||||||
<h3><a href="multi-functional-controller.html">Multi-Functional RC Controller</a></h3>
|
<h3><a href="multi-functional-controller.html">Multi-Functional RC Controller (MFC)</a></h3>
|
||||||
<p>
|
<p>
|
||||||
An ongoing RC controller project focused on remote control hardware and hardware-software integration.
|
A custom 2.4 GHz wireless remote controller and multi-purpose embedded console built around the <strong>ESP32-S3-N16R8</strong> and <strong>nRF24L01+ PA+LNA</strong> transceiver. Currently built as an early Rev 0.1 perfboard carrier and transitioning into a <strong>DT-100 (190×137×59 mm) desktop console</strong> with dual K-Silver Hall-effect gimbals and a 1.3" ST7789 IPS TFT display.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p><strong>Confirmed technologies & focus:</strong></p>
|
|
||||||
<ul class="tag-list" aria-label="Confirmed technologies for Multi-Functional RC Controller">
|
<ul class="tag-list" aria-label="Confirmed technologies for Multi-Functional RC Controller">
|
||||||
<li><span class="tag">RC Control</span></li>
|
<li><span class="tag tag-esp">ESP32-S3-N16R8</span></li>
|
||||||
<li><span class="tag">Hardware-Software Integration</span></li>
|
<li><span class="tag tag-c">ESP-IDF v5.2.2 (C99)</span></li>
|
||||||
<li><span class="tag">Open-Source Repo</span></li>
|
<li><span class="tag tag-hw">nRF24L01+ 2.4 GHz RF</span></li>
|
||||||
|
<li><span class="tag tag-hw">Hall-Effect Joysticks</span></li>
|
||||||
|
<li><span class="tag tag-synth">ST7789 TFT + MicroSD</span></li>
|
||||||
|
<li><span class="tag tag-python">KiCad Schematic</span></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<div class="project-notes">
|
<div class="project-notes">
|
||||||
<p><strong>What I am currently learning:</strong> Structuring an RC controller system so physical inputs and control software stay reliable and modular.</p>
|
<p><strong>Includes on page:</strong> 3 early prototype build photos, full KiCad SVG schematic, verified ESP32-S3 GPIO pinout, Phase 2 DT-100 BOM, and <strong>🎬 YouTube PoC Video Placeholder</strong>.</p>
|
||||||
<p><strong>Next step:</strong> Documenting confirmed hardware choices, wiring notes, and iteration logs as testing progresses.</p>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="card-actions">
|
<div class="card-actions">
|
||||||
<a class="btn btn-primary" href="multi-functional-controller.html">Read Project Page</a>
|
<a class="btn btn-primary" href="multi-functional-controller.html">Read Page & PoC Video</a>
|
||||||
<a class="btn btn-secondary" href="https://github.com/ertunc-ozbay/multi-functional-controller" rel="noopener noreferrer">GitHub Repository</a>
|
<a class="btn btn-secondary" href="https://github.com/ertunc-ozbay/multi-functional-controller" rel="noopener noreferrer">GitHub Repo</a>
|
||||||
</div>
|
</div>
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
<!-- Project 2 -->
|
<!-- Project 2: MIDI Breadboard Instrument -->
|
||||||
<article class="card">
|
<article class="card card-synth">
|
||||||
<div class="card-top">
|
<div class="card-top">
|
||||||
<div class="card-meta">
|
<div class="card-meta">
|
||||||
<span class="badge badge-progress">Status: In progress</span>
|
<span class="badge badge-experimental">Active Breadboard Synth</span>
|
||||||
<span>Project 02</span>
|
<span>Project 02 • Audio & Dual-Core RTOS</span>
|
||||||
</div>
|
</div>
|
||||||
<h3><a href="rc-autonomous-vehicle.html">RC and Autonomous Vehicle</a></h3>
|
<h3><a href="midi-breadboard-instrument.html">MIDI Breadboard Instrument — Desk Rave 16-Track Symphony</a></h3>
|
||||||
<p>
|
<p>
|
||||||
An ongoing project exploring RC control and autonomous vehicle behavior. This project is part of my effort to understand systems across electronics, control logic, and software.
|
A standalone dual-core <strong>ESP32 MIDI synthesizer, drum sequencer, and 30 FPS SPI OLED visualizer</strong> programmed in ESP-IDF v5.2.2, paired with a custom <strong>Python Run-Length Encoding (RLE) MIDI-to-C compiler</strong> (<code>midi_to_c.py</code>) driving a passive melody buzzer, two active drum buzzers, LEDs, and a hardware PCNT rotary encoder.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p><strong>Confirmed technologies & focus:</strong></p>
|
|
||||||
<ul class="tag-list" aria-label="Confirmed focus areas for RC and Autonomous Vehicle">
|
|
||||||
<li><span class="tag">RC Control</span></li>
|
|
||||||
<li><span class="tag">Autonomous Behavior Exploration</span></li>
|
|
||||||
<li><span class="tag">Electronics</span></li>
|
|
||||||
<li><span class="tag">Control Logic & Software</span></li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<div class="project-notes">
|
|
||||||
<p><strong>What I am currently learning:</strong> How manual RC control and autonomous decision logic interact with physical vehicle electronics.</p>
|
|
||||||
<p><strong>Next step:</strong> Confirming and testing the hardware platform before publishing specific sensor or controller details.</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="card-actions">
|
|
||||||
<a class="btn btn-primary" href="rc-autonomous-vehicle.html">Read Project Page</a>
|
|
||||||
</div>
|
|
||||||
</article>
|
|
||||||
|
|
||||||
<!-- Project 3 -->
|
|
||||||
<article class="card">
|
|
||||||
<div class="card-top">
|
|
||||||
<div class="card-meta">
|
|
||||||
<span class="badge badge-experimental">Status: In progress / Experimental</span>
|
|
||||||
<span>Project 03</span>
|
|
||||||
</div>
|
|
||||||
<h3><a href="midi-breadboard-instrument.html">MIDI Breadboard Instrument</a></h3>
|
|
||||||
<p>
|
|
||||||
A breadboard-based project that plays MIDI melodies by converting MIDI data into C code for the device. The hardware currently includes two active buzzers, one passive buzzer, a rotary encoder, a 1.3-inch AMOLED display, two buttons, and two LEDs.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p><strong>Confirmed components & tools:</strong></p>
|
|
||||||
<ul class="tag-list" aria-label="Confirmed components for MIDI Breadboard Instrument">
|
<ul class="tag-list" aria-label="Confirmed components for MIDI Breadboard Instrument">
|
||||||
<li><span class="tag">ESP32 Dual-Core (ESP-IDF v5.2.2)</span></li>
|
<li><span class="tag tag-esp">ESP32 Dual-Core (160 MHz)</span></li>
|
||||||
<li><span class="tag">Python RLE MIDI-to-C Compiler</span></li>
|
<li><span class="tag tag-python">Python RLE Compiler</span></li>
|
||||||
<li><span class="tag">16-Track Flash Symphony</span></li>
|
<li><span class="tag tag-synth">16-Track Flash Symphony</span></li>
|
||||||
<li><span class="tag">2x Active Buzzers (Kick/Hat)</span></li>
|
<li><span class="tag tag-hw">3x Buzzers (Melody/Kick/Hat)</span></li>
|
||||||
<li><span class="tag">1x Passive Buzzer (LEDC PWM)</span></li>
|
<li><span class="tag tag-c">1.3" SPI OLED (30 FPS)</span></li>
|
||||||
<li><span class="tag">1x Rotary Encoder (PCNT)</span></li>
|
<li><span class="tag tag-hw">PCNT Rotary Encoder</span></li>
|
||||||
<li><span class="tag">1.3" SPI OLED (30 FPS)</span></li>
|
|
||||||
<li><span class="tag">2x Buttons & 2x LEDs</span></li>
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<div class="project-notes">
|
<div class="project-notes">
|
||||||
<p><strong>What I am currently learning:</strong> RLE compression of fragmented MIDI events into C struct arrays, acoustic transposition (+2 octaves) for passive piezo resonance, and Dual-Core FreeRTOS IPC between Core 0 (30 FPS OLED UI) and Core 1 (microsecond audio engine).</p>
|
<p><strong>Includes on page:</strong> 3 high-res breadboard photos, 16-track playlist table, ESP32 pinout, RLE compression architecture, and <strong>🎬 YouTube PoC Video Placeholder</strong>.</p>
|
||||||
<p><strong>Next step:</strong> Migrating the dual-breadboard prototype onto a soldered perfboard or custom KiCad PCB.</p>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="card-actions">
|
<div class="card-actions">
|
||||||
<a class="btn btn-primary" href="midi-breadboard-instrument.html">Read Project Page</a>
|
<a class="btn btn-primary" href="midi-breadboard-instrument.html">Read Page & PoC Video</a>
|
||||||
<a class="btn btn-secondary" href="https://github.com/ertunc-ozbay/midi-breadboard-instrument" rel="noopener noreferrer">GitHub Repository</a>
|
<a class="btn btn-secondary" href="https://github.com/ertunc-ozbay/midi-breadboard-instrument" rel="noopener noreferrer">GitHub Repo</a>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
<!-- Project 3: RC and Autonomous Vehicle -->
|
||||||
|
<article class="card card-emerald">
|
||||||
|
<div class="card-top">
|
||||||
|
<div class="card-meta">
|
||||||
|
<span class="badge badge-active">In Progress</span>
|
||||||
|
<span>Project 03 • Robotics & Control</span>
|
||||||
|
</div>
|
||||||
|
<h3><a href="rc-autonomous-vehicle.html">RC and Autonomous 4WD Vehicle</a></h3>
|
||||||
|
<p>
|
||||||
|
An ongoing 4WD robotic vehicle platform exploring manual 2.4 GHz RF remote control (paired with the Multi-Functional Controller) alongside autonomous obstacle avoidance, motor driver electronics, and real-time control logic.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<ul class="tag-list" aria-label="Confirmed focus areas for RC and Autonomous Vehicle">
|
||||||
|
<li><span class="tag tag-hw">4WD Vehicle Platform</span></li>
|
||||||
|
<li><span class="tag tag-esp">2.4 GHz RF Receiver Link</span></li>
|
||||||
|
<li><span class="tag tag-c">Autonomous Control Logic</span></li>
|
||||||
|
<li><span class="tag tag-hw">Power & Motor Electronics</span></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<div class="project-notes">
|
||||||
|
<p><strong>Includes on page:</strong> System scope, manual-to-autonomous control transition notes, and <strong>🎬 YouTube PoC Video Placeholder</strong>.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card-actions">
|
||||||
|
<a class="btn btn-primary" href="rc-autonomous-vehicle.html">Read Page & PoC Video</a>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
<!-- Project 4: Point Blank Linux Launcher -->
|
||||||
|
<article class="card card-coral">
|
||||||
|
<div class="card-top">
|
||||||
|
<div class="card-meta">
|
||||||
|
<span class="badge badge-coral">v1.0.0 Shipped</span>
|
||||||
|
<span>Project 04 • Rust & Linux Systems</span>
|
||||||
|
</div>
|
||||||
|
<h3><a href="pointblank-linux.html">Point Blank on Linux — Standalone Community Launcher</a></h3>
|
||||||
|
<p>
|
||||||
|
A self-contained Linux desktop launcher written in <strong>Rust</strong> that runs Point Blank (Zepetto / TAM Game) on Arch, Ubuntu, and Fedora with 100% unmodified official CheatBlocker anti-cheat, automated Wine prefix & Winetricks provisioning (<code>vcrun2022</code>, <code>d3dx11_43</code>), and 200 FPS DirectX 9 / DirectX 11 borderless fullscreen support.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<ul class="tag-list" aria-label="Confirmed technologies for Point Blank Linux Launcher">
|
||||||
|
<li><span class="tag tag-rust">Rust</span></li>
|
||||||
|
<li><span class="tag tag-c">Wine / DirectX 9 & 11</span></li>
|
||||||
|
<li><span class="tag tag-python">16-Byte TLS Runtime</span></li>
|
||||||
|
<li><span class="tag tag-hw">Arch / Debian / Fedora</span></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<div class="project-notes">
|
||||||
|
<p><strong>Includes on page:</strong> Architecture overview, Wine prefix automation breakdown, release links, and <strong>🎬 YouTube PoC Video Placeholder</strong>.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card-actions">
|
||||||
|
<a class="btn btn-primary" href="pointblank-linux.html">Read Page & PoC Video</a>
|
||||||
|
<a class="btn btn-secondary" href="https://github.com/ertunc-ozbay/pointblank-linux" rel="noopener noreferrer">GitHub Repo</a>
|
||||||
</div>
|
</div>
|
||||||
</article>
|
</article>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -164,7 +189,7 @@
|
||||||
<footer class="site-footer">
|
<footer class="site-footer">
|
||||||
<div class="container footer-inner">
|
<div class="container footer-inner">
|
||||||
<div>
|
<div>
|
||||||
<strong>Ertunç Özbay</strong> — Personal workshop, project lab, and learning notebook.
|
<strong>Ertunç Özbay</strong> — Electrical & Electronics Engineering Student • <a href="mailto:ertuncozbayh@gmail.com">ertuncozbayh@gmail.com</a>
|
||||||
</div>
|
</div>
|
||||||
<ul class="footer-links" aria-label="Footer links">
|
<ul class="footer-links" aria-label="Footer links">
|
||||||
<li><a href="../projects/index.html">Projects</a></li>
|
<li><a href="../projects/index.html">Projects</a></li>
|
||||||
|
|
@ -172,6 +197,7 @@
|
||||||
<li><a href="../lab.html">Lab</a></li>
|
<li><a href="../lab.html">Lab</a></li>
|
||||||
<li><a href="../contact.html">Contact</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://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>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
<span class="brand-mark" aria-hidden="true">EÖ</span>
|
<span class="brand-mark" aria-hidden="true">EÖ</span>
|
||||||
<span>
|
<span>
|
||||||
Ertunç Özbay
|
Ertunç Özbay
|
||||||
<span class="brand-subtitle">workshop // notebook // lab</span>
|
<span class="brand-subtitle">embedded // hardware // open-source</span>
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
|
|
@ -49,9 +49,9 @@
|
||||||
<header class="workshop-hero">
|
<header class="workshop-hero">
|
||||||
<div class="card-meta">
|
<div class="card-meta">
|
||||||
<span class="badge badge-experimental">Status: Active Breadboard Prototype</span>
|
<span class="badge badge-experimental">Status: Active Breadboard Prototype</span>
|
||||||
<span>Project 03 // ESP32, ESP-IDF C99, FreeRTOS & Python RLE Tooling</span>
|
<span>Project 02 // ESP32 Dual-Core • ESP-IDF C99 • FreeRTOS • Python RLE</span>
|
||||||
</div>
|
</div>
|
||||||
<h1>MIDI Breadboard Instrument — Desk Rave & 16-Track Symphony Controller</h1>
|
<h1><span class="gradient-title">MIDI Breadboard Instrument — Desk Rave & 16-Track Symphony</span></h1>
|
||||||
<p class="hero-lead">
|
<p class="hero-lead">
|
||||||
A standalone, dual-core ESP32 MIDI synthesizer, drum sequencer, and 30 FPS SPI OLED visualizer written in ESP-IDF v5.2.2 (C99 / FreeRTOS), powered by a custom Run-Length Encoding (RLE) Python MIDI-to-C compiler.
|
A standalone, dual-core ESP32 MIDI synthesizer, drum sequencer, and 30 FPS SPI OLED visualizer written in ESP-IDF v5.2.2 (C99 / FreeRTOS), powered by a custom Run-Length Encoding (RLE) Python MIDI-to-C compiler.
|
||||||
</p>
|
</p>
|
||||||
|
|
@ -59,14 +59,33 @@
|
||||||
What started as making a passive piezo buzzer squeak evolved into a full 16-track embedded music box with live kick/hi-hat drum transients, hardware PCNT quadrature rotary controls for real-time tempo and volume scaling, and dual-core FreeRTOS task isolation.
|
What started as making a passive piezo buzzer squeak evolved into a full 16-track embedded music box with live kick/hi-hat drum transients, hardware PCNT quadrature rotary controls for real-time tempo and volume scaling, and dual-core FreeRTOS task isolation.
|
||||||
</p>
|
</p>
|
||||||
<div class="button-row">
|
<div class="button-row">
|
||||||
<a class="btn btn-primary" href="https://github.com/ertunc-ozbay/midi-breadboard-instrument" rel="noopener noreferrer">View GitHub Repository</a>
|
<a class="btn btn-primary" href="https://github.com/ertunc-ozbay/midi-breadboard-instrument" 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>
|
<a class="btn btn-secondary" href="index.html">All Projects</a>
|
||||||
<a class="btn btn-secondary" href="../lab.html">See Lab Experiments</a>
|
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
|
<!-- YouTube Proof-of-Concept Video Placeholder -->
|
||||||
|
<section id="poc-video" class="poc-video-section" aria-labelledby="midi-video-heading">
|
||||||
|
<div class="poc-video-card">
|
||||||
|
<span class="section-label">🎬 Proof of Concept // YouTube Video Showcase</span>
|
||||||
|
<h2 id="midi-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">Desk Rave 16-Track ESP32 MIDI Synthesizer — Live Audio & 30 FPS OLED Demo</div>
|
||||||
|
<p class="poc-video-desc">
|
||||||
|
Upcoming YouTube video showcasing live playback across the 16-track flash playlist (Careless Whisper, Rondo Alla Turca, Seven Nation Army +2 octave transpose), real-time rotary speed/volume tweaking, and synchronized kick/hi-hat buzzers + LEDs.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
<figure class="schematic-frame" aria-label="MIDI Breadboard Instrument Component Diagram">
|
<figure class="schematic-frame" aria-label="MIDI Breadboard Instrument Component Diagram">
|
||||||
<img src="../assets/images/midi-breadboard-layout.svg" alt="Block diagram of the MIDI Breadboard Instrument showing the MIDI conversion script producing C code for the breadboard system, connected to two active buzzers, one passive buzzer, a 1.3-inch SPI OLED screen, one rotary encoder, two buttons, and two LEDs." width="760" height="320">
|
<img class="zoomable-img" src="../assets/images/midi-breadboard-layout.svg" alt="Block diagram of the MIDI Breadboard Instrument showing the MIDI conversion script producing C code for the breadboard system" width="760" height="320">
|
||||||
<figcaption class="schematic-caption">
|
<figcaption class="schematic-caption">
|
||||||
Software-to-hardware pipeline: Python RLE MIDI compiler (<code>midi_to_c.py</code>) generating flash-resident <code>SequenceStep</code> struct arrays for the dual-core ESP32 breadboard synthesizer.
|
Software-to-hardware pipeline: Python RLE MIDI compiler (<code>midi_to_c.py</code>) generating flash-resident <code>SequenceStep</code> struct arrays for the dual-core ESP32 breadboard synthesizer.
|
||||||
</figcaption>
|
</figcaption>
|
||||||
|
|
@ -74,22 +93,22 @@
|
||||||
|
|
||||||
<section class="section-block" aria-labelledby="p3-gallery">
|
<section class="section-block" aria-labelledby="p3-gallery">
|
||||||
<span class="section-label">01 // Hardware Build Gallery</span>
|
<span class="section-label">01 // Hardware Build Gallery</span>
|
||||||
<h2 id="p3-gallery">Breadboard Prototype Photos</h2>
|
<h2 id="p3-gallery">Breadboard Prototype Photos (Click to Zoom)</h2>
|
||||||
<div class="card-grid">
|
<div class="card-grid">
|
||||||
<figure class="card" style="margin:0;">
|
<figure class="card card-synth" style="margin:0;">
|
||||||
<img src="../assets/images/MIDI_FIRST.jpg" alt="Full dual-breadboard overview of the ESP32 MIDI Breadboard Instrument" style="width:100%; height:auto; border-radius:6px; margin-bottom:0.75rem;">
|
<img class="zoomable-img" src="../assets/images/MIDI_FIRST.jpg" alt="Full dual-breadboard overview of the ESP32 MIDI Breadboard Instrument" style="width:100%; height:auto; border-radius:8px; margin-bottom:0.75rem;">
|
||||||
<figcaption>
|
<figcaption>
|
||||||
<strong>Full Breadboard Layout:</strong> Dual-breadboard build featuring the ESP32 DevKit, 1.3" 7-pin SPI OLED display, KY-040 rotary encoder, tactile buttons, passive melody piezo, and dual active drum buzzers.
|
<strong>Full Breadboard Layout:</strong> Dual-breadboard build featuring the ESP32 DevKit, 1.3" 7-pin SPI OLED display, KY-040 rotary encoder, tactile buttons, passive melody piezo, and dual active drum buzzers.
|
||||||
</figcaption>
|
</figcaption>
|
||||||
</figure>
|
</figure>
|
||||||
<figure class="card" style="margin:0;">
|
<figure class="card card-synth" style="margin:0;">
|
||||||
<img src="../assets/images/MIDI_SECOND.jpg" alt="Active 1.3-inch SPI OLED visualizer running at 30 FPS on the breadboard" style="width:100%; height:auto; border-radius:6px; margin-bottom:0.75rem;">
|
<img class="zoomable-img" src="../assets/images/MIDI_SECOND.jpg" alt="Active 1.3-inch SPI OLED visualizer running at 30 FPS on the breadboard" style="width:100%; height:auto; border-radius:8px; margin-bottom:0.75rem;">
|
||||||
<figcaption>
|
<figcaption>
|
||||||
<strong>30 FPS Live OLED Visualizer:</strong> Custom 5×7 font renderer displaying track code (<code>WHISP</code>), rotary mode (<code>SPD</code> / <code>VOL</code>), kick/hi-hat drum boxes, and dynamic frequency bars.
|
<strong>30 FPS Live OLED Visualizer:</strong> Custom 5×7 font renderer displaying track code (<code>WHISP</code>), rotary mode (<code>SPD</code> / <code>VOL</code>), kick/hi-hat drum boxes, and dynamic frequency bars.
|
||||||
</figcaption>
|
</figcaption>
|
||||||
</figure>
|
</figure>
|
||||||
<figure class="card" style="margin:0;">
|
<figure class="card card-synth" style="margin:0;">
|
||||||
<img src="../assets/images/MIDI_THIRD.jpg" alt="Close-up of the rotary encoder, tactile buttons, LEDs, and three buzzers" style="width:100%; height:auto; border-radius:6px; margin-bottom:0.75rem;">
|
<img class="zoomable-img" src="../assets/images/MIDI_THIRD.jpg" alt="Close-up of the rotary encoder, tactile buttons, LEDs, and three buzzers" style="width:100%; height:auto; border-radius:8px; margin-bottom:0.75rem;">
|
||||||
<figcaption>
|
<figcaption>
|
||||||
<strong>Controls & Acoustic Stage:</strong> Close-up of the rotary encoder, Play/Pause and Next Track buttons, green/red drum LEDs, and the 3-buzzer audio stage.
|
<strong>Controls & Acoustic Stage:</strong> Close-up of the rotary encoder, Play/Pause and Next Track buttons, green/red drum LEDs, and the 3-buzzer audio stage.
|
||||||
</figcaption>
|
</figcaption>
|
||||||
|
|
@ -195,14 +214,13 @@
|
||||||
<section class="section-block reading-width" aria-labelledby="p3-learning">
|
<section class="section-block reading-width" aria-labelledby="p3-learning">
|
||||||
<span class="section-label">05 // Workshop Notes & Next Steps</span>
|
<span class="section-label">05 // Workshop Notes & Next Steps</span>
|
||||||
<h2 id="p3-learning">Current State & Roadmap</h2>
|
<h2 id="p3-learning">Current State & Roadmap</h2>
|
||||||
<div class="callout-box">
|
<div class="callout-box magenta">
|
||||||
<span class="callout-title">Current State</span>
|
<span class="callout-title">Current State & Next Steps</span>
|
||||||
<p>
|
<p>
|
||||||
The firmware is rock-solid on the breadboard: the rotary encoder dynamically scales volume and tempo via lockless IPC variables, all 16 tracks play from flash memory, and the 1.3" SPI OLED renders real-time frequency bars and drum hits at 30 FPS.
|
The firmware is rock-solid on the breadboard: the rotary encoder dynamically scales volume and tempo via lockless IPC variables, all 16 tracks play from flash memory, and the 1.3" SPI OLED renders real-time frequency bars and drum hits at 30 FPS.
|
||||||
</p>
|
</p>
|
||||||
<span class="callout-title">Next Steps</span>
|
|
||||||
<p style="margin-bottom:0;">
|
<p style="margin-bottom:0;">
|
||||||
Migrating the dual-breadboard circuit onto a soldered perfboard or custom KiCad PCB, and optionally re-integrating a WS2812B addressable RGB strip when expanding the enclosure.
|
<strong>Next Step:</strong> Migrating the dual-breadboard circuit onto a soldered perfboard or custom KiCad PCB.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
@ -214,7 +232,7 @@
|
||||||
<footer class="site-footer">
|
<footer class="site-footer">
|
||||||
<div class="container footer-inner">
|
<div class="container footer-inner">
|
||||||
<div>
|
<div>
|
||||||
<strong>Ertunç Özbay</strong> — Personal workshop, project lab, and learning notebook.
|
<strong>Ertunç Özbay</strong> — Electrical & Electronics Engineering Student • <a href="mailto:ertuncozbayh@gmail.com">ertuncozbayh@gmail.com</a>
|
||||||
</div>
|
</div>
|
||||||
<ul class="footer-links" aria-label="Footer links">
|
<ul class="footer-links" aria-label="Footer links">
|
||||||
<li><a href="../projects/index.html">Projects</a></li>
|
<li><a href="../projects/index.html">Projects</a></li>
|
||||||
|
|
@ -222,6 +240,7 @@
|
||||||
<li><a href="../lab.html">Lab</a></li>
|
<li><a href="../lab.html">Lab</a></li>
|
||||||
<li><a href="../contact.html">Contact</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://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>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,8 @@
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>Multi-Functional RC Controller — Projects — Ertunç Özbay</title>
|
<title>Multi-Functional RC Controller (MFC) — Projects — Ertunç Özbay</title>
|
||||||
<meta name="description" content="Project notes for the Multi-Functional RC Controller by Ertunç Özbay: an ongoing hardware-software RC control build.">
|
<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="icon" type="image/svg+xml" href="../assets/images/favicon.svg">
|
||||||
<link rel="stylesheet" href="../assets/css/style.css">
|
<link rel="stylesheet" href="../assets/css/style.css">
|
||||||
</head>
|
</head>
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
<span class="brand-mark" aria-hidden="true">EÖ</span>
|
<span class="brand-mark" aria-hidden="true">EÖ</span>
|
||||||
<span>
|
<span>
|
||||||
Ertunç Özbay
|
Ertunç Özbay
|
||||||
<span class="brand-subtitle">workshop // notebook // lab</span>
|
<span class="brand-subtitle">embedded // hardware // open-source</span>
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
|
|
@ -48,77 +48,160 @@
|
||||||
<article>
|
<article>
|
||||||
<header class="workshop-hero">
|
<header class="workshop-hero">
|
||||||
<div class="card-meta">
|
<div class="card-meta">
|
||||||
<span class="badge badge-progress">Status: In progress</span>
|
<span class="badge badge-progress">Status: Rev 0.1 Carrier Built → Phase 2 Console Expansion</span>
|
||||||
<span>Project 01 // Hardware + Software</span>
|
<span>Project 01 // ESP32-S3-N16R8 • 2.4 GHz RF • ESP-IDF C99</span>
|
||||||
</div>
|
</div>
|
||||||
<h1>Multi-Functional RC Controller</h1>
|
<h1><span class="gradient-title">Multi-Functional RC Controller (MFC)</span></h1>
|
||||||
<p class="hero-lead">
|
<p class="hero-lead">
|
||||||
An ongoing project related to RC control and hardware-software integration.
|
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>
|
</p>
|
||||||
<div class="button-row">
|
<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-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>
|
<a class="btn btn-secondary" href="index.html">All Projects</a>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<section class="section-block reading-width" aria-labelledby="p1-overview">
|
<!-- YouTube Proof-of-Concept Video Placeholder -->
|
||||||
<span class="section-label">01 // Overview</span>
|
<section id="poc-video" class="poc-video-section" aria-labelledby="mfc-video-heading">
|
||||||
<h2 id="p1-overview">What This Project Is About</h2>
|
<div class="poc-video-card">
|
||||||
<p>
|
<span class="section-label">🎬 Proof of Concept // YouTube Video Showcase</span>
|
||||||
The <strong>Multi-Functional RC Controller</strong> is an ongoing hardware-and-software build where I explore how a single remote controller can be designed, programmed, and adapted for practical RC applications.
|
<h2 id="mfc-video-heading">YouTube Proof-of-Concept Demonstration</h2>
|
||||||
</p>
|
<!-- Ready-to-use YouTube Embed Placeholder: Replace src when uploaded -->
|
||||||
<p>
|
<div class="poc-video-screen" role="region" aria-label="YouTube Proof of Concept Video Placeholder">
|
||||||
Rather than treating a controller as a sealed black box, I want to understand both the physical interface and the software logic that translates user input into control actions.
|
<div class="poc-play-badge" aria-hidden="true">
|
||||||
</p>
|
<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>
|
</section>
|
||||||
|
|
||||||
<section class="section-block reading-width" aria-labelledby="p1-confirmed">
|
<!-- Early Prototype Hardware Gallery -->
|
||||||
<span class="section-label">02 // Confirmed Information</span>
|
<section class="section-block" aria-labelledby="p1-gallery">
|
||||||
<h2 id="p1-confirmed">Confirmed Scope & Repository</h2>
|
<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">
|
<table class="spec-table">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="col">Item</th>
|
<th scope="col">Subsystem / Peripheral</th>
|
||||||
<th scope="col">Confirmed Detail</th>
|
<th scope="col">ESP32-S3 GPIO</th>
|
||||||
|
<th scope="col">Interface & Engineering Notes</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<td><strong>Project Name</strong></td>
|
<td><strong>Dual Hall-Effect Joysticks (4 Axes)</strong></td>
|
||||||
<td>Multi-Functional RC Controller</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>
|
||||||
<tr>
|
<tr>
|
||||||
<td><strong>Current Status</strong></td>
|
<td><strong>MAX4466 Electret Mic Preamp</strong></td>
|
||||||
<td>In progress</td>
|
<td><code>GPIO 1</code></td>
|
||||||
|
<td><code>ADC1_CH0</code> analog audio envelope & FFT voice input</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><strong>Source Repository</strong></td>
|
<td><strong>Shared SPI2 Bus (MOSI / MISO / SCK)</strong></td>
|
||||||
<td><a href="https://github.com/ertunc-ozbay/multi-functional-controller" rel="noopener noreferrer">github.com/ertunc-ozbay/multi-functional-controller</a></td>
|
<td><code>GPIO 11 / 13 / 12</code></td>
|
||||||
|
<td>High-speed SPI2 bus shared by nRF24L01+, ST7789 TFT, and MicroSD</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><strong>Core Focus</strong></td>
|
<td><strong>nRF24L01+ 2.4 GHz Radio</strong></td>
|
||||||
<td>RC control and hardware-software integration</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>
|
||||||
<tr>
|
<tr>
|
||||||
<td><strong>Hardware & Protocol Specs</strong></td>
|
<td><strong>1.3" ST7789 IPS TFT (240×240)</strong></td>
|
||||||
<td>Details will be documented as the project develops.</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>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section class="section-block reading-width" aria-labelledby="p1-learning">
|
<!-- Phase 1 vs Phase 2 BOM -->
|
||||||
<span class="section-label">03 // Workshop Notes</span>
|
<section class="section-block reading-width" aria-labelledby="p1-bom">
|
||||||
<h2 id="p1-learning">What I Am Currently Learning & Next Steps</h2>
|
<span class="section-label">04 // Build Roadmap & Phase 2 Console BOM</span>
|
||||||
<div class="callout-box">
|
<h2 id="p1-bom">From Rev 0.1 Carrier to the DT-100 Desktop Console</h2>
|
||||||
<span class="callout-title">What I Am Currently Learning</span>
|
<div class="callout-box amber">
|
||||||
|
<span class="callout-title">Phase 2 Hardware Upgrade (Direnc.net Procurement List)</span>
|
||||||
<p>
|
<p>
|
||||||
How physical control inputs, embedded software structure, and clear technical documentation come together when designing a custom controller from scratch.
|
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>
|
|
||||||
<span class="callout-title">Next Step</span>
|
|
||||||
<p style="margin-bottom:0;">
|
|
||||||
Details will be documented as the project develops. As each hardware stage and software iteration is tested on the bench, I will publish confirmed component lists and build logs here and in the <a href="../blog/index.html">Blog</a>.
|
|
||||||
</p>
|
</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>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
</article>
|
</article>
|
||||||
|
|
@ -129,7 +212,7 @@
|
||||||
<footer class="site-footer">
|
<footer class="site-footer">
|
||||||
<div class="container footer-inner">
|
<div class="container footer-inner">
|
||||||
<div>
|
<div>
|
||||||
<strong>Ertunç Özbay</strong> — Personal workshop, project lab, and learning notebook.
|
<strong>Ertunç Özbay</strong> — Electrical & Electronics Engineering Student • <a href="mailto:ertuncozbayh@gmail.com">ertuncozbayh@gmail.com</a>
|
||||||
</div>
|
</div>
|
||||||
<ul class="footer-links" aria-label="Footer links">
|
<ul class="footer-links" aria-label="Footer links">
|
||||||
<li><a href="../projects/index.html">Projects</a></li>
|
<li><a href="../projects/index.html">Projects</a></li>
|
||||||
|
|
@ -137,6 +220,7 @@
|
||||||
<li><a href="../lab.html">Lab</a></li>
|
<li><a href="../lab.html">Lab</a></li>
|
||||||
<li><a href="../contact.html">Contact</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://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>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
|
|
||||||
157
projects/pointblank-linux.html
Normal file
157
projects/pointblank-linux.html
Normal file
|
|
@ -0,0 +1,157 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Point Blank on Linux (Standalone Rust Launcher) — Projects — Ertunç Özbay</title>
|
||||||
|
<meta name="description" content="Point Blank on Linux by Ertunç Özbay: Standalone Linux desktop launcher written in Rust with 100% unmodified official CheatBlocker anti-cheat, automated Wine prefix provisioning, and DirectX 9 / DirectX 11 support.">
|
||||||
|
<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-coral">Status: v1.0.0 Released</span>
|
||||||
|
<span>Project 04 // Rust • Linux Systems • Wine & DirectX 9/11</span>
|
||||||
|
</div>
|
||||||
|
<h1><span class="gradient-title">Point Blank on Linux — Standalone Community Launcher</span></h1>
|
||||||
|
<p class="hero-lead">
|
||||||
|
An all-in-one standalone Linux desktop launcher written in <strong>Rust</strong> that runs Point Blank (Zepetto / TAM Game) on Linux with <strong>100% unmodified official game files and native CheatBlocker anti-cheat</strong> (<code>CB.exe</code> + <code>CB.cbm</code>).
|
||||||
|
</p>
|
||||||
|
<p class="reading-width">
|
||||||
|
Built on Arch Linux without requiring Heroic, Lutris, or external wrappers—featuring automated Wine prefix & Winetricks provisioning, 16-byte TLS-aligned runtime support for DirectX 11, multi-region authentication, and native 1920×1080 borderless fullscreen at 200 FPS.
|
||||||
|
</p>
|
||||||
|
<div class="button-row">
|
||||||
|
<a class="btn btn-primary" href="https://github.com/ertunc-ozbay/pointblank-linux" rel="noopener noreferrer">💻 View GitHub Repository</a>
|
||||||
|
<a class="btn btn-cyan" href="https://github.com/ertunc-ozbay/pointblank-linux/releases" rel="noopener noreferrer">📦 Download v1.0.0 Release</a>
|
||||||
|
<a class="btn btn-youtube" href="#poc-video">🎬 Watch PoC Video Slot</a>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<!-- YouTube Proof-of-Concept Video Placeholder -->
|
||||||
|
<section id="poc-video" class="poc-video-section" aria-labelledby="pb-video-heading">
|
||||||
|
<div class="poc-video-card">
|
||||||
|
<span class="section-label">🎬 Proof of Concept // YouTube Video Showcase</span>
|
||||||
|
<h2 id="pb-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">Point Blank Running Natively on Arch Linux (DX11 / 200 FPS / Official CheatBlocker)</div>
|
||||||
|
<p class="poc-video-desc">
|
||||||
|
Upcoming YouTube proof-of-concept gameplay and setup walkthrough showing prefix auto-provisioning, DirectX 11 200 FPS performance on Linux, and unmodified CheatBlocker anti-cheat execution.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="section-block reading-width" aria-labelledby="p4-overview">
|
||||||
|
<span class="section-label">01 // Systems Engineering Overview</span>
|
||||||
|
<h2 id="p4-overview">Solving Low-Level Windows-on-Linux Compatibility</h2>
|
||||||
|
<p>
|
||||||
|
Running legacy 32-bit/64-bit online Windows games with kernel/user-mode anti-cheat modules like CheatBlocker on Linux often fails due to unaligned Thread Local Storage (TLS) allocations in `ntdll.dll`, missing Visual C++ MFC redistributables, and broken WebView2 login flows.
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li><strong>16-Byte TLS-Aligned Runtime for DirectX 11:</strong> Automatically provisions a 16-byte TLS-aligned `ntdll.dll` Wine runtime so both <strong>DirectX 9</strong> (`DXVersion = 9`) and <strong>DirectX 11</strong> (`DXVersion = 11`) render cleanly without crashes.</li>
|
||||||
|
<li><strong>One-Click Isolated Prefix Provisioning:</strong> Configures `~/.local/share/pointblank-linux/prefix` with `vcrun2022` (`mfc140.dll`, `msvcp140.dll`, `vcruntime140.dll`), `d3dx9_31..43`, `d3dcompiler_43`, `d3dx11_43`, and Edge WebView2 (`109.0.1518.78`).</li>
|
||||||
|
<li><strong>In-Game `F11` Borderless Fullscreen Helper:</strong> Compiles a lightweight MinGW-w64 helper utility for instant 1920×1080 borderless fullscreen switching at 200 FPS.</li>
|
||||||
|
</ul>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="section-block reading-width" aria-labelledby="p4-specs">
|
||||||
|
<span class="section-label">02 // Technical Specifications</span>
|
||||||
|
<h2 id="p4-specs">Confirmed Capabilities & Supported Distros</h2>
|
||||||
|
<table class="spec-table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th scope="col">Subsystem</th>
|
||||||
|
<th scope="col">Specification</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td><strong>Primary Language</strong></td>
|
||||||
|
<td>Rust (Standalone Linux `x86_64` executable)</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><strong>Anti-Cheat Compatibility</strong></td>
|
||||||
|
<td>100% Unmodified Official CheatBlocker (`CB.exe` + `CB.cbm`)</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><strong>Render Pipelines</strong></td>
|
||||||
|
<td>DirectX 9 & DirectX 11 (1920×1080 Borderless Fullscreen @ 200 FPS)</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><strong>Supported Linux Distributions</strong></td>
|
||||||
|
<td>Arch Linux / CachyOS / Manjaro, Ubuntu / Debian / Mint / Pop!_OS, Fedora / Nobara</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><strong>Source & Binary Releases</strong></td>
|
||||||
|
<td><a href="https://github.com/ertunc-ozbay/pointblank-linux" rel="noopener noreferrer">github.com/ertunc-ozbay/pointblank-linux</a></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</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>
|
||||||
|
|
@ -3,8 +3,8 @@
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>RC and Autonomous Vehicle — Projects — Ertunç Özbay</title>
|
<title>RC and Autonomous 4WD Vehicle — Projects — Ertunç Özbay</title>
|
||||||
<meta name="description" content="Project notes for the RC and Autonomous Vehicle by Ertunç Özbay: exploring RC control, autonomous behavior, electronics, control logic, and software.">
|
<meta name="description" content="Project notes for the RC and Autonomous 4WD Vehicle by Ertunç Özbay: exploring 2.4 GHz RC telemetry, autonomous obstacle avoidance, motor control electronics, and embedded software.">
|
||||||
<link rel="icon" type="image/svg+xml" href="../assets/images/favicon.svg">
|
<link rel="icon" type="image/svg+xml" href="../assets/images/favicon.svg">
|
||||||
<link rel="stylesheet" href="../assets/css/style.css">
|
<link rel="stylesheet" href="../assets/css/style.css">
|
||||||
</head>
|
</head>
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
<span class="brand-mark" aria-hidden="true">EÖ</span>
|
<span class="brand-mark" aria-hidden="true">EÖ</span>
|
||||||
<span>
|
<span>
|
||||||
Ertunç Özbay
|
Ertunç Özbay
|
||||||
<span class="brand-subtitle">workshop // notebook // lab</span>
|
<span class="brand-subtitle">embedded // hardware // open-source</span>
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
|
|
@ -48,27 +48,47 @@
|
||||||
<article>
|
<article>
|
||||||
<header class="workshop-hero">
|
<header class="workshop-hero">
|
||||||
<div class="card-meta">
|
<div class="card-meta">
|
||||||
<span class="badge badge-progress">Status: In progress</span>
|
<span class="badge badge-active">Status: In Progress</span>
|
||||||
<span>Project 02 // Electronics, Control Logic & Software</span>
|
<span>Project 03 // 4WD Robotics, Control Logic & 2.4 GHz Telemetry</span>
|
||||||
</div>
|
</div>
|
||||||
<h1>RC and Autonomous Vehicle</h1>
|
<h1><span class="gradient-title">RC and Autonomous 4WD Vehicle</span></h1>
|
||||||
<p class="hero-lead">
|
<p class="hero-lead">
|
||||||
An ongoing project exploring RC control and autonomous vehicle behavior. This project is part of my effort to understand systems across electronics, control logic, and software.
|
A standalone 4WD robotic vehicle project exploring manual 2.4 GHz wireless control (paired with my <a href="multi-functional-controller.html">Multi-Functional RC Controller</a>) and autonomous obstacle-avoidance behavior.
|
||||||
</p>
|
</p>
|
||||||
<div class="button-row">
|
<div class="button-row">
|
||||||
|
<a class="btn btn-youtube" href="#poc-video">🎬 Watch PoC Video Slot</a>
|
||||||
|
<a class="btn btn-secondary" href="multi-functional-controller.html">Companion RC Controller</a>
|
||||||
<a class="btn btn-secondary" href="index.html">All Projects</a>
|
<a class="btn btn-secondary" href="index.html">All Projects</a>
|
||||||
<a class="btn btn-secondary" href="../lab.html">Related Lab Notes</a>
|
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
|
<!-- YouTube Proof-of-Concept Video Placeholder -->
|
||||||
|
<section id="poc-video" class="poc-video-section" aria-labelledby="rc-video-heading">
|
||||||
|
<div class="poc-video-card">
|
||||||
|
<span class="section-label">🎬 Proof of Concept // YouTube Video Showcase</span>
|
||||||
|
<h2 id="rc-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">4WD RC & Autonomous Vehicle — Wireless Drive & Control Loop Test</div>
|
||||||
|
<p class="poc-video-desc">
|
||||||
|
Upcoming YouTube demonstration covering 2.4 GHz remote drive response from the Multi-Functional Controller, motor driver PWM tuning, and autonomous mode switching.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
<section class="section-block reading-width" aria-labelledby="p2-overview">
|
<section class="section-block reading-width" aria-labelledby="p2-overview">
|
||||||
<span class="section-label">01 // Overview</span>
|
<span class="section-label">01 // Overview</span>
|
||||||
<h2 id="p2-overview">Why I Am Building This</h2>
|
<h2 id="p2-overview">Why I Am Building This</h2>
|
||||||
<p>
|
<p>
|
||||||
A vehicle project sits right at the intersection of the subjects I care about most: physical electronics, control logic, and software decision-making. If a software routine makes a bad assumption, you see it immediately in how the physical vehicle behaves.
|
A physical vehicle sits right at the intersection of the subjects I care about most: power electronics, closed-loop control logic, and real-time embedded decision-making. If a firmware routine makes a bad timing assumption or power transients aren't filtered properly, you see it immediately in how the vehicle behaves on the floor.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Through this ongoing build, I want to explore both manual RC control and autonomous behavior step by step, connecting what I study in circuit analysis and embedded programming to a moving system.
|
This project is maintained strictly separate from the transmitter console so that the vehicle node and the <a href="multi-functional-controller.html">Multi-Functional RC Controller</a> communicate over a clean, modular 2.4 GHz packet protocol.
|
||||||
</p>
|
</p>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
@ -85,19 +105,19 @@
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<td><strong>Project Name</strong></td>
|
<td><strong>Project Name</strong></td>
|
||||||
<td>RC and Autonomous Vehicle</td>
|
<td>RC and Autonomous 4WD Vehicle</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><strong>Status</strong></td>
|
<td><strong>Status</strong></td>
|
||||||
<td>In progress</td>
|
<td>In progress (Hardware & control loop integration)</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><strong>Areas Explored</strong></td>
|
<td><strong>Companion Transmitter</strong></td>
|
||||||
<td>RC control, autonomous behavior, electronics, control logic, and software</td>
|
<td><a href="multi-functional-controller.html">ESP32-S3 Multi-Functional RC Controller (MFC)</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><strong>Specific Hardware & Algorithms</strong></td>
|
<td><strong>Core Focus Areas</strong></td>
|
||||||
<td>Details will be documented as the project develops and components are confirmed through testing.</td>
|
<td>Manual 2.4 GHz RC drive, autonomous behavior exploration, motor drive electronics, and embedded control software</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
@ -106,14 +126,14 @@
|
||||||
<section class="section-block reading-width" aria-labelledby="p2-learning">
|
<section class="section-block reading-width" aria-labelledby="p2-learning">
|
||||||
<span class="section-label">03 // Workshop Notes</span>
|
<span class="section-label">03 // Workshop Notes</span>
|
||||||
<h2 id="p2-learning">What I Am Currently Learning & Next Steps</h2>
|
<h2 id="p2-learning">What I Am Currently Learning & Next Steps</h2>
|
||||||
<div class="callout-box amber">
|
<div class="callout-box">
|
||||||
<span class="callout-title">What I Am Currently Learning</span>
|
<span class="callout-title">What I Am Currently Learning</span>
|
||||||
<p>
|
<p>
|
||||||
Understanding how electronics, control logic, and software layers depend on one another when transitioning between manual remote control and autonomous vehicle behavior.
|
Understanding how power supply decoupling, motor driver PWM control, and wireless telemetry packets interact when transitioning smoothly between manual remote control and autonomous vehicle behavior.
|
||||||
</p>
|
</p>
|
||||||
<span class="callout-title">Next Step</span>
|
<span class="callout-title">Next Step</span>
|
||||||
<p style="margin-bottom:0;">
|
<p style="margin-bottom:0;">
|
||||||
Details will be documented as the project develops. I am keeping this page strictly grounded—only adding sensors, microcontrollers, communication protocols, and test results after I confirm them on the workbench.
|
Publishing the dedicated vehicle repository, chassis photos, and the YouTube Proof-of-Concept drive video once bench and floor testing are complete.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
@ -125,7 +145,7 @@
|
||||||
<footer class="site-footer">
|
<footer class="site-footer">
|
||||||
<div class="container footer-inner">
|
<div class="container footer-inner">
|
||||||
<div>
|
<div>
|
||||||
<strong>Ertunç Özbay</strong> — Personal workshop, project lab, and learning notebook.
|
<strong>Ertunç Özbay</strong> — Electrical & Electronics Engineering Student • <a href="mailto:ertuncozbayh@gmail.com">ertuncozbayh@gmail.com</a>
|
||||||
</div>
|
</div>
|
||||||
<ul class="footer-links" aria-label="Footer links">
|
<ul class="footer-links" aria-label="Footer links">
|
||||||
<li><a href="../projects/index.html">Projects</a></li>
|
<li><a href="../projects/index.html">Projects</a></li>
|
||||||
|
|
@ -133,6 +153,7 @@
|
||||||
<li><a href="../lab.html">Lab</a></li>
|
<li><a href="../lab.html">Lab</a></li>
|
||||||
<li><a href="../contact.html">Contact</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://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>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue