Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

Pc ile Kablosuz Haberleşme

Başlatan eistain_54, 15 Şubat 2011, 00:14:20

eistain_54

İyi çalışmalar.
    arkadaşlar pc ile pici haberleştirmek istiyorum.Kablosuz olarak.bunun için yazmam gereken kod nasıl olmalı?Aslında yapmaya çalıştığım şey şu:
pc den tıpkı gps de NMEA protokolüne benzer bir protokol ile alıcı devremdeki dc motoru ve servo motoru sürmem gerekiyor.Yani pc den gelen cümlecik içinde hız bilgisi,gidilmesi gereken mesafe,dönülmesi gereken derece,dur yada hareket et bilgisi.Bu cümleciğin yapısı istenirse onuda yazabilirim.Henüz geliştirme aşamasında.Hatta tavsiyelerinizide alabilirim.Bana en çok lazım olan nasıl bir devre kullanmalıyım ve hangi kodlardan faydalanmam gerekli.Alıcı kısmında hserin ile bu işi nasıl halledebilirim sizce?
Her gün 24 altın verilirken bunun için kime şükredersin ey ademoğlu!?!

ete

İşin detayı sana kalabilir. Burada önemli olan PC den bir bilginin yollanıp Pic kartın bu bilgiyi sıhhatli bir şekilde alması olacaktır. Bilgi 1 adet veya çok adet olabilir tercih yine sana kalıyor. İşi prensibini söyleyeyim;
1. PC tarafında bir arayüz programın olacak ve o program 8N1 formatında ve mümkünse 2400 Baud hız ile yollanacak bilgileri yollayacak. Ancak bilgilerin başına bir işaret bilgisi ekleyecek  "EINS" gib bir bilgi olabilir. 3 karekterden oluşması işe hız katacaktır.
2. Bu bilgilerden önce bir uyandırma sinyali yollanırsa dahada mükemmel olacaktır. Uyandırma sinyali formatı şöyle olmalı;
    5 byte $AA
    5 byte $FF
    5 byte $00
şeklinde olmalıdır.
3. PC tarafında yollanacak bilgiler öncelikle bir RS232 çevirici entegresinden geçirilerek yollanmalı ve böylece seviye problemi olmamalıdır.

4. Pic tarafına gelince , kesinlikle USART portu olan bir pic kullanılmalı. Böylece USART kesmesi kullanılarak gelen bilgiler sorunsuzca alınabilir.
5. USART ta bir bilgi düştüğünde kesme oluşur ve program kesme etiketine atlayarak gelen bilg paketininbaışnda işaretçi olup olmadığına bakar  var ise gerisinden gelen asıl bilg yada bilgileri alır yoksa biraz daha bekler ve kesmeden çıkar. Bekleme tatmin edici seviyede değil ise bir timeout etiketi ile süresi verilerek istenen bir süre programın orada beklemesi ve beklenen bilgi gelmemiş ise kesmeden çıkılması sağlanabilir.
6. Beklenen işaretçi ve ardından gelen bilgi alınarak kesmeden çıkılır ve alınan bilginin değerlendirmesi yapılarak kullanılır.

Hepsi bu kadar. İşi bilen birisi normal şartlarda bu açıklama ile işi çözmesi gerekir. Takıldığın yer olursa yeniden sorarsın.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

eistain_54

#2
Hocam şimdi ağır konuşmuşsunuz ama  :) her şeye rağmen sormam gerekiyor.Çünkü öğrenmek zor bi iş. ;) Şimdi veri alınırken işaret olarak AL1 gibi bişey olsun dedim.Yani gelen paket başlığı AL1 ise bu veriyi kullan.BUraya kadar tamam.Şimdi paket içinde 4 farklı veri olacak.Hareket yada dur bilgisi (1 yada 0),gideceği mesafeyi (metre cinsinden),o anki hızı (km cinsinden),döneceği açıyı (derece cinsinden*).

Şimdi anlamadığım nokta şu;bunların hepsini bir tek değişkene mi aktaracağız yoksa her birini ayrı ayrı mı değişkenlere atabileceğiz?Yani usart kesmesi oluşturduk tamam.Gelen veriyi kesme satırında bekleyeceğiz.Beklenen başlık gelirse gerisini de almaya devam edecek oda tamam.Gelen paketi nasıl ayıklıyacaz?Mesela bu paket içinde 4 veri var.Bunların her birisi için ben program başında bir değişken oluşturup bu verileri oraya kesme satırında eşitlemeliyim.Kesmeden çıktığında onları kullanmalı?Uzatıyorum ama doğru anlattımmı bilmiyorum.Birde derece cinsinden açı olayı var.Şimdi gelen açı değeri ondalıklı olursa bunu nasıl us cinsinden süreye çevirebiliriz?Gerçi servo başlığında açıklamıştınız ama orda da tam anlamamıştım.Gelen küsüratlı derece verisini nasıl değişken içinde saklayıp usye çevirecez?Eğer olmaz yada uğraşma derseniz direkt pc tarafında us olarak yollanmasıda olabilir mi?
Son olarak uyandırma sinyalinden bahsetmişsiniz.Tam olarak nedir uyandırma sinyali?Teşekkürler...
Her gün 24 altın verilirken bunun için kime şükredersin ey ademoğlu!?!

eistain_54

sanırım bi yardım eden olmayacak???
Her gün 24 altın verilirken bunun için kime şükredersin ey ademoğlu!?!

erkan614

bu konu birkaç kere daha açılmıştı. genel olarak rs232 den  hazır kablosuz modüller kullanma tarafında eğilim var onları bi araştır istersen

eistain_54

#5
DEFINE OSC 4
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 1
DEFINE LCD_RWREG PORTB
DEFINE LCD_RWBIT 2
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 3
DEFINE LCD_BIT 4
DEFINE LCD_LINES 2
DEFINE  HSER_RCSTA 90h   
DEFINE  HSER_TXSTA 24h    
DEFINE  HSER_BAUD  2400  
DEFINE  HSER_SPBRG 207  
DEFINE  HSER_CLROERR 1    
SYMBOL  GIE  =INTCON.7   
SYMBOL  PEIE =INTCON.6   
OPTION_REG.7=0
ADCON1=7
PEIE=1
KARAKTER VAR WORD
low portb.1
LCDOUT $FE,1
lcdout "muhammet"

BASLA:
HSERIN [KARAKTER]
LCDOUT $FE,$C0,"GELEN VERI:",#KARAKTER
GOTO BASLA
END


Abi kodu yazıyorum ama ekranda çıkan sadece 255 değeri oluyor.Normalde beklentim klavyeden girdiğim karakterlerin ekranda gözükmesi.Ama nerde hata yapıyorum bilmiyorum?Devre şeması aşağıda
Her gün 24 altın verilirken bunun için kime şükredersin ey ademoğlu!?!