I2C komunikace mezi arduiny

zacatecnik1
Příspěvky: 62
Registrován: 05 led 2020, 20:05

Re: I2C komunikace mezi arduiny

Příspěvek od zacatecnik1 » 22 lis 2020, 18:11

No já ten kód mám z těch arduino stránek ale upraveny pro to čidlo DHT11
Mám je hnedka vedle sebe, takže by to pak na 50 m nestačilo?
Jinak to DHT11 na sériové lince funguje normálně

Uživatelský avatar
pavel1tu
Příspěvky: 2057
Registrován: 26 říj 2017, 08:28
Bydliště: Trutnov
Kontaktovat uživatele:

Re: I2C komunikace mezi arduiny

Příspěvek od pavel1tu » 22 lis 2020, 18:30

Na 50m asi určitě ne.
Pokud chceš 50m levně a spolehlivě, kup si převodníky na 485.

IIC jsem zprovozňoval asi na 8m, ale dle tohoto
https://hackaday.com/2017/02/08/taking- ... ong-wires/
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

zacatecnik1
Příspěvky: 62
Registrován: 05 led 2020, 20:05

Re: I2C komunikace mezi arduiny

Příspěvek od zacatecnik1 » 22 lis 2020, 18:45

A k čemu mi budou ty převodníky?
Co to je?
A nešlo by to třeba po TX a RX?

KamilV
Příspěvky: 484
Registrován: 03 dub 2018, 15:27
Bydliště: Olomouc

Re: I2C komunikace mezi arduiny

Příspěvek od KamilV » 22 lis 2020, 20:48

Ano, RS845 funguje na principu RX, TX, je to specifikace pro sériovou komunikaci, využívanou i v průmyslu, odolnou na delší vedení.

zacatecnik1
Příspěvky: 62
Registrován: 05 led 2020, 20:05

Re: I2C komunikace mezi arduiny

Příspěvek od zacatecnik1 » 22 lis 2020, 20:55

A jde po tom posílat více číselných dat ze senzorů ?
Případně jak se pak v tom programově vyznat?

Uživatelský avatar
pavel1tu
Příspěvky: 2057
Registrován: 26 říj 2017, 08:28
Bydliště: Trutnov
Kontaktovat uživatele:

Re: I2C komunikace mezi arduiny

Příspěvek od pavel1tu » 22 lis 2020, 21:30

Ano, funguje stejně jako 232, jen 485 funguje "elektricky" na jiném principu - opravdu laicky řečeno.
Tím odolává lépe rušení a lze ho provozovat na delší vzdálenosti.

https://arduinoinfo.mywikis.net/wiki/So ... 485Example

https://ipc2u.cz/articles/simple-decisi ... -a-rs-485/
Naposledy upravil(a) pavel1tu dne 22 lis 2020, 21:31, celkem upraveno 1 x.
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

KamilV
Příspěvky: 484
Registrován: 03 dub 2018, 15:27
Bydliště: Olomouc

Re: I2C komunikace mezi arduiny

Příspěvek od KamilV » 22 lis 2020, 21:31

Ano jde. Dělá se to např. fixní délkou datového rámce.

Stále jsi ale velmi tajemný, kdybys napsal co přesně chceš posílat, jak velké hodnoty, mohly by být rady přesnější.
"Více číselných dat" je nicneříkající. Stačí Ti např. byte? Máš 10 zařízení? Ok, pak posílej blok 10 byte a na příjímači budeš vědět, že 1. byte je od prvního zařízení, 2. byte od 2. zařízení... poslední byte od posledního zařízení.

Na velmi podobném principu funguje např. protokol DMX512, který je nad RS845 postaven.

Podobně také fungují LED pásky, kde se pošle blok barev a každá LEDka si "ukousne" RGB pro sebe a zbytek pošle v pásku dalším ledkám...

zacatecnik1
Příspěvky: 62
Registrován: 05 led 2020, 20:05

Re: I2C komunikace mezi arduiny

Příspěvek od zacatecnik1 » 22 lis 2020, 21:44

No chtěl bych posílat hodnoty teplotu, vlhkost, tlak a možná ještě něco

Uživatelský avatar
gilhad
Příspěvky: 825
Registrován: 07 bře 2018, 11:22

Re: I2C komunikace mezi arduiny

Příspěvek od gilhad » 23 lis 2020, 00:21

Pak bych kazdou tu vec posilal (a cetl) zvlast jako balik se dvema polozkama: popis a hodnota.
napriklad jako 4 byty, kde prvni dva jsou ten popis, druhe dva ta hodnota. Prijemce to prijme a podle (napriklad) prvnich dvou bytu se rozhodne jak nalozi s tim zbytkem.

Kód: Vybrat vše

snimaci vysle
TE25
ridici si rekne TE je teplota, takze do teploty si zapisu 25 C
VL50
ridici si rekne VL je vlhkost, takze do vlhkosti si zapisu 50%

Dalsi mozna varianta je, ze pouzijes "adresovani" v ramci komunikace, kde ridici arduino posle pozadavek a snimaci odpovi hodnotou ramci jedne te I2C relace. Takze ridici se pta jen kdyz ma zrovna cas a naladu to zpracovavat a snimane odpovida, co ma za posledni zmerenou hodnotu (a pripadne kdy).

Kód: Vybrat vše

ridici vysle 
TE
a cte do teploty odpoved ve stupnich Celsia
prijimaci posle
25
ridici vysle 
VL
a cte do vlhkosti odpoved v procentech
prijimaci posle
50

Uživatelský avatar
pavel1tu
Příspěvky: 2057
Registrován: 26 říj 2017, 08:28
Bydliště: Trutnov
Kontaktovat uživatele:

Re: I2C komunikace mezi arduiny

Příspěvek od pavel1tu » 23 lis 2020, 06:39

No, já bych to odesílal mým oblíbeným STRUCT (jojo, jsem s tím už trapnej),
pro mne neprogramátora je to jednodušší.
Co na jedný straně nasypu, na druhé straně vypadne roztříděné.

Kód: Vybrat vše

typedef struct WEATHERDATA {  //data jak odesílaná, tak přijímaná
  float temp;
  float hum;
  float windSpeed;
  char windDir[2];
};
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 6 hostů