Zadanie polega na zaprogramowaniu płytki NUCLEO-F401RE wyposażonej w moduł rozszerzeń Motion MEMS Multi-Sensor Board (czujnik inercyjny, kompas, barometr, czujnik temperatury i wilgotności) celem odczytu wskazań 3-osiowego akcelerometru i temperatury. Odczytane dane należy przesłać do programu w LabVIEW na komputerze i wyświetlić na wykresie w czasie rzeczywistym.
Po wcześniejszym omówieniu, studenci przygotowują na platformie mbed.com program przedstawiony na Wydruku 1.
Tekst zawierający wartości pomiarowe można podejrzeć na terminalu portu szeregowego TeraTerm. Następnie przystępuje się do zbudowania diagramu w LabVIEW, który pokazano na Ilustracji 1.
Diagram oparto na pętli While, działającej do momentu wciśnięcia przycisku stop lub przerwania komunikacji z mikrokontrolerem. Instrukcja warunkowa wewnątrz tej pętli służy do obróbki Linii danych odczytywanych każdorazowo w postaci tekstowej za pomocą instrumentu VISA Read. Po wyłuskaniu 5 wartości za pomocą funkcji Scan From String, zamianie kropki na przecinek w piątym odczycie oraz uzyskanej liczby w postaci tekstowej na Float następuje wyświetlenie jej na wykresie co 0.5 sekundy. Na Ilustracji 2 pokazano panel sterowania GUI.
Na ilustracji 2 widać pole tekstowe, nazwane Linia danych, w którym pierwsza wartość to numer pomiaru, kolejne 3 wartości oznaczają składowe przyspieszeń grawitacyjnych w kierunkach osi x, y i z akcelerometru, a ostatnia wartości to temperatura otoczenia w stopniach Celsjusza. Program na mikrokontroler w formacie bin można pobrać tutaj.
Kontynuację tego eksperymentu znajdziemy w poście Konfiguracja i łącznie się z węzłem IoT Cayenne, gdzie można połączyć się z węzłem IRz Cayenne i wysłać stan platformy rozwojowej NUCLEO (sygnalizowany czterema wartościami pomiarowymi).
Po wcześniejszym omówieniu, studenci przygotowują na platformie mbed.com program przedstawiony na Wydruku 1.
WYDRUK 1
/* Odczyt danych z sensora TMP36 i akcelerometru LSM303 * Wyświetlenie danych w LabVIEW na oscylogramie. */ #include "TMP36.h" #include "XNucleoIKS01A2.h" #include "mbed.h" DigitalOut led(LED1); static XNucleoIKS01A2 *mems_exp_board = XNucleoIKS01A2::instance(D14, D15, D4, D5); static LSM303AGRAccSensor *acc = mems_exp_board -> accelerometer; int main() { TMP36 tmpSensor(A5); acc -> enable(); int32_t axes[3]; int i = 1; led = 1; printf("\nStart za 5 sek.\n\r"); wait(5); while (true){ acc->get_x_axes(axes); printf("%d %d %d %d %f\n\r", i, axes[0], axes[1], axes[2], tmpSensor.read()); i++; wait(0.5); } }
Tekst zawierający wartości pomiarowe można podejrzeć na terminalu portu szeregowego TeraTerm. Następnie przystępuje się do zbudowania diagramu w LabVIEW, który pokazano na Ilustracji 1.
![]() |
Ilustracja 1: Diagram symulacyjny w LabVIEW wykorzystany do odczytu linii tekstu wysyłanego w postaci danych odbieranych w transmisji szeregowej. |
Diagram oparto na pętli While, działającej do momentu wciśnięcia przycisku stop lub przerwania komunikacji z mikrokontrolerem. Instrukcja warunkowa wewnątrz tej pętli służy do obróbki Linii danych odczytywanych każdorazowo w postaci tekstowej za pomocą instrumentu VISA Read. Po wyłuskaniu 5 wartości za pomocą funkcji Scan From String, zamianie kropki na przecinek w piątym odczycie oraz uzyskanej liczby w postaci tekstowej na Float następuje wyświetlenie jej na wykresie co 0.5 sekundy. Na Ilustracji 2 pokazano panel sterowania GUI.
![]() |
Ilustracja 2: Panel sterowania programu w LabVIEW widocznego w postaci diagramu symulacyjnego na Ilustracji 1. |
Na ilustracji 2 widać pole tekstowe, nazwane Linia danych, w którym pierwsza wartość to numer pomiaru, kolejne 3 wartości oznaczają składowe przyspieszeń grawitacyjnych w kierunkach osi x, y i z akcelerometru, a ostatnia wartości to temperatura otoczenia w stopniach Celsjusza. Program na mikrokontroler w formacie bin można pobrać tutaj.
Kontynuację tego eksperymentu znajdziemy w poście Konfiguracja i łącznie się z węzłem IoT Cayenne, gdzie można połączyć się z węzłem IRz Cayenne i wysłać stan platformy rozwojowej NUCLEO (sygnalizowany czterema wartościami pomiarowymi).
Komentarze
Prześlij komentarz