Jak połączyć dwa Arduino bez osłon?

14

Planuję system Arduino, który składa się z kilku płyt Arduino. Maksymalna odległość między deskami wynosi około 50 metrów. Chcę przesyłać między nimi podstawowe dane, takie jak krótkie ciągi lub liczby całkowite. Wiem, że mogłem przesyłać dane za pomocą kabli Ethernet, ale to wymaga osłony Ethernet lub karty Arduino Ethernet, która podwaja koszty. Czy istnieje sposób na niskobudżetowy sposób łączenia płyt przy użyciu tylko najbardziej podstawowych płyt (takich jak Uno) i niektórych innych elementów, ale nie pełnej osłony?

totymedli
źródło
Jeśli budżet nie był problemem, możesz użyć układów Bluetooth lub XBee. Nie są wcale takie złe, ale będą kosztować ~ 60 $, ponieważ będziesz potrzebować 2.
Steven10172
@ Steven10172 Urządzenia Bluetooth są przydatne, ale wygląda na to, że OP chce taniego rozwiązania bez osłon (może niski profil?)
Anonimowy pingwin
3
Upewnij się, że podłoże jest podłączone, jeśli środkiem przekazu jest energia elektryczna !!!
Anonimowy pingwin

Odpowiedzi:

9

Aby uzyskać przewodową komunikację na duże odległości, patrz RS-485 .

Ponieważ wykorzystuje różnicową linię zrównoważoną na skrętce (jak RS-422), może rozciągać się na stosunkowo duże odległości (do 4000 stóp (1200 m)). Zasadą jest, że prędkość w bitach / s pomnożona przez długość w metrach nie powinna przekraczać 108. Zatem 50-metrowy kabel nie powinien sygnalizować szybciej niż 2 Mbit / s

Możesz użyć układu MAX485. Jest dość łatwa w obsłudze, ale jest też dobra biblioteka:

https://github.com/Protoneer/RS485-Arduino-Library

sachleen
źródło
Czy nie mógł po prostu rozebrać przewodów w RS-485 lub podobnym i po prostu użyć tego do połączenia szeregowego, aby zaoszczędzić pieniądze? 9600 bodów nie działa prawie tak szybko, jak 2 MBPS. Czy jest coś specjalnego w protokole / napięciach / itp. dzięki czemu nadaje się na duże odległości? Może zaoszczędzić trochę pieniędzy ...
Anonimowy pingwin
Jest to sygnał różnicowy wysyłany przez skrętkę. Redukuje hałas. en.wikipedia.org/wiki/Differential_signaling
sachleen
Ta strona jest doskonałym źródłem informacji na temat RS485 z Arduino gammon.com.au/forum/?id=11428
DaveP
7

Są dwie kategorie, które mogę wymyślić, aby sklasyfikować cechy komunalne tablic Arduino:

Między 2 urządzeniami:

  • Szeregowy: łatwy w użyciu i wymaga tylko 2 linii danych.
  • OneWire: trudniejszy w użyciu i wolny, ale używa tylko jednej linii danych

Między więcej niż 2 urządzeniami

  • I2C: Możesz mieć do 128 urządzeń w sieci, indywidualnie adresowalnych, ale wymaga urządzenia master, wykorzystuje 2 linie danych. jest to również znane jako drut.
  • SPI: trudny w użyciu, ale bardzo szybki i łatwy wybór urządzenia. wykorzystuje dużo linii danych (3 + liczba urządzeń)
  • OneWire: użycie adresowanego oneWire jest nawet wolniejsze niż zwykły oneWire, wciąż tylko jedna linia danych
  • SoftwareSerial: Możesz mieć kilka urządzeń połączonych różnymi liniami szeregowymi, ale działa to wolniej.
  • CAN: dostępne tylko w terminie i adresowalne

Dostępne są inne metody, ale wymienione na nich wymagają jedynie minimum zewnętrznego sprzętu.

Aby uzyskać oceny odległości, zobacz http://forum.arduino.cc/index.php?topic=82937.0 i http://www.tldp.org/HOWTO/Remote-Serial-Console-HOWTO/serial-distance.html

Te szybkości transmisji danych są kontrolowane bezpośrednio w Serial i mogą być modyfikowane w wielu innych.

Doktor
źródło
5

Freakduino tworzy niektóre tablice Arduino z wbudowanym bezprzewodowym. Ich bezprzewodowy zasięg dalekiego zasięgu wynosi 900 MHz, a ich krótszy zasięg to 2,4 GHz. Myślę, że tak naprawdę są radiami XBee i do programowania użyłbyś biblioteki o nazwie chibiArduino, która jest dostępna (i udokumentowana) na stronie Freakduino. Kiedy komunikujesz się bezprzewodowo z innym radiem, możesz użyć Broadcastu lub określić radio według jego ID, które jest wartością, którą musisz ustawić w EEPROM Freakduino.

Pobrane bezpośrednio ze strony Freakduino:

Dodanie zintegrowanego radia bezprzewodowego opartego na protokole IEEE 802.15.4 (ten sam protokół radiowy co XBee) pozwala na bezprzewodowe sterowanie urządzeniami lub zbieranie danych z czujników bezprzewodowych. Dodano opcjonalny zespół obwodów akumulatorowych, aby mógł funkcjonować jako prawdziwy węzeł bezprzewodowy bez żadnych zewnętrznych kabli zasilających. Płytka została również zaprojektowana tak, aby pasowała do wytrzymałej obudowy, dzięki czemu konstrukcja może być bezpiecznie transportowana lub wdrożona w rzeczywistym scenariuszu użytkowania bez obawy o uszkodzenie obwodów.

To radio 900 MHz jest moim ulubionym. Używam go cały czas, ponieważ 900 MHz oferuje znacznie lepszy zasięg w porównaniu do 2,4 GHz. Radio może wytwarzać do 10 mW mocy nadawania, która może uzyskać zaskakująco duży zasięg. Przy bezpośredniej linii wzroku kilkaset metrów nie byłoby zaskoczeniem. Jeśli potrzebny jest dodatkowy zasięg, tryb modulacji można również zmienić z OQPSK na BPSK. Powoduje to dodatkowy zasięg kosztem szybkości transmisji danych, przy maks. Prędkości od 250 kb / s do 40 kb / s w trybie standardowym.

HK1
źródło
0

Jak powiedziałeś, osłony Ethernet są drogie, ale nie musisz ich używać. Sprawdź enc28j60 dla sieci przewodowej lub ESP8266, jeśli wolisz sieć bezprzewodową. Oba kosztują około 4 USD. Używam teraz ESP8266 i mam około 8 urządzeń rozmawiających ze sobą oraz Raspberry Pi. To naprawdę świetny mały chip! Nie mogę rozmawiać osobiście z ENC28j60, ponieważ nadal siedzą w paczce na moim biurku.

Masła
źródło
0

Możesz użyć karty Breakout Ethernet (2 USD w Sparkfun). Pozwala to na użycie kabli Ethernet, ale nie trzeba używać pełnego protokołu TCP / IP, zamiast tego można po prostu podłączyć piny danych do płyty rozdzielającej, użyć Ethernetu, aby je podłączyć, a następnie pozwolić im rozmawiać za pomocą łącza szeregowego. Używam tego dość często, aby umieścić czujniki drutowe dalej od Arduino, aby uzyskać mocne, ale tanie połączenie.

Nathan
źródło