• 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
Przesyłanie danych pomiędzy 2 arduino
#1
Witam
Mam taką zagwozdkę.
Mam na arduino (nano328p) i na nim zrobiony sterownik własnoręcznie zrobionego rekuperatora. Jest tam odczyt z 4 czujników temperatury i wilgotności (i2c), sterowanie PWM dla wentylatorów, wyświetlacz po i2c 4x20 i dodatkowo klawiaturą 4x4 jest zrobione proste sterowanie ustawieniami (zmiana zmiennych po wciśnięciu guzików od 1-9 i dodatkowo A-D zmienia wyświetlanie), obecnie od kilku dni próbuję zrobić, aby sterowanie (tj wyświetlacz + klawiatura) przenieść do mieszkania (ok 7-8m po kablu).
Początkowo próbowałem najprostszej metody, czyli i2c, jednak taka odległość jest nieosiągalna.
Obecnie próbuję rozwiązać problem za pomocą drugiego arduino połączonego poprzez serial, jednak na ten moment mnie to przerosło (próbowałem biblioteki SerialTransfer.h, jednak nawet przykłady nie chcą mi poprawnie działać) aby przesyłać co 2 sekundy komplet odczytów z czujników, zaś w drugą stronę naciśnięcia guzików.
Czy w ogóle ma to prawo działać, jeśli nie to dlaczego? A może jest jeszcze inny sposób (ethernet)? A może podłączyć po prostu wyświetlacz i klawiaturę bezpośrednio do I/O na długich kablach?
 
Odpowiedź
#2
To co chcesz uzyskać to idzie zrobić... Komunikacja może być różna od ic2 po rs kończąc po wifi a moze i nawet BT po prostu są pewne zasady których trzeba sie trzymać a co najważniejsze zrozumieć komunikację nie korzystając z bibliotek a wszystko zrozumiesz....
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą. 
 
Odpowiedź
#3
Dzięki za potwierdzenie. Na ten moment walczę nadal z serialem, jednak prosiłbym o jakąś podpowiedź, jak zrobić aby móc przesłać zmienne int przez serial który potrafi wysyłać byte (fragmentacja i pisanie własnego protokołu?). Gdzie szukać pomocy lub przykładów?
To może inaczej.
Doszedłem jak wysłać float poprzez " Serial.write((byte *)&x, sizeof(x));" i to potem odczytać, ale jak wysłać kilka danych z różnych czujników?
 
Odpowiedź
#4
W internecie tego masz od groma zasada zawsze jest prosta bajt wysłany bajt odebrany... Twoim zadaniem jest tylko wysłać np. Z początkiem znacznikiem dane i koniec transmisji przy odbiorze po prostu odczytujesz początek jeżeli dane to odczytujesz do końca znaku i przekształcasz na zmienna lub string...

Wysyłasz A1234#
Odbierasz A1234# gdzie A to oznaczenie jakie dane, a # to znak końca danych więc 1234 to nasze dane..
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą. 
 
Odpowiedź
#5
Jest to dobry pomysł, ale jak to potem odebrać, aby rozdzielić dane od reszty?
 
Odpowiedź
#6
Tam masz wszystko opisane https://forum.arduino.cc/index.php?topic=396450.0 wystarczy przeczytać i zrozumieć szczególnie Example 3
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą. 
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości