komponente prodaja cdovi projekti info KIT kompleti download forumi knjige
Home



Projekti:
RfTalk, komunikacioni protokol za Rf mrežu

RfTalk je vrlo jednostavan i prilagodljiv protokol koji se može implementirati na mikrokontrolerima skromnih resursa. Predviđen je za paketni prenos podataka varijabilne dužine, koji je savršeno prilagođen kolu CC1100/CC1101. Koristi se 8-bitni softverski CRC za svaki paket, iako CC kolo ima u hardveru podrsku za vlastititi automatski CRC, zbog dokumentovanog bug-a na prvim verzijama kola bilo je problematičnih situacija sa tim ugrađenim CRC-om pa ga nismo koristili u nasem RfTalk protokolu.

Osnovna ideja za RfTalk je nastala iz serijskog ccTalk protokola (od firme Money Controls), koji već godinama koristimo u raznim situacijama jer pokazao kao vrlo dobro rješenje. Zbog toga smo odlučili da za potrebe Rf komunikacije napravimo prilagođenu verziju istog protokola, uz zadržavanje mnogih sličnosti pa će svima koji su već koristili ccTalk ovaj protokol biti sasvim jednostavan za korištenje.
Urađene su neke neophodne promjene, da bi implementacija sa kolom CC1100 bila što jednostavnija. Odustali smo od striktne master-slave orjentacije ccTalk-a, i omogućili multi-master komunikaciju, što znači da svaki uređaj može komunicirati sa svakim drugim uređajem direktno. U Rf komunikacijama se tu uvijek javlja problem istovremenog emitovanja dva ili više uređaja, međutim CC1100 serija ima u hardveru rješenje za taj problem jer može prije početka predaje provjeriti da li neko drugi već emituje na tom kanalu.

Ako imate mrežu više uređaja koji trebaju slati podatke jednom centralnom uređaju, sobzirom da sa CC1100 imate dvosmjernu Rf komunikaciju, možete ipak ići i na master-slave organizaciju jer je logičnije i efikasnije rješenje. Master može prozivati sve ostale uređaje i prikupljati podatke, umjesto da oni sami emituju i prave zbrku u eteru.
Po RfTalk protokolu struktura paketa izgleda ovako:

  1. bajt - broj bajtova u paketu
  2. bajt - adresa odredišta
  3. bajt - adresa polazišta
  4. bajt - heder (komanda)
  5. bajt - 8 bitni CRC
Ako u paketu postoji i segment sa podacima, oni se nalaze iza hedera, tako da paket u tom slučaju ima oblik:
  1. bajt - broj bajtova u paketu
  2. bajt - adresa odredišta
  3. bajt - adresa polazišta
  4. bajt - heder (komanda)
  5. bajt - data
  6. bajt - data
  7. bajt - data
  8. bajt - data
  9. bajt - 8 bitni CRC
Maksimalna dužina paketa može iznositi 255 bajta, odnosno 250 bajta podataka + 5 kontrolnih bajta, ali se obično ne ide na dugačke pakete jer se povećava mogućnost utjecaja smetnji. Osim toga paket se mora smjestiti u memoriju, a jeftini mikrokontroleri nemaju veliku količinu RAM-a na raspolaganju.
U našim RfM uređajima smo odvojili po 85 bajta za bafere slanja i prijema, dakle moguće je poslati i primiti 80 bajta podataka u svakom paketu.

Adresa predajnika i prijemnika moze imati bilo koju vrijednost od 1 do 254. Adrese 0 i 255 su brodkast adrese, dakle preko njih možemo prozvati sve uređaje bez obzira koju adresu imaju.

Data bajtovi mogu sadržavati bilo kakve podatke u formi koja vama odgovara. Nema nikakvih ograničenja u ovom segmentu paketa.

CRC se provjerava tako da zbir svih bajtova u primljenom paketu, zajedno sa CRC bajtom, mora biti 0 (nula). Za kreiranja CRC-a, sabiraju se svi bajtovi u paketu po modulu 255, a CRC se izračunava kao: CRC = 256 - zbir_svih_bajtova.
Na primjer ako paket sadrži sljedeći niz bajtova:[5] [2] [1] [0] vrijednost CRC-a će biti 248, zato što je:
5 + 2 + 1 + 0 + 248 = 256 = 0.

Za RfT protokol je karakteristično i to da se svaki poslani paket potvrđuje, tako da uređaj koji šalje podatke uvijek "zna" da li je paket uspješno primljen ili ne, što omogućava da se vrlo efikasno vrši ponovno slanja, ako je to potrebno. Da bi protokol ostao što jednostavniji automatsko ponavljanje nije dio ugrađenog RfT protokola.
U realizaciji projekta daljinskog upravljača je implementirano i automatsko ponavljanje zadnje komande, ako potvrda o prijemu nije stigla u predviđenom vremenu.

Što se tiče Heder bajtova, odnosno konkretnih komandi, jedan manji broj komandi je obavezan i mora biti implementiran u svakom uređaju koji koristi RfTalk. Sve ostale vrijednosti heder-a su slobodne za korištenje od strane korisnika, odnosno implementatora protokola na konkretnom uređaju.

RfTalk nudimo kao otvoreni standard, što znači da nemate obaveze plaćanja nikakvih licenci za njegovu implementaciju i korištenje., a sve podatke o protokolu možete dobiti na ovim stranicama i u obliku pdf dokumenta.
To ne znači da je i naš C sors ili hex kod za PIC besplatan! Realizacija ovog kompletnog projekta trajala je preko 6 mjeseci, uključujući projektovanje nekoliko verzija hardvera, kreiranje i testiranje samog RfTalk protokola i konačno pisanje PC softvera za kontrolu i upravljanje.

OBAVEZNI DIO RfTalk PROTOKOLA SADRŽI SLJEDEĆE KOMANDE

Potvrda prijema (Acknowledge - ACK), heder 0
Paket za povrdu ima istu strukturu, a heder bajt je nula. To znači da će paket izgledati ovako:
  1. [ 5 ]
  2. [ adresa odredišta ]
  3. [ adresa polazišta ]
  4. [ 0 ]
  5. [ CRC ]
Greška (NAK), heder 5
NAK paket se šalje samo ako je primljen ispravan paket, ali se tražena akcije ne može izvršiti iz nekog razloga. Npr. neki parametar je izvan dozvoljenogh opsega i sl. Ako je greška tipa pogrešna adresa, pogrešan CRC i sl. neće biti vraćena nikakva povratna informacija pošiljaocu jer nije sigurno ko je pošiljaoc a ko primaoc paketa jer je možda greška nastala baš na tom bajtu. Da se eter ne zagađuje nepotrebnim porukama takvi paketi se zanemaruju, a pošiljaoc na osnovu nepostojanja odgovora može poduzeti potrebnu akciju. NAK paket ima sljedeći oblik.
  1. [ 5 ]
  2. [ adresa odredišta ]
  3. [ adresa polazišta ]
  4. [ 5 ]
  5. [ CRC ]
Uređaj zauzet (BUSY), heder 6
BUSY paket označava da je uređaj trenutno zauzet nečim drugim i da ne može izvršiti traženu komandu. Pošiljaoc paketa može recimo pokušati ponovo nakon nekog vremenskog intervala. Ovu komandu nismo za sada koristili u našim uređajima.
  1. [ 5 ]
  2. [ adresa odredišta ]
  3. [ adresa polazišta ]
  4. [ 6 ]
  5. [ CRC ]
Ako uređaj primi paket koji nema ispravan CRC, nema ispravnu dužinu, nije kompletan, komanda (heder) nije važeća ili nije implementirana na tom uređaju, samo će obrisati bafer i čekati sljedeći paket. Neće vratiti nikakav odgovor pošiljaocu.

Komande za rad sa adresama uređaja:

Ovo su komande koje se odnose na jedan ili više uređaja i omogućavaju da se razriješe problematične situacije sa adresama. Npr. ako se u mrežu dodaju novi uređaji može se desiti da budu iste adrese na 2 ili više uređaja u mreži. Sa ovim komandama možemo testirati i razriješiti takve situacije bez potrebe da se bilo koji uređaj isključuje, rekonfiguriše i slično.

Sa komandama 253 (Address Poll) i 252 (Address Clash), možemo lako provjeriti da li postoje takvi uređaji sa dupliranim adresama, a komandama 250 (Address Random) i 251 (Address Change) se lako može riješiti problem duplih adresa.

Lista adresa (Address Poll), heder 253
Komanda se šalje sa brodkast adresom prijemnika (nula), tako da svi uređaji odgovore na ovu komandu. Svaki uređaj će poslati svoju adresu kao odgovor, i to u skracenom paketu od 2 bajta (adresa na koju se salje i vlastita adresa kao drugi bajt). Da bi se izbjegle kolizije kod slanja svaki uređaj vrši kašnjenje koje zavisi od njegove adrese! Algoritam koji se koristi kod slanja odgovora na ovu komandu izgleda ovako:
  • Isključen prijem podataka
  • Pauza ( 16 x adresa) ms
  • Slanje paketa 2 bajta: [adresa odredišta] [adresa posiljaoca]
  • Uključen prijem podataka
U tom vremenu od 4,1s svi uređaji će poslati svoje adrese pošiljaocu komande 253, te on može formirati listu uređaja koji su dostupni na mreži i dalje komunicirati sa svakim pojedinačno...
Dužina ove vremenske pauze je minimalna za brzinu prenosa od 10Kb/s i ne može se skratiti jer se u konacnom Rf prenosu salje odredjen broj kontrolnih bajta tako da je ukupan paket dosta duzi od 2 bajta. Ako se koristi manja brzina komunikacije ova pauya od 4s nije dovoljna za razdvajanje susjednih adresa. RfM uredjaj koji je prikljucen na PC, koji je poslao komandu (ocekujemo da je PC master na mrezi, mada to ne mora biti), uvijek ce odgovoriti prvi (poslati svoj paket na RS232), bez pauze. Zatim ce sacekati 4,5s da primi sve odgovore u bafer a onda ce ih poslati na RS232, prema PC-u. PC softver tada moze formirati listu svih dostupnih RfM uredjaja i po potrebi nastaviti komunikaciju sa svakim pojedinacno.

Duplirane adrese (Address Clash), heder 252
Ova komanda se šalje sa specificiranom adresom odredišta i koristi se za provjeru da li dva ili više uređaja imaju istu adresu. U tu svrhu je algoritam koji se koristi kod slanja odgovora modifikovan tako da uređaji sa istom adresom ne pošalju svoje odgovore istovremeno, jer prije odgovora prave vremensku pauzu koja zavisi od slučajno generisanog broja!
  • Isključen prijem podataka
  • r = rand(255) ms // slucajan broj od 1 do 255
  • Pauza ( 16 x r) ms
  • Slanje paketa 2 bajta: [adresa odredišta] [adresa posiljaoca]
  • Uključen prijem podataka
Ovo su i jedine dvije komande kod kojih se u odgovoru ne poštuje standardni oblik paketa podataka. Pošiljaoc komande 252 će dobiti listu uređaja koji dijele istu adresu, pa na njih zatim može primjeniti sljedeću komandu Address Random.

Address Random, heder 250
Odgovor: ACK
Može se primjeniti na uređaje koji dijele istu adresu, ili na čitavu mrežu. Nakon prijema ove komande uređaj generiše slučajan broj između 2 i 254, a zatim setuje svoju adresu na tu vrijednost. Na ovaj način se uspiješno razrješava situacija sa duplim adresama. Nakom ponovne komande Address Poll (252), vidjeće se koje su adrese uređaji uzeli, pa se po potrebi može ići na pojedinačne promjene adresa sa sljedećom komandom Address Change (251), ako želite da uređajima date tačno određene adrese. Na komandu 250 će svi uređaji odgovoriti sa ACK istovremeno pa ako bi došlo do prijema nekog smeća to treba zanemariti. Kod generisanje slučajne adrese treba voditi računa o tome da adrese 0 i 255 nisu dozvoljene.

Address Change, heder 251
Slanje podataka: adresa (1 bajt)
Odgovor: ACK [NAK ako se zada neispravna adresa 0 ili 255]
Komanda za promjenu adrese se odnosi samo na specificirani uređaj a trenutno i trajno mijenja njegovu adresu na mreži. U data segmenu paketa se salje 1 bajt sa novom adresom. Odgovor ACK će stići sa stare adrese, što znači da je promjena izvržena uspješno i uređaj od tog trenutka možete prozvati samo na novoj adresi. Nova adresa se pamti u EEPROM-u tako da će je uređaj zadržati sve do neke sljedeće promjene adrese, bez obzira na eventualno isključivanje napajanja, resetovanja i sl. Adrese 0 i 255 nisu dozvoljene adrese za uređaje i oni će ih zanemariti.


Ostale obavezne RfT komande:

Fabrički test (Factory set-up and test), heder 255
Slanje podataka: po potebi
Odgovor: ACK
Koanda je ostavljena za potrebe proizvodnje i testiranja, a svaki proizvođač može po svojim potrebama koristiti vlastiti set funkcija iza ovog hedera.

Heder 254: Prozivka (Simple poll)
Slanje podataka: ne Odgovor: ACK Komanda se koristi za provjeru komunikacije sa uređajem. Ako je ispravan i radi odgovoriće sa ACK. Ako nema odgovora to znači da urešaj ne radi, nije ispravan ili adresa na kojoj se proziva nije ispravna. SVI uređeji koji koriste RfTalk protokol moraju imati implementiranu ovu komandu.

Heder 1: Reset uređaja
Slanje podataka: ne
Odgovor: ACK
Komanda se koristi za softverki reset uređaja. Od konkretnog uređaja zavisi šta će sve poduzeti nakon prijema ove komade i da li je potrebno neko pospremanje prije reseta. ACK povrda treba biti poslana prije reseta tako da kompletno slanje bude obavljeno prije samo resetovanja.

Heder 246: Identifikacija proizvođača (Request manufacturer id)
Slanje podataka: ne
Odgovor: ASCII
Komanda vraća naziv proizvođača u ASCII formatu. Npr. "AlfaNet informatika doo"

Heder 245: Naziv uređaja (Request equipment category id)
Slanje podataka: ne
Odgovor: ASCII
Komanda vraća naziv uređaja u ASCII formatu. Npr. "Rf Modem 433MHz"

Heder 244: Proizvodna verzija uređaja (Request product code)
Slanje podataka: ne
Odgovor: ASCII
Komanda vraća proizvodnu verziju uređaja u ASCII formatu. Npr. "5.10.1.". Nema ograničenja u formatu.

Heder 241: Verzija softvera (Request software revision)
Slanje podataka: ne
Odgovor: ASCII
Komanda vraća verziju softvera u uređaju u ASCII formatu. Npr. "V0.2.50". Nema ograničenja u formatu, a svaka promjena na softveru, ma kako mala, treba da se odražava u promjeni ove verzije.

KOMANDE ZA RAD SA Rf MODEMIMA KOJE SU IMPLEMENTIRANE KAO DIO PROTOKOLA

Heder 8: Kopiranje DATA bloka na RS232 interfejs
Slanje podataka: varijabilne dužine do 80 bajta
Odgovor: ACK (ili NAK ako je duzina data segmenta nula)
Slanjem ove komande i podataka u data segmentu na seriski interfejs tog uređaja će biti poslani svi bajtovi iz DATA segmenta paketa istim redosljedom kojim su navedeni u poslanom paketu.
Primjena: recimo da želite napraviti bežični čitač bar koda, i da ste ga spojili sa svojim mikrokontrolerom, riješili baterijsko napajanje i imate po Rf modem na svakoj strani. Pročitani bar kod možete po potrebi obraditi, ispisati na displeju naziv proizvoda i cijenu, a zatim poslati kod upakovan u RfM paket sa hederom 8. Drugi Rf modem će primiti paket i proslijediti sve bajtove iy data segmenta tj. bar kod na svoj RS232 interfejs, a PC računar će da podatke primi na isti način kao da su došli sa bar kod čitača koji direktno priključen na COM port. Dakle dobili ste bažični čitač bar koda koji možete nositi po cijelom skladištu, a ya koji nije potrebno mijenjati bilo šta u softveru PC aplikacije.

Heder 9: Kopiranje PAKETA na RS232 interfejs
Slanje podataka: varijabilne dužine do 80 bajta
Odgovor: ACK
Ovo je slična komanda samo što se na RS232 interfejs ne kopira samo data segment paketa nego kompletan paket. Ovo je pogodnije za situacije gdje ste sami pisali PC softver koji radi po RfT protokolu, pa je najlogičnije da onda sva komunikacija ide u istom formatu. Rf modem koji prima paket neće raditi ništa sa njim osim što će ga proslijediti na RS232, tako da za PC aplikaciju postaje svejedno da li radi bežično preko njega sa drugim RfM uređajem u mreži ili je RfM spojen direktno na COM port preko svog serijskog interfejsa (što može biti vrlo korisno u fazi razvoja).
Primjena: ako se zadržimo na prethodnom primjeru sa bar kod čitačem, i pretpostavimo da sami radite PC aplikaciju koja obrađuje podatke (recimo da je to maloprodajna kasa), onda je ovo vrlo jednostavan način da uspostavite dvosmjernu komunikaciju između čitača bar koda i PC aplikacije. Npr. možete u okviru ovog hedera ubaciti svoj prošireni set komandi definišući da prvi bajt u data segmentu označava vašu komandu aplikaciji. Onda je moguće lako realizovati traženje bar koda u bazi, vraćanje naziva i cijene proizvoda nazad prema kontroleru na čitaču da to ispiše na LCD displej, zatim na tastaturi koja se nalazi ispod displeja se može unijeti kupljena količina i poslati PC kasi. Na taj način se dobija vrlo dobra funkcionalnost za jako nisku cijenu. Takav bar kod čitač postaje mala kasa i može raditi kompletnu prodaju a za realizaciju je potreban samo jedan mikrokontroler, LCD displej, mala tastatura i akumulator za napajanje! Kada sve to proradi sa jednim čitačem, spajanje još nekoliko njih je stvar samo promjene adrese uređaja sa kojim se komunikacija odvija. Maloprodaja iz 21. stoljeća, po vrlo prihvatljvoj cijeni, postaje realnost....
U veleprodajnim skladištima, upotrebljivost ovakvog sistema je možda još i veća...

Heder 10: Setovanje Rf modema u DATA mod rada
Slanje podataka:
1. bajt = 0 za iskljucivanje DATA moda.
2 bajta = [adresa prijemnika ] i [vrijeme u ms] za aktiviranje DATA moda.
Odgovor: ACK (ili NAK ako nema podataka u paketu ili je vrijeme ispod 10ms)
Komanda se koristi kada komunicirate sa Rf modemom preko serijske veze (parametri su 9600/n/8/1) i želite da šaljete i primate podatke bez pakovanja u pakete. Jednostavno pošaljete serijskom vezom nekakav niz bajtova i želite da sa drugog Rf modema koji je primio podatke dobijete isti taj niz podataka na serijskom interfejsu. Naravno, ako su oba setovana u DATA mod moguća je i komunikacija u oba smjera na ovaj način.
U stvari, uređaj i dalje radi u paketnom režimu, samo je pakovanje podataka, setovanje adresa i CRC-a prebačeno na mikrokontroler Rf modema. Prvi bajt je adresa na koju će paketi biti poslani a drugi parametar je vrijeme koliko će mikrokontroler čekati punjenje bafera nakon prijema prvog bajta na svom RX pinu. Recimo da vaš niz podataka nikada nije duži od 20 bajta, to znači da će biti primljen za 20 x 1,04ms =20,8ms. Dakle, dovoljno je da setujete ovaj parametar na 25ms i Rf modem će čekati dovoljno dugo da prstignu svi vaši podaci u njegov bafer. Sobzirom da on ne može znati koliko ćete podataka slati odjednom, a predaja Rf modema može biti i brža i sporija od ovih 9600bps na koliko radi RS232, jedini način je da čeka neko definisano vrijeme i zatim pristigle podatke spakuje i pošalje. Vrijeme čekanja ne može biti setovano na manje od 10ms.
Ako zelite da Rf modem vratite u normalan mod rada, potrebno je poslati najmanje 3 znaka '+' jedan iza drugog. RfM će izaći iz DATA moda, a nakon toga treba poslati ovaj isti heder 10 sa jednim data bajtom 0 (nula). To će vratiti podešavanja na standardne vrijenosti, aktivirati LCD displej ako je priključen i obrisati fiksnu adresu prijemnika koja je bila setovana u DATA modu.
Prednost ovog moda rada je jednostavnost jer ne morate znati baš ništa o Rf modemu ni RfT protokolu da bi poslali podatke bežično. Nedostatak je to što nemate nikakve kontrole, provjere ni povratne informacije. U slučaju problema na vezi, smetnji, grešaka i sl. nemate nikakvu informaciju o tome šta se događa na Rf linku, pa to sve morate rješavati u svom softveru!

Heder 13: Promjena odredišne adrese
Slanje podataka: 1 bajt
Odgovor: ACK (ili NAK ako u data segmentu nije samo 1 bajt)
Setuje adresu na koju će biti poslan sljedeći paket. Odredišna adresa je uvijek adresa zadnjeg uređaja kojem je poslan neki paket. To znači da ako se RfM-u obratio drugi RfM sa važećom komandom onda je ACK paket otišao na njegovu adresu i ona je memorisana kao zadnja odredišna adresa. Ako šaljemo neki paket preko RfM-a u njemu ćemo lako cpecificirati adresu prijemnika koju god želimo, ali recimo da sada pritisnemo taster na uređaju, koji treba da pošalje komandu za aktiviranje nekog releja, taj paket će otići na tu zadnju memorisanu adresu. Ova komanda je način da tu adresu promijenimo i taster-komandu pošaljemo na neku drugu adresu. Ova promjena je privremena i već prijem sljedećeg paketa može da je promijeni.

Heder 14: Promjena i zaključavanje odredišne adrese
Slanje podataka: 1 bajt
Odgovor: ACK (ili NAK ako u data segmentu nije samo 1 bajt)
Setuje adresu na koju će biti poslan sljedeći paket, ali je memoriše u EEPROM-u i svi paketi ubuduže mogu se slati samo na tu adresu! Odredišna adresa je uvijek adresa zadnjeg uređaja kojem je poslan neki paket. To znači da ako se RfM-u obratio drugi RfM sa važećom komandom onda je ACK paket otišao na njegovu adresu i ona je memorisana kao zadnja odredišna adresa. Ako ovom komandom setujemo i zaključamo odredišnu adresu, onda će uvijek biti korištena isključivo ta adresa za slanje svakog paketa. Praktično uređaj više ne može komunicirati sa nekim drugim uređajem, nego samo sa tim čija je adresa memorisana. Ova adresa se pamti u EEPROM-u tako da ostaje setovana i nakon gašenja ili resetovanja.

Heder 20: Uključivanje/isključivanje sistemskih informacija na LCD displeju
Slanje podataka: 1 bajt
Odgovor: ACK (ili NAK ako u data segmentu nema podataka)
Na LCD displeju, koji se može opciono priključiti na većinu naših Rf modema, ispisuju se neke informacije koje mogu jako korisne u fazi razvoja, eksperimentisanja i testiranja Rf modema. Više o tome možete naći u posebnom poglavlju. Kada vam te informacije više nisu potrebne, i ne želite da se više ispisuju, ovom komandom taj ispis možete jednostavno isključiti i obrisati LCD displej. Logično, ako je vrijednost bajta u data segmentu 0 (nula) ispis se isključuje i ako je bilo koja pozitivna vrijednost, ispis se ponovo aktivira.
Treba napomenuti da ova komanda ne sprječava potpuno ispis na LCD nego samo ukida ispis ovih sistemskih informacija. U nastavku su objašnjene komande za kontrolu LCD-a koje vam daju potpunu kontrolu nad ispisom na displej, te njih možete koristiti da na LCD ispisujete sve što vam treba.

Heder 21: Slanje komandi LCD displeju
Slanje podataka: proizvoljan broj podataka do 80 bajta
Odgovor: ACK (ili NAK ako je data segmentu nema podataka)
Ovom komandom se šalju sve standardni kodovi za Hitachi kompatibilne displeje, kao da sa displejom radite u lokalu. Nema niakkavih ograničenja, osim što morate paziti da sa ovim hederom možete salti samo komande displeju a ne i tekst. Za slanje teksta je zadužen sljedeći heder 22.

Heder 22: Slanje teksta za ispis na LCD displeju
Slanje podataka: proizvoljan broj podataka do 80 bajta
Odgovor: ACK (ili NAK ako je data segmentu nema podataka)
Ovo je komnda koja omogućava slanje teksta na LCD. Svi bajtovi iz data segmenta paketa biće proslijeđeni na LCD kao tekst za ispis, što znači da nema ograničenja što se tiče ASCII kodova.

Heder 30: Mjerenje temperature
Slanje podataka: ne
Odgovor: 2 bajta [niži bajt] [viši bajt]
Komanda vraća 2 bajta koja su dobijena čitanjem registara iz DS18B20 senzora. Ako je senzor priključen i ispravan sadržavaće zadnju izmjerenu temperaturu. Očitavanje senzora se vrši svakih 5 sek. i komanda uvijek vraća yadnju izmjerenu vrijednost a ne trenutnu iz senzora jer mjerenje na maksimalnoj 12-bitnoj preciznosti traje oko 750ms što je predugo za čekanje odgovora.

Heder 31: Mjerenje temperature, vraća ASCII niz
Slanje podataka: ne
Odgovor: ASCII niz
Ova komanda koristi istu vrijednost zadnje izmjerene temperature sa DS18B20 senzora, ali vrši konvertovanje u ASCII niz tako da je povratni rezultat komande ASCII niz tipa "27.2" ili "Senzor error!" ako senzor nije priključen ili nije ispravan. String nije null terminated!

Heder 50: Uključuje rele za stalno ili na 1 sek. zavisno od podešenog jumper-a na uređaju
Slanje podataka: 1 bajt
Odgovor: ACK (ili NAK ako je br. releja veći od podržanog u datom uređaju)
Ovom komadom jednostavno uključujemo rele koji je specificiran jednim bajtom u data segmentu. Bajt označava o kojem se releju radi. Trenutno neki naši uređaji imaju samo 1 rele, neki 2, a neki 4 releja. Rele može ostati uključen sve dok ne bude komandovano isključenje, ali može biti i aktiviran samo na 1 sekundu, što se podešava na svakom uređaju odgovarajućim jumper-ima koji su navedeni u dokumentaciji uređaja.

Heder 51: Isključuje rele koji je naveden u komandi
Slanje podataka: 1 bajt
Odgovor: ACK (ili NAK ako je br. releja veći od podržanog u datom uređaju)
Komada suprotna od prethodne, jednostavno isključuje rele koji je specificiran jednim bajtom u data segmentu. Bajt označava o kojem se releju radi.

Heder 54: Uključuje RELE_1 zadati broj sekundi i zatim ga isključuje
Slanje podataka: 1 bajt
Odgovor: ACK (ili NAK ako je br. sekundi nula)
Ako vam prethodna verzija uključivanja releja nije dovoljno fleksibilna, ovom komadom možete uključiti RELE_1 u trajanju od 1 do 255 sekundi. Nakon isteka zadatog vremena biće automatski isključen.

Heder 55: Uključuje RELE_2 zadati broj sekundi i zatim ga isključuje
Slanje podataka: 1 bajt
Odgovor: ACK (ili NAK ako je br. sekundi nula)
Sve isto kao prethodni heder, samo važi za RELE_2.

Heder 56: Vraća trenutni status releja
Slanje podataka: ne
Odgovor: 2 bajta
Vraća trenutni status releja 1 i 2 u dva bajta. Logično, vrijednost 0 znači isključen, a 1 znači uključen rele.

Heder 57: Upravlja rele 1, uključeno/isključeno
Slanje podataka: 1 bajt
Odgovor: ACK
Uključuje rele 1 ako je data bajt = 1, a isključuje za sve druge vrijednosti bajta.

Heder 58: Upravlja rele 2, uključeno/isključeno
Slanje podataka: 1 bajt
Odgovor: ACK
Uključuje rele 2 ako je data bajt = 1, a isključuje za sve druge vrijednosti bajta.

Ako vam više odgovara da jednim hederom upravljate sa uključenjem i isključenjem jednog releja, možete koristiti i ovaj oblik koje nude hederi 57 i 58. Komande 50/51, 54/55 i 56/57 se odnose na iste releje, samo je različit oblik komandi, ali će hederi 50 i 51 raditi i sa uređajima koji imaju više od 2 releja, a ostali neće.

KOMANDE ZA RAD SA KOLOM CC1100/CC1101 KOJE SU IMPLEMENTIRANE KAO DIO RfT PROTOKOLA

U svakom našem Rf modemu nalaze se dva seta parametara (po 40 bajta). To su vrijednosti koje se upisuju u registre CC kola prilikom inicijalizacije. Podešavanje tih registara definiše SVE parametre rada i u slučaju neispravnog setovanja samo jednog bita u nekom registru komunikacija može biti otežana ili sasvim onemogućena!
Prvi set se nalazi upisan u FLASH mikrokontrolera i on se ne može mijenjati. Drugi set se nalazi u internom EEPROM-u PIC-a, i to su vrijednosti koje će biti upisane u CC kolo prilikom svakog uključenja Rf modema. Sve vrijednopsti iz EEPROM-a možete mijenjati da bi ih prilagodili svojim potrebama ili jednostavno ako želite da eksperimentišete i provjerite šta sve CC kolo može i kako to radi u praksi...

Podrazumijeva se da morate jako dobro paziti šta radite tj. pažljivo pročitati Data Sheet od CC kola, koji možete preuzeti iz tabele ispod, ili sa sajta proizvođača. Korištene adrese u internom PIC EPROM-u odgovaraju adresama registara CC kola, i nalaze se na lokacijama 0x00 do 0x29. Preko komandi koje smo ugradili u RfT protokol moguće je čitanje ovih EEPROM lokacija i upis novih vrijednosti, ali isto tako moguće je i diretno čitanje registara iz CC kola kao upis vrijednosti u njegove registre!
To je jako korisno u fazi testiranja i eksperimentisanja jer te vrijednosti se gube prilikom resetovanja uređaja. To znači da će u slučaju upisa pogrešne vrijednosti u neki registar i gubitka komunikacije, jednostavnim resetovanjem Rf modema ponovo biti upisane ispravne vrijednosti iz PIC EEPROM-a i sve će opet raditi normalno.
Kada ste sigurni da vrijednosti koje ste podesili rade kako vam odgovara, možete ih upisati i u EEPROM lokacije. Onda će te vrijednosti biti inicijalne na svakom uključenju Rf modema. Spisak parametara na koje možete utjecati je zaista ogroman, ali ono što će vjerovatno najčešće biti predmet interesa većine korisnika je promjena kanala, adrese, brzine Rf komunikacije, vrste modulacije, načina kodiranja podataka, itd.

Za kraj ovog uvodnog dijela, još samo jedna napomena - ako u PIC EEPROM nekom greškom upišete pogrešne podatke i uređaj nakon uključenja više ne bude radio (može se desiti i da ne radi komunikacija na relaciji PIC - CC1100, jer se i to može konfigurisati u njegovim registrima, ili da ne radi Rf komunikacija sa drugim uređajima), za svaki naš Rf modem postoji HARDVERSKI MASTER RESET. Prilikom MASTER RESET-a sve vrijednosti se čitaju iz FLASH memorije PIC-a, ponovo se upisuju u PIC EEPROM za buduću inicijalizaciju CC kola, resetuju se i drugi parametri Rf modema i inicijalizuju na početne vrijednosti. Uređaj će opet biti u funkciji i raditi po inicijalnim parametrima, kao što je radio kada ste ga nabavili! Zbog toga i postoje 2 seta parametara u uređaju.

Heder 60: Čitanje sadržaja PIC EEPROM-a
Slanje podataka: 2 bajta
1. bajt - adresa
2. bat - dužina bloka(br. bajta koji se čita)
Odgovor: Niz bajta tražene dužine
Komanda omogućava da se pročita jedna ili više memorijskih lokacija PIC EEPROM-a. Maksimalna dužina je određena veličinom bafera, dakle za Rf modeme koji koriste PIC16F886 to je 80 bajta podataka. Znači da se svi registri mogu pročitati u jednom potezu, tj. paketu.

Heder 61: Upis sadržaja u PIC EEPROM
Slanje podataka: varijabilne duzine, najmanje 2 bajta
1. bajt - adresa, a ostali bajtovi čine blok podataka koji se upisuju
Komanda upisuje od zadate adrese niz bajtova koji je naveden u ostatku data segmenta.

Heder 62: Čitanje sadržaja registara direktno iz CC kola
Slanje podataka: 2 bajta
1. bajt - adresa
2. bat - dužina bloka (br. bajta koji se čita)
Odgovor: Niz bajta tražene dužine
Komanda omogućava da se pročita jedan ili više registara. Maksimalna dužina je određena veličinom bafera i adresnim opsegom registara u CC kolu. Svi registri se mogu pročitati u jednom potezu, tj. paketu.

Heder 63: Upis u registre CC kola
Slanje podataka: varijabilne duzine, najmanje 2 bajta
1. bajt - adresa, a ostali bajtovi čine blok podataka koji se upisuju
Komanda upisuje od zadate adrese niz bajtova koji je naveden u ostatku data segmenta.

Heder 64: Softverski RESET parametara i MASTER RESET parametara
Slanje podataka: 1 bajt
Ako je bajt 0 (nula), izvršava se softverki master reset (vrijednosti za inicijalizaciju CC kola i svi ostali parametri se prepisuju iz FLASH memeorije u PIC EEPROM, a zatim se vrši inicijalizacija CC kola sa tim parametrima).
Ako bajt ima bilo koju drugu vrijednost, samo se vrši ponovna inicijalizacija CC kola sa vrijednostima iz PIC EEPROM-a, kao prilikom resetovanja RfM uređaja.

Zaključak

Kao što se može vidjeti iz ovog prikaza, naš RfTalk protokol je veoma jednostavan, veoma nezahtjevan po pitanju resursa i veoma fleksibilan. Kada implementirate osnovne komande, dodavanje novih je krajnje jednostavno jer treba samo ubaciti novi kod (heder) i realizovati potrebne potprograme koji će biti pozvani. Za osnovnu implementaciju RfT-a dovoljan je mikrokontroler sa 1K flash memorije i nekoliko desetina bajta RAM-a!
Naravno, postoje i mnoga druga, gotova rješenja, koja imaju svojih prednosti i nedostataka. Jedan uporedni prikaz RF komunikacionih protokola možete pronaći ovdje.

Dokumentacija: Download Adobe Acrobat Reader [*.pdf]
RfTalk, RF komunikacioni protokol - v 1.0 [ xx Kb]

Prodaja Prodaja

RfT-PIC : PIC mikrokontroler 16F886 sa upisanim Rf-Talk protokolom
10 €

RFM_RP : RfM razvojni paket.
99 €

Dodatne informacije na tel. +381(0)51/346-260 i na email: info@elektronika.rs.ba.
Narudžbe na email: narudzbe@elektronika.rs.ba

home | o nama | katalog | cdovi | prodaja | projekti | linkovi | download | forumi | kontakt | alfanet

Hosted by www.poen.net