Arduina komunikující na vzdálenost 10 metrů

Pepa3000

Re:Arduina komunikující na vzdálenost 10 metrů
« Odpověď #60 kdy: 03. 05. 2017, 15:55:45 »
Citace
Zase available(). Ono to opravdu udělá něco jiného než čekáš. Tady by asi mělo být spíš while(!mySerial.available());


V momente kdy je klavesnice adresovana a zacnou se vymenovat data s utrednou mi prave neprislo jako dobrej napad pouzit
Kód: [Vybrat]
while(!mySerial.available())V pripade, ze budou klavesnice dve a ustredna bude cekat na tu prvni a ta neodpovi, tak ustredna zustane v cyklu toho while.


Mirek

Re:Arduina komunikující na vzdálenost 10 metrů
« Odpověď #61 kdy: 03. 05. 2017, 15:57:38 »
Spoustu zabavy.

Přesně, pokud ho opravdu nechcete zatěžovat komplikacema, tak ať se vykašle na diferenciální vedení, rozchodí si to na stole přes čisté "TTL" (klidně s vlastním protokolem) a pak tam "jen" vloží RS485 driver, přidá nějakou XOR kontrolu, případně naimplementuje modbus. Stejně musí nejdříve přijít na to jak navrhnout aplikační logiku. Dekompozice problému na jednodušší celky ho naučí mnohem víc, než když to nějak slepí a nebude vědět proč.

(Nez se na to vykasle a udela to po rs485. Evidentne to je nejaky student, ktery ma spoustu casu na pokusy a objevovani, kudy ne. Tohle mu neublizi.)

Taky si myslím. Než se dostane k 10m vzdálenosti nodů v zarušeném prostředí nebo dvěma klávesnicím, tak přijde ještě na hodně dalších otázek.
A právě proto by měl použít osvědčenou základní technologii - RS485 - která je určená přesně na tyto věci a zvládne je levou zadní. Prostě vezme kroucený pár, 2 zakončovací odpory a zapojí. K tomu se přečte např. toto a zařídí se podle toho: http://www.ti.com/lit/an/snla049b/snla049b.pdf

Experimenty s TTL na 3+ zařízení a > 10m délky bych opustil.

MarSik

Re:Arduina komunikující na vzdálenost 10 metrů
« Odpověď #62 kdy: 03. 05. 2017, 16:09:16 »
A právě proto by měl použít osvědčenou základní technologii - RS485 - která je určená přesně na tyto věci a zvládne je levou zadní. Prostě vezme kroucený pár, 2 zakončovací odpory a zapojí. K tomu se přečte např. toto a zařídí se podle toho: http://www.ti.com/lit/an/snla049b/snla049b.pdf

Experimenty s TTL na 3+ zařízení a > 10m délky bych opustil.

Až na to, že v tuhle chvíli bych z tohohle soudku doporučil spíš plně duplexní 2x RS422, protože on s tím zápasí na úrovni pochopení jak tu sériovou linku vůbec používat. RS485 mu přidělá komplikace s tím, jak přepínat příjem/vysílání na obou stranách. Ty dva RS422 páry by ho nenutily opustit pohodlí Serial třídy v Arduinu za cenu dvou drátů (a to doufám, že tam má společnou zem). Proto je to TTL v tuhle chvíli úplně dostačující, on se na 10 metrů totiž hned tak nedostane.

MarSik

Re:Arduina komunikující na vzdálenost 10 metrů
« Odpověď #63 kdy: 03. 05. 2017, 16:13:30 »
Citace
Zase available(). Ono to opravdu udělá něco jiného než čekáš. Tady by asi mělo být spíš while(!mySerial.available());


V momente kdy je klavesnice adresovana a zacnou se vymenovat data s utrednou mi prave neprislo jako dobrej napad pouzit
Kód: [Vybrat]
while(!mySerial.available())V pripade, ze budou klavesnice dve a ustredna bude cekat na tu prvni a ta neodpovi, tak ustredna zustane v cyklu toho while.

V každém případě, ti to přeskočí ten read(), protože odpověď ještě nestihla přijít. Samozřejmě se tam pak hodí přidat timeout. Ale zkus zatím zapomenout na dvě klávesnice a vymysli jak spolehlivě komunikovat alespoň s jednou.

Mirek

Re:Arduina komunikující na vzdálenost 10 metrů
« Odpověď #64 kdy: 03. 05. 2017, 16:14:02 »
A taky dostal...
Prosímtě, neber to nijak zle, ale abych věděl kam tě dále směrovat, uvítal bych nějakou informaci o tvém backgroundu z programování a číslicové elektroniky. Co máš za vzdělání, kolik praxe a v čem, programoval jsi i něco mimo ty uváděné jednoduché aplikace v Arduinu?


Mirek

Re:Arduina komunikující na vzdálenost 10 metrů
« Odpověď #65 kdy: 03. 05. 2017, 16:23:48 »
A právě proto by měl použít osvědčenou základní technologii - RS485 - která je určená přesně na tyto věci a zvládne je levou zadní. Prostě vezme kroucený pár, 2 zakončovací odpory a zapojí. K tomu se přečte např. toto a zařídí se podle toho: http://www.ti.com/lit/an/snla049b/snla049b.pdf

Experimenty s TTL na 3+ zařízení a > 10m délky bych opustil.

Až na to, že v tuhle chvíli bych z tohohle soudku doporučil spíš plně duplexní 2x RS422, protože on s tím zápasí na úrovni pochopení jak tu sériovou linku vůbec používat. RS485 mu přidělá komplikace s tím, jak přepínat příjem/vysílání na obou stranách. Ty dva RS422 páry by ho nenutily opustit pohodlí Serial třídy v Arduinu za cenu dvou drátů (a to doufám, že tam má společnou zem). Proto je to TTL v tuhle chvíli úplně dostačující, on se na 10 metrů totiž hned tak nedostane.
Proč ne. RS422 klidně může použít taky. A samozřejmě že pro začátek, když bude psát komunikaci jen pro 2 zařízení na stole na pár desítek cm, může použít TTL bez budičů. Až mu to bude chodit, může to doplnit o RS-422 / 485 budiče.

Pro upřesnění: RS422 (full duplex) potřebuje 2x tolik budičů než RS485 (half-duplex - musí se přepínat směr vysílání/příjem).

Pepa3000

Re:Arduina komunikující na vzdálenost 10 metrů
« Odpověď #66 kdy: 06. 05. 2017, 12:52:10 »
Citace
A obecně alarm, dvě klávesnice a pár senzorů (a RFID/NFC?) je pořád dost vágní. I jako hračka by to asi nemělo být úplně snadno obejitelné obzvláště pokud to bude u vstupu do domu... Bacha třeba na replay attack (odposlechnutí a pozdější zopakování komunikace).

Jaky protokol vlastne pouzivaji officialni zabezpecovacky  jako Jablotron, DSC, Paradox mezi ustrednou a klavesnici a jak je takovy prenos chraneny proti odposlechu?
Celkem casto dnes vidam v provozu DSC PC1550 a tam ocividne neni problem odposlechnout stisknuta tlacitka.