Pic16F628A ve CCS-C ile RF alıcı verici uzaktan kumanda full dökümanlı...

Kardeşim hi-tech'de de bu işlem çok basit kullanacagın entegrenin datasheetinden usart modülünü araştır gerekli config dosyalarını olustur kendi fonksiyonunu olustur gönder al bu kadar basit . Hala bulamadıysanız paylaşabilirim bir tane yazıp led yak söndür gibi.
 
Bu konuda ciddimisin? kullanıdğın devreyi paylaşman mümkün müdür?
Olayı çok basite indirgemişsin. RF veri gönderimi bu kadar basit değil. Haa çalışır ama güvenilir olmaz. Orneğin etrafta bir cep telefonu çalsa iş bitmiştir..1. RS232 verisi direkt olarak gönderilmesi uygun düşmez Kodlanması lazım (Manchester Encoding veya benzeri)2. Veri birkac defa gönderilmeli ki tutarsızlık olmasın. CRC kodu da gönderilmeli mesela ki 1 bit bile hatalı gitse iş bitmiştir.3. Bayt senkronizasyonu sağlanmalı. Sadece 5 byte preamble göndermek yetmez. Bu dediklerim özellikle mesafeyi 100 kat arttırır. Tarafımca denendi. Zamanında senin yaptığın gibi yapıyordum ve mesafe 10metre civarında kalıyordu. Dediklerimi yaptıktan sonra abartısız 1km menzile veri gönderiyordum hemde ozel bir antenle filan değil.
 
Devre breadboard uzerine bir devreydi, abartacak birsey yoktu. Bir tarafta pic ve 418 mhz verici- diger tarafta pic 418mhz alici ve Lcd Ekran. Tumu 2 breadboard uzerinde. Alici vericiler de piyasadaki 15 20 tl lik saw moduller. Ve tel anten ile. Yalniz 1km icin gorus mesafesi vardi. Devrenin biri balkonda, alici ise 1km ileride ve elimde. Gonderilen mesajlar lcd ekranda hatasiz yaziyordu.
 
Sayın silvestir ben bu devreyi udeanın atx34-arx34 modülleriyle 100 metrede farklı frekansların olduğu bir yerde bi sıkıntı olmadan çalıştırdım.zaten şifreleme var o yüzden frekans karıştırma durumu söz konusu değil. Ayrıca bu olayı basite indirgemeye gerek yok modüllerle RF iletişim çok basit. 1km mesafeye ulaştım dediğiniz devreyi kodları ve modül isimleriyle birlikte paylaşabilirseniz bakalım 1km mesafe nasıl yakalanabilmiş görmüş oluruz hemde bu konuda katkınız olur.mesafe modülden modüle farklılık gösterir. sadece arx34 ve atx34 ile 1 km mesafeye ulaşmak mümkün değil.
 
Açık alanda 1 km. Manchester encoding kullanarak yapıldı. Kod hazırda yok, en az 7 yıl once ugraştım. 418 Mhz minik modüllerdi. O heryerde gördüklerimizden, özel birşey değil. O zamanlar şimdiki gibi bulamıyorduk amerikadan sipariş vermiştim. :) Genelde kod saklama huyum yoktur. İşim bitince genelde kenara atarım. Ama modüller hala duruyor. 418Mhz biraz farklı bir frekans, genelde 433 Mhz bulunuyor piyasada
 
Olayı çok basite indirgemişsin. RF veri gönderimi bu kadar basit değil. Haa çalışır ama güvenilir olmaz. Orneğin etrafta bir cep telefonu çalsa iş bitmiştir..

1. RS232 verisi direkt olarak gönderilmesi uygun düşmez Kodlanması lazım (Manchester Encoding veya benzeri)
2. Veri birkac defa gönderilmeli ki tutarsızlık olmasın. CRC kodu da gönderilmeli mesela ki 1 bit bile hatalı gitse iş bitmiştir.
3. Bayt senkronizasyonu sağlanmalı. Sadece 5 byte preamble göndermek yetmez.

Bu dediklerim özellikle mesafeyi 100 kat arttırır. Tarafımca denendi. Zamanında senin yaptığın gibi yapıyordum ve mesafe 10metre civarında kalıyordu. Dediklerimi yaptıktan sonra abartısız 1km menzile veri gönderiyordum hemde ozel bir antenle filan değil.

Hocam ben de eskiden öyle yapıyordum.. Çok dandikti.. max232 üzerinden PC seri portu algılıyor fakat pic algılamıyordu.. Daha sonra yine donanımsal seri portun veri paketini machester a uydurdum.. Her baytta manchester şeklinde 4 bit gönderiyordum.. Ama menzili konusunda bir fikrim yok açıkçası.. :) Biraz zamanım olursa yeni hedefim hamming ile manchester ı birleştirip yazılımsal seri port ile rf iletişimi yapmak.. Henüz veri alım mantığını kurgulayamadım ama menzilin uzayacağından ümitliyim.. :)

Geçen gün RF le ilgili olarak biri fikrimizi sormuştu.. PIC in donanımsal seri portunu kullanmış.. Veri bazen geliyor, ardından 10-20 dk veri gelmiyor diyordu.. Tahmin ettiğim kadarıyla donanımsal seri port kullanıldığında verinin start biti bir parazitle karıştırılıyor.. Yanlış veri, yanlış adres gidiyor ve crc ya da chcksum olsa dahi sistem kaymış veriyi kabul etmiyor.. Ben de bu tip sorunla karşılaşmamak için tasarladığım sistemde start biti yerine start baytı gibi bir uygulama yapmayı düşünüyorum..
 
Bayt senkronizasyonu ile ilgili geliştirilmiş bir yöntem var. Bunu kullanmıştım. Tavsiye ederim.

Preamble of "N" bytes of 0x55 (at this point the receiver is in any of the 5 cases)
B'01000100'(the receiver is in case A, B or D because we mapped C to B and E to D)
B'00010001' (the receiver is in case A or C because we mapped B to A and D to C)
B'01000101' (the receiver is in case A or B because we mapped C to B)
B'00010101' (the receiver is in case A because we mapped B to A)


The receiving UART will nicely sync on this, but of course it could be misaligned byte wise. There are 5 possible conditions:
  • Case A: The receive UART is properly aligned.
  • Case B: The receive UART is shifted 2 bit times (bit 6 is being treated as the stop bit, bit 7 as the start bit)
  • Case C: The receive UART is shifted 4 bit times (bit 4 is being treated as the stop bit, bit 5 as the start bit)
  • Case D: The receive UART is shifted 6 bit times (bit 2 is being treated as the stop bit, bit 3 as the start bit)
  • Case E: The receive UART is shifted 8 bit times (bit 0 is being treated as the stop bit, bit 1 as the start bit)



n tane 0x55 ten sonra bu baytları göndereceksin. ALıcı tarafında da framing error ları yakalatacaksın. Bunları gönderdikten sonra mükemmel senkron sağlanmış olur.
 
Son düzenleme:

Forum istatistikleri

Konular
129,842
Mesajlar
930,706
Kullanıcılar
452,689
Son üye
MertCanxx

Yeni konular

Geri
Üst