Spørsmål:
Billig kablet flerpunktsnettverk
Jeremy Gillick
2014-09-02 23:53:56 UTC
view on stackexchange narkive permalink

Jeg ønsker å lage et 15 x 15 rutenett med belastningssensorer og RGB-lysdioder for et interaktivt dansegulv. Hver node blir drevet av en arduino, og hele etasjen vil bli administrert av en RaspberryPi. Jeg prøver å finne ut den beste måten å få nodene til å kommunisere med Pi. Ideelt sett vil nettverket ha disse egenskapene:

  • Lav kostnad per node
  • Raspberry Pi som master, arduino noder som slaver
  • Evne til å vite hvor hver node er i rutenettet
  • Healing: Hvis en node går ned, tar den ikke ut alle de andre.
  • Kan enkelt erstatte ødelagte noder
  • elektronikk for hver node vil være ~ 12 inches fra hverandre
  • Mesteren vil være 5 - 10 meter unna matrisen.

Så langt har jeg slitt over noen få ides.

I2C Dette vil tillate at hver node kan adresseres, men det ser ut til at Arduino bare tillater opptil 127 adresser, og denne matrisen vil ha minst 225 noder.

SPI Hvis tusenfett er lenket, ville det være enkelt å vite hvor hver node er i matrisen. Men hvis en node skulle bryte alle nodene etter at den ville slutte å kommunisere. (ikke sant?) Jeg kunne ha hver rad tusenfryd lenket separat, så hvis en går ned, påvirker det bare den raden.

1-ledning 1-ledning ser også lovende ut. Jeg må finne ut min egen måte å bestemme nodeplassering på, som kan oppnås på flere måter.

Tilpasset serie Hver node har en seriell tilkobling (rx / tx ) for hver av de fire sidene. Dette vil tillate det å kommunisere til hver av sine naboer direkte og formidle meldinger som ikke er adressert til den. Hvis en node skulle gå ned, vil meldingen automatisk bli dirigert rundt den ødelagte noden siden det er flere stier til hvert mål. Dette alternativet er litt gal, og jeg foretrekker å unngå noe så tilpasset og innviklet.

USB Dette krever en USB-hub i hver node.

XBee For dyrt.

Andre tanker eller alternativer?

Siden du nevnte XBee, er nRF24-noder latterlig billige og kan være nettverksnettverk.
Ville de skaleres til et system med 225+ noder i et nært rom?
Jeg kan ikke se hvorfor ikke, hver radio kan lytte til 6 andre radioer på en gang.
Virker for meg at en Arduino per node ikke er en billig vei å gå. Dette er ganske dyre generelle enheter. Hvorfor ikke lage et enklere tilpasset brett basert på en av AVR-sjetongene som en ATiny? Hvis du bygger 225 noder, blir $ 30 / node veldig dyrt.
Til slutt er planen å gjøre en tilpasset AVR per node. Jeg skal bare prototype det med arduino først. Hver node trenger ikke engang å være smart, så det ville være enda bedre hvis jeg kunne finne en enkel måte å mux / demux inngangen / utgangen fra hvert panel uten en mikrokontroller.
Jeg vil sannsynligvis hoppe over selvhelbredelsen og gjøre en tusenfryd lenket asynkron serie (sannsynligvis bit-bang i ATtiny). Kanskje modellert på DMX LED-tau-byte-peeling, kan du gjøre noe der hver node skreller en kommandobyte fra fronten og legger til en byte av sensorstatus til slutten før du videresender meldingen. En feil vil bety at en piksel går død (eller sitter fast) og ingen data kommer tilbake, men du kan enkelt se og erstatte den. Hopp over rutenettet og bare gjør en snake lineær kjede, eller kanskje flere hvis du ikke kan flytte nok data på en linje.
To svar:
Treesrule14
2014-09-03 20:59:59 UTC
view on stackexchange narkive permalink

For I2C kan du prøve http://www.linear.com/product/LTC4312

Dette lar deg lage to I2C-nettverk for å adressere alle nodene.

Ledningene til I2C vil imidlertid være et mareritt, men det kan være nødvendig hvis du vil at nodene skal være uavhengige.

Jonas Peter
2014-10-09 16:20:20 UTC
view on stackexchange narkive permalink

Jeg tror jeg vil bruke RS-485.

Med denne standarden kan du skrive din egen kommunikasjonsprotokoll, og med arduino er den enkel å bruke med Serial-klassen. Som utvidelser for Arduino bruker du bare MAX485 fordi den bruker UART-cip av Arduino.

Jeg har absolutt ingen erfaring med rasperypi, men jeg tror den også har en UART-Cip hva som vil bety , at du også kan koble til MAX485.



Denne spørsmålet ble automatisk oversatt fra engelsk.Det opprinnelige innholdet er tilgjengelig på stackexchange, som vi takker for cc by-sa 3.0-lisensen den distribueres under.
Loading...