Arduino - USB Kablo İle Veri İletimi

Başlatan uçbirim2002, 12 Mart 2017 - 09:43:23

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

uçbirim2002

Elimdeki USB kablonun data uçlarını (Yeşil ve Beyaz diye billiyorum) Arduino Uno üzerinde ki 8, ve 7. pinlere bağlıyorum.

Şimdi bu durumda benim bilgisayara bu USB kablosunu tanıtmam, veya Arduino'dan veri gödermem yada almam için ne yapmam lazım? Bildiğim kadarı ile bu iş için sürücü yazmam lazım. Peki nereden başlayabilirim? Yani /dev dizininde benim USB kablom bir cihaz olarak görünsün ve örnek olarak:

echo "Merhaba" >> /dev/cihazim

şeklinde bir komutla USB kablodan veri iletiyim, ve Arduino bu veriyi alsın.
Hello!

Amenofis

Atmega çipinde usb modülü olmadığı için direkt usb üzerinden veri alamaz.  Bunun için usb->uart dönüştürücü kullanmalısın. Bunlar ucuzdur, 10 liraya bulursun. Arduino tarafında da tx-rx pinlerine bağlayıp rahatça haberleştirebilirsin. Sürücüye falan gerek yok.


Amenofis

#3
Bir dakika buna gerek olmaması lazım çünkü zaten arduino üzerinde usb->uart dönüştürücü var ve bootloader bu yöntemle çalışıyor.

https://cdn.shopify.com/s/files/1/0775/1525/products/A000066_featured_1024x1024.jpg

Kristalin üstündeki küçük çip dönüştürücü ve tx-rx pinleri mcu ya bağlı. Yani program yüklediğin usb kablosu ile haberleştirebilmen lazım. Arduinoyu bağladığın zaman /dev/ttyUSB0 dosyası oluşuyorsa tamamdır.

Qt kullanıyorsan QSerialPort var seri haberleşme için.
http://doc.qt.io/qt-5/qserialport.html

uçbirim2002

Evet Arduino ile seri port vasıtasıyla haberleşme sağlanıyor. Ben örnekleme yapmak için ayrıca bir USB üzerinden haberleşmeyi düşündüm.
Hello!

guestwho

Alıntı Yap..Ayrıca böyle bir parçayla bahsettiğim gibi yani:

echo "Merhaba" >> /dev/cihaz

şeklinde veri aktarımı mümkün olurmu?

Seri port üzerinden veri aktarma işlemini şu şekilde yapabilirsin:


// yapılandırma fonksiyonu
void setup() {
  Serial.begin(9600);      // seri portu 9600 bps 'a ayarla: 
}

// veri aktarma fonksiyonu
void send() { 
  Serial.print("ABC");       // standart print fonksiyonu kullanımı.
  Serial.print("\n");           // satır sonu.
  delay(200);                   // 200 milisaniye beklet...
}

You want weapons? We're in a library. Books are the best weapon in the world. This room's the greatest arsenal we could have. Arm yourself!

uçbirim2002

Aslında demek istediğim, usb cihazların kendilerini işletim sistemine tanıtmak için kullandığı komutları Arduino ile nasıl göderebilirim?

Örnek olarak: Elimde bir dişi usb girişi var. Bu usb girşindeki beyaz ve yeşil kabloları Arduino'nun 2 ve 4. girişlerine bağladım. USB cihaza giden enerji kablolarınıda yine Arduino'nun 5V ve GND pinlerine bağladım.

2. ve 4. pinlerden gelen veriyi Serial.print() ile yazdırınca karşıma şöyle bir şey çıkıyor:

..........01010101101001010101010101010.........

İşte benim asıl merak USB cihazının gönderdiği bu ikili veri tam olarak nedir? Karşıdan (PC) gelen veriyi nasıl işliyor?


Sanırım sorumu bu şekilde sormalıydım....
Hello!

Amenofis

Daha önce söylediğim gibi, yapamazsın. Direkt usb'den gelen verileri arduinonun okuması mümkün değil. Board üzerindeki usb-serial dönüştürücü bu yüzden var. Ayrıca usb çok karmaşık bir protokoldür. Öyle veri gönder deyince gönderilmiyor.