433Mhz kit i pic

Rasprava o PIC mikrokontrolerima, PIC projekti i drugo vezano za PIC-eve...

Moderators: pedja089, stojke369, [eDo], trax

User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7877
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: 433Mhz kit i pic

Post by pedja089 »

Bolji je mancester... Jer problem je sto se osetljivost tog prijemnika menja u zavisnosti od tvog signala. Pa ako ima puno 1, onda predajnik stalno radi, pa ovaj spusta onaj referentni napon koji sam spominjao. Ako ima vise nula, nego 1, onda je stvar ok. Po koja 1 spusti taj referentni napon, i stvar radi.
A kod mancestera broj 1 i 0 je isti. Tako da uzmimo primer da se referentni dobija samo preko RC clana. Izbacimo sve sto stoji izmedju i zakaci otpornik na pic, kondezator na masu, na zajednickom spoju meri napon.
Ako saljes sa mancester, bice 2,5V, ako je napajanje 5V. Ako krenes obicno slanje, ili ovo sto si rekao, taj napon ce otici ili gore ili dole...
Tako sam ja skontao da rade ti prijemnici... Bar ovi sto sam ja imao...
A mozda i gresim...
User avatar
Momak
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 304
Joined: 13-03-2011, 01:07

Re: 433Mhz kit i pic

Post by Momak »

Razumem sta zelis da kazes, ali referentni napon ne opada tako brzo. U prethodonom pokusaju prenosa podataka sa obicnim serijskim slanjem koristio sam mod 24500 kod koga je duzina slanja jednog bita cak 33ms. Posto sam uspeo cisto da primim podatke, to je dokaz da ih predajnik redovno poslao, tj. uspeo je da "drzi" jedinicu cak 33ms. Za ovakav prenos podataka na 433Mhz inace je preporucen baud rate 1200, 2400 tj. duzina jednog bita da je 3.3 odnosno 1.65 ms. Ako bi koristio recimo 1200 duzina 8 jedinica bi trajalo 8*3.3=26.4ms pa bi to trebalo da radi, ali ajde posto je i to dugo, mozda sa baudom 2400 i slanjem recimo 4 bitova umesto 8 4 jedinice bi trajale 4*1.65=6.6ms i to vec ima nekog smilsa. Ako bi npr. uzeo baud 188, onda bi 4 jedinice trajale 4*0.825=3.3ms itd. Svakako sam planirao da probam i manchester, ali probacu i ovo svoje. Trenutno radim na nekom starom kompu gde mi ne radi serijiski port pa ne mogu da programiram piceve :( tako da cu za koji dan kad se dokopam svog kompa probati i javiti.
Kad pijemo, mi se i napijemo.
Kad se napijemo, mi i zaspemo.
Kad spavamo, mi ne činimo grehe.
Ako ne činimo grehe, onda idemo u raj.
Zato i pijemo da bi otišli u raj.
Milentije
Pocetnik na forumu
Pocetnik na forumu
Posts: 26
Joined: 20-05-2011, 20:55

Re: 433Mhz kit i pic

Post by Milentije »

Ja sam koristio ovu kombinaciju prijemnika i predajnika u svom diplomskom. I ja sam poludio kad sam ih prvi put stavio u sistem i vidio da to ne nikako ne radi. Sjedio, tražio rješenje, čitao po forumima, probavao. Na kraju sam ipak uspio napraviti da sve radi kako treba. Domet sam uspio probati na parkinku ispred zgrade i OK radi do nekih 30-35 metara (to je bilo testirano prije poslednjih izmjena koje bi vjerovatno mogle pomoći oko dometa, ali nisam probao nakon izmjena). Dužina antena je oko 17,5 cm. Evo dole kod koji koristim za slanje i primanje podataka. Samo jedna napomena (ono što se ne vidi u ovom kodu, ali se da naslutiti kada se pogleda kod za prijem paketa), jedan paket se šalje više puta zaredom, čisto iz razloga ako prvi nekako omane. :) Dakle svaki paket se šalje, 3, 5 ili 10 puta, po ukusu. :D
Baud rejt je 1200bps.

Code: Select all

#define SYNC_DATA      0x00            // sinhronizacioni podaci
#define HEADER         0xaa            // zaglavlje za slanje paketa

void posalji_paket(int data)
{
   // *************************************
   //
   // Funkcija za slanje paketa podataka
   //
   // Paket se sastoji iz 4 dijela
   //
   // SYNC_DATA + HEADER + podatak + checksum
   //
   // Na pocetku slanja predajnik
   // se sinhronizuje sa prijemnikom
   // tako sto salje sinhronizacioni niz.
   // Nakon toga se salje zaglavlje, zatim
   // podatak i na kraju checksum.
   //
   // *************************************
   
   unsigned char i;
   
   // Bafer za podatke u jednom paketu
   unsigned char buffer[3];
   
   // Byte 0 - zaglavlje (HEADER)
   buffer[0] = HEADER;
   
   // Byte 1 - podatak
   buffer[1] = data;
   
   // Byte 2 - checksum
   buffer[2] = (int)(HEADER + data);
   
   // Sinhronizacija
   for (i = 0; i < 7; i++)
      putc(SYNC_DATA);
   
   // Slanje paketa preko UART-a
   for (i = 0; i < 3; i++)
      putc(buffer[i]);
}

Code: Select all

#define HEADER 0xaa           // zaglavlje paketa 0b10101010

int procitaj_paket(void)
{
   // Promjenjive u koje ce se smjestiti podatak i checksum.
   int data;
   int checksum;
   
   
   // LOOP petlja koja radi sve dok checksum ne bude tacan.
   do
   {
      // Ignorisemo sinhronizacioni niz i pretpostavicemo da je zaglavlje (HEADER) pocetak paketa (prvi bajt)
      // Citamo RX liniju dok ne primimo zaglavlje (HEADER).
      while (getc() != HEADER);
      
      // Sledeci bajt je podatak.
      data = getc();
      
      // Poslednji bajt paketa je checksum.
      checksum = getc();
   }
   while (checksum != (int)(HEADER + data));
   
   delay_ms(50);                // pauza nakon primanja prvog citavog paketa kako bi se izbjeglo hvatanje narednih jer nisu potrebni
   // Ako je checksum tacan, vrati podatak.
   return data;
}
User avatar
Momak
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 304
Joined: 13-03-2011, 01:07

Re: 433Mhz kit i pic

Post by Momak »

Pogledacu, probacu pa javljam. Hvala za program. :)
Kad pijemo, mi se i napijemo.
Kad se napijemo, mi i zaspemo.
Kad spavamo, mi ne činimo grehe.
Ako ne činimo grehe, onda idemo u raj.
Zato i pijemo da bi otišli u raj.
Milentije
Pocetnik na forumu
Pocetnik na forumu
Posts: 26
Joined: 20-05-2011, 20:55

Re: 433Mhz kit i pic

Post by Milentije »

Ovo nije čitav program. Ovo su samo dvije funkcije, jedna za slanje paketa, a druga za primanje. Kod je pisan u CCS C-u.
Post Reply