Arduino komunikace po i2c

Pavel2

Re:Arduino komunikace po i2c
« Odpověď #15 kdy: 05. 01. 2015, 13:35:50 »
Teoreticky... na RS485 pripojim http://www.gme.cz/max487cpa-dip8-maxim-p433-111. Master pak treba vysle znak A a toho se chytne Slave 1. Po "selektovacim" znaku pak budou ostatni vedet ze Master komunikuje se Slavem 1 a ostatni maji mlcet dokud se neprijme ridici slovo "end"....
Tak nejak je to mozne udelat?



Re:Arduino komunikace po i2c
« Odpověď #16 kdy: 05. 01. 2015, 13:42:22 »
Tak nejak je to mozne udelat?
Jo. Akorát bych přenos nekončil nějakým symbolem, ale udělal bych paket, kde první byte by byl délka. Když uděláš koncový symbol, tak budeš muset ošetřovat, aby se ti náhodou neobjevil uprostřed dat, což je opruz. Když budeš mít pakety s malou délkou (třeba do 255B) a první byte délku paketu, tak se maximálně můžeš přeslechnout v délce nebo může dojít k přerušení přenosu v průběhu posílání paketu, což jsou oboje věci, ze kterých se dá snadno zotavit (z toho druhýho timeoutem, to první ti může na chvilku komunikaci rozhodit, ale pak se to vrátí do normálu - což obvykle nevadí, tak jako tak bys tam asi chtěl nějaký potvrzování packetů).

Ten protokol ani nemusíš vymýšlet, docela dobrý je na tohle třeba MQTT-SN (staré jméno MQTT-S) - neplést s MQTT.

v

Re:Arduino komunikace po i2c
« Odpověď #17 kdy: 05. 01. 2015, 14:19:49 »
přeslechnout v délce ... komunikaci rozhodit

už jste slyšel o kontrolních součtech?

filip

Re:Arduino komunikace po i2c
« Odpověď #18 kdy: 05. 01. 2015, 14:38:34 »
Podle me nejjednodusi za 70 korun ethernet modul k arduinu a pripojit pres ethernet. vyhoda je, ze pak muzes treba misto master aruina dat master raspberry. Navic pomoci standardnich knihoven nemusis resit kolize atd.

http://www.ebay.com/itm/ENC28J60-Ethernet-LAN-Network-Mini-51-AVR-ARM-PIC-Code-Arduino-SPI-Port-Module-/271667749910?pt=AU_B_I_Electrical_Test_Equipment&hash=item3f40a8e416

Potom je jeste jiny typ sitovky k arduinu s vetsi podporou, treba ve forme shieldu
http://www.ebay.com/itm/Ethernet-Shield-W5100-Micro-SD-Card-SlotFor-Arduino-2009-UNO-Mega-1280-2560-DX-/251753904648?pt=US_Ham_Radio_Transmitters&hash=item3a9db3ba08

... ale i ta levnejsi za 70 funguje

Re:Arduino komunikace po i2c
« Odpověď #19 kdy: 05. 01. 2015, 15:02:34 »
už jste slyšel o kontrolních součtech?
Kontrolní součet to neřeší. Ani dát tam tu délku dvakrát to neřeší - když přečtu chybu, tak jenom vím, že je to špatně, ale jaká je správná délka packetu stejně nevím.


eiffel

Re:Arduino komunikace po i2c
« Odpověď #20 kdy: 05. 01. 2015, 15:06:39 »
Jestli chces komunikovat uartem po 485tce, pouzij Modbus.
Hlavni vyhoda je, ze je to prumyslovy protokol, uz ho davno nekdo i na tveho atmela napsal ...
Jak master, tak slave.

Kolemjdoucí

Re:Arduino komunikace po i2c
« Odpověď #21 kdy: 05. 01. 2015, 15:52:02 »
Tak nejak je to mozne udelat?

MAX487 je možno použít. Struktura dat je jednoduchá, první dva byte se dává nějaká magická konstanta třeba 0x1234, další dva byte délka a poslední dva CRC-16, mezitím si můžeš dát co chceš. Při příjmu čekáš na magickou konstantu, pak si zjistíš délku, přijmeš zbytek byte, zkontroluješ CRC a je hotovo.

Podle me nejjednodusi za 70 korun ethernet modul k arduinu a pripojit pres ethernet.

Věc za 70 CZK umí jenom přijímat a odesílat pakety, k tomu je nutno implementovat IP stack = problém.

filip

Re:Arduino komunikace po i2c
« Odpověď #22 kdy: 05. 01. 2015, 17:27:36 »
Citace
Podle me nejjednodusi za 70 korun ethernet modul k arduinu a pripojit pres ethernet.

Věc za 70 CZK umí jenom přijímat a odesílat pakety, k tomu je nutno implementovat IP stack = problém.

To by mela resit dostupna knihovna EtherCard.
https://github.com/jcw/ethercard/blob/master/README.md

Honza

Re:Arduino komunikace po i2c
« Odpověď #23 kdy: 05. 01. 2015, 18:45:51 »
Ahoj,

  ethernet ma jednu nevyhodu, a to pravdepodobnou potrebu switche, pokud slavu bude vicero (nehlede na dalsi odber energie switchem). Na sbernici se toho da posadit vice, coz asi bude pripad tazatele, kdyz chce pripojovat ctecky a otevirani dveri.
Za mne kazdopadne diky za link na ethernet knihovnu, je to zajimave. Mozna by byla lepsi i IPv6 (ikdyz ji ze srdce nesnasim, Ondra Caletka promine), tam by mohla odpadnout konfigurace pres DHCP. Ikdyz zase asi pribude zpracovani RA, ale stejne by to pak mohlo jet jen pres link local.

Pokud by mel nekdo nejake schema, jak pospojovat vice arduin sbernicovym systemem, taky bych byl taky rad za inspiraci. ;-)
Staci jeden master a dva slavy a na kazdem slavu treba jeden vstup (od klicenky) a jeden vystup rele. To je IMHO dost
nazorne.

Diky,
Honza

v

Re:Arduino komunikace po i2c
« Odpověď #24 kdy: 05. 01. 2015, 19:25:43 »
už jste slyšel o kontrolních součtech?
Kontrolní součet to neřeší. Ani dát tam tu délku dvakrát to neřeší - když přečtu chybu, tak jenom vím, že je to špatně, ale jaká je správná délka packetu stejně nevím.

znovuobjevujete kolo, tohle je desítky let vyřešený problém - nesedí součet, zahodím data, vysílající strana nedostane potvrzení přijetí a zprávu pošle znova či zareaguje jinak

VK

Re:Arduino komunikace po i2c
« Odpověď #25 kdy: 05. 01. 2015, 20:50:33 »
Ono použití I2C na větší vzdálenost nemusí být zas takový nesmysl? Jelikož se dá I2C téměř libovolně "podtaktovat", mohlo by být použití na větší vzdálenosti možné. Samozřejmě to nebude na nějaké datové přenosy, ale na pár bitů by to stačit mohlo. Hezké by na tom bylo, že na straně "klienta" by stačil jeden šváb - microcontroller, nebo přímo nějaká i2c periferie, tedy by to bylo ultra levné. Určitě to tedy není typické použití I2C, ale fungovat by to mělo?

Kolemjdoucí

Re:Arduino komunikace po i2c
« Odpověď #26 kdy: 06. 01. 2015, 08:54:17 »
Ono použití I2C na větší vzdálenost nemusí být zas takový nesmysl? Jelikož se dá I2C téměř libovolně "podtaktovat", mohlo by být použití na větší vzdálenosti možné.

Rozhodně ne tak, že se propojí piny dvou Arduino vzdálených od sebe deset metrů drátem. Na to je třeba přídavné bastlení a pro začátečníka je rozhodně vhodnější dobastlit RS485.

hu

Re:Arduino komunikace po i2c
« Odpověď #27 kdy: 06. 01. 2015, 13:04:36 »
Ono použití I2C na větší vzdálenost nemusí být zas takový nesmysl? Jelikož se dá I2C téměř libovolně "podtaktovat", mohlo by být použití na větší vzdálenosti možné.

Rozhodně ne tak, že se propojí piny dvou Arduino vzdálených od sebe deset metrů drátem. Na to je třeba přídavné bastlení a pro začátečníka je rozhodně vhodnější dobastlit RS485.

Tak po elektrický vrstvě z EIA422 může klidně protáhnout i I2C, akorát mi to taky přinde jako píčovina, bo by musel tahat dva páry. Skoro by jeden řekl, asynchronní signalizace se na delší vzdálenosti používá právě kvůli úspoře mědi (soudruzi promiňte, vy si to klidně natahejte v hliníku).

VK

Re:Arduino komunikace po i2c
« Odpověď #28 kdy: 06. 01. 2015, 22:58:50 »
Ono použití I2C na větší vzdálenost nemusí být zas takový nesmysl? Jelikož se dá I2C téměř libovolně "podtaktovat", mohlo by být použití na větší vzdálenosti možné.

Rozhodně ne tak, že se propojí piny dvou Arduino vzdálených od sebe deset metrů drátem. Na to je třeba přídavné bastlení a pro začátečníka je rozhodně vhodnější dobastlit RS485.

Za předpokladu, že ten kmitočet bude opravdu nízký, a celkový odpor toho třeba 10m vodiče bude také nízký (bude mít odpovídající průřez), co dalšího může být problém? Ptám se, protože jsem to chtěl prakticky vyzkoušet, ale jestli to už zkusil někdo přede mnou...

Re:Arduino komunikace po i2c
« Odpověď #29 kdy: 08. 01. 2015, 11:23:56 »
OT: eiffele, máte nějakou krpu na mailserveru - na portu 25 se ozývá sshčko :)