Jak zapisywać w komputerze dane odbierane z czujników podłączonych do Arduino?

Jak zapisywać w komputerze dane odbierane z czujników podłączonych do Arduino?

Od czasu do czasu różne osoby podpytują mnie na Majsterkowym fanpage, na stronie na Google+ i na naszym czacie, jak najprościej zapisywać dane odbierane z różnych czujników podpiętych do Arduino, żeby móc później zrobić na ich podstawie np. jakiś wykres, lub użyć ich do dalszych obliczeń.

Żeby nie musieć powtarzać tego samego każdemu z osobna, postanowiłem przygotować prosty poradnik, w którym pokażę Wam, jak dane z Arduino zapisać bezpośrednio na komputerze i zrobić z nich wykres w Excelu – i to bez żadnych dodatkowych kosztów :)

Układ

Na potrzeby tego poradnika zmontowałem sobie prosty układ z dwoma czujnikami temperatury LM35, z których odczyty będą zapisywane:

Arduino + 2x LM35

Jeden z czujników umieściłem w pokoju, a drugi wsadziłem do obudowy mojego komputera.

Program

Najprostszym sposobem zapisywania danych z Arduino jest podpięcie go do komputera kablem USB i wysyłanie wszystkiego za pomocą funkcji Serial.print(), a następnie zapisywanie odebranych danych już w komputerze.

Do swojego Arduino wrzuciłem prosty program, który odczytuje dane z obu czujników i co sekundę wysyła aktualną temperaturę do komputera:

Nas interesują głównie linie od 21 do 25, które są odpowiedzialne za wysyłane odczytanych danych do komputera.

  • w linii 21 wysyłam do komputera informację, ile sekund minęło od momentu uruchomienia Arduino. Jak komuś by się chciało bawić, można by rozbić to na sekundy, minuty, godziny, dni, … – ja jednak w przykładzie tym nie chciałem sprawy niepotrzebnie komplikować, dlatego pozostałem przy samych sekundach
  • w liniach 22 i 24 wysyłam samą spację, której zadaniem jest po prostu oddzielenie od siebie kolejnych danych. Zamiast spacji można wstawić równie dobrze przecinek, średnik, myślnik, gwiazdkę, lub jakikolwiek inny znak
  • w liniach 23 i 25 wysyłam kolejno temperaturę odczytaną z obu czujników. Dodatkowo w linii 25 zastąpiłem funkcję Serial.print() funkcją Serial.println(), która wstawia na końcu znak nowej linii

I od strony Arduino to już jest wszystko. Zapisywaniem przesyłanych danych zajmie się już aplikacja uruchomiona na komputerze.

Odczyt danych z Arduino za pomocą Arduino IDE

Najprostszym sposobem na odczytanie danych przesyłanych z Arduino jest Serial Monitor dostępny w Arduino IDE (menu Tools -> Serial Monitor):

Serial Monitor w Arduino IDE

Jest to jednak opcja bardzo kiepska, bo nie mamy możliwości automatycznego zapisywania odebranych danych i możemy je sobie co najwyżej zaznaczyć, skopiować do schowka i wkleić do notatnika. Brzydko…, bardzo brzydko… ;)

Odczyt i zapis danych z Arduino za pomocą CoolTerm

Dużo większe możliwości daje darmowa aplikacja CoolTerm (z tej strony można pobrać wersję dla systemu Windows, Linux i Mac).

Wersję pod Windowsy (nie wiem, jak pod innymi systemami) wystarczy ściągnąć, rozpakować gdzieś na dysku i uruchomić.

Aplikacja CoolTerm

Po uruchomieniu aplikacji CoolTerm musimy kliknąć w Options i ustawić tam kilka rzeczy:

CoolTerm - ustawienia

W ustawieniach musimy wybrać Port, pod który jest podłączone nasze Arduino, oraz w Baudtare wybrać taką samą prędkość transmisji, jaką ustawiliśmy w funkcji Serial.begin().

I w sumie tylko te dwa ustawienia są w tej chwili istotne, więc zamykamy okno klikając “OK”.

CoolTerm jest już gotowy do pracy i wystarczy kliknąć przycisk Connect, żeby zacząć odbierać dane wysyłane przez Arduino:

CoolTerm - odbiór danych z Arduino

Aby zacząć zapisywać na dysku wszystkie odbierane dane, wystarczy wybrać Start… z menu “Connection -> Capture to Textfile” (lub użyć skrótu Ctrl+R). W pliku tekstowym będzie się zapisywało wszystko to, co zostanie odebrane z Arduino.

Jak zrobić wykres z danych odebranych z Arduino?

Pokażę Wam teraz, jak zapisane dane zaimportować do arkusza kalkulacyjnego Excel (z pakietu Microsoft Office 2007) i zrobić z nich ładny wykres.

Po uruchomieniu Excela przechodzimy do zakładki “Dane” i wstawiamy dane zewnętrzne “Z tekstu”:

Excel - import danych z Arduino

W pierwszym kroku importu danych nie zmieniamy nic i klikamy “Dalej”:

Excel - import danych #2

W drugim kroku wybieramy, jakim znakiem zostały rozdzielone dane (w tym przykładzie jest to spacja):

Excel - import danych #2

W kroku trzecim musimy zmienić separator dziesiętny, ponieważ Excel domyślnie operuje na przecinkach, a liczby przesłane z Arduino mają kropki. Zaznaczamy jedną z kolumn zawierających odebrane pomiary:

Excel - import danych #3

A następnie klikamy “Zaawansowane” i zmieniamy separator z przecinka na kropkę:

Excel - import danych #4

Analogicznie postępujemy dla kolumny z danymi z drugiego czujnika.

Następnie klikamy “OK” i “Zakończ”. Gotowe – wszystkie dane mamy już w Excelu:

Excel - zaimportowane dane

Teraz wystarczy zaznaczyć kolumny z danymi i w menu “Wstawianie” wstawić nowy wykres:

Excel - wstawianie wykresu

I w tym momencie powinien się ukazać naszym oczom ładny wykres wyrysowany na podstawie danych otrzymanych z Arduino:

Excel - wykres temperatury

Czy da się inaczej? Lepiej? Prościej?

Inaczej się da – i to na wiele sposobów :) Zaprezentowana wyżej metoda jest jednak najprostsza i najtańsza, bowiem nie wymaga żadnych dodatkowych inwestycji. Jej wadą jest jedynie to, że w czasie dokonywania pomiarów nie możemy wyłączyć komputera.

Gdybyśmy dokupili do Arduino Ethernet Shield, lub sam moduł Ethernet, moglibyśmy zapisywać dane bez użycia komputera bezpośrednio na jakimś serwerze (chociażby w arkuszu kalkulacyjnym w Google Drive). To już jest jednak temat na osobny post, który mogę przygotować, jeżeli będziecie chcieli :)

Mam nadzieję, że teraz już każdy z Was poradzi sobie z zapisywaniem na komputerze danych z Arduino. Powyższy poradnik może się na pierwszy rzut oka wydawać skomplikowany, ale po przerobieniu tego kilka razy wszystko robi się już niemalże odruchowo w kilka sekund.

Ocena: 4.82/5 (głosów: 49)

Podobne posty

58 komentarzy do “Jak zapisywać w komputerze dane odbierane z czujników podłączonych do Arduino?

Odpowiedz

anuluj

Masz uwagi?