Robotik
OKUDUĞUNUZ KONU
Direksiyon Kontrollü Arduino RC Araba
4

Direksiyon Kontrollü Arduino RC Araba

Yazar : Murat Duran31 Ağustos 2015

Arduino rc araba yapımını daha önceden görmüştük kontrol için andorid işletim sistemli cep telefonu kullanmıştık.Bu projemizde ise direksiyon ile kontrol edeceğiz.Çocukluğumuz araba yarışı oyunlarını hep direksiyon ile oynardık.Projemiz sayesinde artık oyuncak arabalarımızı da direksiyon ile kontrol edebileceğiz.

Direksiyonumuzu USB ile bilgisayarımıza bağlıyoruz ve javascript üzerinden kontrolle sinyaller arabamıza iletiliyor.

Malzemeler

1- Arduino UNO + Nano
2- RF alıcı verici devresi
3- L298n motor sürücü
4- RC araba
5- USB oyun direksiyonu

HTML5 Gamepad APi ile verileri okuyoruz okunan veriler bilgisayarınıza bağlı olan arduino Uno üzerinden radyo frekanslarıyla diğer arduino nano ya iletiliyor ve işleniyor.

var rawGamepads =
    (navigator.getGamepads && navigator.getGamepads()) ||
    (navigator.webkitGetGamepads && navigator.webkitGetGamepads());

Gamepad.js yüklenir ve başlatıldıktan sonra gamepad nesne sensörü verileri ile doldurulur.Gamepad.js dosyasındaki kod parçacıkları aşağıdaki gibidir.

myGamepad = gamepadSupport.gamepads[0];
// Steering:
myGamepad.axes[0];
// Acceleration:
myGamepad.axes[1];
// Breaking:
myGamepad.axes[2];
// Buttons from 0 - 12:
myGamepad.buttons[0]

Direksiyon ve pedal kontrol verilerini JSON nesnesine filtre edilir ve derlenir sonra arabaya gönderilmek üzere hazırlanır. Arka planda biz her şeyi bir arada bağlayan bir node.js sunucusu vardır.

var app = require('express')(),           
    server = require('http').createServer(app).listen(8080);

// respond to web GET requests with the index.html page:
app.get('/', function (request, response) {
    response.sendfile(__dirname + '/index.html');
});

Gezgin nesnesi alınan USB gamepad verileridir.İndex.html dosyası çalıştırılarak 8080 portu üzerinden gerçek zamanlı bir bağlantı oluşturur.Web soketi ile multiplayer oyunlar için birlikte birden fazla kullanıcı ve tarayıcıları bağlayabilirsiniz.

var io = require('socket.io').listen(server);

// listen for new socket.io connections
// we don't start reading anyting until the browser has connected
io.sockets.on('connection', function (socket) {
    socket.on('message', function (data) {
        // data sent from the browser
        console.log(data);
    });
});

Web soketi başlatmak için node.js sunucu kodu

// dataString is the JSON with the wheel and pedal control data
socket.emit('message', dataString);

 

Node.js ile usb portuna bağlı arduino ile bağlantı kurmak için aşağıdaki kod satırları gereklidir.Güvenlik nedeniyle üçüncü taraf bir eklenti olmadan bağlantı kurulması olanaksızdır.

// open the USB serial port
var myPort = new SerialPort("/dev/tty.usbmodem1421", { 
 // look for return and newline at the end of each data packet
 parser: serialport.parsers.readline("\r\n")
});

myPort.write(messageReceivedFromTheBrowser);

Web soket üzerinden json ile arduino mesaj fonksiyonlarına bağlantı sağlanması gerekiyor. Projenin kodları

SİZCE NASIL OLMUŞ?
Beğendim
75%
İlginç
17%
Eh İşte
0%
Anlamadım
4%
Kötü
0%
Berbat
4%
YAZAR HAKKINDA
Murat Duran
Murat Duran
Açık kaynak donanım ve yazılım geliştiricisiyim , mekanik ve robotik sistemler üzerinde çalışmalar yapmaktayım.Ayrıca bir start-up firması olan Proje Hocam 'ın kurucuyum.
4 YORUMLAR
  • 10 Eylül 2015 at 22:02

    Hocam asıl bir fırçasız motorlu buggy üzerine rasp takıp kamera vb ekipmanlarla birlikte başka bir rasp’e bağlı g27 ile aracı kontrol etmek lazım. Ama maalesef sinyali şehir içinde 100 metreden zor alıyoruz. 🙁

  • Fatih Yiğitbaşı
    26 Mart 2017 at 11:53

    Hocam motor sürücü kartında step motor için yer varmıdır? yoksa step motor için ayrı bir tanemi alıcaz.çok bir bilgim yok

  • Fatih Yiğitbaşı
    5 Nisan 2017 at 19:39

    hocam şimdi ben bu projeyi yapmayı düşünüyorum ve bunu araba ile yapmakla beraber uçağada uyguluyacağım ama bir sorunum var ki uçak 3 kanallı yani direksyon (sağ sol ) gaz(aşağı) fren(yukarı) yapmak istiyorum bir düğmeyede motorların dönnmesi için ayarlamak istiyorum ama nasıl yapacağımı bilmiyorum yardım edevseniz sevinirim

YORUM YAP