183 lines
8.9 KiB
HTML
183 lines
8.9 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en" data-theme="light">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>RC and Autonomous 4WD Vehicle - Projects - Ertunç Özbay</title>
|
|
<meta name="description" content="Project notes and 2.4 GHz telemetry protocol structures for the RC and Autonomous 4WD Vehicle by Ertunç Özbay.">
|
|
<link rel="icon" type="image/svg+xml" href="../assets/images/favicon.svg">
|
|
<link rel="stylesheet" href="../assets/css/style.css?v=3">
|
|
</head>
|
|
<body>
|
|
<a class="skip-link" href="#main-content">Skip to main content</a>
|
|
|
|
<header class="site-header">
|
|
<div class="container header-inner">
|
|
<a class="site-brand" href="../index.html">
|
|
<span class="brand-mark" aria-hidden="true">EÖ</span>
|
|
<span>
|
|
Ertunç Özbay
|
|
<span class="brand-subtitle">Electrical & Electronics Engineering</span>
|
|
</span>
|
|
</a>
|
|
|
|
<div class="header-controls">
|
|
<div class="theme-switcher" role="group" aria-label="Theme"><button type="button" class="theme-btn active" data-set-theme="light">Light</button><button type="button" class="theme-btn" data-set-theme="dark">Dark</button></div>
|
|
|
|
<button class="nav-toggle" type="button" data-nav-toggle aria-expanded="false" aria-controls="primary-navigation">
|
|
<span aria-hidden="true"></span>
|
|
<span data-nav-label>Menu</span>
|
|
</button>
|
|
|
|
<nav id="primary-navigation" class="site-nav" data-site-nav aria-label="Main navigation">
|
|
<ul class="nav-list">
|
|
<li><a class="nav-link" href="../index.html">Home</a></li>
|
|
<li><a class="nav-link" href="../about.html">About</a></li>
|
|
<li><a class="nav-link" href="../projects/index.html" 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>
|
|
</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-active">Status: In Progress</span>
|
|
<span>Project 4WD Robotics, Control Logic & 2.4 GHz Telemetry</span>
|
|
</div>
|
|
<h1><span class="gradient-title">RC and Autonomous 4WD Vehicle</span></h1>
|
|
<p class="hero-lead">
|
|
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>
|
|
<div class="button-row">
|
|
<a class="btn btn-youtube" href="#poc-video"> Watch PoC Video Slot</a>
|
|
<a class="btn btn-primary" href="multi-functional-controller.html"> Companion RC Controller</a>
|
|
<a class="btn btn-secondary" href="index.html">All Projects</a>
|
|
</div>
|
|
</header>
|
|
|
|
<!-- YouTube Proof-of-Concept Video Placeholder -->
|
|
<section id="poc-video" class="poc-video-section" aria-labelledby="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>
|
|
<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">
|
|
<span class="section-label">Overview</span>
|
|
<h2 id="p2-overview">Why I Am Building This</h2>
|
|
<p>
|
|
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>
|
|
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>
|
|
</section>
|
|
|
|
<!-- 2.4 GHz Control Packet Code Snippet -->
|
|
<section class="section-block" aria-labelledby="p2-protocol">
|
|
<span class="section-label">2.4 GHz Wireless Protocol Structure</span>
|
|
<h2 id="p2-protocol">Packed C99 Telemetry & Drive Structs</h2>
|
|
<p class="reading-width">
|
|
To guarantee deterministic serialization over the 32-byte nRF24L01+ payload buffer between the controller and the vehicle, the link layer uses packed fixed-width C99 structs:
|
|
</p>
|
|
|
|
<div class="code-window">
|
|
<div class="code-window-header">
|
|
<span class="code-window-title">
|
|
<span class="code-dot amber"></span><span class="code-dot green"></span></span>
|
|
c99 - Packed 2.4 GHz Control & Telemetry Packet Definition
|
|
</span>
|
|
<button type="button" class="copy-code-btn" data-copy-code>Copy Code</button>
|
|
</div>
|
|
<pre><code>#include <stdint.h>
|
|
#include <assert.h>
|
|
|
|
typedef struct __attribute__((packed)) {
|
|
uint8_t magic; // 0xA5 frame sync byte
|
|
uint8_t seq; // Rolling packet sequence number
|
|
int16_t throttle_pwm; // -1000 to +1000 normalized longitudinal drive
|
|
int16_t steering_pwm; // -1000 to +1000 differential yaw command
|
|
uint8_t mode_flags; // Bit 0: Autonomous Mode, Bit 1: Emergency Stop
|
|
uint8_t crc8; // Checksum for packet integrity
|
|
} RcControlPacket_t;
|
|
|
|
_Static_assert(sizeof(RcControlPacket_t) == 8, "RcControlPacket_t must be 8 bytes");</code></pre>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="section-block reading-width" aria-labelledby="p2-confirmed">
|
|
<span class="section-label">Confirmed Information</span>
|
|
<h2 id="p2-confirmed">Current Documentation Status</h2>
|
|
<table class="spec-table">
|
|
<thead>
|
|
<tr>
|
|
<th scope="col">Attribute</th>
|
|
<th scope="col">Confirmed Status</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td><strong>Project Name</strong></td>
|
|
<td>RC and Autonomous 4WD Vehicle</td>
|
|
</tr>
|
|
<tr>
|
|
<td><strong>Status</strong></td>
|
|
<td>In progress (Hardware & control loop integration)</td>
|
|
</tr>
|
|
<tr>
|
|
<td><strong>Companion Transmitter</strong></td>
|
|
<td><a href="multi-functional-controller.html">ESP32-S3 Multi-Functional RC Controller (MFC)</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td><strong>Core Focus Areas</strong></td>
|
|
<td>Manual 2.4 GHz RC drive, autonomous behavior exploration, motor drive electronics, and embedded control software</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:ertunc.ozbay@outlook.com">ertunc.ozbay@outlook.com</a>
|
|
</div>
|
|
<ul class="footer-links" aria-label="Footer links">
|
|
<li><a href="../projects/index.html">Projects</a></li>
|
|
<li><a href="../blog/index.html">Blog</a></li>
|
|
<li><a href="../lab.html">Lab</a></li>
|
|
<li><a href="../contact.html">Contact</a></li>
|
|
<li><a href="https://git.ertuncozbay.dev/ertunc-ozbay" rel="noopener noreferrer">Git Server</a></li>
|
|
<li><a href="https://www.linkedin.com/in/ertunc-ozbay" rel="noopener noreferrer">LinkedIn</a></li>
|
|
</ul>
|
|
</div>
|
|
</footer>
|
|
|
|
<script src="../assets/js/main.js?v=3"></script>
|
|
</body>
|
|
</html>
|