Skocz do zawartości

Komunikacja między Raspberry Pi i Arduino po sieci Ethernet LAN - SYSTEM ROZPROSZONY


mbulinski

Pomocna odpowiedź

Witam wszystkich serdecznie 🙂

Chciałem zapytać mądrzejszych i bardziej doświadczonych od siebie jak wygląda komunikacja po sieci ETHERNET pomiędzy Raspberry Pi a ➡️ kilkoma ARDUINO

W moim projekcie chciałbym, aby RPi 3 pełniło rolę "serwera" zbierającego dane z kilkunastu czy kilkudziesięciu mikrokontrolerów Arduino wyposażonych w moduł Ethernet 😃

No chyba, że taki system rozproszony lepiej zrobić na innym medium...

Pozdrawiam,

mbulinski

Link do komentarza
Share on other sites

To nie jest tak, że jest jakiś standardowy "moduł ethernet". Komunikacja będzie wyglądać tak, jak ją zaprogramujesz i w zależności od tego czym jest twój "moduł ethernet". Tak samo trudno jest nam powiedzieć na czym lepiej taki system zrobić, bo nie podałeś żadnych szczegółów ani wymagań. Weź się trochę wysil i opisz dokładnie co próbujesz zrobić — co to dokładnie za czujniki, w jakich są odległościach, ile tych danych jest i jak często, w jakich warunkach to ma pracować i przede wszystkim do czego to ma służyć. Wtedy możemy się zacząć zastanawiać czego do tego najlepiej użyć.

[ Dodano: 07-10-2017, 14:39 ]

A i jeszcze by się przydało jakbyś napisał jaki to ma związek z robotami.

Link do komentarza
Share on other sites

mbulinski, pomyśl jeszcze o samym połączeniu - piszesz kilkanaście-kilkadziesiąt czujników. Wszystko ok, ale ile kabli, switchy to będzie wymagało... no i ile będzie kosztowało. Oczywiście da się takie coś zrobić, tylko czy warto.

Tani zamiennik to np. RS-485 oczywiście dla małej ilości danych. Inna opcja to np. WiFi i powiedzmy moduły esp8266 - taniej i kabli mniej.

Link do komentarza
Share on other sites

Elvis, Może być RS-485 bo z poszczególnych Arduino będą zbierane małe ilości danych (dane z czujników temperatury, wilgotności, sygnały bezpotencjałowe 0-1). Pytanie na ile to będzie szybkie 🙂 Chciałbym, aby RPi zbierało te dane i zapisywało w bazie. Dodatkowo aby RPi konwertowało dane na protokół BACnet IP.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Tak jak napisałem - ethernet jak najbardziej zadziała. Są też inne opcje, ale to Ty musisz zadecydować do potrzebujesz. Jedyne wyjście to jak wspomniał deshipu, musisz podać więcej szczegółów. Inaczej jest to zgadywanie. Ethernet wydaje się bardzo drogą opcją, ale poza tym jak najbardziej wykonalną. Wszystko zależy co (i za ile) chcesz uzyskać. My w tej chwili możemy tylko zgadywać - czy zależy Ci na niezawodności, to będzie system sterowania elektrownią atomową, czy praca inżynierska? Masz budżet miliona dolarów i chcesz żeby wszystko działało na jutro i bez wysiłku, a może to ma być hobby i lepiej żeby zostało trochę funduszy na piwo lub inne wydatki? Dlaczego nie sieć radiowa? itd. itp...

Link do komentarza
Share on other sites

Nie będzie to sterowanie elektrownią atomową 🙂 ale zależy mi na stabilności całego systemu. Poszczególne punkty dystrybucyjne ze sterownikami Arduino będą "rozwalone" po dużym obiekcie. Odległości między nimi mogą być kilkadziesiąt a czasami kilkaset metrów dlatego pytałem o Ethernet, bo tutaj zawsze można zastosować media konwerter na światełko i ograniczenia prawie znikają. Moduły Ethernet do Arduino są "tanie jak barszcz. Wifi między Arduino odpada. Wifi może być jako opcja łączności z RPi. Nie jest to praca inżynierska. Budżet to też nie problem. Chciałbym też taką funkcjonalność jak redundancja mikrokontrolerów Arduino, czyli w 1 punkcie dystrybucji mam 2 Arduino pracujące równolegle w razie awarii jednego - nie wiem na ile to możliwe przy RS-485, chyba łatwiej to zrobić na Ethernet. To tylko jedna z funkcjonalności 🙂 Wszystko musi zbierać RPi 3 (albo więcej niż 1 szt.), analizować, zapisywać w bazie danych, wizualizować, alarmować itd.

Link do komentarza
Share on other sites

W takiej sytuacji ethernet faktycznie wydaje się najlepszym rozwiązaniem. Nie bardzo rozumiem natomiast pomysł łączenia dwóch arduino "równolegle". Jakiego typu awarii się spodziewasz? Bo np. Błąd w programie będzie pewnie taki sam w obu. Wcale nie jest tak łatwo połączyć dwa moduły - przecież nie mogą jednocześnie korzystać z jednego interfejsu komunikacyjnego. A co np. jeśli jeden "zawiśnie" próbując coś wysłać? Wtedy oba będą głuche i nieme.

Może zamiast dwóch arduino lepiej użyć jednego, ale ze sprawdzonym oprogramowaniem i zabezpieczeniami sprzętowymi, chociażby zewnętrznym watchdog-iem?

  • Lubię! 1
Link do komentarza
Share on other sites

Nie do końca rozumiem, co masz na myśli pisząc "w szybki sposób". Wydaje mi się, że wybór języka programowania nie będzie tutaj kluczowy - pewnie niektóre mogą dać nieco wydajniejszy kod, ale to raczej bez znaczenia. Raspberry i tak jest dużo szybsze od Arduino, a wąskim gardłem może być np. zapis. Na początek spróbuj napisać kod w czym lubisz i w czym najlepiej się czujesz. Wtedy możesz przeprowadzić testy i określić czy działanie jest wystarczająco wydajne, czy trzeba coś optymalizować.

Wybierając język programowania warto uwzględnić bazę danych - nie wiem gdzie chcesz odebrane dane zapisywać, ale najlepiej żeby język posiadał odpowiednie biblioteki. Sam ethernet obsłużysz bez problemu nawet jeśli będziesz chciał optymalizować kod w niskopoziomowym C 🙂

Link do komentarza
Share on other sites

Nie do końca rozumiem, co masz na myśli pisząc "w szybki sposób". Wydaje mi się, że wybór języka programowania nie będzie tutaj kluczowy - pewnie niektóre mogą dać nieco wydajniejszy kod, ale to raczej bez znaczenia.

Ja myślę, że kolega miał tu na myśli prędkość pisania kodu, a nie prędkość komunikacji — no i tutaj oczywiście wybór języka i środowiska uruchomieniowego ma znaczenie kluczowe. Najlepiej oczywiście wybrać coś, z czym już się ma doświadczenie. Jak się nie ma doświadczenia, to coś, co jest łatwe do nauki, ma dobrą dokumentację i dużą i przyjazną społeczność. Python wydaje się w takiej sytuacji dość dobrym wyborem.

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.