Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => Microchip PIC => Konuyu başlatan: ironeyes - 27 Temmuz 2023, 19:21:38

Başlık: Pic Rf haberleşme problemi
Gönderen: ironeyes - 27 Temmuz 2023, 19:21:38
Merhaba 2 picin birbiri ile haberleşmesini sağlamaya çalışıyorum. Haberleşiyorlar ancak kullandığım rf modülünden mi bilinez menzili aşırı kısa 3-5 metre arası.Ne kadar anteni büyütsemde fayda etmiyor. Kullandığım modül aşağıda. Verici kısmı için 7-8v civarı gerilim ile besliyorum. Vericinin 20-100m arası menzili olduğu yazıyor ancak bunun 10da 1ini bile alamıyorum. Ne tavsiye edersiniz.
(https://www.rhino3dprinter.com/Images/Urun/06052019123528.jpeg)
Başlık: Ynt: Pic Rf haberleşme problemi
Gönderen: kudretuzuner - 27 Temmuz 2023, 19:51:09
Merhaba,
PIC to PIC haberleşmede, simulasyonda çalıştırabildiniz mi? tx-rx ve rx-tx bağlantıları ile sağlıklı çalışabiliyor mu? Şema ve yazılım verirseniz daha kolay yardım alırsınız düşüncesindeyim.
Başlık: Ynt: Pic Rf haberleşme problemi
Gönderen: sifirzero - 27 Temmuz 2023, 19:56:05
Manyetik alan var ise dalganma ve sinyalde bozulma olur.
Başlık: Ynt: Pic Rf haberleşme problemi
Gönderen: ete - 27 Temmuz 2023, 20:03:43
Hem alıcıya hemde vericiye 17,1cm lik kablo yani anten bağlaman gerek. Ne daha uzun nede daha kısa. Anten boyu frekansa göre hesaplanır ve sonuç kaç cm çıkmış ise o kadarlık anten takılır. Daha uzun daha güç üretmiyor maalesef.
Aslında resme bakınca satın alınabilecek en uyduruk RF çifti bunlar diyebilirim. İşin program tarafınada bakmak gerekirdi. RF sistemleri önden bir uyandırma sinyali ister. Bu sinyali vermez isen sinyal başını genelde kaçırırsın ve bu nedenle sıhhatli bir haberleşme gerçekleşmez. Yada arada bir sinyal yakalar sistemin ve haberleşebildiği kadar haberleşir ki sende de böyle oluyor herhalde.

Ete
Başlık: Ynt: Pic Rf haberleşme problemi
Gönderen: ironeyes - 27 Temmuz 2023, 20:41:26
Alıntı yapılan: ete - 27 Temmuz 2023, 20:03:43Hem alıcıya hemde vericiye 17,1cm lik kablo yani anten bağlaman gerek. Ne daha uzun nede daha kısa. Anten boyu frekansa göre hesaplanır ve sonuç kaç cm çıkmış ise o kadarlık anten takılır. Daha uzun daha güç üretmiyor maalesef.
Aslında resme bakınca satın alınabilecek en uyduruk RF çifti bunlar diyebilirim. İşin program tarafınada bakmak gerekirdi. RF sistemleri önden bir uyandırma sinyali ister. Bu sinyali vermez isen sinyal başını genelde kaçırırsın ve bu nedenle sıhhatli bir haberleşme gerçekleşmez. Yada arada bir sinyal yakalar sistemin ve haberleşebildiği kadar haberleşir ki sende de böyle oluyor herhalde.

Ete

Anteni tam olarak o değerde de denenim ancak sonuç alamadım. Kullandığım kodu aşağıda paylaşıyorum tavsiyelerinize açığım.

Verici
#include <12f675.h>  // verici
#fuses NOWDT,HS,NOMCLR,PROTECT
#use delay(clock=4m)
#use rs232(baud = 250,xmit = pin_a2,PARITY = n,bits =8,stop =1)
#use fast_io(a)

#define GP0 PIN_a0
#define GP1 PIN_a1
#define GP2 PIN_a2
#define GP3 PIN_a3
#define GP4 PIN_a4
#define GP5 PIN_a5
#byte OSCCAL = 0x90

int buton1 = 1;
int buton2 = 1;

void main(void)
{
set_tris_a(0b001000);
output_low(0x00);
basla:
delay_ms(50);


output_high(pin_a1);
putc('a');
delay_ms(1);
putc('a');
buton1 = 0;
delay_ms(1);
putc('a');
putc('a');
delay_ms(1);
putc('a');
buton1 = 0;
delay_ms(1);
putc('a');
putc('a');
delay_ms(1);
putc('a');
buton1 = 0;
delay_ms(1);
putc('a');
putc('a');
delay_ms(1);
putc('a');
buton1 = 0;
delay_ms(1);
putc('a');
putc('a');
delay_ms(1);
putc('a');
buton1 = 0;
delay_ms(1);
putc('a');
putc('a');
delay_ms(1);
putc('a');
buton1 = 0;
delay_ms(1);
putc('a');
buton1 = 0;
delay_ms(1);
putc('a');
delay_ms(1);
putc('a');
buton1 = 0;
delay_ms(1);
putc('a');
putc('a');
delay_ms(1);
putc('a');
buton1 = 0;
delay_ms(1);
putc('a');
putc('a');
delay_ms(1);
putc('a');
buton1 = 0;
delay_ms(1);
putc('a');
putc('a');
delay_ms(1);
putc('a');
buton1 = 0;
delay_ms(1);
putc('a');
putc('a');
delay_ms(1);
putc('a');
buton1 = 0;
delay_ms(1);
putc('a');
putc('a');
delay_ms(1);
putc('a');
buton1 = 0;
delay_ms(1);
putc('a');
buton1 = 0;
delay_ms(1);
putc('a');
delay_ms(1);
putc('a');
buton1 = 0;
delay_ms(10);
putc('a');
putc('a');
delay_ms(20);
putc('a');
buton1 = 0;
delay_ms(10);
putc('a');
putc('a');
delay_ms(10);
putc('a');
buton1 = 0;
delay_ms(10);
putc('a');
putc('a');
delay_ms(10);
putc('a');
buton1 = 0;
delay_ms(10);
putc('a');
putc('a');
delay_ms(20);
putc('a');
buton1 = 0;
delay_ms(10);
putc('a');
putc('a');
delay_ms(10);
putc('a');
buton1 = 0;
delay_ms(10);



while(true)

{


}
}



Alıcı
#include <12f675.h>  // alıcı 
#fuses HS,NOMCLR,PROTECT,NOWDT
#use delay(clock=4m)
#use rs232(baud = 250,rcv = pin_a3,PARITY = n,bits =8,stop =1)



#define GP0 PIN_a0
#define GP1 PIN_a1
#define GP2 PIN_a2
#define GP3 PIN_a3
#define GP4 PIN_a4
#define GP5 PIN_a5
#byte OSCCAL = 0x90

char harf;
void main(void)
{
set_tris_a(0x00);
output_low(0x00);
output_low(pin_a0);
basla:
while(1)
if(getch())
{
harf = getch();
delay_ms(20);
if(harf == 'a')
{
output_High(pin_a2);
output_High(pin_a1);
delay_ms(40000);
output_low(pin_a2);
output_low(pin_a1);

}

goto basla;
}
}

Başlık: Ynt: Pic Rf haberleşme problemi
Gönderen: elektronikhobi - 27 Temmuz 2023, 21:10:12
Arkadaş, anten konusunu izah etmiş.

Destekliyorsa verici gerilimini 12 volta çıkarmak düşünülebilir.

Bu işler Arduino ile daha kolay (https://www.picproje.org/index.php/topic,82841.msg636137.html) oluyor.

Daha dün bu konuda birisi yorum yazmış (https://arduino.stackexchange.com/a/93948/53266).
Başlık: Ynt: Pic Rf haberleşme problemi
Gönderen: ilyas KAYA - 27 Temmuz 2023, 23:47:22
Bu moduller çok kötü. Bi ara 100 civarı aldım hepsinde frekans kayması var ve ne yaparsam yapayım mesafe uzamadi. Alici modülü değiştirip deneyin.
Başlık: Ynt: Pic Rf haberleşme problemi
Gönderen: mehmet - 27 Temmuz 2023, 23:51:53
Alıcı ve verici aynı frekansta mı?
433, 330 veya 315MHz olabilir. Ancak
Hem alıcı, hem verici aynı frekansta
olmalıdır.
Başlık: Ynt: Pic Rf haberleşme problemi
Gönderen: mustafa_cmbz - 28 Temmuz 2023, 00:30:15
Senkrom tutturamıyorsun gibi geldi.

Kodunu pek incelemesi ama delaylar ile birşeyler yapılmış sanırım. Çok sağlıklı olacağını sanmıyorum bu şekilde.

Hazır serial kütüphanesi yokmu kullandığın dilin.

Başlık: Ynt: Pic Rf haberleşme problemi
Gönderen: ironeyes - 28 Temmuz 2023, 10:52:43
Hocam arduinoya hakım değilim devem pic ile kurulu. Devre kartları vs hazır vaziyette. Benim bir şekilde menzili arttırmanın bir yolunu bulmam gerekiyor. 17.2 cmlik anteni denedim ancak sonuç alamadım. Modül üzerinde oynama yaparsak çözüm olur mu acaba. Tavsiyelere açığım.
Başlık: Ynt: Pic Rf haberleşme problemi
Gönderen: mg1980 - 28 Temmuz 2023, 12:02:28
Hocam, mobilden hızlı inceleme yaparken bu  "Moderatöre rapor et" yazısı sıkça çıkıyor, yanlışlıkla ikinci kez basmışsak kusura bakmayın..
Başlık: Ynt: Pic Rf haberleşme problemi
Gönderen: elektronikhobi - 28 Temmuz 2023, 15:56:57
Alıntı yapılan: ironeyes - 28 Temmuz 2023, 10:52:43Benim bir şekilde menzili arttırmanın bir yolunu bulmam gerekiyor.

Eğer destekliyorsa vericinin besleme gerilimini arttırmak düşünülebilir.

Normal beklemede mikro denetleyici, gelen isteklere zamanında yanıt veremiyor.

Arduino örneğinde ise (https://www.picproje.org/index.php/topic,82841.msg636137.html) duruma göre bekleme yapılıyor.

Örnek olarak 500 ms aralıklarla ışığı yak söndür dedik. 150 ms sonra radyo paketi geldi.

Normal beklemede muhtemelen bu komut kaçırılacaktır.

Duruma göre beklemede ise 500 ms beklemeye başlıyor. Ancak, 10 ms aralıklarla radyo iletişiminin olup olmadığını kontrol ediyor.

Diyelim ki radyo iletişimi var. Döngüyü kırıyor ve gelen komutları işlemeye yöneliyor.

Burada bir tane PIC örneği (https://www.instructables.com/RF-Transmitter-and-Receiver/) varmış.

Başlık: Ynt: Pic Rf haberleşme problemi
Gönderen: mustafa_cmbz - 28 Temmuz 2023, 17:57:09
Alıntı yapılan: ironeyes - 28 Temmuz 2023, 10:52:43Hocam arduinoya hakım değilim devem pic ile kurulu. Devre kartları vs hazır vaziyette. Benim bir şekilde menzili arttırmanın bir yolunu bulmam gerekiyor. 17.2 cmlik anteni denedim ancak sonuç alamadım. Modül üzerinde oynama yaparsak çözüm olur mu acaba. Tavsiyelere açığım.

Hocam senin sıkıntın kod kısmında emin olmak istiyorsan serial çalışan pll kristalli bir alıcı verici takımı al dene ama sonuç yine aynı olacaktır diye düşünüyorum.

Dediğim gibi kodunu oturup dört dörtlük incelemedim ama delaylar beklemeleri kullanılarak çalışan bir koda benziyor buda delaylar ile hassas bir zamanlama yapılamadığı için epey bir veri kaybı oluşuyor sanırım.
Başlık: Ynt: Pic Rf haberleşme problemi
Gönderen: ilyas KAYA - 28 Temmuz 2023, 18:24:37
Kısa mesafede kod sorunsuz çalışıyor mu ?
Başlık: Ynt: Pic Rf haberleşme problemi
Gönderen: ironeyes - 29 Temmuz 2023, 10:59:28
Alıntı yapılan: ilyas KAYA - 28 Temmuz 2023, 18:24:37Kısa mesafede kod sorunsuz çalışıyor mu ?

Evet çalışıyor sıkıntısız.

Alıntı yapılan: mustafa_cmbz - 28 Temmuz 2023, 17:57:09Hocam senin sıkıntın kod kısmında emin olmak istiyorsan serial çalışan pll kristalli bir alıcı verici takımı al dene ama sonuç yine aynı olacaktır diye düşünüyorum.

Dediğim gibi kodunu oturup dört dörtlük incelemedim ama delaylar beklemeleri kullanılarak çalışan bir koda benziyor buda delaylar ile hassas bir zamanlama yapılamadığı için epey bir veri kaybı oluşuyor sanırım.

Aslında o tarz bir verici takımı ile denemedim ancak elimde bir kaç tane bu modüllerden var ve incelerken bişey fark ettim modüllerin hepsinin devre yapısı ayını değil ve o 'değişik' devre yapılı modüllerin birini denemek için değiştirdim ve menzili 4-5 metre fazladan arttı. Ancak hala datashette yazan değerlerin yakınında bile değilim.
Başlık: Ynt: Pic Rf haberleşme problemi
Gönderen: ilyas KAYA - 30 Temmuz 2023, 07:10:26
Alıntı yapılan: ironeyes - 29 Temmuz 2023, 10:59:28Evet çalışıyor sıkıntısız.

Aslında o tarz bir verici takımı ile denemedim ancak elimde bir kaç tane bu modüllerden var ve incelerken bişey fark ettim modüllerin hepsinin devre yapısı ayını değil ve o 'değişik' devre yapılı modüllerin birini denemek için değiştirdim ve menzili 4-5 metre fazladan arttı. Ancak hala datashette yazan değerlerin yakınında bile değilim.

Yine benzer bir modül ise bu modüller sorunlu. Trimmer ile ayarlayarak bir miktar daha artar ama daha fazla değil.

https://www.direnc.net/433mhz-rf-trimerli-alici-rws-371

Bu modülü alıp deneyin ancak veri aktarma protokolünde rf sinyalleri daha iyi taşıyabilmek için bazı standartlar var. Fakat bu dediğim 4 5 mt değil 50mt ve sonrası için geçerli.


Başlık: Ynt: Pic Rf haberleşme problemi
Gönderen: fay_elektronik - 30 Temmuz 2023, 20:12:59
Ete hocam uyarmış uyarma sinyali vermek gerekiyor bence mesafe uzadıkça devredeki beklemelerden dolayı kaçırmalar oluyor olabilir bende bazı devrelerim de kullanıyorum ucuz ve kullanışlı mesafe datasheette yazdıgı kadar uzun değil ama ne kadar para o kadar verim
  ayrıca c syntax hataları cok fazla yazılım diline cok hakim değilsiniz veya başka bir dilden c ye geçmiş gibisiniz ben olsam verileri getchar ile almam interrupt oluşturur alırım yazılımdaki beklemelerin veri kaybına neden olacağı için interrupt iyi bir çözüm olacaktır
  Fark ettiğim buton1 ve buton2 diye değişken kullanmışınız bunlar fiziki bir butonsa değişken olarak tanımlamışsınız eger fiziki bir bir buton tanımlayacaksanız define komutu kullanarak buton pinine isim verebilirsiniz
Başlık: Ynt: Pic Rf haberleşme problemi
Gönderen: ironeyes - 31 Temmuz 2023, 20:58:29
Alıntı yapılan: fay_elektronik - 30 Temmuz 2023, 20:12:59Ete hocam uyarmış uyarma sinyali vermek gerekiyor bence mesafe uzadıkça devredeki beklemelerden dolayı kaçırmalar oluyor olabilir bende bazı devrelerim de kullanıyorum ucuz ve kullanışlı mesafe datasheette yazdıgı kadar uzun değil ama ne kadar para o kadar verim
  ayrıca c syntax hataları cok fazla yazılım diline cok hakim değilsiniz veya başka bir dilden c ye geçmiş gibisiniz ben olsam verileri getchar ile almam interrupt oluşturur alırım yazılımdaki beklemelerin veri kaybına neden olacağı için interrupt iyi bir çözüm olacaktır
  Fark ettiğim buton1 ve buton2 diye değişken kullanmışınız bunlar fiziki bir butonsa değişken olarak tanımlamışsınız eger fiziki bir bir buton tanımlayacaksanız define komutu kullanarak buton pinine isim verebilirsiniz


Evet çok hakim değilim maalesef modülleri değiştirdim mesafe sorunum ortadan kalktı ancak bu seferde kararsız çalışmaya başladı butondan komut vermesem bile tetikleniyor.Forumda preamble ve manchester coding ile alakalı yorumlar gördüm sanırım sorunun çözümü bunlarda ancak bunları koda nasıl uyarlayacağımı çözemedim.
Başlık: Ynt: Pic Rf haberleşme problemi
Gönderen: ilyas KAYA - 01 Ağustos 2023, 01:50:11
Alıntı yapılan: ironeyes - 31 Temmuz 2023, 20:58:29Evet çok hakim değilim maalesef modülleri değiştirdim mesafe sorunum ortadan kalktı ancak bu seferde kararsız çalışmaya başladı butondan komut vermesem bile tetikleniyor.Forumda preamble ve manchester coding ile alakalı yorumlar gördüm sanırım sorunun çözümü bunlarda ancak bunları koda nasıl uyarlayacağımı çözemedim.

Kontrol byte lafını arttırın civardaki parazit sinyaller den illaki A harfine denk gelen bir sinyal gelir.
En az 4 byte yani , abcd yada isminizi alın sonra asıl veriyi alın.

Başlık: Ynt: Pic Rf haberleşme problemi
Gönderen: ironeyes - 01 Ağustos 2023, 13:42:20
Alıntı yapılan: ilyas KAYA - 01 Ağustos 2023, 01:50:11Kontrol byte lafını arttırın civardaki parazit sinyaller den illaki A harfine denk gelen bir sinyal gelir.
En az 4 byte yani , abcd yada isminizi alın sonra asıl veriyi alın.



bunu kod ile nasıl yapabilirim önce kontrol byte gelsin eğer gelirse a  harfini işleme al tarzı bişey mi olacak.
Başlık: Ynt: Pic Rf haberleşme problemi
Gönderen: ete - 01 Ağustos 2023, 14:52:28
Her şeyden önce alıcıdaki gecikmelerden kurtulmanız lazım. İllaki gerekli ise timer ile gecikme yaratıp gecikme yürütülürken de vericiden bir şey gelip gelmediği sorgulanmalıdır.
Veri yollayan tarafta her yollama işleminin başına 5 adet $00, 5 adet $FF, 5adet $AA peşine "ata" peşine "A" eklemelisin. Burada yalnızca A sizin bilginiz ata işaretçiniz diğerleri ise uyandırma verisi dir. Alıcı kısmında bilgi geldiğinde önce ata yı sorgulamanız doğru ise peşinden gelen A bilgisi alınır. Aslında  ata yı yakalarsanız peşinden geleni sorgulamak gerekmez. Hatta A yı hiç yollamasanızda olur. Çünki A nın haricinde bir başka karekter yollammıyor.
Ata yerine sadece A yollanması tek byte olduğu için sorun çıkartabilir ama ata 3 byte olduğu için veri güvenliği yaratır. Ata yerine kendi seçeceğin 3 farklı karekter koyabilirsin.
Ete
Başlık: Ynt: Pic Rf haberleşme problemi
Gönderen: ironeyes - 01 Ağustos 2023, 14:56:36
Alıntı yapılan: ete - 01 Ağustos 2023, 14:52:28Her şeyden önce alıcıdaki gecikmelerden kurtulmanız lazım. İllaki gerekli ise timer ile gecikme yaratıp gecikme yürütülürken de vericiden bir şey gelip gelmediği sorgulanmalıdır.
Veri yollayan tarafta her yollama işleminin başına 5 adet $00, 5 adet $FF, 5adet $AA peşine "ata" peşine "A" eklemelisin. Burada yalnızca A sizin bilginiz ata işaretçiniz diğerleri ise uyandırma verisi dir. Alıcı kısmında bilgi geldiğinde önce ata yı sorgulamanız doğru ise peşinden gelen A bilgisi alınır. Aslında  ata yı yakalarsanız peşinden geleni sorgulamak gerekmez. Hatta A yı hiç yollamasanızda olur. Çünki A nın haricinde bir başka karekter yollammıyor.
Ata yerine sadece A yollanması tek byte olduğu için sorun çıkartabilir ama ata 3 byte olduğu için veri güvenliği yaratır. Ata yerine kendi seçeceğin 3 farklı karekter koyabilirsin.
Ete

Cahilliğimi bağışlayın ama bu bahsettiğinizi alıcı tarafında nasıl yazacağımı çözemiyorum. Getch() komutu 8 bytelik veri alabiliyor anladığım kadarıyla.
Başlık: Ynt: Pic Rf haberleşme problemi
Gönderen: ete - 01 Ağustos 2023, 16:26:05
Ardunio dan ve komut kullanımından bende anlamıyorum. Bu nedenle söz ile ne olması gerektiğini anlatmaya çalışıyorum.
Komut listesini incelemen ve var ise peş peşe 3 byte alabilen bir komut bulman bulamıyor isen
peş peşe 1 adet getch() komutu yazıp aldığını BIR isimli byte değişkenine (INT) atman ardından hemen bir tane daha yazıp onuda IKI isimli değişkene ve ardından bir tane daha alıp onuda UC isimli bir değikene yerleştirmen çözüm olabilir.
Sonra IF BIR="A" and IKI="T" and UC="A" THEN
şeklinde bu alınanların istediklerinmi olduğuna bakman ve istediklerin ise ne yapıyorsan onu yapman yeterli olur. Değil ise yeniden karekter almaya gitmelisin.

Hemen belirteyim bu işler benim kullandığım Basic de çok basit.
hSerIn , [WAIT("ATA"),GELEN]
şeklinde tek bir satırlık komut hem ATA bilgisini bulup alır hemde ardından gelecek olan "A" bilgisini alıp GELEN isimli değişkene yerleştirir.

Ete
Başlık: Ynt: Pic Rf haberleşme problemi
Gönderen: ilyas KAYA - 01 Ağustos 2023, 17:12:21
https://lastminuteengineers.com/433mhz-rf-wireless-arduino-tutorial/


Burada tüm proje var açıklama ve bağlantılar da gösteriliyor. Chrome ile sayfayı Türkçe ye çevirebilirsiniz.
Başlık: Ynt: Pic Rf haberleşme problemi
Gönderen: ironeyes - 02 Ağustos 2023, 07:39:25
Teşekkür ederim ancak ben sorunu bir türlü çözemedim ete hocamın dediği gibi tek karakter gönderince parazitten dolayı verici herhangi bir anda tetkikleniyor bunu çözmek için ete hocamın bahsettiği şekilde kod yazmaya çalıştım ama bi türlü çalıştıramadım  :(
Başlık: Ynt: Pic Rf haberleşme problemi
Gönderen: sifirzero - 03 Ağustos 2023, 19:30:56
kardesim gonderdigin kod ile alici kodlari sade bir sekilde gonderirmisin. çok karisik veri gonderiyorsun.delayıda cok uzun tutma 100 200ms yeterli.
Başlık: Ynt: Pic Rf haberleşme problemi
Gönderen: JOKERAS - 05 Ağustos 2023, 21:18:59
Bazı şeyler kolay gibi görünse de o kadar da kolay değildir.
Kopyala yapıştır şeklinde yapılan işten medet umulmaz,zira bu sizi yakar perişan eder.

Bence Siz önce iki İşlemci arasında Data transferini kablo ile hatasız yapın.
Gönderici kodunuz önemli değil, ama alıcı kod mutlaka İnterrupt olmalı!Başka türlüde olur ama en güzel yol Donanıma yaptırmak.
Aksi halde Gelecek olan Dataları ya hatalı alacaksınız,yada kaçıracaksınız.Hatayıda Modülde arayacaksınız.RF modül bir şey yapmaz.Bir Osilatör ile Hamal-Taşıyıcı sinyal üretir.Siz Datanızı bu sinyale module edersiniz.Receiver ise Taşıyıcı Sinyali Filitre eder sadece Ham data kalır.
Modüllerdeki Anteni uzatmak işe yaramadığı gibi durumu daha da berbat hale sokar.Çünkü Belli hesaba göre yapılmış,belli anten empedansı olan bir yapı.Anteni uzatırsanız gürültü artar havadaki kıldan tüyden,her şeyden etkilenir.Bazen Sağırlaşır vs.

Kod yazmayı geliştirmeniz gerekir.Bu şekilde kod olmaz.Sonuçta Led yakıp söndürme işlemi yapmıyorsunuz.