Arduino komunikace po i2c

Pavel2

Arduino komunikace po i2c
« kdy: 04. 01. 2015, 13:07:40 »
Ahoj,
chci si udelat jednoduchy pristupovy system pomoci vyvojoveho prostredi Arduino.
Predstava je takova, ze je jeden master a nekolik slavu. Co slave to dvere. Na kazdem slavu bude pomoci serioveho rozhrani pripojena ctecka cipu. Pokud slave(ctecka) precte cip, master obdrzi retezec k overeni a pokud souhlasi dvere otevre.
Je pro tohle reseni vhodne pouzit I2C? Nebo existuje vhodnejsi rozhrani, ktere se pro tuhle situaci hodi lepe?
Jde o cviceni a tak ted prosim nechci resit otazku bezpecnosti apod. Pokud ma nekdo pripadne zkusenosti s tim jak posilat pomoci I2C retezec o 13 znacich a je ochotny se o ne podelit, budu jedine rad.
« Poslední změna: 04. 01. 2015, 21:24:12 od Petr Krčmář »


Kolemjdoucí

Re:Arduino I2c
« Odpověď #1 kdy: 04. 01. 2015, 13:14:09 »
I2C je použitelné do zhruba 30 cm.
Na rozvod po bytě je RS422, RS485, CanBus a podobně, popřípadě Ethernet.

Pavel2

Re:Arduino I2c
« Odpověď #2 kdy: 04. 01. 2015, 13:37:14 »
Ok a co kdyz se stane, ze ve stejny okamzik obe ctecky vyslou retezec k overeni. Dojde prece ke kolizi. Nejsem v tom moc znalej a netusim jak tomuhle predejit. Existuje nejaky "if" kde se da v Arduinu rict "pokud je volno odesilej, pokud ne cekej a pak odesli"

Re:Arduino I2c
« Odpověď #3 kdy: 04. 01. 2015, 14:03:59 »
Ok a co kdyz se stane, ze ve stejny okamzik obe ctecky vyslou retezec k overeni. Dojde prece ke kolizi. Nejsem v tom moc znalej a netusim jak tomuhle predejit. Existuje nejaky "if" kde se da v Arduinu rict "pokud je volno odesilej, pokud ne cekej a pak odesli"
To je standardní problém přenosu dat po sběrnici, na který existují standardní řešení. Pro tebe bude asi nejjednodušší tohle:
1. na sběrnici existuje právě jeden master, ostatní uzly jsou slave
2. master ví, jací slaves na sběrnici jsou
3. master postupně vyzývá k vysílání jednoho slava po druhým
4. slave nesmí vysílat jindy než na výzvu masteru
5. data jsou zabalena do nějakých packetů, aby všichni mohli poznat, že uzel už "domluvil" (poslal celý packet a už bude mlčet)

Jiná, ještě relativně jednoduchá možnost, je síť typu token ring: http://en.wikipedia.org/wiki/Token_ring

Googluj tahle klíčová slova: rs485, collision detection, collision avoidance, full duplex, half duplex, single-master bus

Kolemjdoucí

Re:Arduino I2c
« Odpověď #4 kdy: 04. 01. 2015, 14:16:18 »
Možností je mnoho, nejjednodušší je asi tohle:
Podřízené zařízení se zeptá centrálního zařízení a čeká na odpověď. Pokud se jí nedočká pak to v náhodných intervalech zkouší znovu.


eiffel

Re:Arduino I2c
« Odpověď #5 kdy: 04. 01. 2015, 14:46:30 »
Na i2c zapomen. Krom vzdalenosti je jeho nejvetsi pruser, pokud dojde behem zacatku komunikace k resetu masteru. Z toho se slave nevzpamatuje, protoze ceka a ceka na zbytek paketu. Da se to sice HW a SW resit (i kdyz na to vetsina prdi) tak, ze zjistis stav linky a resetnes slave, ale je to prasarna. Komunikuj po ethernetu. Bud das jako slave treba malinu pi, nebo  PIC18, ktery ma na sobe i fyzickou vrstvu, takze staci RJ konektor s integrovanym trafem. I kdyz je to osmibit, na tech par dat z RFID cipu bude dobry a TCP/IP knihovna od Microchipu funguje.

Re:Arduino I2c
« Odpověď #6 kdy: 04. 01. 2015, 16:17:22 »
nebo  PIC18, ktery ma na sobe i fyzickou vrstvu
Jaky přesně levný PICy mají PHY? Vygooglil jsem PIC18F97J60, ale ten třeba gme.cz nemá :(

jete

Re:Arduino I2c
« Odpověď #7 kdy: 04. 01. 2015, 17:22:22 »
Zkuste to bez drátů, milý Marconi ...

nRF24L01+ nebo ESP8266

hu

Re:Arduino I2c
« Odpověď #8 kdy: 04. 01. 2015, 20:03:15 »
nebo  PIC18, ktery ma na sobe i fyzickou vrstvu
Jaky přesně levný PICy mají PHY? Vygooglil jsem PIC18F97J60, ale ten třeba gme.cz nemá :(

On v gme ještě někdo, krom dědků poptávajících blikající ledky, nakupuje? Otrávení prodavači, půlhodinové fronty, stav skladu neodpovídající hodnotám inzerovaným na webu a v neposlední řadě přemrštěné ceny. Myslím, že sami majitelé pochopili, že jim ujel vlak a sortiment přeorientovali na dlouhodoběji udržitelný: http://www.gme.cz/chovatelske-potreby-1

Mrkni na tme: http://www.tme.eu/cz/katalog/?idp=1&search=PIC18F97J60&cleanParameters=1
Případně pak ještě farnell, mouser, digikey, RS electronic.

Re:Arduino I2c
« Odpověď #9 kdy: 04. 01. 2015, 20:11:55 »
On v gme ještě někdo, krom dědků poptávajících blikající ledky, nakupuje?
Jo, já, když něco chci rychle a mám cestu kolem ;)

a v neposlední řadě přemrštěné ceny.
Farnell je ještě dražší, ne?

Mrkni na tme: http://www.tme.eu/cz/katalog/?idp=1&search=PIC18F97J60&cleanParameters=1
SMD letovat neumím, nebylo by něco v DIP? ;)


eiffel

Re:Arduino I2c
« Odpověď #11 kdy: 04. 01. 2015, 20:34:43 »
Citace
SMD letovat neumím, nebylo by něco v DIP? ;)
Mam redukci do nepajiveho pole.
Jestli touzis bastlit, mas ho u mne i se (mnou) zapajenym procesorem.
Ber to jako vdek za toto forum ...
Co je malina pi, dost jsem pri vyvoji zlenivel ...


hu

Re:Arduino I2c
« Odpověď #12 kdy: 04. 01. 2015, 20:41:31 »
Farnell je ještě dražší, ne?
Záleží, kolik toho bereš. A taky má farnell mnohonásobně větší porfolio.

SMD letovat neumím, nebylo by něco v DIP? ;)

Nebylo by tedy od věci se SMD technologii naučit? :-) Většinu (i pro bastlíře) zajímavých součástek dnes v jiném provedení neseženeš. Není to žádná věda, v nouzi stačí obvykle i trafopáječka :-) A v domácích podmínkách se dá třeba i QFN nebo i  BGA s větší roztečí.

Re:Arduino I2c
« Odpověď #13 kdy: 04. 01. 2015, 21:15:43 »
Jestli touzis bastlit, mas ho u mne i se (mnou) zapajenym procesorem.
Ber to jako vdek za toto forum ...
No teda, to si snad ani nezasloužím :))

Moc rád PIC zkusím, akorát bych ještě potřeboval trochu nasměrovat, jak je to u PICů s toolchainem a programátorem. Dá se programátor nějak zbastlit (něco jako usbtiny pro atmel?)? Páč kvůli jednomu procesoru si pořizovat programátor za tisícovku, to by byl trochu overkill ;)

A toolchain? Existuje něco jako avrgcc, nebo aspoň něco komerčního, ale použitelného bez problémů a zdarma?

Bez těhle dvou věcí bych se do toho nepouštěl, moc času a peněz tomu věnovat nemůžu, čekají mě na poličce taky jiný zajímavý hračky jako třeba stm32f429 ;)

hu

Re:Arduino I2c
« Odpověď #14 kdy: 04. 01. 2015, 21:28:08 »
Jestli touzis bastlit, mas ho u mne i se (mnou) zapajenym procesorem.
Ber to jako vdek za toto forum ...
No teda, to si snad ani nezasloužím :))

Moc rád PIC zkusím, akorát bych ještě potřeboval trochu nasměrovat, jak je to u PICů s toolchainem a programátorem. Dá se programátor nějak zbastlit (něco jako usbtiny pro atmel?)? Páč kvůli jednomu procesoru si pořizovat programátor za tisícovku, to by byl trochu overkill ;)

A toolchain? Existuje něco jako avrgcc, nebo aspoň něco komerčního, ale použitelného bez problémů a zdarma?

Bez těhle dvou věcí bych se do toho nepouštěl, moc času a peněz tomu věnovat nemůžu, čekají mě na poličce taky jiný zajímavý hračky jako třeba stm32f429 ;)

Pro PIC18 je sdcc. PIC16 je tak úchylná architektura, že pro ni vyjma nějaké obskurní komerční varianty překladač C neexistuje.