RF Data iletim sorunu

Başlatan alexsi, 29 Mart 2012, 01:17:22

alexsi

Merhaba Arkadaşlar ,
RF haberleşme de 433 mhz Alıcı verici devresi kullanıyorum.
Araştırmalarım sonucunda Crc kodu (coding-decoding) kullanarak bu tip parazitler ortadan kaldırılıyor.
PC'ye yada LCD ekrana temiz yani istenilen veri bastırılıyormuş.Diğer adıyla preamble (Uyandırma) da diyorlar gönderilen datadan önceki kontrol byte'na.Compiler olarak CCS C kullanıyorum.
Soruna gelince ;
Elde edilen veriler anlamsız geliyor.
Benim sıkıntım Crc kodu ve yazılıma nasıl uyarlanır?
Alıcı RS-232 üzerinden PC de VBasic programa alıyor.VBasic de CRC kodu nasıl uyarlanır?
Verici ise 2400 bps ile haberleşiyor. Crc Kodu nasıl olur ?

http://www.kontrolarge.com/ Bildiklerimiz öğrendiklerimiz kadardır. Ya bilmediklerimiz ..?

pax

aynı sıkıntıyı 4 yıl önce ben de yaşamıştım. udea nın utr c12m modülünü kullanarak karşı taraftaki alıcıya sayısal bilgi gönderip LCD de gösteriyordum.Ancak alıcı verici olarak ben PIC kullandım.  yapacağın şey alıcı ve vericiyi önce haberleşmeye hazırlamak. bunun için vericiden alıcıya senkronizasyon bilgileri göndermen lazım. alıcı bu senkronizasyon bilgilerini aldıktan sonra vericinin gönderdiği bilgileri okumalı, aksi taktirde parazit oluşuyor ve LCD de tuhaf karakterler görünüyor. 
http://www.udea.com.tr/docs.aspx bu linkte UTR-c12M için c kodları verilmiş burada senkronizasyon bilgisinin nasıl gönderilip alınacağı ve bilgi iletiminin nasıl yapıldığına dair C kodları var bunlar sana oldukça yararlı olacak benim işime çok yaramıştı. iyi çalışmalar. 

serhat1990

Checksum ile parazitten belli bir oranda kurtulabilirsin. RF ' de oldukça kullanılan bir yapıdır . Kolay gelsin....

ehliseyf

data göndermeden önce uyandırma verisi olarak binary olarak 5 byte 01010101 yada 5 byte 10101010 verisi göndermelisin.ayrıca data öncesinde öncü veri dediğimiz veriyi göndermelisin. udea nın örneklerinde bu öncü veri  0xFF ve 0x00 seklinde 10 byte lık bir veri olarak örneklendirilmiş.

Code'm mu oturturum !

alexsi

Merhaba arkadaşlar, ilginize çok teşekkürler.
Verici kodlarını bi kısmını gönderiyorum.Nereye,nasıl bir kod eklemek lazım arkadaşlar? kafamda tam olarak oluşuramadım.Yardımcı olabilirmisiniz?
Saygılarımla,
-------------------------------------------------------------------------------------------   
while(1)   // sonsuz döngü
   {

        set_adc_channel(0);   // RA0 ucundaki sinyal A/D işlemine tabi tutulacak
         delay_us(20);         // Kanal seçiminde sonra bu bekleme süresi verilmelidir
        bilgi=read_adc();     // ADC sonucu okunuyor ve bilgi değişkenine aktarılıyor
      voltaj=0.0048828125*bilgi;
//Sıcaklık Oku
i2c_start();
        ack = i2c_write(0x9A);
        ack = i2c_write(0x00);

        /* send start again */
        i2c_start();
        ack = i2c_write(0x9b);
        data = i2c_read(0);
        i2c_stop();

        // Convert the A/D value to fahrenheit
        celc = ((long)data);
delay_ms(100);

if(i>8 )
{
  i=0;
   lcd_gotoxy(0x1,1); // 1.satir icin 0x1,1 konumlandirmasi
  printf(lcd_putc,"Sicaklik:%fC     \r",celc);
  printf("xxxxxS%3.1fN%3.2fxxxx\r",celc,voltaj); //Buradan picin Uart Tx kanalı ile verici aracılığı ile veriler pompalanıyor.

}
  lcd_gotoxy(0x1,2); // 2.satir icin 0x1,2 konumlandirmasi
  printf(lcd_putc,"\nVoltaj=%fV",voltaj); // AN0 ucundaki sinyalin gerilim değeri LCD'ye aktarılıyor
  delay_ms(10);
  i=i+1;
}
}
--------------------------------
Alıcı kısmı ise ;  printf("xxxxxS%3.1fN%3.2fxxxx\r",celc,voltaj); //Buradan picin Uart Tx kanalı ile verici aracılığı ile veriler pompalanıyor.
den gönderilen veriyi Alıcı modül RS-232 ile comporttan alıp Vbasic ekrana basacak ama nasıl ?
http://www.kontrolarge.com/ Bildiklerimiz öğrendiklerimiz kadardır. Ya bilmediklerimiz ..?