Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Europejski lider sprzedaży techniki i elektroniki.
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Jak łatwo i szybko graficznie wyświetlić dane z mikrokontrolera na PC

ekrzychoooo 01 Sie 2013 06:54 6708 41
  • #1 01 Sie 2013 06:54
    ekrzychoooo
    Poziom 11  

    Witam.
    Często w aplikacjach potrzebujemy w jakiś sposób zobrazować dane z mikrokontrolera na ekranie komputera. Często z braku laku jest używany terminal tekstowy. Jednak można w łatwy sposób przedstawić dane w formie graficznej.
    Ze strony http://www.my-electronics.eu pobieramy program Salamandra.
    Utworzenie poniższego panelu zajmuje ok 5 do 10 min.
    Jak łatwo i szybko graficznie wyświetlić dane z mikrokontrolera na PC

    Program wymaga zainstalowania Virtualnej maszyny Java (ja mam Java(TM) SE Runtime Environment (build 1.7.0_25-b17)).
    Poniżej video instrukcja jak skonfigurować sobie panel mierników.

    Link


    Program jest w fazie rozwojowej, i miło będą widziane uwagi na temat zmian, ulepszeń itd.

    Ramki wejściowe.
    Ramki są typu tekstowego.
    Ramka rozpoczyna się od znaku LF (0x0a), czterech znaków określających adres w hex,
    liczby określającej ilość danych, bajtów danych i znaku CR (0x0d).
    LF AAAA N DDDD CR
    Przykład ramki ustawiającej miernik o adresie 32(dec) na wartość 13.8:
    LF 0 0 2 0 4 1 3 . 8 CR
    0A 30 30 32 30 34 31 33 2E 38 0D
    Ramki wyjściowe.
    Ramki są typu tekstowego.
    Ramka rozpoczyna się od znaku LF (0x0a), czterech znaków określających adres w hex,
    liczby określającej ilość danych, bajtów danych i znaku CR (0x0d).
    Moduł przycisków ON/OFF generuje dwa bajty danych. Reprezentują one bajt w kodzie hex
    w którym odpowiednie bity odpowiadają odpowiednim klawiszom.
    [/img]

    0 29
  • #2 01 Sie 2013 08:51
    tehaceole
    Poziom 28  

    Programik na pierwszy rzut oka bardzo sympatyczny. Znalazło się kilka literówek w polskich opisach, ale jest OK. Niestety chwilowo nie mam jak przetestować jego działania w trakcie komunikacji z procesorem.
    IMHO programik ma olbrzymi potencjał ku dalszemu rozwojowi. Tylko teraz pytanie: jak z prawami autorskimi? Na jakiej zasadzie można z niego korzystać - chodzi o zastosowanie komercyjne.

    Podsumowując: kawał świetnej roboty! :)

    0
  • #3 01 Sie 2013 14:43
    ekrzychoooo
    Poziom 11  

    Program będzie za free, zarówno do zastosowań niekomercyjnych jak i komercyjnych.
    Ewentualne opłaty będą za indywidualne zmiany programu pod konkretnego klienta.
    W miare czasu będą pojawiać się nowe elementy które można będzie dodawać do panelu.
    W najbliższym czasie:
    - mini terminal
    - moduł wykresów (coś jak zajętość procesora w windows)
    - moduł przechwytujący dane i zapisujący do pliku CSV (łatwe wykresy w EXCEL)

    0
  • #4 01 Sie 2013 14:46
    tehaceole
    Poziom 28  

    ekrzychoooo napisał:
    Program będzie za free, zarówno do zastosowań niekomercyjnych jak i komercyjnych.
    Ewentualne opłaty będą za indywidualne zmiany programu pod konkretnego klienta.
    W miare czasu będą pojawiać się nowe elementy które można będzie dodawać do panelu.
    W najbliższym czasie:
    - mini terminal
    - moduł wykresów (coś jak zajętość procesora w windows)
    - moduł przechwytujący dane i zapisujący do pliku CSV (łatwe wykresy w EXCEL)
    W takim razie wróżę programikowi naprawdę świetną przyszłość! :) Sam nie tak dawno poszukiwałem czegoś podobnego - nawet myślałem o napisaniu samemu. Projekt niestety został wtedy zarzucony, a tu proszę: ktoś wykonał kawał dobrej roboty. :)

    0
  • #5 01 Sie 2013 17:06
    tmf
    Moderator Mikrokontrolery Projektowanie

    ekrzychoooo napisał:

    Ramki wejściowe.
    Ramki są typu tekstowego.
    Ramka rozpoczyna się od znaku LF (0x0a), czterech znaków określających adres w hex,
    liczby określającej ilość danych, bajtów danych i znaku CR (0x0d).
    LF AAAA N DDDD CR
    Przykład ramki ustawiającej miernik o adresie 32(dec) na wartość 13.8:
    LF 0 0 2 0 4 1 3 . 8 CR
    0A 30 30 32 30 34 31 33 2E 38 0D
    Ramki wyjściowe.
    Ramki są typu tekstowego.
    Ramka rozpoczyna się od znaku LF (0x0a), czterech znaków określających adres w hex,
    liczby określającej ilość danych, bajtów danych i znaku CR (0x0d).
    Moduł przycisków ON/OFF generuje dwa bajty danych. Reprezentują one bajt w kodzie hex
    w którym odpowiednie bity odpowiadają odpowiednim klawiszom.
    [/img]


    A nie lepiej byłoby stworzyć ramki tak jak to jest w Atmel Data Visualizer? Ramki tekstowe i RS232 powodują, że problemem jest przesyłanie większej liczby danych, czyli wiele wizualizacji real-time odpada a priori. Druga rzecz, że rozwiązanie jakie przyjęli w ADT umożliwia konfigurację okna wizualizacji przez aplikację, co czyni całą komunikację odporną na błędy konfiguracji i wygodniejszą. Szczególnie jeśli ktoś chciałby wykorzystać twój program do wizualizacji danych z szeregu czujników, których konfiguracja się zmienia.
    A już zupełnie offtop, czemu nie użyłeś Qt? Tam masz na dzien dobry dziesiątki gotowich Widgetów do wizualizacji, a Qt Designer umożliwia poukładanie tego w całość.

    0
  • #6 01 Sie 2013 20:50
    rekinisko
    Poziom 22  

    Bardzo dobry pomysł. Rozpoznawanie początku ramki powinno być pozostawione do konfiguracji użytkownikowi.

    0
  • #7 01 Sie 2013 21:06
    piotrva
    Moderator Mikrokontrolery

    Ogólnie możnaby też dać np. wsparcie dla RS485 - żeby komputer nasłuchiwał i jeśli dostanie swój adres w sieci to odbiera dane. I też bym zostawił konfigurację czy ktoś chce ASCII czy binarnie, czy HEX dane wysyłać.
    Poza tym program bardzo fajny i życzę powodzenia w dalszych pracach, a w wolnych chwilach potestuję.

    0
  • #8 01 Sie 2013 21:44
    tmf
    Moderator Mikrokontrolery Projektowanie

    W ADV rozwiązano to elegancko - jest kilka struktur opisujących dane + możliwość definiowania własnych. Program przed wysłaniem danych wysyła do ADV konfigurację opisującą jakie dane będą leciały i jak sformatowane. Np. info typu, wysyłam dane tworzące 10 odrębnych kanałów, o identyfikatorach np. 0-9 i potem dla każdego kanału konfigurację, czyli np. dane są wysyłane w formacie int, unsigned int, float itd. Można sobie dodanć np. format ASCII. ADV odczytuje konfigurację i się do niej dostosowuje. W ten sposób można sobie zrobić wykresy w czasie rzeczywistym np. temperatur, czy innych parametrów. Można go też użyć jako datalogger. Dodatkowo aplikacja przesyła nazwę kanału, format wyświetlanej jednostki, dane o wartości minimalnej/maksymalnej (potrzebne do skalowania wykresu), częstotliwość samplowania itd. Gdyby rozwinąć takie narzędzie to byłby miód :)

    0
  • #9 05 Sie 2013 22:01
    ekrzychoooo
    Poziom 11  

    Witam
    TMF to fajny pomysł z tym formatem który opisujesz. W przyszłości mam plan mocniej rozbudować zakładkę "Opcje" programu i tam umieścić do wyboru inne formaty ramek. Natomiast jeśli chodzi o szybkość to nie kładłem takiego nacisku ponieważ nie takie były założenia programu. Myślę że nikomu nie będzie się chciało wpatrywać w miernik któremu wskazówka zmienia się kilka razy na sekundę.
    Do tego są inne programy np ADV.
    Ogólnie dzięki wielkie za wszystkie sugestie.
    Zmiany w ostatni weekend to dodanie automatycznego wykrywania dostępności nowego oprogramowania i poszerzenie opisu w helpie.
    Pozdrowienia
    Krzych

    0
  • #10 07 Sie 2013 18:54
    Andiw
    Poziom 11  

    Ten program to super sprawa.Trochę potestowałem, działa. Kiedyś coś takiego z wykresami zrobiłem w delphi. Strasznie denerwujące jest wyłączanie programu po każdej zmianie, nie można by stworzyć oddzielnego trybu edycji i trybu pracy?

    0
  • #11 14 Sie 2013 18:33
    ekrzychoooo
    Poziom 11  

    Witam.
    Zamieszczam krótki program demonstracyjny na mikrokontroler ATMEGA8 w języku C. Program odczytuje wartość z przetwornika ADC i wysyła dane do programu salamandra. Plik zawiera projekt w AtmelStudio 6.

    Poniżej filmik z działania tego programu.

    Link

    Jeśli ktoś nie używa AtmelStudio 6 to do projektu należy dołączyć pliki
    adcToSalamandra.c (main)
    ftoa.c
    ftoa.h

    Jeśli ktoś używa CodeVision to biblioteka stdlib zawiera już funkcję ftoa. Ma trochę inne argumenty ale w helpie jest to opisane.

    0
  • #13 29 Sie 2013 12:54
    ekrzychoooo
    Poziom 11  

    Do tej pory po konfiguracji panelu aby zobaczyć efekty należało ponownie uruchomić program.
    Zdawałem sobie sprawę że może jest to trochę irytujące.
    Ale jest nowa wersja SalamandraRCf gdzie mamy dostępny przycisk przeładowujący program automatycznie.
    Jak łatwo i szybko graficznie wyświetlić dane z mikrokontrolera na PC

    Również po zmianie ustawień portu szeregowego już nie trzeba ponownie uruchamiać programu.

    Wszelkie uwagi do następnych zmian mile widziane.

    1
  • #14 29 Sie 2013 13:19
    Freddie Chopin
    Specjalista - Mikrokontrolery

    tmf napisał:
    A nie lepiej byłoby stworzyć ramki tak jak to jest w Atmel Data Visualizer? Ramki tekstowe i RS232 powodują, że problemem jest przesyłanie większej liczby danych, czyli wiele wizualizacji real-time odpada a priori.

    Tyle że format danych użyty w ADV (binarny) jest nieodporny na zakłócenia, błędy i przerwy w transmisji, natomiast format użyty w programie opisywanym tutaj (payload w ASCII, specjalne znaki binarnie, nie-ASCII) - jest.

    Pewną wariacją jest wysyłanie danych w formie hex - jeden bajt w formie dwuznakowego tekstu, np. "F9", co zmniejsza prędkość transmisji dwukrotnie względem wersji binarnej, wciąż zachowując zalety trybu ASCII.

    4\/3!!

    0
  • #15 29 Sie 2013 15:37
    tmf
    Moderator Mikrokontrolery Projektowanie

    Dlaczego jest nieodporny? Każdy pakiet zabezpieczony jest CRC, oczywiście to połowicze rozwiązanie, bo umożliwia tylko wykrycie błędu, a nie jego naprawienie. Ale format stosowany przez autora chyba ma taką samą wadę - aplikacja co najwyżej wykryje błąd.
    W każdym razie program robi się fajny, ale myślę, że niezależnie od samego protokołu dobrze by było gdyby to aplikacja mogła wysłać dane konfiguracyjne dla programu z info jak ma wyświetlać, a przynajmniej jakie dane będą wysyłane.

    0
  • #16 29 Sie 2013 18:31
    Freddie Chopin
    Specjalista - Mikrokontrolery

    tmf napisał:
    Dlaczego jest nieodporny?

    Bo po zgubieniu jednego bajtu wszystko idzie w rozsypkę i nie da się ponownie zsynchronizować.

    4\/3!!

    0
  • #18 29 Sie 2013 19:27
    Freddie Chopin
    Specjalista - Mikrokontrolery

    tmf napisał:
    Niekoniecznie, każdy pakiet ma charakterystyczny nagłówek.

    Co w nim charakterystycznego, skoro podobny ciąg dwóch bajtów może wystąpić w dowolnym miejscu pakietu (nawet niekoniecznie w samych danych)?

    4\/3!!

    0
  • #19 29 Sie 2013 20:26
    tmf
    Moderator Mikrokontrolery Projektowanie

    Jednak szansa na losowe 0x55aa nie jest taka duża i w końcu synchro załapie. Pakiet ma nagłówek, pole długości rekordu i epilog + CRC. Nie widzę różnicy pomiędzy pakietem o strukturze ADV, a pakietem zaproponowanym przez autora wątku. Nie zapominaj też, że mówimy o RS232, czy RS232 po USB, szczególnie w tym drugim przypadku, raczej bajt się nie zgubi bo już inna warstwa o to dba.

    Dodano po 1 [minuty]:

    BTW, jeśli kogoś ta dyskusja interesuje to proponuję to przenieść do osobnego tematu, lub usunąć, po co zaśmiecać OT wątek autora.

    0
  • #20 30 Sie 2013 08:49
    DXFM
    Poziom 20  

    Świetna robota!
    W następnej wersji zapewne będzie możliwość edycji już wstawionych elementów (dodania, usunięcia) jak i przełączanie się pomiędzy już stworzonymi ekranami. Widziałbym też komponent wykresu przydatny do wizualizacji zmian parametru w czasie.

    0
  • #21 30 Sie 2013 09:20
    markosik20
    Poziom 33  

    Jest szansa na wersję dla linuksa? Ewentualnie udostępnienie samego pliku .jar.
    Z jakiej biblioteki korzystałeś przy obsłudze portu RS232?

    0
  • #22 30 Sie 2013 17:50
    ekrzychoooo
    Poziom 11  

    Witam.
    Trwają prace nad zmianą struktury ramki. W najbliższym czasie pojawi się wersja gdzie w ramce będzie można oprócz konkretnej wartości przesłać wyrażenie regularne . Salamandra dokona konwersji według przesłanego wyrażenia. Dzięki temu w mikrokontrolerze nie misimy nic przetwarzać. pRzesylamy wprost wartość z ADC.
    np.
    [LF] [TYP RAMKI] [ADRES] [ICZBA DANYCH] [REG EX MATH] [PRECYZJA] [DATA] [CR]

    REG EX MATH moze wyglądać następująco [5*x/1024]. wyrażenie będzie mogło zawierać sinus, cosinus, tangens cotangens pierwiastek ln log itd.. itd..
    PRECYZJA to ilość miejsc po przecinku
    DATA to dana 16bit (dwa bajty w kodzie naturalnym)

    Myślę że to przyniesie bardzo skrócenie zajętości pamięci flash w procku.
    Byle ATTINY + Salamandra i już mierzymy.

    Myślę że w ciągu tygodnia będzie do pobrania.
    Początkiem września na linuxa i win64

    Program ma pewien feler. Podczas edycji parametrów elementu, po wprowadzeniu adresu trzeba zaakceptować "Enter", przejście do następnego parametru poprzez "tab" nie zapamiętuje adresu. Jutro będzie już do pobrania bez tego feleru. Ci którzy mają wersje od RCd to program sam zgłosi że jest nowa wersja.

    Dodano po 2 [godziny] 35 [minuty]:

    markosik20 napisał:
    Jest szansa na wersję dla linuksa? Ewentualnie udostępnienie samego pliku .jar.
    Z jakiej biblioteki korzystałeś przy obsłudze portu RS232?

    Biblioteka RXTX

    0
  • #23 02 Wrz 2013 21:52
    tehaceole
    Poziom 28  

    Wielka szkoda, że najnowszej wersji Salamandry nie mogę zainstalować na W7 64b :( Pośrednich wersji nie zasysałem, ale pamiętam że pierwsza uruchomiła mi się bez zająknięcia. Popracuj nad tym...

    Ogólnie projekt zmierza w baaardzo dobrym kierunku :)

    0
  • #24 03 Wrz 2013 11:25
    ekrzychoooo
    Poziom 11  

    Cytat:
    Wielka szkoda, że najnowszej wersji Salamandry nie mogę zainstalować na W7 64b

    Ogólnie powinno działać na win7 64bit.
    Nie mam czasu tego przetestować dokładnie dlatego piszę że aktualnie jest to wersja 32bit.
    Do pełni szczęścia wejdź na stronę http://rxtx.qbang.org/wiki/index.php/Download i pobierz rxtx-2.2pre2-bins.zip. Tam są biblioteki pod różne systemy, poprostu podmień plik RXTXserial.dll.
    Napisz jakie efekty.

    0
  • #25 03 Wrz 2013 13:28
    tehaceole
    Poziom 28  

    Niestety instalator nie pozwala mi zainstalować tego programu w systemie 64b. Rozpakowałem więc plik instalatora przy pomocy winrara w nadziei, że w ten sposób to ominę. Niestety to nie przyniosło rezultatu.

    0
  • #26 03 Wrz 2013 13:54
    ekrzychoooo
    Poziom 11  

    tehaceole napisał:
    Niestety instalator nie pozwala mi zainstalować tego programu w systemie 64b. Rozpakowałem więc plik instalatora przy pomocy winrara w nadziei, że w ten sposób to ominę. Niestety to nie przyniosło rezultatu.

    Instalator w "moich dokumentach" tworzy katalog Salamandra i tam kopiuje pliki lang.txt oraz options.xml.
    Spróbuj to zrobić ręcznie.

    0
  • #27 03 Wrz 2013 14:08
    tehaceole
    Poziom 28  

    Zrobiłem tak jak kazałeś - w dokumentach miałem stare wersje plików lang.txt oraz options.xml (pozostałości po pierwszej wersji Salamandry). Podmieniłem je na te z rozpakowanego instalatora i wsio działa! :) Czyli to nie z programem jest problem tylko coś z instlatorem - może zaznaczyłeś, żeby nie pozwalał na instalację na systemach 64b?

    Jest tylko jedna dość przykra dolegliwość, która u mnie występuje już od pierwszej wersji. Mianowicie: wchodzę w narzędzia, konfiguracja i tworzę sobie interfejs graficzny. Zapisuję o, restartuję program i wszystko działa perfekto. Jednak gdy znów wejdę w konfigurację bo np. chcę dodać jakiś wskaźnik - mam puste okienko i wszystko muszę dłubać od początu. :(
    Acha i po naciśnięciu plik / otwórz nic się nie dzieje. Zakładam, że w ten sposób można będzie sobie wczytywać różne konfiguracje ustawień okna.

    0
  • #28 03 Wrz 2013 14:21
    ekrzychoooo
    Poziom 11  

    tehaceole napisał:
    Jednak gdy znów wejdę w konfigurację bo np. chcę dodać jakiś wskaźnik - mam puste okienko i wszystko muszę dłubać od początu. :(


    Tak wiem że to irytujące. Usilnie dąże do wydania wersji 1.00 bez RC w której będzie można wczytać sobie wcześniej zapisany projekt. Doba ma 24h :P

    0
  • #29 03 Wrz 2013 14:27
    tehaceole
    Poziom 28  

    ekrzychoooo napisał:
    Doba ma 24h
    Skądś to znam... :) Nawiasem mówiąc - opcja wprowadzenia możliwości wczytania własnego tła to strzał w 10kę. A czy istnieje możliwość wprowadzenia edycji wyglądu samych wskaźników? Chociażby opcja zmiany kolorystyki.

    Oooo właśnie mi się programik bardzo ładnie zaktualizował. Zaraz sprawdzę co nowego :)

    Czy prowadzisz gdzieś dostępne ogólnie "release notes" programu?

    0
  • #30 04 Wrz 2013 10:40
    ekrzychoooo
    Poziom 11  

    tehaceole napisał:
    Czy prowadzisz gdzieś dostępne ogólnie "release notes" programu?

    No nie prowadziłem tego :oops:
    Ale już sie poprawiłem historia zmian
    I Zgłaszanie błędów i propozycji

    0
TME logo Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME
TME Logo