Bezdrátový přenos dat pomocí Manchester kódu mezi dvěma MCU

Má někdo zkušenosti s bezdrátovým přenosem dat mezi dvěma MCU, případně pomocí jiného kódu? Potřebuji přenášet data v pásmu 433 n. 868MHz na vzdálenost několika málo metrů, ale v v poměrně zarušené oblasti.
Díky za všechny nápady.

:arrow_right: administrator: přejmenováno z "přenos dat pomocí Manchester kódu"

Nejednodušší je koupit hotové moduly např IQRF nebo od nějakého výrobce čip pro rádiovou část např
MRF89XA, MRF49XA, SX1210 atd.

Díky za tip. Pro mé potřeby trochu moc složité a drahé.

Podívej se třeba tu tme.eu/cz/katalog/index.phtm … meters%3D1, některý z modulů by ti mohl vyhovovat.
Koukej po transceiverech od HOPE MICROELECTRONICS. Je tam asi za 170,- na 868MHz s FSK. Mám takový pocit, že pásmo 433 už snad nebude dostupné pro volné využítí, ale nevím co je na tom pravdy a případně od kdy.
Jesli je 200-300,- za modul moc, tak to pak nevím.
Pomocí kódování manchester se přenáší signál na LAN. Jde o přenos v základním pásmu. To nemůžeš používat pro bezdrátový přenos. Ikdybys to dostal do vzduchu a zas chtil, zabíralo by to nepřijatelnou šířku pásma. Pro bezdrát potřebuješ přenos v přeloženém pásmu (=modulací harmonického signálu).
Vyšší odolnost proti rušení má FSK. Jelikož o tom ale asi moc nevíš, tak si buď jist, že stavba modulátoru a demodulátoru z dikrétních součástek je mimo tvoje možnosti. Dneska se tohle neřeší. Koupíš moduly, připojíš uart a jedeš.

Navážu na pityyho zkus třeba mouly FSK od flajzara flajzar.cz/elektronicke-souc … ly-868mhz/ levné - snadné použití - žádné kódování a dekódování - to (FSK- jak je patrné z názvu) zařídí samotný modul - jen výstup UARTU na vstup vysílače a na druhé straně obráceně - mám, používám , jsem spokojený, ale cheš li něco kvalitnějšího- s ohledem na to rušení asi si budeš muset připlatit .

MRF49 je asi nejlepší řešení, co se týče ceny, dokumentace a ukázkových programů . . . .

Pánové,
všem děkuji za rady a náměty, nakonec i za skrytou kritiku. Jsem od přírody spíše nepsavec, ale potřeba se trochu ospravedlnit je silnější než můj odpor ke klávesnici a hlavně potřebuji z vás vysát nějaká ta moudra.
Jsem v oblasti přenosu dat pomocí MCU úplný začátečník, ale s vf moduly už jsem nějakou zkušenost nasbíral -dobrou s moduly os italské firmy Aurel, špatnou s čínskými produkty. V žádném případě mne nenapadlo bastlit vf moodul z diskrt.součástek. Nejdříve jsem RC realizoval pomocí obvodů fy Holtek (HT12E a HT12D) a Rf modulů Aurel - chodilo to docela spolehlivě na 433MHz i v pražském zamořeném prostředí. V jiné aplikaci jsem použil pro čtení maticové klavesnice MCU ATTINY2313 a aby se tento procesor moc neflákal, rozhodl jsem se ho využít i pro modulaci Vf modulu. A problémy začaly, neboť jsem toho o vf přenosech dat moc nevěděl a o MCU také ne. Na stránkách fy Mikroelektonika (jejíž překladač Céčka jsem začal používat) jsem našel příklad právě na Vf přenos dat pomocí Manchester kodu, včetně HW zapojení s df. moduly.
Někde v zadu v paměti mám zápsáno, že pro úspěšný přenos dat je zapotřebí použít nějakého přenosového protokolu a proto mě překvapuje možnost přímo modulovat vf signál jen sériově poslaným “číslem” z MCU. A moje otázka zní - jak moc je tento přenos odolný vůči chybám přenosu vzniklým rušením vf signálu? Další problematická otázka se týká spolehlivost vf modulů hlavně jejich odolnosti vůči rušení. O kolik je frekveční modulace lepší než amplitudová - jedná se o jednotky procent či řádově více?

Díky a hezký večer

Přenosový protokol jen určuje význam jednotlivých bytů. Ty jsou však stálej jen “sériově poslaná čísla”. Rozdíl je v tom, že když pošleš jen 1 byte, nemáš možnost zjistit, zda je to opravdu ten, co jsi poslal (pokud tu kontrolu nemá implementovanou vf modul). Když použikeš nějaký přenososvý protokol, bude jeho součástí i nějaká zabezpečovací informace, která ti řekne, zda byl přenos uspěšný či nikoli, ale sama o sobě ho němůže žádným způsobem “zabezpečit” (samoopravné kódy bych neřešil). Zabezpečení přenosu je vždy na tobě.

Hezké ráno, pánové!

Poslední příspěvek od páně pítýho mne velmi potěšil, přeci jenom to s tou mou pamětí není až tak hrozné. Nicméně, má volba Manchester protokolu asi nebyl ten správný krok, byť k němu páni z Mikroelektroniky navádějí. Nu, a když vezmu v úvahu, že nebudu přenášet žádná citlivá data ani řídit žádné životu nebezpečné zařízení, ale hračky svých potomků, pak musím připustit, že by asi opravdu mohlo postačit poslat vždy jen “obyčejný” bajt 3x za sebou a na straně příjmače zkontrolovat jejich shodu.
A pak se jen modlit aby rušení nebylo v tu chvíli příliš vysoké.
A proto bych vás rád znovu poprosil o info, pokud máte skutečně praktickou zkušenost s vf moduly s ASK či FSK s ohledem na rušení. Jde mi o to, jestli stojí zato moduly od Aurela zahodit a koupit nové s frekv.modulací.
S pozdravem

Bud pouzi paritny byt aspon zistis ci data prisli v pohode. Alebo jednoduchcsie riesenie posli jeden bajt a potom druhy ktory bude negaciu toho prveho… na prijimacej strane tak isto prijmes prvy znegujes ho a porovnasas s druhym prijatym ak je zhoda doslo to v poriadku…

FSK zjednodušeně znamená, že nula a jednička mají každá jinou frekvenci- na straně přijímače se pak tyto vyhodnocují a převedou zpět na jedničky a nuly - ale pozor mám zkušenost (s moduly od flajzara), že nedrží hlavně při delších vzdálenostech šířku pulsu, ale u 1Byte by to neměl být problém.
A jen tak pro informaci Holtek taky používá FSK plus samozřejmě další kódování.

Tady je to co požívám já.Je to soubor .c který by měl jít otevřít ve všech C kompilerech. Je psaný sice pro moduly TX868FSK1 a RX868FSK1 , ale použitelný pro jakýkoliv.

Princip je takový: vysílač pošle 3x stejný byte přeložený do grayova kódu. Kvůli rozdílům v délce pulsu na vysílací a přijímací straně - až 20% posílám jedničku a nulu jako různě dlouhé pulsy v úrovni H - na přijímací straně pak čekám na vzestupnou hranu a měřím délku pulsu v High. Následně se přijatý byte přeloží zpět z grayova kódu a porovná s definovaným kódem - je li shodný , provede se daná akce a další dva se nevyhodnocují, není li pak jsou ještě dva pokusy. Pro každý stav (např. vypnuto/zapnuto) je zvlášť kód.

Jsou tedy použity 3 stupně zajištění spolehlivého přenosu - 1. FSK zajišťuje modul 2. odtranění časové závislosti na přijímací straně posíláním “nuly” a “jedničky” ve tvaru 10 v různém poměru 3. použitím grayova kódu.

Grayův kód používám proto, že fce pro kód/dekód jsou v knihovně CV a taky jsem četl,že ho používají třeba kabelové televize, nebo odpovídače v letadlech - takže asi bude spolehlivý.
vys_prij.c (7.28 KB)

Grayův kód má smysl pouze u vícestavové modulace, u dvoustavové nikoli. Zajišťuje to, že 2 nejbližší modulační funkce odpovídají změně dat pouze o 1 bit. Jesliže ovšem nepoužíváš samopravný systém, je to zbytečné.
Podle toho, jak inteligentní jsou moduly, může být vhodný právě zmíněný manchester (zamezí dlouhé sérii konstantních symbolů, vyžaduje však dvojnásobnou modulační rychlost). To v případě, že by ten modul dělal pouze změny frekvence/amplitudy dle přicházejících dat. Při AGC/AFC by se pak mohl přijímač dostat do nevhodných pracovních oblastí.
Když je aspoň trochu inteligentní, bude si modulaci a kódování dělat sám nezávisle na vstupních datech.
U těch modulů od flajzara nějak nemohu najít žádné podrobnější info. Z toho, co na jejich webu vidím, jsou to jen primitivní modulátory bez jakékoli inteligence. Skoro bych to rád viděl na analyzeru jesli to nějaké kódování dělá nebo ne. Má někdo podrobnější info?

U transceiveru RFM12B si můžete zvolit i přenosový kanál - kdyby v jednom byl bordel abyste nebyli v kopru. Jsou ovšem složitější na obsluhu.

pro epes:
používám moduly uvedené výše - TX868FSK1 a RX868FSK1 od fy flajzar - bude to nějaká čína on sám je nevyrábí. Testoval jsem je u nás v práci - tedy v průmyslovém prostředí a dosah byl mezi mašinama a kovovýma regálama navíc přes železobetonový strop zhruba stejný jako je uvedený na stránkách flajzara - kolem 35m bez problémů - dál už jsem musel signál hledat, ale doma v rodinném domku to chodí bez problémů - to vše za použití kusu drátu zastřiženého na doporučenou délku jako antény. Prodávají se ale i originál laděné na 866MHz - s těma to určitě chodí ještě lépe.Ten gray kod tam mám jen pro sichr, možná zbytečně , jak píše pityy - jinak ty funkce jsou v tom souboru -unsigned char bin2gray(unsigned char n) pro převod do graye a **unsigned char gray2bin(unsigned char n) **pro dekódování takže psát je nemusíš ale klidně je můžeš nahradit svými pro manchester -no já jsem si to mikro C stahl, abych se podíval jak to vypadá a příde mi to trochu složitější ale máš tam v examplech hotový program pro vysílač i přijímač i se zapojením - jen nahrát a zkusit. Třeba jen na nepájivém poli a s tvýma Aurelama. Jinak jsem se to snažil psát tak , abys to mohl jenom překopírovat do svojeho projektu. Zkusil jsem to v mikru nechat přeložit a neházelo to žádné chyby, takže bys neměl mít problém. Jinak je to moc pěkný IDE, ale debugger je proti AVR studiu jen chudý příbuzný.

Ještě k těm zkouškám - probíhaly tak, že jsem posílal v minutových intervalech střídavě dva odlišné byty každý celkem 100x a na přijímací straně počítal kolikrát každý přišel , navíc jsem počítal , kolikrát přišel jiný byte. Na displeji se pak zobrazil výsledek. Ten byl takový, že buď bylo 100, 100 a 0 nebo tam kde už nebyl signál tak 0,0,a 0. Taky jsem měřil na výstupu rx modulu osciloskopem a zjistil, že pokud nevysílá vysílač tak je tam změť jedniček a nul a teprve při signálu se to uklidní- takže moc selektivní asi nebude ,proto mám jako start bit ty 3ms v nule. Taky jsem tím osciloskopem zjistil ty nesrovnalosti v čase.

pro pityy:
no co bys taky chtěl za ty peníze, ale FSK to asi má - výsledky zkoušek byly v porovnání s ASK moduly od téhož prodejce nesrovnatelně lepší.
No a vůbec nic nemám proti modulům, které dporučuješ - asi budou i kvalitnější - jen jsem epesovi postoupil své zkušenosti s konkrétním modulem a konkrétním SW pro něj - a o to mu asi šlo.