Skocz do zawartości
krzywy187

Wysyłanie kilka zmiennych UART

Pomocna odpowiedź

Witam

Na wstępie powiem że nie idę na łatwiznę i przeszukałem mnóstwo materiałów w sieci na temat wysyłania danych po UART. Znalazłem albo kompletnie nic albo konkrety, które nie zostały wytłumaczone dokładnie np:

LINK1 LINK2

Wszystko sprowadza się do kodu, czyli jak wysłać, zdefiniować poprawnie ramkę i również ją odczytać a potem rozdzielić na konkretne zmienne. Zamierzam jedną "paczką danych" wysłać 4 wartości różnych potencjometrów. Największy problem jest z odczytem, program który potrafi zrozumieć odebraną ramkę. 

Projekt zakłada arduino nadajace z modułem rf i potencjometrami oraz arduino odbierajace czyli arduino z odbiornikiem rf, zwyczjane sterowanie do robota a moduł radiowy zapewnia spory zasięg. Może ktoś ma dobre źródło wiedzy na ten temat albo potrafi przykładowo część kodu zademonstrować 🙂 byłbym wdzięczny.

Pozdrawiam

Udostępnij ten post


Link to post
Share on other sites

Dzięki za odpowiedź 🙂 już wiem na czym bazować. Polecacie jeszcze jakieś rozwiązanie? Chodzi mi o słowa kluczowe jakis tematów z C++ którymi dało się to też zrobić, później sobie doszukam informacji na ten temat, lubię też uczyć się przy okazji. 

Udostępnij ten post


Link to post
Share on other sites

Wszystko zalezyod tego jaki moduł radiowy planujesz użyć. Transmisja przez radio nie ma nic wspólnego z przesyłaniem przez UART i nie, nie jest to "bezprzewodowe przedłużanie" kabelka. Tylko niektóre - te najdroższe - moduły radiowe są przygotowane do bezpośredniej współpracy z UARTem i to tylko takie, które mają na pokładzie swój własny procesor. Są to pełne modemy radiowe. Dane przed wysłaniem w eter trzeba bowiem odpowiednio przygotować i one to robią, dbają o jakość połączenia, kodują i dekodują informacje, zapewniają potwierdzenia i ew. retransmisje. Trochę prostsze moduły mają zwykle interfejs SPI i same robią wiele, ale już mniej niż te poprzednie. Tutaj trzeba już odpowiednio je zaprogramować: ustawić konfigurację toru radiowego, modulacje, szerokości pasma, filtry itp itd. No i jest trzecia klasa modułów, tych najprostszych i najtańszych gdzie wszystko trzeba zrobić samemu: przygotować ramkę danych łącznie z sumami kontrolnymi, zakodowac bity w ustalony sposób i wysłać je na pin nadajnika w określoną prędkością. Z odbiornku z kolei trzeba wykryć początek transmsji, odebrać dane, zdekodować, policzyć sumę kontrolną czy ew. kody korekcyjne itd. Na pewno podłączenie takiego modułu przez zwykły UART nie zadziała. No więc jak? Co tam masz? Bo jeśli przypadek 2 lub 3 to żaden uART nie jest Ci potrzebny a raczej solidny kawał kodu lub gotowa biblioteka. I największym problemem wcale nie jest spakowanie i rozpakowanie danych tylko przesłanie czegokolwiek w spsób pewny.

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Im mniej roboty tym lepiej, więc mógłbym dołożyć do lepszych odbiorników i nadajników. Fakt, mój błąd jeśli chodzi a w jaki sposób to działa. Najważniejsze żeby spełniało założenie przysłania informacji w prosty sposób. Pewnie też posiłkując się jakaś biblioteką, może coś polecacie ? I jakie moduły są najmniej obsługowe 

Udostępnij ten post


Link to post
Share on other sites

Jak interesują cię różne podejścia to możesz zerknąć do tego opisu , który jest na forum od jakiegoś czasu. Moduły radiowe są dostępne w sklepach internetowych. Jeśli ktoś ma inne doświadczenia od moich z tymi modułami to niech napisze. Sam z chęcią poczytam.

Udostępnij ten post


Link to post
Share on other sites

Nie chciałbym uchodzić tu za jakiegoś guru, nie znam wszystkich modułów i czasem mogę tylko się domyślać. Tutaj (domyślam się) poszli na rozwiązanie siłowe. Do typowego low-powerowego chipu 2.4GHz dorabiamy wzmacniacz mocy (PA - nadajnik) i wzmacniacz niskoszumowy (LNA - odbiornik). To daje większy budżet połączenia a mając więcej mocy na wyjściu i lepszą czułość na wejściu możemy więcej stracić w powietrzu wciąż zachowując łączność - to podstawowy wzór radiowy Friisa. A jednocześnie korzystając z ze stosunkowo szerokiego pasma 2.4GHz dostajemy dużą szybkość przesyłania. Jak każde rozwiązanie siłowe, to ma podstawową wadę: strzelasz z armaty do wróbla. Po pierwsze musisz "przekrzyczeć" to wszystko co na 2.4GHz pracuje w okolicy a więc WiFi, Bluetooth a czasem nawet modelarzy z ich FPV (choć Ci przenieśli się ostatnio na 5.8GHz) itp. Po drugie to kosztuje prąd, mnóstwo prądu. W zastosowaniach gdzie nie masz deficytu zasilania to oczywiście problem drugorzędny, ale kilkaset mA pompowane w nadajnik jest nie do przyjęcia w aplikacji np. bateryjnej. Skoro u Ciebie działa i jesteś zadowolony, nie widzę powodu do krytykowania. Na coś postawiłeś i spełniło to pokładane nadzieje.

Acha, jeszcze kwestia anten. To co tu siedzi w gniazdku SMA to oczywiście zabawka nie mająca wiele wspólnego z poprawnie zrobionym zestawem antenowym. Kawałek drucika w plastikowym kondoniku też może działać poprawnie, ale tylko gdy współpracuje z resztą obudowy/podstawy. Jest to bowiem antena typu whip więc do poprawnego działania wymaga powierzchni masy u swojej podstawy. Bez tego i bez weryfikacji takiego systemu na analizatorze antenowym równie dobrze możesz tam wetknąć spinacz biurowy. Wyniki będą identyczne, trochę gorsze albo trochę lepsze - to loteria, jak przechodzenie przez skrzyżowanie z szeroko zamkniętymi oczami.

Dlatego pisząc o modułach radiowych zawsze zastrzegam, że zasięgi bardzo zależą od anten. Można robić je z drucików wg jakichś instruklcji, ale to prawie zawsze nie działa. A raczej działa tak sobie. Dopiero poprawnie wykonana i zestrojona antena pracująca w pustej przestrzeni (albo w otoczeniu przedmiotów z jakimi była projektowana i mierzona) daje sensowne wyniki. W przeciwnym razie zasięg spada kilukrotnie, ale nowoczesne moduły mają takie nadmiary, że staraczją do większości zastosowań domowych. Tylko czasem trafia się ktoś kto na poważnie usuiłuje potraktować obietnice producentów (i teorię propagacji), buduje łączność i narzeka, że ma 3 razy mniejszy zasięg niż napisali w datasheet. A potem na zdjęciu antena jest tuż obok baterii lub.. tak jak tutaj masz whip bez ground plane'u.

Dobra, dosyć domyślania się.. 🙂 

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Na początek chyba zacznę od czegoś co jest w cenie dobrego piwa czyli FS100A na 433 Mhz, jak zacznie banglać to zacznę inwestować. Dobrym wyborem wydaje mi sie też nRF24L01 bo dość często widze go w projektach. Znalazłem też trochę kodu z projektu zdalnego czujnika do bojlera o TUTAJ gdzioe wysyłane są dwie wartości i używana jest biblioteka Virtual Wire

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Napisz odpowiedź...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...