Fórum témák
» Több friss téma |
Lenne egy nagyon fontos kérdésem. A napokban kezdtem neki egy projektnek és a szekvencia folyamatábra elkészítésekor fennakadtam egy bizonyos részfeladatban.
Mégpedig a fennakadadás egy kétutas kommunikáció megvalósításában nyilvánul meg. A feladat az lenne, hogy egykétirányú kapcsolatot hozzak létre alacsony frekvenciás (125KHz) RFID reader és spoofer között. Vagyis képzeljétek el, hogy van egy eszközöm. És abban van egy reader és egy spoofer. És a spoofer az 1-es számot küldi, míg a reader folyamatosan veszi azt és nem történik semmi. Van még egy eszközöm, amiben van még egy reader és egy spoofer. A második eszközben a spoofer a ketten számot küldi és a reader veszi, de nem történik semmi. Mikor a két eszközt közel teszem egymáshoz, akkor az egyes számú eszköz veszi a második eszköz kettes számú adatát, és a kettes számú eszköz veszi az egyes számú eszköz egyes adatát. És akkor az egyes számú eszköz kiírja a kijelzőre, hogy 2, a kettes számú, azt írja ki a kijelzőre, hogy 1. Viszont nekem az interferencia zavar be, hiszen ha a két eszközt egymáshoz közel tesszük, akkor az adatok kavalkádja miatt az értékek nem megfelelőképp mennek át egyik helyről a másikra, hiszen a két eszköz működése folyamatos. Mit tehetek? Nagyon szépen köszönöm előre is, megtisztelő válaszaitokat!
Az egyik eszköz legyen master, azaz vezérelje a kommunikációt. Ez adjon, és várjon egy ideig a párja válaszára.
A második eszköz csak akkor adjon, ha kapott valamit.
Sajnos ez a Wire alapelgondolás nem jó, hiszen mindkét eszköz egyformán kell működjön, mert több eszköz is lehet. Tehát pl. ha van 100 eszköz, amiből 30 master és a többi slave. És tegyük fel, hogy a master találkozik a slave-val, az úgy tökéletes. De mi van, ha a master a masterrel találkozik, és akkor mindkettő ad.... Mert a Multi-Master megoldás az I2C-n belül nem lenne rosz, de ahogy mondtad, az csak akkor működik, ha a fő master megoszt korlátlan slave-nek. Viszont, ahogy mondtam ez nem jó, mivel a slave eszköz pl. egy harmadik eszközzel találkozva master kell legyen és a harmadik eszköz slave. Aztán a harmadik eszköz, master kell legyen a negyedikkel kommunikálva ami slave kell legyen. De logikailag eléggé megállapíthatlan, hogy mikor melyik kell legyen, sőt képtelenség. Ezért kell a master-slave kapcsolatot eliminálni, hanem az egyenlőséget kell megtartani, hogy mind a két eszköz egyszerre ad is és vesz is, és mikor más értéket fognak mint amit önmaguk adnak és vesznek, akkor az interferenciát elkerülve a saját adatjukat kiszűrve az interferenciából a másikét tudják felhasznosítani. Van még egy elég érdekes megoldás, ami viszont a számosság miatt megint nem működne megfelelően. Az időeltolódáson alapuló kettős átvitel. Vagyis például, hogy az egyes eszközön a Tx és az Rx 0,1 másodperces intervallumba változik. A második eszközön pl. 0,2 s a Tx aktivitási időintervalluma, az Rx-é is 0,2. És minden eszköznek más az Rx és Tx működési intervalluma, ezért bármely két eszköz között esszejön egy olyan kis időkülömbség, ami alatt a kettős adatcsere összejöhet... Viszont az eszközök gyarapodásával, az időkülömbség nő, ezért pl. ezer eszköz esetén elég sokat kéne az eszközök egymás vezetéknélküli kontaktusában legyenek. És a lényeg pedig, hogy ilyenről ne lehessen szó Hanem, elég legyen egy maximum 2 másodperces passzív érintkezés a két eszköz között. Ezért szerintem az interferenciából való adatkiszűrés lenne a megoldás, csak egyelőre nem tudom, hogy hogy lehetne ezt megvalósítani... Amúgy köszönöm nedudgi válaszodat. Mít szóltok?
Veeték nélküli LAN megoldásokat tanulmányozd.Ott egy csomó algoritmus megfordul.Valamelyik csak jó neked.
Két külön frekvencia? egyiken mindegyik ad a másikon mind vesz,így sajátjuk nem okoz interferenciát? Esetleg mindegyik ad ,és vesz folyamatosa.Ha nem ugyanazt veszi mint amit adott akkor valaki zavarja ,kehet gondolkodni hogy mi a teendő.
Ugyanazt a csatornát, ugyanolyan kódolással, egyidőben nem tudja mindkét eszközöd használni, ez lehetetlenség.
A megoldás ott kezdődik, hogy valamelyik paramétert meg kell változtatni: - lehet másik csatornát használni (eltérő frekvencia) - lehet más kódolást használni (FSK/ASK/PSK) - lehet nem egyidőben adni (TDM) Az első kettő esetében nyilván a hardverhez hozzá kell nyúlni, vagy legalábbis több konfigurációban kell tudnia működni nekik, és valamilyen módon csatornát/kódolást kell tudni választaniuk. Az utolsó esetben valamilyen collision detection szükséges, azaz észre kell tudni venniük, hogy más is van a közelben, és valamilyen algorimussal megoldani, hogy egyidőben ne akarjanak ketten adni. Erre léteznek algoritmusok, Wifi/GSM/Ethernet/BlueTooth témakörökban érdemes szétnézni.
Nem tudom mennyi a minimális adásidő. Lehetne olyan ,mindenki figyel,és 2s ciklusokban ad.Oly módon hogy a 2s-t felosztod 16 részre.Minden szerkezetnek adsz egy címet.pl 1-9999 .így kapsz 4 db bcd számot ez a 16 időrést pont lefedi.minden szerkezettel csak a saját számának megfelelő időrésében adsz.így ha figyeled az ütközéseket (sőt nem is kell figyelni,mikor nem adsz csak akkor veszel.) szerintem lesz olyan pillanat ,amikor bármelyik megkapja a bárkitől származó információt.(ha egy időrésbe 4-5 ször el tudod küldeni a csomagot ,szerintem nem fontos a szinkronizálás,bárhogyan csúsznak el lesz olyan csomag ami megérkezik.
A frekvencia azonos kedves "proba". Igen, kedves "_vl_". Azt tudom, hogy nem tudja használni, de a kiszűrés lehetséges ha két eszköz van és az egyik eszköz a saját adatát kiszűri az interferenciából, megkapja a maradék metaadatot. Időközben a Manchester kódolással próbálkoztam, kisebb nagyobb sikerrel. Viszont az általad ajánlott megoldások közül a kódolások és a különböző csatornaválasztás nem a célnak megfelelő. Még a kódolás sem, mivel a projektnél nagyon fontos a tiszta adat és a minél nagyobb egyszerűség. Viszont az időosztásos nyalábolással nagyon szuper ötletet adtál. Nem is gondoltam volna.... A Collision Detection-ra pedig maga az interferencia tökéletes. Tehát mindkét eszköz folyamatosan ad és vesz. És mikor a két eszköz találkozik az interferenciával, végbemegy az észlelési folyamat; vagyis a hibás adat tulajdonképpen a collision detection tárgya. És akkor onnantól kezdve megáll a folyamatos adás vétel és elkezdődik a TDM. Algoritmussal is meglehetne, mert pl. egy egyedi hangfrekvencia egy kis Fourierrel transzformációval tuti lenne, de minek bonyolítani... Így legalább a negatívumot fellehet használni pozitívummá.
Nagyon szépen köszönöm mindegyikötöknek all my people! További szép estét! Üdvözlettel és köszönettel, Bocz Hunor-Chris! |
Bejelentkezés
Hirdetés |