script22 Postat Octombrie 21, 2012 Partajează Postat Octombrie 21, 2012 Sa zicem ca sunt mai multe transmitaotare pe 433 10 de exemplu care toate trimit un singur bit (da) si seria lui din 8 biti si dupa intra in idle si am un receptor care primeste acel da si face o comanda.acm problema e daca 2 trimit in acelasi timp seria si dau respectiv as mai putea primi corect acele date.o solutie ar fi sa pun in emitator un random waitms si dupa sa trimit datele de 2 3 ori sa fie la toate montajele la fel .astfel incerc sa evit acea coliziune de date.ce pareri contra si pro aveti sau alte solutii mai bune. Link spre comentariu
simplex Postat Octombrie 21, 2012 Partajează Postat Octombrie 21, 2012 Trebuie ca fiecare emitator sa transmita doar intr-o fereastra de timp alocata lui (multiplexare in timp).Asta este o solutie. Link spre comentariu
godFather89 Postat Octombrie 21, 2012 Partajează Postat Octombrie 21, 2012 ce vrei sa faci? Link spre comentariu
sebip Postat Octombrie 21, 2012 Partajează Postat Octombrie 21, 2012 1. ... solutia data de simplex2. Daca sunt conectati la senzori ... e posibil sa nu apara prea des situatii cind trebuie sa transmita simultan.3. Daca transmit simultan ...se poate seta un timp de "retry" (retransmitere) diferit la fiecare emitator astfel incat dupa o vreme de retransmisii vor transmite fiecare in clar mesajul (cel mai scurt timp la cel mai prioritar emitator)4. implementarea unui protocol de comunicatie: - master/slave - un master care chestioneaza slave-urile pe rand- de transmitere a unui "fanion" de la un nod la altul astfel incat doar emitatorul cu fanionul poate transmite date-de solicitare a accesului la transmitere ...sa nu transmita toate datele ci sa se stabileasca care nod (emitator) transmite datele (gen fiecare nod face un apel si care primeste unda verde acela transmite datele)...si lista poate continua.Ar fi util sa ne spui destinatia sau scopul proiectului ca sa ai sansa sa primesti o sugestie cat mai utila. Link spre comentariu
script22 Postat Octombrie 22, 2012 Autor Partajează Postat Octombrie 22, 2012 din pacate nu pot oferi mai multe informatii fiind un proiect propiu.iedea e ca fiecare transmitator nu are si un receptor din motive de cost.pai e simplu fiecaer trimite seria de 8 biti si un flag dupa care se oprestems pentru raspunsuri deci solutia cea mai buna e cum am zis cu un waitms dupa care retransmit datele.asa ca o scurta informare datele se trimit cam la 10 20 minute deci sanse de coliziune sunt mici. Link spre comentariu
godFather89 Postat Octombrie 22, 2012 Partajează Postat Octombrie 22, 2012 Tinand cont ca sunt 10 transmitatoare (nu transceivere) independente, fara un "ceas" comun, probabil cel mai sigur (probabilistic vorbind) este sa pui un delay random intre repetarea mesajelor.Vrei sa faci un sistem in care detectezi timpii la care ajunge fiecare transmitator intr-un anumit loc? Link spre comentariu
script22 Postat Octombrie 22, 2012 Autor Partajează Postat Octombrie 22, 2012 nu , idea e sa primesc care trasmitator a transmis primu si dupa sa execut o serie de comenzi interminal mai multe date mu pot oferi Link spre comentariu
simplex Postat Octombrie 22, 2012 Partajează Postat Octombrie 22, 2012 idea e sa primesc care trasmitator a transmis primu si dupa sa execut o serie de comenzi interminal mai multe date mu pot oferiSi daca trimit doua in acelasi timp de unde stii care a trimis primul? Link spre comentariu
simplex Postat Octombrie 22, 2012 Partajează Postat Octombrie 22, 2012 Acum ca este cit de cit mai clar ce vrei sa faci devine evident ca poti programa emitatoarele sa transmita la intervale de timp astfel alese incit sa fi sigur 100% ca vei primi corect mesajele de la toate chiar daca ar aparea coliziuni multiple. Ideea este sa transmiti de mai multe ori, acelasi mesaj, la intervale de timp nu aleatoare ci proportionale cu numere prime. Obtii astfel un fel de sincronizare implicita prin coliziune a emitatoarelor chiar daca ele nu stiu unele de altele si emit la momente de timp imprevizibile, presupuse nu de ordinul milisecundelor ci mult mai mari, secunde, minute, etc.. Caz 1 - Doua Emitatoare a ) t0--1 b ) t0--x--3 Primul este programat sa emita de doua ori, la interval de 1ms, mesajul pe care trebuie sa-l transmita iar cel de-al doilea tot de doua ori dar la 3ms. Daca se nimereste ca cele doua emitatoare sa transmita in acelasi timp, notat t0, atunci cea de-a doua incercare a fiecaruia nu va mai fi sigur o coliziune. Caz 2 - Trei Emitatoare a ) t0--1--3 b ) t0--x--x--5--7 c ) t0--x--x--x--x--11--13 Evident, din schema de mai sus rezulta ca pentru o coliziune tripla nu sunt probleme. Totusi, poate sa apara coliziune intre , de ex., b si c in t0 si b si a in t0+5ms. Ca urmare, prima incercare de transmisie a lui b se pierde in coliziunea cu c iar cea de-a doua in coliziunea cu a dar incercarea numarul trei, la 7ms, va fi de succes. Cum suma a doua numere prime nu poate fi tot un numar prim esti sigur ca a nu va mai intra in coliziune a doua oara nici cu b nici cu c, a mai emitind la t0+6ms si t0+8ms. Oricum ai incerca sa aranjezi coliziunile tot receptionezi o varianta corecta a mesajelor: a, b, c. Poti ordona si altfel momentele de retransmitere, ca mai jos: a ) t0--1--x--x--7 b ) t0--x--3--x--x--11 c ) t0--x--x--5--x---x--13 Problema este ca odata cu cresterea numarului de emitatoare trebuie sa cresti identic si numarul de retransmisii daca vrei sa ai protectie 100% impotriva celei mai dezavantajoase variante de coliziune. Totusi, chiar la 10 emitatoare, cred ca te poti opri la 1 transmisie si trei retransmisii, probabilitatea a mai mult de trei coliziuni repetate fiind infima. ------------ Nota: Aceasta chestiune referitoare la coliziuni trebuie rezolvata cit mai bine deoarece in canalul de comunicatie mai ai si zgomot care iti perturba suplimentar transmisia radio. Bitul de paritate detecteaza erori simple de 1 bit dar nu le si corecteaza. Cel mai probabil, va trebui sa codezi mesajele folosind coduri corectoare de erori pentru cel putin 2 biti parazitati pe mesaj sau pachet. Link spre comentariu
script22 Postat Octombrie 23, 2012 Autor Partajează Postat Octombrie 23, 2012 solutia ta pare char originala mi-am stors creeri cu o solutie buna pentru ca 80% ne niciodata destul.sa zicem ca nu poate rezolva un check din cauza a 2 biti dar reprimeste iar comanda ce face o ia de la inceput ? Link spre comentariu
Vizitator yo8sct Postat Octombrie 26, 2012 Partajează Postat Octombrie 26, 2012 de ce nu folosesti pereche emitator-receptor ???1. receptorul asculta freceventa de 433 si daca e libera lasa emitatorul se emita....2. daca frecventa e ocupata, receptorul inhiba emitatorul pana cand frecventa devine liberastima, Link spre comentariu
godFather89 Postat Octombrie 26, 2012 Partajează Postat Octombrie 26, 2012 Problema e ca pot sta 5 la coada iar cand canalul devine liber, toate 5 sa se inghesuie sa transmita si de aici, problema de mai sus.De altfel, daca ai 10 receptoare, mai bine le setezi pe 10 canale diferite (cu tot cu emitatoarele) si nu iti mai bati capul. Link spre comentariu
stefan_k Postat Octombrie 26, 2012 Partajează Postat Octombrie 26, 2012 reprimeste iar comanda ce face o ia de la inceput ?Cred ca te referi la solutia lui simplex si la faptul ca se trimite de mai multe ori "comanda".E simplu, ai zis ca un emitator trimite o comanda la intervale mari de timp (10-20 minute).Comenzile repetate la cateva milisecunde vor fi tratate ca o singura comanda.Solutia lui simplex mi se pare cea mai ok, respectiv: - emitatorul nu are de unde stii starea masterului - ca sa fii sigur ca masterul a primit comanda, trebuie sa faci in asa fel incat din start comenzile sa nu se poata suprapune. - aceasta se poate rezolva, dupa solutia lui simplex, prin matricea de numere prime, o comanda constand din repetarea codului la intervale fixe si scurte de timp, preprogramate pentru fiecare emitator. Odata ce un cod a fost citit corect, el va fi ignorat in caz ca se repeta mai repede de ... xxx milisecunde (sau cateva secunde, depinde cum iti calculezi algoritmul).Evident, ca dezavantaj va fi faptul ca un emitator nu poate trimite doua comenzi succesive mai repede de ... (timpul calculat).Scuze daca lucrurile astea erau clare. Solutia lui simplex mi se pare "geniala". Link spre comentariu
script22 Postat Octombrie 26, 2012 Autor Partajează Postat Octombrie 26, 2012 acm mai ramane sa iau 2 microcontrollere sa fac teste. Link spre comentariu
dodo007 Postat Decembrie 18, 2012 Partajează Postat Decembrie 18, 2012 Am si eu un proiect asemanator, dar cu 4 emitatoare si un receptor (de fapt am doua proiecte, dar celalalt are doar doua transcivere si situatia este mai clara acolo - folosesc RFM12 simplu si RFM12BP pentru proiectul 2).Intrebarea mea de novice este cum ati facut in final citirea celor 10 emitatoare. Si eu am gindit aproape ca Simplex, doar ca vroiam sa emita la fiecare minut , cite unul din emitatore pe rind (minut 1 - emitator 1, minut 2 - emitator 2, etc). Dar pentru asta "ceasurile" nu ar trebuii sa fie "atomice" sa nu se decaleze in timp si in final sa se suprapuna ) sau nu pricep eu bine. Algoritmul numerelor prime l-am inteles si rezolva cred problema, dar nu e risipa prea mare de energie?. Eu trebuie sa fac neaparat economie. A doua varianta m-am gindit sa ma folosesc de 4 canale (RF-urile astea inteleg ca au mai multe la 2,5KHz interval), fiecare emitator cu canalul lui si receptorul sa scaneze cele 4 canale dupa un algoritm fixat, astfel: primul venit, primul servit si apoi la urmatoarea trecere, ignorarea celui/celor citit/citite, pina la citirea celor patru, dupa care reluarea ciclului. Inca nu am inceput proiectele si un sfat bun ar fi util.Bafta. Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum