Pytanie:
Czy można połączyć łańcuchowo 50 Arduino?
Mudzify
2016-06-13 15:15:42 UTC
view on stackexchange narkive permalink

Mam wielu użytkowników na stanowiskach (50), każdy z małą klawiaturą do wprowadzania danych.Muszę zebrać dane od wszystkich użytkowników;Chcę używać Arduino dla każdego użytkownika, które będzie również wyświetlać odpowiedzi na 7-segmentowym wyświetlaczu.Zamierzam połączyć wszystkie Arduino za pomocą I2C, ale obawiam się, że sygnał może spaść z powodu dużych odległości i ograniczeń fan-out, więc rozważam połączenie ich w łańcuch.

Czy to dobry pomysł, czy jestjest lepsze podejście do tego?

[Bardzo duże systemy magistrali I2C i długie autobusy] (http://www.nxp.com/documents/application_note/AN11084.pdf)
Zamierzasz je również zasilać na tym kablu?
Ktoś w środku przecina kabel lub w inny sposób bawi się danymi.Dosłownie atak typu man-in-the-middle
Dlaczego nie obsłużyć wielu stanowisk z każdym Arduino?Pojedynczy Arduino powinien być wystarczająco szybki, aby odpytać wiele klawiatur i obsługiwać wiele wyświetlaczy (szczególnie z odpowiednimi buforami zatrzaskowymi na każdym siedzeniu), wtedy zamiast 50 urządzeń na magistrali możesz mieć tylko 5 lub 10.
Za cenę arduino, dlaczego nie użyć Raspberry Pi z kluczem Wi-Fi?Prawdopodobnie wyjdziesz taniej, ponieważ nie będziesz musiał kupować całego tego kabla!Jeśli nie jest to aplikacja absolutnie krytyczna w czasie rzeczywistym, wygląda na to, że jest to niewłaściwe narzędzie do tego zadania.
za połowę ceny użyj NodeMcu, który już integruje Wifi.
Pięć odpowiedzi:
pipe
2016-06-13 16:20:12 UTC
view on stackexchange narkive permalink

Jak mówi notatka aplikacyjna opublikowana przez RedGrittyBrick:

Ponieważ oryginał I 2 C-aplikacje magistrali były wewnętrzne dla elementu wyposażenia, na przykład w komputerze PC lub sprzęcie radiowym / telewizyjnym / audio, I 2 C-bus jest rzadko brany pod uwagę w systemach, w których są duże odległości z dużą liczbą przerwpunkty są wymagane.

Rozwiązaniem w opisie aplikacji jest użycie określonych obwodów sterownika do konwersji sygnałów na coś, co może być napędzane na większe odległości.

i tak będzie wymagać obwodów sterownika, zamiast tego zasugeruję, abyś przyjrzał się RS-485.To wypróbowany i zaufany standard dwukierunkowej transmisji przez długie kable.Używa normalnego UART na twoim Arduino, a obwody sterownika można znaleźć w wielu kształtach i formach.Jeśli nie chcesz tworzyć własnej płytki drukowanej, dostępne są karty adapterów, które pobierają sygnał TTL RX / TX z UART i konwertują go na poziomy RS-485.

RS485 jest koncepcyjnie dobrą kategorią rozwiązań, chociaż 50 węzłów może zacząć przekraczać możliwości napędu w niektórych implementacjach RS485, przynajmniej jest to problem, który należałoby sprawdzić.
Najgorszy przypadek (RS-485) to selektor A / B, który przełącza się między dwiema grupami po 25 węzłów.Pin z Arduino wykonałby przełączanie, więc jest zsynchronizowany z ostatnim znacznikiem EOT.Ponieważ każdy węzeł ma unikalny identyfikator i wbudowaną funkcję wykrywania kolizji, powinien działać.
Jules
2016-06-13 22:57:42 UTC
view on stackexchange narkive permalink

Jeśli nie jesteś szczególnie przywiązany do pomysłu wykorzystania do tego Arduino, możesz wypróbować inne płyty mikrokontrolerów.Bardzo lubię różne płyty oparte na układzie ESP8266;miałyby tę zaletę, że mają zintegrowane połączenie z siecią bezprzewodową, dzięki czemu mogą komunikować się bezpośrednio z systemem centralnym, który przechowuje dane wejściowe.

Jeśli dodatkowy (naprawdę inny) koszt nie stanowi problemu, połączenie bezprzewodowe byłoby bardzo korzystne.W szczególności nie ma potrzeby stosowania ponad 50 różnych połączeń kablowych i projektowania okablowania sygnałowego dla danej przestrzeni.
@user2943160 Racja - koszt w rzeczywistości nie jest problemem, chyba że masz już sprzęt.Moduł taki jak wszechobecna płyta ESP12 (sprzedawana przez wielu chińskich sprzedawców) plus płytka wyłamywana (ponieważ jest to moduł do montażu powierzchniowego i prawdopodobnie będziesz chciał podłączyć szpilki) kosztuje tylko niewielką kwotę więcej niż chiński klon arduinoi trochę mniej niż prawdziwe arduino.I na pewno mniej niż arduino + osłona sieci Ethernet lub inny sprzęt zewnętrzny.
hardillb
2016-06-13 19:11:26 UTC
view on stackexchange narkive permalink

Czy rozważałeś arduino Ethernet z PoE?Rozwiązuje problem z zasilaniem urządzeń i umożliwia dwukierunkową komunikację

Po to praktycznie wymyślono technologię Power over Ethernet.Doskonała sugestia.Możesz nawet zaimplementować to samodzielnie z różnymi napięciami od standardu, ponieważ Ethernet nie wykorzystuje wszystkich par w kablu.
Arduino raczej słabo pasuje do Ethernetu, ponieważ wymaga zewnętrznej karty sieciowej, która prawdopodobnie kosztuje więcej niż płyta główna, i nie ma dużo pamięci do obsługi pakietów (choć w tym przypadku nie muszą być długie).W przypadku omawianej aplikacji istnieje dodatkowy problem polegający na tym, że większość adapterów Ethernet zgodnych z Arduino to UTP typu punkt-punkt, co wymaga zapewnienia portu koncentratora na węzeł, co przy 50 węzłach stanowi absurdalną ilość okablowania.Aby było to w ogóle praktyczne, musiałbyś znaleźć wbudowane adaptery 10Base2.
@Dan: To zależy od rodzaju sieci Ethernet, o której mówisz - Gigabit Ethernet (i wyżej) wykorzystuje wszystkie pary ...
@psmears, jeśli znajdziesz mi przypadek użycia arduino, który wymaga gigabitów, będę pod wrażeniem
@psmears W tym momencie nie mówisz już o PoE.
@hardillb: Haha, prawda - po prostu nie chciałem, aby ludzie odnosili wrażenie, że dwie z czterech par dla * dowolnej * konfiguracji Ethernetowej mogą ujść na sucho :)
@jpaugh: Dlaczego nie?PoE działa dobrze z Gigabit Ethernet ...
@psmears Nie jestem ekspertem, ale jeśli gigabitowy Ethernet wykorzystuje już wszystkie przewody, to jak możesz wykorzystać niektóre z nich do zasilania?
@jpaugh: Moc i sygnały są przesyłane tymi samymi przewodami - z grubsza mówiąc, sygnały są wysyłane za pomocą prądu przemiennego, a moc jest wysyłana jako przesunięcie prądu stałego i filtrowana w odbiorniku.
@jpaugh: Nie tylko to, ale gigabitowa sieć Ethernet wykorzystuje wszystkie cztery pary w obu kierunkach w tym samym czasie.Filtry nadawczo-odbiorcze odejmują swój własny sygnał wyjściowy, aby uzyskać sygnał wysłany przez drugą stronę.Wszystko po to, aby częstotliwość była dostatecznie niska, aby mogła pracować na kablu Cat-5e, zamiast wymagać jeszcze ściślejszych tolerancji.
Chris Stratton
2016-06-13 23:20:06 UTC
view on stackexchange narkive permalink

Jeśli odległość między węzłami nie jest duża i nie ma potrzeby uzyskiwania szczególnie szybkiej komunikacji, łańcuch łańcuchowy, w którym wiadomości są propagowane z jednego do drugiego za pośrednictwem szeregowych interfejsów UART, jest prawdopodobnie jedną z niewielu rzeczy możesz obejść się bez dodawania sprzętu . Nie ma ograniczeń co do długości łańcucha, który można osiągnąć, jeśli każda płyta ponownie wygeneruje sygnał, przez który przekazuje, jednak każdy węzeł doda pewne opóźnienie, zanim przekaże wiadomość - w najprostszej implementacji opóźnienie na węzeł może być równe czas transmisji treści wiadomości.

Wygląda jednak na to, że konieczne może być przesłanie wiadomości w obu kierunkach wzdłuż łańcucha. Wyzwaniem w tym przypadku byłaby obecność tylko jednego sprzętowego UART na każdej płycie. Możesz to rozszerzyć za pomocą oprogramowania uart, jednak aby uzyskać więcej niż jedną z nich, musisz użyć bardziej wyrafinowanej implementacji niż domyślna, która jest dostarczana z IDE. Lub, jeśli możesz usunąć wbudowany port szeregowy USB z drogi, możesz użyć sprzętowego UART do komunikacji w jednym kierunku, a oprogramowania w drugim.

Lub oczywiście możesz użyć [Mega 2560] (https://www.arduino.cc/en/Main/ArduinoBoardMega2560), który ma 4 UART zamiast tylko 1, jak inne Arduino.
Tak, ale koszt 50 węzłów ATmega1284 / 2560 wzrósłby szybko.Oprogramowanie Serial faktycznie powinno do tego zadziałać lub istnieją części z wieloma UART, które kosztują mniej niż w ATmega328p.
closedball
2016-06-13 19:25:39 UTC
view on stackexchange narkive permalink

Możesz pokonać ograniczenia I2C, używając mostka 1-Wire do I2C DS28E17.

Oczywiście rozwiązanie będzie zależało od Twojego budżetu i wymaganej przepustowości.



To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 3.0, w ramach której jest rozpowszechniana.
Loading...