Picproje Elektronik Sitesi

DERLEYİCİLER => CCS C => Konuyu başlatan: oktay5506 - 22 Nisan 2015, 19:44:29

Başlık: rf alıcı verici ile kablosuz pic devresi çalıştıramıyorum ,yardım lütfen!
Gönderen: oktay5506 - 22 Nisan 2015, 19:44:29
Selam arkadaşlar;
   Üzerinde çalışmış olduğum bir projede takıldım kaldım, yardımlarınızı  rica ediyorum..
Projem: Verici tarafında 16F84A   kullanarak , beş buton  ile ,alıcı tarafındaki ,  beş adet röleyi  kontrol etmek istiyorum  bunun için   rf 433 mhz hazır alıcı verici kit kullanıyorum,  bir türlü haberleştiremedim  nerede  hata yapıyorum acaba,  verici ve alıcıyı  koblo ile denediğimde çalışıyor. sizlere devrenin
CCS C  ile yazılmış kodlarını da gönderiyorum.
yardımlarınızı bekliyorum..

VERİCİ KISIM
#include <okt_verici.h>

void main()
{
   int a,b,c,d,e;
   while(true)
   {
      set_tris_B(0x00);
      set_tris_A(0xFF);
/*     output_low(LED);
      delay_ms(DELAY);
      output_high(LED);
      delay_ms(DELAY);*/
     
      //1 NOLU BUTON KONTROLU
      if(input(PIN_A0) == 1)
      {
         putc('A');
         a=1;
         delay_ms(DELAY);
      }
      else if (input(PIN_A0) == 0)
      {
         if(a==1)
         {
            putc('a');
            a=0;
            delay_ms(DELAY);
         }
      }
     
      //2 NOLU BUTON KONTROLU
      if(input(PIN_A1) == 1)
      {
         putc('B');
         b=1;
         delay_ms(DELAY);
      }
      else if (input(PIN_A1) == 0)
      {
         if(b==1)
         {
            putc('b');
            b=0;
            delay_ms(DELAY);
         }
      }
     
      //3 NOLU BUTON KONTROLU
      if(input(PIN_A2) == 1)
      {
         putc('C');
         c=1;
         delay_ms(DELAY);
      }
      else if (input(PIN_A2) == 0)
      {
         if(c==1)
         {
            putc('c');
            c=0;
            delay_ms(DELAY);
         }
      }
     
      //4 NOLU BUTON KONTROLU
      if(input(PIN_A3) == 1)
      {
         putc('D');
         d=1;
         delay_ms(DELAY);
      }
      else if (input(PIN_A3) == 0)
      {
         if(d==1)
         {
            putc('d');
            d=0;
            delay_ms(DELAY);
         }
      }
     
      //5 NOLU BUTON KONTROLU
      if(input(PIN_A4) == 1)
      {
         putc('E');
         e=1;
         delay_ms(DELAY);
      }
      else if (input(PIN_A4) == 0)
      {
         if(e==1)
         {
            putc('e');
            e=0;
            delay_ms(DELAY);
         }
      }
   }

}
#include <16F84A.h>

#FUSES NOWDT                    //No Watch Dog Timer

#use delay(crystal=4000000)
#use rs232(baud=2400,parity=N,xmit=PIN_B0,rcv=PIN_A0,bits=8,stream=PORT1)

#define LED PIN_B0
#define DELAY 1000

ALICI KISIM
#include <okt_a.h>
char e;
void main()
{
   output_B(0);

   //Example blinking LED program
   while(true)
   {
      set_tris_A(1);
      set_tris_B(0);
/*     output_low(LED);
      delay_ms(DELAY);
      output_high(LED);*/
      e=getch();
   //   e='A';
   
      //1 NOLU LED KONTROLU
      if(e=='A')
         output_high(PIN_B0);
      else if(e=='a')
         output_low(PIN_B0);
         
      //2 NOLU LED KONTROLU
      if(e=='B')
         output_high(PIN_B1);
      else if(e=='b')
         output_low(PIN_B1);
         
      //3 NOLU LED KONTROLU
      if(e=='C')
         output_high(PIN_B2);
      else if(e=='c')
         output_low(PIN_B2);
         
      //4 NOLU LED KONTROLU
      if(e=='D')
         output_high(PIN_B3);
      else if(e=='d')
         output_low(PIN_B3);
         
      //5 NOLU LED KONTROLU
      if(e=='E')
         output_high(PIN_B4);
      else if(e=='e')
         output_low(PIN_B4);
   }

}#include <16F84A.h>

#FUSES NOWDT                    //No Watch Dog Timer

#use delay(crystal=4000000)
#use rs232(baud=2400,parity=N,xmit=PIN_B0,rcv=PIN_A0,bits=8,stream=PORT1)

#define LED PIN_B0
#define DELAY 5000




Başlık: Ynt: rf alıcı verici ile kablosuz pic devresi çalıştıramıyorum ,yardım lütfen!
Gönderen: Recep METE - 22 Nisan 2015, 19:55:09
Verici ve alıcıyı kablo ile haberleştirdiğine göre kodlarda bir sorun yok. Eğer devreyi breadboarda kurduysan kesinlikle birşeyleri eksik yapıyorsundur. Fotoğrafını koyarsan inceleyebiliriz.
Başlık: Ynt: rf alıcı verici ile kablosuz pic devresi çalıştıramıyorum ,yardım lütfen!
Gönderen: oktay5506 - 22 Nisan 2015, 20:16:56
devreyi baskı devre ile plaket üzerinde kurdum ,breadboarda kurmadım, bağlantıların doğruluğunda şüphem yok ,alıcı verici kitleri de  başka bir çalışan devre üzerinde deniyorum çalışıyor.   
(http://s8.postimg.cc/8jyw3yngh/devre_Page_1.jpg) (http://postimg.cc/image/8jyw3yngh/)
Başlık: Ynt: rf alıcı verici ile kablosuz pic devresi çalıştıramıyorum ,yardım lütfen!
Gönderen: Recep METE - 22 Nisan 2015, 23:41:41
eger uygulamayi gercek deneme yapacaksaniz INVERT komutu  #use satirina eklenmeli.

su sekilde
alicida #use rs232(baud=600,parity=N,rcv=pin_c7,bits=8,INVERT)

ISIS'de deninrken bu satir cikartilmali!!
Başlık: Ynt: rf alıcı verici ile kablosuz pic devresi çalıştıramıyorum ,yardım lütfen!
Gönderen: sifirzero - 13 Aralık 2017, 22:02:03
arkadaşlar burda  b0 ile a0 a alıcı vericilerimi bağlıyoruz
Başlık: Ynt: rf alıcı verici ile kablosuz pic devresi çalıştıramıyorum ,yardım lütfen!
Gönderen: ferdem - 13 Aralık 2017, 23:20:07
Forumda en çok sorulan ve de en çok cevaplanan konulardan birisini sormuşsunuz.
preamble, uyandırma, udea, 433 anahtar kelimelerini aratırsanız çözüm olacak birçok başlık bulabilirsiniz.
Yapmak istediğiniz işe daha uygun önerileri PT2262 anahtar kelimesiyle bulabilirsiniz.
serkançetin, şemaya göre öyle görünüyor, alıcı verici b0 a0 da.
Başlık: Ynt: rf alıcı verici ile kablosuz pic devresi çalıştıramıyorum ,yardım lütfen!
Gönderen: sifirzero - 13 Aralık 2017, 23:23:05
ustam bu devreyi uygulamada yaptım. çaılışmadı alıcıdaki led kafasına gre yanıp sönüyor.maksadım çalışma mantığını anlamak.çalışan düzgün ir devre bulamadım 4 tane denedim hiç biri çalışmadı
Başlık: Ynt: rf alıcı verici ile kablosuz pic devresi çalıştıramıyorum ,yardım lütfen!
Gönderen: ismail kaya - 14 Aralık 2017, 09:04:17
CCSC'de manchester code ile parazitlerden kurtulabilirsin. Birde veri yollarken alıcıyı uyandırmak için önden veri yollanır. (putc(0x55);)

TX
#include <12F683.h>
#device ADC=16
#include <string.h>
#include <stdlib.h>
#FUSES NOWDT                    //No Watch Dog Timer
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOMCLR

#use delay(internal=4000000)

#use rs232(baud=1200,parity=N,xmit=PIN_A5,bits=8,stream=PORT1)

#define LED PIN_A4
#define DELAY 1000
char durum="N";


#INT_EXT
void  EXT_isr(void)
{
if(input(PIN_A2)) durum="A";
else durum="N";
}

void SEND_DATA(BYTE txbyte)
{

    int i,j,b,me;
   
    b = txbyte;
   
    for (i=0; i<2; i++) {
        me = 0;         // manchester encoded txbyte
        for (j=0 ; j<4; j++) {
            me >>=2;
            if (bit_test(b,0) )
                me |= 0b01000000; // 1->0
            else
                me |= 0b10000000; // 0->1
            b >>=1;
        }
        putc(me);
        delay_ms(50);
       
    }
}


main() {

   enable_interrupts(INT_EXT);
   enable_interrupts(GLOBAL);

while(1)
{

// sleep();


  if(input(PIN_A2))
  {
    output_high(LED);
    delay_ms(DELAY);
    putc(0x55);
    putc(0x55);
    putc(0x55);
    putc(0x55);
    putc(0x55);
    putc(0x00); 
    putc(0x00);
    putc(0x00);
    putc(0x00);
    putc(0x00);
    putc(0xFF);
    putc(0xFF);
    putc(0xFF);
    putc(0xFF);
    putc(0xFF);
    putc(0xF0);
 

SEND_DATA('H');
SEND_DATA(durum);

       
putc(0xF0);
putc(0xF0);
   
output_low(LED);
delay_ms(DELAY);

  }
}



}


RX

#include <16F628A.h>
#FUSES NOWDT                    //No Watch Dog Timer
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O

#use delay(internal=4000000)

#define LED PIN_B3
#define DELAY 1000

#use rs232(baud=1200, parity=N, xmit=pin_B2, rcv=pin_B1, bits=8)
#use rs232(baud=9600, parity=N, xmit=pin_B5, rcv=pin_B4, bits=8,stream=PORT1)

char c,a,i,dec,dec1,dec2,enc,pattern,son,j;
char nib[2]; //
char x;

BYTE DECODE_DATA()  //decode function for machester encoded data. This code is working fine. I checked it.
{
enc = nib[0];
       
    if (enc == 0xf0)    //  start/end condition encountered
        return 0xf0;
       
    dec = 0;   
    for (i=0; i<4; i++) {
   
        dec >>=1;
        pattern = enc & 0b11;       
        if (pattern == 0b01)        // 1
           bit_set(dec,3);
        else if (pattern == 0b10)
           bit_clear(dec,3);       // 0
        else
            return 0xff;            // illegal code
           
        enc >>=2;
        dec1=dec;
    }
enc = nib[1];
       
    if (enc == 0xf0)    //  start/end condition encountered
        return 0xf0;
       
         
    dec = 0;   
    for (i=0; i<4; i++) {
   
        dec >>=1;
        pattern = enc & 0b11;       
        if (pattern == 0b01)        // 1
           bit_set(dec,3);
        else if (pattern == 0b10)
            bit_clear(dec,3);       // 0
        else
            return 0xff;            // illegal code
           
        enc >>=2;
        dec2=dec;
    }
dec2<<=4;
son=dec1|dec2;
x=0;
dec=0;
dec1=0;
dec2=0;
return (son);
}


#int_rda
void komut_al() //interrupt for receiving manchester coded data
{
disable_interrupts(int_rda);


      c=getc();
      if  (x<2)
      nib[x]=c; // assign low and high nibble of data
      x=x+1;

         
     
enable_interrupts(int_rda); 
}

main()
{
x=0;
nib[0]=0;
nib[1]=0;
enable_interrupts(int_rda);
enable_interrupts(GLOBAL);

while(1)
{

if  (x>1)

{
x=0;
a=DECODE_DATA();



      if  (a=='H')
         {
         fprintf(PORT1,"GELEN=%c\r\n",a);
         }
      if  (a=='N')
         {
         fprintf(PORT1,"NORMAL-%c\r\n",a);
         }
     
       if  (a=='A')
         {
         fprintf(PORT1,"ALARM-%c\r\n",a);
         }
         
       
enable_interrupts(int_rda);
}

         
}
}
Başlık: Ynt: rf alıcı verici ile kablosuz pic devresi çalıştıramıyorum ,yardım lütfen!
Gönderen: Teğmen - 14 Aralık 2017, 09:22:32
@oktay5506 usta ben konuyla biraz ilgisiz olacak ama şunu söylemek isterim kodları direk mesajın içine değilde mesaj yazarken yukarıda KOD yazan yere tıklayarak kod parçacığı şeklinde yazarsan daha anlaşılır olur.


Örneğin;
if (i==0 & j==1)
{
printf("Örnek Yazı");

}
yerine
if (i==0 & j==1)
{
printf("Örnek Yazı");

}

bu şekilde daha anlaşılır olmakta


İyi Çalışmalar
Başlık: Ynt: rf alıcı verici ile kablosuz pic devresi çalıştıramıyorum ,yardım lütfen!
Gönderen: oktay5506 - 14 Aralık 2017, 21:50:28
Merhaba arkadaşlar hepinize çok teşekkür ederim.  Devreyi calistirdim   arada nadiren de olsa kendi kendine komut alıyor ama iyi sayılır su anda işler yoğun olduğu için zaman ayiramiyorum. Ve şehir disindayim dönünce ilk fırsatta kodları yayinlarim.
Başlık: Ynt: rf alıcı verici ile kablosuz pic devresi çalıştıramıyorum ,yardım lütfen!
Gönderen: sifirzero - 14 Aralık 2017, 22:16:38
aliexpresden aldığım alıcı verici çalışmıyor galiba 5 tane yazılım denedim hiçbiri olmadı. rx ve tx lere data gönderiyorum hem simülasyonda hem uygulamada çalışıyor.
Başlık: Ynt: rf alıcı verici ile kablosuz pic devresi çalıştıramıyorum ,yardım lütfen!
Gönderen: fide - 18 Aralık 2017, 21:50:46
Hope rf in Hm-trp isimli, dorji isr dr ile başlayan kodlarda 433 mhz modülleri var. Hmtrp nin kullanımı kolay. 2000mt de sıkıntısız haberleştirdim.


Bir de yanlış hatırlamıyorsam f84te donanım uart yoktu. Software uart mı kullanıyorsun.



Başlık: Ynt: rf alıcı verici ile kablosuz pic devresi çalıştıramıyorum ,yardım lütfen!
Gönderen: fide - 18 Aralık 2017, 21:51:42
Direnc.net, m2mmarket.com.tr ve ara ara robotistan hm-trp satıyor.