Muszę wykreślić dane szeregowe z Arduino.
Potrzebuję wsparcia dla:
- Różne formaty danych (np. Podpisane, niepodpisane, 8 bitów, 16 bitów);
- Drukuje kilka danych na tych samych osiach;
- Eksportuje / importuje dane pliku.
Ponieważ wykreślanie danych szeregowych z Arduino jest powszechną potrzebą, moje pytanie brzmi: Jakie programy / narzędzia są dostępne do wykreślania danych szeregowych z Arduino, które spełniają powyższe potrzeby?
Jakie są zalety / wady zaproponowanej metody?
Odpowiedzi:
Istnieje kilka dobrych aplikacji do wizualizacji danych szeregowych, w tym:
MegunoLink (29,95 USD; Lite za darmo) - drukowanie, logowanie, programowanie, raportowanie i więcej.
MakerPlot (39 USD) - drukowanie cyfrowe i analogowe, monitorowanie, niestandardowe interfejsy i wiele innych.
ArduinoPlot (bezpłatny) - proste kreślenie.
arduino-plotter (bezpłatny) - łatwe, lekkie drukowanie z obsługą wszystkich prymitywnych typów
Bridge Control Panel (bezpłatny) - rejestrowanie, drukowanie i wiele innych.
RealtimePlotter (bezpłatny) - wykreślanie danych z 6 kanałów.
Ploter danych szeregowych w czasie rzeczywistym (bezpłatny) - wykreślanie danych CSV, rejestrowanie i więcej.
SimPlot (bezpłatny) - kreślenie 4 kanałów.
Ploter szeregowy Arduino (bezpłatny) - wbudowany edytor Arduino w obszarze Narzędzia> Ploter szeregowy .
(To jest wiki społeczności, możesz rozwinąć listę).
źródło
GnuPlot
Zalety: Jest bardzo elastyczny, skryptowalny i swobodnie dostępny.
Wady: trochę skomplikowane do nauczenia się (ale wymyśliłem, jak zacząć za kilka minut i całkiem funkcjonalne za godzinę lub dwie), działa w oknie terminala (jeśli uważasz, że to wada).
Coś, co uznałem za bardzo przydatne, to okresowe ładowanie pliku dziennika mojego programu terminalowego, więc w miarę postępu eksperymentu otrzymałem dynamiczny wykres.
Edycja: Oto skrypt GnuPlot, który go kreśli:
źródło
Używam Matplotlib do każdego spisku, który muszę zrobić.
Nie jest w żaden sposób specyficzny dla arduino, ale jest to bardzo doskonały zestaw narzędzi do drukowania w Pythonie .
Zbudowałem wiele aplikacji, które wykreślają dane z różnych mikrokontrolerów w czasie rzeczywistym na wykresie, ale tak naprawdę był to raczej dwuetapowy proces: 1. Pobierz dane z urządzenia do komputera, 2. wykreśl dane w czasie rzeczywistym .
Naprawdę myślę, że powinieneś podzielić swoje pytanie na dwie części:
źródło
SerialPlot (bezpłatny). Robi wszystko, czego potrzebujesz i wiele więcej.
Inne funkcje:
źródło
Odpowiadając na moje własne pytanie tutaj. Używam panelu sterowania mostem, jak wspomniano.
Zalety: wiele funkcji.
Wady: trudna w konfiguracji i bardzo słaba składnia / raportowanie błędów.
Aby użyć: Musisz zapisać dane Arduino przez port szeregowy jeden bajt na raz. Dla typu danych int, który wyglądałby następująco:
W programie Bridge polecenie odczytu danych to:
RX8 to polecenie odczytu [h = 43] oznacza, że następny poprawny bajt to „C” w ASCII, następnie High Byte of Key1, a następnie Low Byte of Key1
Wygląda to tak w Bridge:
źródło
Możesz wypróbować serialchart . To dość napięty program do przodu. Robi dokładnie to, o co prosiłeś. Jedyną wadą jest to, że wymaga danych w formacie CSV (nie spełnia pierwszego punktu).
Zrzut ekranu ze strony projektu:
źródło
Być może zainteresuje Cię
Telemetry
See on Github . Jest to bardzo prosty w użyciu protokół komunikacyjny z przejrzystym interfejsem, który umożliwia dwukierunkową komunikację z urządzeniami Arduino / Mbed.Jeśli nie chcesz czytać tego długiego posta, zobacz Omówienie wszystkich niesamowitych funkcji w nim zawartych
Potęga tej biblioteki pochodzi z interfejsu wiersza poleceń na pulpicie (który nie wymaga umiejętności programowania w języku Python).
Jest w stanie otwierać wykresy o wysokiej wydajności (znacznie wyższe niż w przypadku matplotlib) po prostu przez wpisanie polecenia .
Protokół obsługuje złożone struktury danych . Na razie tablice i tablice rzadkie mogą być wysyłane z wbudowanej płyty.
Wykresy otwarte z interfejsu wiersza poleceń rozumieją rodzaj danych, a dla tablic, zamiast wykreślania każdej próbki w funkcji czasu, próbka będzie wykreślana na podstawie własnego indeksu.
W najbliższej przyszłości planowane jest dodanie obsługi współrzędnych przestrzennych (danych xyz), co pozwoli na natychmiastowe wykreślanie danych przestrzennych. Raz jeszcze wykresy wszystko wymyślą, wykreśl swoje dane w przestrzeni 2D lub 3D i możesz skupić się na rozwijaniu aplikacji.
Uważam, że te funkcje są po prostu unikalne dla takiego projektu.
Interfejs wiersza poleceń Pytelemetry
Po zainstalowaniu za
pip
pomocą wiersza polecenia można uruchomićNastępnie można
connect
,ls
(lista) otrzymał tematy,print
dane otrzymane na temaciepub
(opublikowania) na temat, czy otworzyćplot
się na temacie, aby wyświetlić odebranych danych w czasie rzeczywistymZaczynać
Wiki
PS: Jestem autorem.
Opracowałem go, ponieważ nie mogłem znaleźć rozwiązania, które pozwoliłoby mi:
wszystkie powyższe bez korzystania z zastrzeżonych rozwiązań lub rozdętych GUI.
Korzystając z tej biblioteki, czas na skonfigurowanie komunikacji między Arduino i komputerem PC trwał zwykle od pół dnia do 5 minut.
źródło
Nikt nie wspominał o przetwarzaniu, które jest bardzo wszechstronne. Możesz zrobić znacznie więcej niż tylko kreślenie, ale jeśli to wszystko, co chcesz zrobić, możesz użyć biblioteki gwoptics; podłącz Arduino i przetwarzanie zgodnie z instrukcją tutaj .
źródło
Zrobiłem równoważne narzędzie w pythonie, które drukuje dane w czasie rzeczywistym z akcelerometru ADXL345. https://github.com/mba7/SerialPort-RealTime-Data-Plotter
może być pomocne dla kogoś
Wystarczy wybrać port szeregowy i prędkość i wysłać dane szeregowe w następującym formacie:
Można łatwo dostosować, aby zmienić ten format
źródło
Możesz użyć MATLAB Student Edition , dzięki czemu możesz zaoszczędzić czas na dalsze analizy. Możesz po prostu otworzyć port COM w MATLAB i wykreślić odebrany sygnał i / lub zapisać sygnał w obszarze roboczym lub cokolwiek innego. MATLAB ułatwia wszystko!
źródło
Format CSV jest najbardziej uniwersalny dla dowolnych danych (podpisany / niepodpisany, różnej wielkości i precyzji).
Narzędzie wieloplatformowe (napisane w Javie / Scali) Scsvlog może odbierać / analizować ciągi CSV z portu / gniazda szeregowego, wyświetlać wartości i rysować wykresy (do 8).
źródło
Możesz wypróbować oprogramowanie opracowane dla tej propozycji. Ma być łatwy w użyciu. Zobacz SerialGraphicator - klient Open Serial Port Free Open Source zdolny do tworzenia wartości wykresów odbieranych w formacie JSON.
źródło
Chociaż sam go nie używałem, „rqt_plot” działający na komputerze PC wydaje się być popularnym sposobem drukowania danych na komputerze PC przesyłanym przez port szeregowy z Arduino z uruchomionym szkicem zawierającym bibliotekę rosserial_arduino lub bibliotekę ros_arduino_bridge .
źródło
Wiem, że to bardzo stare pytanie, ale niedawno stworzyłem aplikację Mac, która bardzo dobrze rozwiązuje ten problem. Możesz znaleźć więcej informacji na ten temat na www.bloonapp.com. Na stronie znajduje się kilka filmów demonstracyjnych, które możesz sprawdzić.
źródło
Wiem, że prawdopodobnie chciałeś bardziej zaawansowanego wyjścia GUI, ale udało mi się zreplikować zadanie, które normalnie można wykonać za pomocą oscyloskopu:
za pomocą plotera szeregowego w Arduino IDE i modułu ADC można uzyskać za 3 USD w serwisie eBay. Przyznaję, że jest to trochę prymitywne, ale warto zainwestować w to narzędzie jeszcze przez chwilę, zanim zainwestujesz w rozwiązania na poziomie Python / Matlab / ect. Był niezwykle łatwy w użyciu. Dodanie nagrania z karty SD do procesu nie zajmie wiele.
Zobacz: https://edwardmallon.wordpress.com/2016/08/15/using-the-arduino-uno-as-a-basic-data-acquisition-system/
źródło
Przeglądarka telemetrii
Zalety:
Niedogodności:
źródło
Ploter szeregowy to prosty program, który stworzyłem z Electronem, który odbiera dane w następującym formacie:
data1,data2,timestamp;
i konwertuje je na wykres w czasie rzeczywistym.źródło
Prawie przydatne. To potrzebuje:
Live Graph to lepsza opcja i używam jej w połączeniu z Tera Term który pobiera dane przez łącze USB / szeregowe (i zapisuje je w pliku dziennika, który następnie sonduje Live Graph).
Wykres Live jest nieco wadliwy podczas buforowania danych i nie znalazłem sposobu, aby ustawić ruchome okno do wyświetlania wyników. Ponadto wyświetlanie wielu wykresów wymaga ręcznego skalowania, ale mimo to jest nadal bardzo przydatne. Jest napisany w Javie, więc będziesz potrzebować JRE. Wolę to niż instalowanie Pythona, tak jak niektóre inne programy graficzne. Kolejnym minusem jest to, że otwiera 4 różne okna, co jest bólem, gdy chcę przełączyć między nim a Tera Term.
Muszę jeszcze znaleźć oprogramowanie, które
źródło
?
przycisk w edytorze.Korzystam z processing.org do seryjnego drukowania z Arduino. To była jedyna aplikacja, jaką mogłem znaleźć, która pozwoliła mi tworzyć prawdziwe histogramy (np. Milion zdarzeń w stu pojemnikach) i wyświetlać różne numery informacyjne oprócz średniej sigma dla każdego kanału. Dwa główne problemy: A) okazało się, że jest oparty na Javie bez bajtów bez znaku B) zsynchronizuje ig z wymaganym okrągłym buforem i znacznikami w danych. (wysoka prędkość, bez uzgadniania)
źródło
SV Monitorowanie i nagrywanie sygnałów dla Arduino i nie tylko.
Przykład wideo
Pobierz za darmo)
źródło