Hazır RC araba almak yerine kendi aracımı yapmak istedim: mekanik parçalarını 3D yazıcımda basacağım, elektronik devresini kendim kuracağım ve yazılımını satır satır kendim yazacağım bir araç. Ortaya çıkan şey bir oyuncaktan fazlası oldu — mekanik tasarım, güç elektroniği ve gömülü yazılımı tek projede birleştiren, bozulan her parçası yeniden basılabilen bir öğrenme platformu. Bu yazıda aracı hangi parçalarla, hangi sırayla ve hangi hatalara düşerek yaptığımı anlatacağım.
1. Genel Mimari
Araç üç katmandan oluşuyor:
- Mekanik: 3D baskılı şasi, tekerlek jantları, motor yatakları, direksiyon mekanizması ve gövde.
- Elektronik: Beyin olarak ESP32, tahrik için DC motorlar + L298N motor sürücü, direksiyon için SG90 servo, güç için 18650 lityum piller.
- Yazılım: ESP32 üzerinde çalışan, aracı kendi WiFi ağı üzerinden telefondan kontrol ettiren gömülü kod — ayrı bir kumanda satın almaya gerek yok.
2. Mekanik Tasarım ve 3D Baskı
Parçaları CAD'de kendim modelledim; en çok zaman alan kısım direksiyon mekanizmasıydı — servo kolunun hareketini iki ön tekerleğe ileten basit bir rot takımı için birkaç deneme baskısı gerekti. Baskılar konusunda tecrübeyle öğrendiklerim:
- Filament seçimi: İlk sürümü PLA ile bastım; masa üstünde sorunsuzdu ama ilk ciddi çarpmada ön tampon ve motor yatağı çatladı. Darbe alan parçaları PETG ile yeniden bastım — biraz daha zor basılıyor ama esnediği için kırılmıyor.
- Doluluk (infill): Şasi için %30-40 gyroid doluluk hem hafif hem yeterince rijit. Motor yatakları gibi vidayla sıkılan parçalarda doluluğu %60'a çıkarıp duvar sayısını artırmak gerekiyor; yoksa vida yuvaları eziliyor.
- Tolerans: Birbirine geçen parçalarda 0,2-0,3 mm boşluk bırakın; sıfır toleransla modellenen parçalar baskı sonrası birbirine girmiyor.
- Maliyet: Tüm parçalar yaklaşık 300 gram filament tuttu. Kendi baskılarınızın maliyetini sitemdeki 3D baskı maliyet hesaplayıcısıyla çıkarabilirsiniz.
3. Elektronik Donanım
- ESP32 geliştirme kartı: WiFi'ı dahili, GPIO'su bol, donanımsal PWM kanalları motor hızı kontrolü için ideal. Pin dizilimine ESP32 pinout aracından bakabilirsiniz.
- L298N motor sürücü: ESP32'nin pinleri motoru doğrudan süremez (birkaç mA verir, motor yüzlerce mA çeker); L298N iki DC motoru yön + PWM hız kontrolüyle sürer. Verimli değildir ama ucuz, dayanıklı ve başlangıç için yeterlidir.
- 2 adet DC redüktörlü motor: Arka tekerlekleri sürüyor. Redüktörlü (dişli kutulu) motor şart — çıplak DC motorun devri yüksek, torku düşüktür; araç kalkış bile yapamaz.
- SG90 servo: Ön direksiyon için. 5V ile çalışır, PWM ile açı kontrol edilir.
- 2×18650 pil + regülatör: Motorlar pilden doğrudan (7,4V) besleniyor; ESP32 ise voltaj regülatöründen geçen 5V hatta. En önemli kural: motor ile mikrodenetleyicinin GND hatlarını ortak bağlayın, ama beslemeyi asla aynı ince hattan geçirmeyin — motor kalkışta ani akım çekince ESP32 resetlenir (bunu yaşayarak öğrendim, aşağıda).
4. Yazılım: Telefon Kumandalı WiFi Kontrol
Ayrı bir RC kumanda ve alıcı almak yerine ESP32'nin kendisini erişim noktası (Access Point) yaptım: araç kendi WiFi ağını yayınlıyor, telefonla bu ağa bağlanıp tarayıcıdan açtığım basit web arayüzündeki sanal joystick ile aracı sürüyorum. Çekirdek mantık şu:
#include <WiFi.h>
#include <WebServer.h>
#include <ESP32Servo.h>
// L298N pinleri: IN1/IN2 yon, ENA uzerinden PWM hiz
const int IN1 = 27, IN2 = 26, ENA = 14, SERVO_PIN = 13;
WebServer server(80);
Servo steering;
void setup() {
pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT);
ledcAttach(ENA, 1000, 8); // 1 kHz, 8-bit PWM
steering.attach(SERVO_PIN);
WiFi.softAP("RC-ARABA", "12345678"); // arac kendi agini yayinlar
server.on("/ctl", []() { // /ctl?hiz=-255..255&aci=60..120
int hiz = server.arg("hiz").toInt();
int aci = server.arg("aci").toInt();
digitalWrite(IN1, hiz >= 0); digitalWrite(IN2, hiz < 0);
ledcWrite(ENA, abs(hiz));
steering.write(constrain(aci, 60, 120));
server.send(200, "text/plain", "ok");
});
server.begin();
}
void loop() { server.handleClient(); }
Web arayüzü ESP32'den servis edilen tek bir HTML sayfası: dokunmatik joystick, parmağın konumunu 100 ms'de bir /ctl?hiz=...&aci=... isteğine çevirip gönderiyor. Direksiyon açısını 60-120 derece aralığına sınırlamak önemli — servo mekanik sınırın ötesine zorlanırsa hem dişli aşınır hem akım çeker.
5. Karşılaştığım Sorunlar
- ESP32 motor kalkışında resetleniyordu. Sebep: motorların ani akım çekişi pil voltajını düşürüp regülatörü sarsması. Çözüm: ESP32'nin 5V hattına 470 µF kondansatör eklemek ve motor beslemesini ayrı kalın hatla çekmek. Bu, projenin bana en çok şey öğreten arızasıydı.
- Motor paraziti: Fırçalı DC motorlar elektriksel gürültü üretir; motor uçlarına lehimlenen 100 nF seramik kondansatörler paraziti belirgin azaltıyor.
- PLA tekerlekler kayıyordu: Düz PLA jant sert zeminde tutunmuyor. Çözüm basit: jant kanalına geçirilen geniş elastik bant/O-ring lastik görevi görüyor.
- WiFi gecikmesi: Kontrol isteklerini her tuş olayında değil 100 ms'lik aralıklarla göndermek hem ağı boğmuyor hem sürüşü akıcılaştırıyor.
Sıkça Sorulan Sorular
Toplam maliyet ne kadar?
3D yazıcınız varsa ana kalemler elektronik: ESP32, L298N, iki redüktörlü motor, servo ve piller. Filament ~300 gram. Hazır hobi RC arabalarının çok altında bir maliyetle, üstelik her parçası yeniden basılabilir bir araç çıkıyor.
PLA mı PETG mi?
Prototipte PLA, darbe alan son parçalarda PETG. PLA kırılgandır; tampon ve motor yatağı gibi parçalar çarpmada çatlar.
ESP8266 ile olur mu?
Olur ama önerilmez: kullanılabilir GPIO azdır, motor + servo + ekstralar için pin yetmez. ESP32'nin bol GPIO'su ve donanımsal PWM'i bu iş için biçilmiş kaftan. (ESP8266'yı sabit sensör düğümlerinde kullanıyorum — bkz. ESP8266 + MQTT + Home Assistant kurulumum.)
Sonuç
Bu proje bana üç disiplini aynı anda çalıştırdı: CAD'de tasarlayıp baskı toleranslarıyla boğuşmak, güç elektroniğinin (ortak GND, kondansatör, ayrı besleme hattı) derslerini sahada almak ve gömülü yazılımı gerçek zamanlı bir kontrol arayüzüne bağlamak. Bir sonraki sürüm için planım enkoderli motorlarla hız geri beslemesi ve aracın üzerine bir kamera modülü eklemek. Kendi RC aracınızı yapacaksanız tavsiyem şu: önce şasiyi değil, motor + sürücü + ESP32 üçlüsünü masa üstünde çalıştırın — mekanik, çalışan elektroniğin etrafına giydirilince proje hiç tıkanmıyor.