• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
I2c wzmocnienie sygnału
#1
Witam zaproggramowalem Arduino Uno i aduino mega 2560 które przesyłają między sobą dane wszystko działa super ale gdy oddalę je na 10 M to po włączeniu Arduino zawiesza się z tego co wyczytałem okazało się że to działa tylko na bliskich odległościach czego nie przemyślałem czy mogę użyć takiego expandera aby to  działało   https://botland.com.pl/czujniki/18234-ex...93EALw_wcB
 
Odpowiedź
#2
Czasami może zadziałać jako przedłużenie, ale co do zasady to są magistrale do kilkudziesięciu cm, jak ekspander to podwoi to i tak daleko do 10m. Używanie na siłę zaprzęgu konnego do latania może nie być dobrym pomysłem. UART z małymi prędkościami powinien działać na te 10m, a jak chcesz mieć pewność działania to są układy RS485.
 
Odpowiedź
#3
(25-11-2021, 22:14)kaczakat napisał(a): Czasami może zadziałać jako przedłużenie, ale co do zasady to są magistrale do kilkudziesięciu cm, jak ekspander to podwoi to i tak daleko do 10m. Używanie na siłę zaprzęgu konnego do latania może nie być dobrym pomysłem. UART z małymi prędkościami powinien działać na te 10m, a jak chcesz mieć pewność działania to są układy RS485.
Zgadzam się. 10m jest mocno wątpliwe, jeżeli znasz angielski na stronie Adafruit jest informacja jakie odległości możesz osiągać.

Moje Uno i Mega w odległości 5m od siebie spokojnie, bez problemu radzą sobie na połączeniu UART. Tylko pamiętamy o masach

Wysłane z mojego POCOPHONE F1 przy użyciu Tapatalka
 
Odpowiedź
#4
kupiłem taki konwenter https://abc-rc.pl/product-pol-9572-Konwerter-RS422-TTL-na-MAX490-Modul-do-komunikacji-na-dalekie-odleglosci-1km-Arduino.html
tylko nie wiem czy dobrze go podłączyłem złącza TXD i RXD podłączyłem do pinów w arduino tylko nie wiem jak podłączyć wyjścia ARK bo ja podłączyłem :
A do Y
B do Z
Z do B
Y do A
a kod w arduino jest taki
zmienne które zczytuje i wysyła
Kod:
if (zapis.available()) {

  Serial.println(ar);
  Serial.println(h);
Serial.println (den_gora);
  Serial.println(den_dol);
  Serial.println(przekladnia_gora);
  Serial.println(przekladnia_dol);
  Serial.println(klapa_gora);
  Serial.println(klapa_dol);
  Serial.println(koncowa_przekladnia);
  Serial.println(koncowa_den);
  Serial.println(silownik3);
zapis.restart();
  }
i drugi które je odbiera
 
 
Kod PHP:
if (odczyt.available()) {
 
if (
Serial.available() > 0) {
    // slave may send less than requested
    ar Serial.read();
    h Serial.read();
    den_gora Serial.read();
    den_dol Serial.read();
    przekladnia_gora Serial.read();
    przekladnia_dol =Serial.read();
    klapa_gora =Serial.read();
    klapa_dol Serial.read();
    koncowa_przekladnia =Serial.read();
    koncowa_den Serial.read();


}
    odczyt.restart(); 
czy to jest dobrze zrobione bo nie odczytuje mi jak wchodzę w port szeregowy to dane sie nie zgadzają
 
Odpowiedź
#5
Komunikacja trwa wolniej niż odczytujesz , wiec wszystko będzie się mieszać. Druga sprawa Serial.read() odczytuje tylko jeden bajt a po tym co wstawiłeś nie widać co wysyłasz. Czy zmienna "ar" z wysyłki to char/byte? czy większa? bo jak większa to całkiem nie tak to ma wyglądać. Większe zmienne wysyłają więcej bajtów a twój program odbiorczy tego nie obejmuje

Albo wysyłaj jakiś znak na początku i dopiero od niego odczytuj, a jeszcze lepiej z potwierdzeniem końca danych.
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą. 
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości