Stránka 2 z 3

Re: I2C komunikace mezi arduiny

Napsal: 22 lis 2020, 18:11
od zacatecnik1
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ě

Re: I2C komunikace mezi arduiny

Napsal: 22 lis 2020, 18:30
od pavel1tu
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/

Re: I2C komunikace mezi arduiny

Napsal: 22 lis 2020, 18:45
od zacatecnik1
A k čemu mi budou ty převodníky?
Co to je?
A nešlo by to třeba po TX a RX?

Re: I2C komunikace mezi arduiny

Napsal: 22 lis 2020, 20:48
od KamilV
Ano, RS845 funguje na principu RX, TX, je to specifikace pro sériovou komunikaci, využívanou i v průmyslu, odolnou na delší vedení.

Re: I2C komunikace mezi arduiny

Napsal: 22 lis 2020, 20:55
od zacatecnik1
A jde po tom posílat více číselných dat ze senzorů ?
Případně jak se pak v tom programově vyznat?

Re: I2C komunikace mezi arduiny

Napsal: 22 lis 2020, 21:30
od pavel1tu
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/

Re: I2C komunikace mezi arduiny

Napsal: 22 lis 2020, 21:31
od KamilV
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...

Re: I2C komunikace mezi arduiny

Napsal: 22 lis 2020, 21:44
od zacatecnik1
No chtěl bych posílat hodnoty teplotu, vlhkost, tlak a možná ještě něco

Re: I2C komunikace mezi arduiny

Napsal: 23 lis 2020, 00:21
od gilhad
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

Re: I2C komunikace mezi arduiny

Napsal: 23 lis 2020, 06:39
od pavel1tu
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];
};