Jump to content

senoleker

Yeni Üye
  • İçerik sayısı

    8
  • Katılım

  • Son ziyaret

Topluluk Puanı

0 Neutral

Güncel Profil Ziyaretleri

Güncel ziyaretçiler bloku aktif değil. Diğer kullanıcılar son ziyaretçilerinizi aktif edene kadar göremezler.

  1. senoleker

    Çizgi izleyen robot

    "İlk proje" ne olmalı? Tabii ki çizgi izleyen robot. Belki yanıp sönen led de yapabilirdik ilk proje olarak ama, onları proje bölümünde değil de, kendi alt bölümlerinde yapmayı daha uygun gördük. Donanım olarak Arduino UNO'nun daha ucuz olan CH340 arabirimli modelini tercih ettik. Tabii siz elinizde olan bir Arduino kullanabilirsiniz. Çünkü bu proje için çok miktarda I/O ve bellek gerekmiyor. Ayrıca iki tane tekerlekli ve redüktörlü DC motor, motorları sürmek için L298N motor sürücü ile devrenin "gözü" olarak da TCRT5000 üçlü sensor kullandık. Önce piyasada bulunan yazılımlara baktık ve doğrusu bu yazılımı kullanmak içimize sinmedi. Çünkü üç gözlü sensorda, sensorun özelliğini kullanabilmek için kalınlığı iki göz arasındaki mesafeden daha fazla olan bir bant kullanmak gerekli. Aksi halde robotumuzu bant görmediğinde de hareket edecek şekilde programlamak zorunda kalırız ve bu da çok dengesiz sonuçlara yol açar. Yazdığımız bu program aslında gerçek bir "çizgi izleyen robot" için halen uygun değil. Çünkü dört başı mamur bir şey yazdık diyebilmek için, robot çizgiden çıktığında hangi açı ile çıktığını hesabedip ona göre bir rota düzeltme yapmalı. Biz ise diğer public yazılımlardaki gibi sadece gözlerin durumunu motorlara aktaracak bir kod tasarladık. Motorlarımızı LN298'e bağlarken ikisini de aynı yönde bağlamalıyız. Eğer motorları ters bağladıysak tekerler geri doğru dönecektir. Bu durumda ya motorların bağlantılarını değiştirmelisiniz ya da koddaki digitalWrite(L298N_RightB,LOW); digitalWrite(L298N_LeftB,LOW); digitalWrite(L298N_RightA,HIGH); digitalWrite(L298N_LeftA,HIGH); kısmını digitalWrite(L298N_RightB,HIGH); digitalWrite(L298N_LeftB,HIGH); digitalWrite(L298N_RightA,LOW); digitalWrite(L298N_LeftA,LOW); olarak değiştirmelisiniz. Böylece motorlara uygulanacak gerilimin yönünü değiştirmiş olursunuz, kablo söküp takmaya gerek kalmaz. TCRT5000 sensoru, beyaz yüzey için 0, siyah yüzey için 1 değerini verir. Eğer pistimizi siyah (koyu renkli) yaptıysak ve çizgimizi beyaz (açık renk) yaptıysak, okuyacağımız değerler ters gelecektir. Bu yüzden sensor okuma kısmını //TCRT5000 okuma int d1 = 1-digitalRead(TCRT_Left); int d2 = 1-digitalRead(TCRT_center); int d3 = 1-digitalRead(TCRT_right); olarak yazmalıyız. Ama pistimiz açık renk ve çizgimiz koyu renkli ise, o zaman sensor okuma kısmındaki "1-" leri kaldıracağız: //TCRT5000 okuma int d1 = digitalRead(TCRT_Left); int d2 = digitalRead(TCRT_center); int d3 = digitalRead(TCRT_right); Böylece koda fazlaca dokunmadan pist seçimimizi yapmak imkanımız olacak. Sensorlardan hem orta hem de yanlardan biri çizgiyi görüyorsa, robotumuz çizgiden çıkmak üzere sayılır, bu sırada daha düzgün bir hareker için, eğer iki göz birden çizgiyi görüyorsa kenardaki gözün çizgiyi görmediğini varsayacağız. Bunun için koda: //Sensorların iki tanesi birden çizgiyi görüyorsa if ((d1+d2)==2) d1=0; if ((d2+d3)==2) d3=0; ekledik. Bundan sonrası motorlar dönecek mi, dönecekse ikisi de mi dönecek, birisi dönecekse hangisi dönecek buna karar vermekten ibaret. Öncelikle motorların dönmesi için tek bir gözün (yukarıda orta ve bir kenar görürse bire indirgemiştik) çizgi görmesi gerek. Böyle değilse, yani üç göz ya da iki kenar çizgi görüyorsa, ya da hiç biri çizgi görmüyorsa motoru çevirmiyoruz. Bunu da bir if komutu ile sağlıyoruz: if ((d1+d2+d3)==1) Burada d1,d2 ve d3 gözler. Bunların toplamı 1 olmalı. Yani sadece bir göz çizgiyi görüyor olmalı. Aksi halde hiç bir motoru çevirmiyoruz. Böylece kenara koyduğumuzda robot saçma sapan hareket etmeyecek, hareketsiz duracaktır. Eğer bu şart sağlanıyorsa, iki motor birden ya da motorların biri dönmelidir. Bunu da basit bir toplama işlemi ile gerçekleştiriyoruz: analogWrite(L298N_RightS,(d1+d2)*hiz); analogWrite(L298N_LeftS,(d2+d3)*hiz); Programın başında "hiz" değerimizi tanımlamıştık. Örneğin 100-150 gibi bir hız değeri verebilirsiniz. Burada d2 değeri 1 ise her iki teker, d1 veya d3 değeri 1 ise, ilgili teker dönecek, böylece robotumuz çizgiyi izlemiş olacaktır. Bağlantılar: TCRT'nin sol ucunu Arduino'nun 10 numaralı ucuna, orta ucunu 11 numaraya, sağ ucunu ise 12 numaraya bağlıyoruz. Motor sürücünün ENA ve ENB pinlerindeki jumper cap'leri çıkartıyoruz. Sonra sırasıyla ENA-IN1-IN2-IN3-IN4-ENAB uçlarını Arduino'nun sırasıyla , 9-7-6-5-4-3 uçlarına bağlıyoruz. Besleme uçlarını ise besleme planınınıza göre yapabilirsiniz. Robotun deneme videosunu aşağıdaki linkten izleyebilirsiniz. https://youtu.be/2WsJSOnJRbw Arduino kodlarını da aşağıdaki linkten indirebilirsiniz. CizgiRobot.ino
  2. senoleker

    tof sensörü ile mesafe ölçümü

    Aktif derken, çalışıp çalışmadığını anlamayı mı kastediyorsunuz? Eğer öyle ise, mikrokontrolcünün i2c portuna bağlayıp cevap verip vermediğini, veriyorsa cevapların anlamlı olup olmadığını kontrol etmelisiniz. Eğer çalışmıyorsa büyük ihtimalle i2c haberleşmesi kilitlenecektir. Devrenizi kurdunuz mu? Mikrokontrolcüye bir yazılım koydunuz mu? Daha önce i2c protokolünü kullandınız mı?
  3. senoleker

    tof sensörü ile mesafe ölçümü

    Hangi microcontroller ve hangi TOF sensoru kullanıyorsunuz? Bu tür sensorlar genellikle I2C ile çalışır. I2C ile daha önce çalıştınız mı? Kullandığınız sensorun datasheet'i elinizde var değil mi? En işe yarar kaynak genelleikle datasheetlerdir.
  4. senoleker

    iki msp430 arasında bluetooth veri akışı

    Doğrusunu isterseniz devrenizin nasıl bir şey olduğunu kafamda canlandıramadım. Sizdeki HC05 modülü ile de çalıştığıma emin değilim. Ama geçmiş HC05 ve HC06 tecrübelerime dayanarak şunları söyleyebilirim: Bir kere HC05'e teraterm'i Bluetooth üzerinden bağlamıyorsunuz umarım. AT komutları için, HC05'in Bluetooth tarafının bağlı olMaması gerek. AT komutunu verdiğinizde OK gelmesi için AT'den sonra <cr><lf> (enter) göndermelisiniz ve bunlar arasında zaman geçmemeli. Yani klavyeden yazarak yaparsanız modüllerin çoğunda cevap alamazsınız. Sizdeki modül de muhtemelen böyledir. Teraterm'i kullanmadığım için nasıl yapıldığını bilmiyorum ama, bir yerlerinde makro tanımlama olmalı. Bu tür işlerde kendim bir program yazmadıysam şu çok basit programı kullanıyorum: https://hw-server.com/terminal-terminal-emulation-program-rs-232 Burada AT#013#010 olarak (AT<cr><lf>) diye bir makro tanımlayıp onu göndermeyi deneyin isterseniz.
  5. senoleker

    ESP8266 ile buluta veri gönderme

    Belki de seri kütüphanesi kullanmadan yapabilirsiniz. Doğrusunu isterseniz ben msp serisi ile hiç çalışmadım. Ama sonuçta yapılması gereken şeyler belli. Bir kere UART için kesme (interrupt) kullanmanız gerekmez burada. Daha karmaşık uygulamalarda bu fayda sağlasa da görünüşe göre sizin projenizde işleri karıştırmak dışında işe yaramayacak. İlk yapılması gereken, TX pinini çıkış, RX pinini giriş olarak set etmek. Sonra baudrate üreticinin kaydedicilerini ayarlamak. 9600 bps kullanacağınıza göre, bunun için gerekli değerleri hesaplayıp ilgili kaydedicilere koymak gerek. Bundan sonra da göndereceğiniz verileri byte byte UART kaydedicisine koyacaksınız. Her bir byte gönderildikten sonra, bir sonraki byte'ı register'a koyacaksınız. Bunlar, genel hatları ile yapmanız gerekenler ama mikrokontrolcü özelinde bunların ayrıntılarına hakim değilim. http://www.mcu-turkey.com/msp430-launchpad-msp430g2553-donanimsal-uart-kullanimi/ sayfasında UART'ın set edilmesi ayrıntılı olarak anlatılmış gibi görünüyor. İsterseniz burayı bir inceleyin, takıldığınız nokta olursa devam ederiz.
  6. senoleker

    iki msp430 arasında bluetooth veri akışı

    Neyin AT modunu kastediyorsunuz? HC05'in AT modunu mu? HC05'i bilgisayara nasıl bağladınız? TTL ile mi?
  7. senoleker

    ESP8266 ile buluta veri gönderme

    Kullandığınız programlama dilinde serial kütüphanesi var mı? Yoksa tamamen sizin kontrol etmeniz mi gerekiyor? Siz kontrol edecekseniz, UART protokolü nasıl çalışır bilginiz var mı? Örneğin baudrate üretici için ayarları yapmakla ve pinleri seçmekle başlayacaksınız. Hangi hızda iletişim kuracaksınız?
  8. senoleker

    iki msp430 arasında bluetooth veri akışı

    MSP'de yazdığınız ve çalışmayan kodu buraya atar mısınız? Çalışmadı derken ne oldu?
×

Önemli Bilgilendirme

Facebook / Twitter / Google hesabınızla kolayca kaydolup cevap verebilir, soru sorabilir, istekte bulunabilirsiniz.
Devam etmeniz, forum kurallarını kabul ettiğiniz anlamına gelir.            Forum Kuralları