krzywy187 Napisano Lipiec 5, 2019 Udostępnij Napisano Lipiec 5, 2019 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 Link do komentarza Share on other sites More sharing options...
rziomber Lipiec 6, 2019 Udostępnij Lipiec 6, 2019 Zobacz do przykładów w sekcji Summary: ArduinoJSON Link do komentarza Share on other sites More sharing options...
Popularny post ethanak Lipiec 6, 2019 Popularny post Udostępnij Lipiec 6, 2019 (edytowany) A po co tam JSON? Natywnym obiektem w C/C++ jest struktura, nie trzeba kombinować. Przykładowo: struct ramka { uint16_t potencjometr[4]; uint16_t klawisze; } ramka; // wypełniamy ramkę danymi, np.: ramka.potencjometr[0] = analogRead(A0); ramka.potencjometr[1] = analogRead(A1); ramka.potencjometr[2] = analogRead(A2); ramka.potencjometr[3] = analogRead(A3); ramka.klawisze = digitalRead(2); // no i wysyłamy: Serial.write((const uint8_t *)&ramka, sizeof (ramka)); A po stronie odbiorczej mamy coś analogicznego: Serial.readBuffer((uint8_t *)&ramka, sizeof(ramka)); Pomijam tu oczywiście problem synchronizacji, czy wysyłania różnych typów ramek, chodziło mi tylko o zasadę. Edytowano Lipiec 6, 2019 przez ethanak 3 Link do komentarza Share on other sites More sharing options...
krzywy187 Lipiec 6, 2019 Autor tematu Udostępnij Lipiec 6, 2019 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. Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. 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
marek1707 Lipiec 6, 2019 Udostępnij Lipiec 6, 2019 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. 1 Link do komentarza Share on other sites More sharing options...
krzywy187 Lipiec 6, 2019 Autor tematu Udostępnij Lipiec 6, 2019 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 Link do komentarza Share on other sites More sharing options...
slon Lipiec 6, 2019 Udostępnij Lipiec 6, 2019 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. Link do komentarza Share on other sites More sharing options...
Popularny post marek1707 Lipiec 6, 2019 Popularny post Udostępnij Lipiec 6, 2019 To może jeszcze inaczej: jakich zasięgów oczekujesz - czy jest to model latający czy samochód lub łódź. Bo wiesz, robotem może być każda z tych rzeczy. Dlaczego nie użyjesz typowej aparatury do zdalnego sterowania? Tam w ogóle nic nie musiz robić: podłączasz i działa od pierwszego razu. Czy transmisja ma być tylko w jedną stronę, czy raczej planujesz jakiś strumień informacji zwrotnych typu napięcia zasilania, temperatury, położenie itp. Modułów radiowych jest całe mnóstwo rodzajów i w zasadzie to przy tych najpopularniejszych to nic nie musisz samemu kombinować. Bierzesz gotowe kody (biblioteki) komunikacyjne, dopisujesz własny program generujący dane i żądający ich wysłania i tyle. Nawet te najprostsze, gwarantujące zasięgi na poziomie kilkunastu metrów i kosztujące po kilka złotych mają takie gotowce. Te droższe także 🙂 Przykładem totalnego badziewia jest komplet nadajnik-odbiornik (czyli przesyłanie jednokierunkowe) za 7zł: https://botland.com.pl/pl/moduly-radiowe/3191-modul-radiowy-nadajnik-fs100a-odbiornik-433-mhz.html Sprawdzałem, działa w otwartym terenie na.. 15-30 metrów z prędkością do paru kilobitów/s. Kolejna taniocha jest już transceiverem czyli umie pracować w obu kierunkach (nie na raz oczywiście). Działa w paśmie 2.4GHz więc antena może być malutka a tu jest nawet zintegrowana na płytce w postaci meandra ze ścieżki: https://botland.com.pl/pl/moduly-radiowe/837-modul-radiowy-rfm73-d-transceiver-tht.html Niestety marna antena, mała moc i wysoka częstotliwość sprawiają, że z zasiegiem nie poszalejesz. Dużo lepszym pomysłem jest zejście na 868MHz: https://botland.com.pl/pl/moduly-radiowe/594-modul-radiowy-rfm12b868d-868mhz-transceiver-tht.html To już jest dobry, uznany standard. W tej klasie cenowej znajdziesz mnóstwo podobnych modułów. Tu na przykład masz mocniejszy nadajnik: poziom +20dBm to już 100mW na antenie a to wraz ze znacznie poprawioną czułością odbiornika na poziomie -120dBm zapewnia zasięgi kilometrowe przy dobrych antenach: https://botland.com.pl/pl/moduly-radiowe/1392-modul-radiowy-rfm22b-868s2-868mhz-transceiver-smd.html Dzisaj furorę robi radio szerkopasmowe w standardzie LoRa. To pomysł firmy Semtech na pewien szczególny sposób modulacji zapewniający znaczną poprawę czułości a przy okazji skalowalność (wymianę) prędkości przesyłania na zasięg. Bardzo fajne i tanie moduły LoRa robi np. HopeRF: https://www.tme.eu/pl/details/rfm95w-868s2/moduly-rf/hope-microelectronics/ Tutaj na antenach postawionych na kilkumetrowych masztach można zrobić nawet ponad 20km. Wydaje mi się, że wszystkie te moduły (albo podobne) mają napisane biblioteki. Nie ma rady, jeśłi chcesz samodzielnie zrobić link radiowy od zera to i tak będziesz musiał nauczyć się korzystać z bibliotek komunikacyjnych Arduino i pisać wcale nietyrywialne programy z ich użyciem. Moim zdaniem każdy z tych modułów nada się do sterowania prostym robotem. Napisz w co zdecydowałeś się wejść. 1 2 Link do komentarza Share on other sites More sharing options...
ethanak Lipiec 7, 2019 Udostępnij Lipiec 7, 2019 @marek1707 - a co powiesz na taki moduł: https://botland.com.pl/pl/moduly-radiowe/7550-modul-radiowy-nrf24l01-pa-lna-24ghz-transceiver-tht-czarny-z-antena.html? Używam co prawda taniej wersji bez anten, nie próbowałem jaki to ma naprawdę zasięg, ale na scenę teatrze wystarcza. 1 Link do komentarza Share on other sites More sharing options...
marek1707 Lipiec 7, 2019 Udostępnij Lipiec 7, 2019 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ę.. 🙂 1 Link do komentarza Share on other sites More sharing options...
krzywy187 Lipiec 7, 2019 Autor tematu Udostępnij Lipiec 7, 2019 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 Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
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ę »