Sziasztok!
A 20+ szenzor sok helyiségben (házi, építsd magadnak, ha tudod, ha nem, akkor pedig kérdezz nagy hülyeségeket) projekt következő lépésénél tartok.
Az I2C buszon 2 környező helyiség szenzorait fogom olvasni, azonban a messzebbi helyiségekben CAN buszt fogok várhatóan használni és ennek a kiépítésének, tervezésének a lépéseit próbálom összeszedni. Megosztom az infókat, amire jutottam.
Bevezető kérdés: ha a távolság miatt elegendő az I2C busz is, mert pár métert kell vinni, és a szenzor is támogatja az I2C-n kívül az SPI-t is, van értelme pár szenzort csak I2C buszon kezelni vagy átgondoltabb lenne akkor már mindent a CAN buszon vinni és SPI-n keresztül elérni a szenzorokat?
Lehet egyszerre az RPI-n I2C és SPI is, csak várhatóan melyik terheli jobban majd az RPI-t, ha I2C + CAN(SPI) van, vagy ha csak CAN(SPI), azonos szenzor szám esetén?
Van számottevő overhead-je a CAN-SPI átalakításnak?
Visszatérve a fő témára:
CAN busz topológia lehetőségek: =============================
- vonal / busz
- csillag (CAN busz HUB szükséges)
- gyűrű
- (továbbá lehet egymásba is fűzni, hogy a vonal/busz x. eleme után lesz csillag, stb.)
http://www.mindsensors.com/content/86-can-and-its-topology
Csillag CAN busz topológiához HUB szükséges: (olyan mint a HUP, csak teljesen más ;)
CAN busz HUB: =============================
http://www.mindsensors.com/frc/184-splitter-for-can-network
https://www.avire-global.com/products/emergency-telephones/dcp-accessor…
Ami számomra itt érdekes, hogy a CAN busz HUB-ot lehet egymásba kötni, tehát gyakorlatilag 100+ eszköz lehet egy buszon, ami jelen esetben biztosan elég lesz.
Hogy hány, az függ a BUSZ verziójától: CAN 2.0A 11 bites azonosítót használ (2048 node), a CAN 2.0B pedig 29 biteset (536870912 node, ez még gombócból is sok!).
A fenti szenzor észszerű megtervezés, elrendezés a cél.
(Itt akkor az egyik HUB-on a terminator-t be kell kapcsolni.)
Tud ilyet is, itt látszik a terminator:
Kábelezés: =============================
https://tekeye.uk/automotive/can-bus-cable-wiring
Eszközös Raspberry Pi-hez:
Ez jónak tűnik:
https://www.elektor.com/pican-2-can-bus-board-for-raspberry-pi
Duál CAN busz:
http://www.industrialberry.com/canberrydual-v2-1/
Can busz shield V2.1 izolált, ez tűnik a legjobb választásnak:
http://www.industrialberry.com/canberry-v-2-1-isolated/
(Biztos van rá magyarázat, hogy miért kell a real-time clock mellé egy elem, mert több ilyen busz kezelő eszközön van RTC + elem. Mi van, ha lemerül az elem, mi fog változni? Mi van, ha merül?)
Vagy inkább ez.
http://www.industrialberry.com/canberrydual-iso-v2-1/
Itt mi a főbb különbség a canberrydual-v2-1 és canberrydual-iso-v2-1 között?
Ez kevésbé tűnik hasznosnak az előbbiekhez képest, de lehetőség:
https://www.elektor.com/cangineberry-active-cancrypt-and-canopen-module…
Szóval ha szeretnék például bekötni 14 szenzort CAN buszon csillagpontosan, és a ez a termék 6 portos:
http://www.mindsensors.com/frc/184-splitter-for-can-network
HUB#1: PORT#1: RPI-be
HUB#1: PORT#2: HUB#2 port 1-be
HUB#1: PORT#3: HUB#3 port 1-be
HUB#1: PORT#4: HUB#4 port 1-be
HUB#1: PORT#5: (üres)
HUB#1: PORT#6: (üres)
HUB#2: PORT#1: HUB#1 port 2-be
HUB#2: PORT#2: szenzor 1
HUB#2: PORT#3: szenzor 2
HUB#2: PORT#4: szenzor 3
HUB#2: PORT#5: szenzor 4
HUB#2: PORT#6: szenzor 5
HUB#3: PORT#1: HUB#1 port 3-ba
HUB#3: PORT#2: szenzor 6
HUB#3: PORT#3: szenzor 7
HUB#3: PORT#4: szenzor 8
HUB#3: PORT#5: szenzor 9
HUB#3: PORT#6: szenzor 10
HUB#4: PORT#: HUB#1 port 4-be
HUB#4: PORT#: szenzor 11
HUB#4: PORT#: szenzor 12
HUB#4: PORT#: szenzor 13
HUB#4: PORT#: szenzor 14
HUB#4: PORT#: TERMINÁTOR (TERMINAL OUT)
Akkor így megfelelő lesz?
A kérdés, ha helyiségenként általában 2-3 szenzor lesz, lehet-e láncba kötni, vagy máshogyan, hogy helyiségenként 1 kábel elég legyen?
A szerintem ROSSZ megoldás: (hogy kisbetu is hozzá tudjon szólni :)
Itt fent az a hiba szerintem, hogy maximum 1 terminátor lehet egy CAN buszon, és itt több van.
Szerintem nem jó, mert kevert topológia.
Ez a lenti kép így működhet? Költői kérdés, nem kell 2 node egymásra kötve az én esetemben, ez is szándékos rossz példa.

A sorba kötés elve alapján működhet akár. (De nem jó, mert felesleges 1 helyiségbe 2 node-ot húzni!)
Szerintem ez sem jó, mert kevert topológia és értelmetlenül van +1 node a helyiségben.
A talán biztosan jó megoldás, hogy node-onként csillagpontosan lesz összekötve:
Ahol az egyik utolsó node-ban bekapcsolom, hogy a TERMINAL OUT legyen (TERMINATOR). Vagy rakhatnék ellenállást is, de miért, ha tudja a CAN busz HUB.
Jól gondolom, hogy ebben az esetben 1 terminátor kell, és nem több, nem kevesebb?
További változat, hogy helyiségenként 1 node lesz kiépítve, és oda rakok CAN busz - SPI konvertert:
https://www.electrodragon.com/product/mcp2515-can-receiver-breakout-boa…
https://www.dx.com/p/mcp2515-can-bus-module-tja1050-receiver-spi-module…
És erre az SPI konverterre rakom a 2-3 szenzort, lásd a képen, pár szenzorral lerajzolva:
Tehát a fenti kép alapján a szenzor 1-2-3 összesen 4 éren van a helyiségbe vezetve CAN buszon, majd SPI-re alakítva rákötöm mindhárom szenzort. Továbbá helyiségenként ugyanígy kötöm be, az 1-3 szenzort. (Hogy az SPI-t hogy kötöm, az külön kérdés :)
Van ennél észszerűbb kiépítése sok helyiség, 20+ szenzor esetén, ahol akár 30 méter távolságra is el kell vezetni a CAN buszt?
Triviális kérdésnek tűnik, de ebben az esetben csak SPI-t támogató szenzorokat használhatok, kivéve, ha meg lesz oldva más interface-re az átalakítás CAN buszról, jól értem?
Szenzor bekötés: =============================
4 ér kell, én CAT6A / CAT7A S/FTP-ben fogom húzni. Kettőt a CAN busznak, kettőt a 3.3VDC + föld.
Megfelelő a 2 datát egy érpárban, és a 2 powert egy érpárban vezetni, mint a képen?
Esetleg a maradék 4 érpárt lehet egyéb gyenge áramú feladatra használni, például RJ45-be kikötni, mint 100 mbit LAN port? Vagy legyen szépen üresen?
A 8 érpár esetén mind a 4 eret 1-1 érpárban vigyek külön, és a maradék 4 érpárt pedig hagyjam üresen?
Köszönöm előre is az észrevételeket.