Individální projekty MPOA

Mikroprocesory s architekturou ARM

Uživatelské nástroje

Nástroje pro tento web


2014:boat-sensor

Vizualizace polohy lodě

Zadání projektu

S vývojovými deskami FRDM-KL25Z a FRDM-FXS-MULTI realizujte vizualizací polohy lodě ve vertikální i horizontální rovině s grafickým zobrazením. Využijte akcelerometr, gyroskop a senzor magnetického pole.

Použité zařízení (Hardware)

Pro projekt byli použity desky Freescale Freefom Platform (FRDM - KL25Z) a Freescale Freefom Platform For Xtrinsic Sensors With Bluetooth (FRDM - FXS - MULTI - B). Dále propojovací kabel USB mini A-B a PC. Tyto desky byly používány během výuky předmětu MPOA v několika počítačových cvičení.

 Deska KL25Z s popisky

Popis funkce

Složené zařízení (desky FRDM-KL25Z a FRDM-FXS-MULTI-B) pro snímaní úhlové polohy lodě, jsou připojeny přes USB micro kabel do PC. Na počítači běží grafická vizualizace lodě viz obr. 1. Na obrázku lze vidět, že obsahuje tři prvky a to vertikální úhlovou rovinu, horizontální úhlovou rovinu a indikaci nebezpečí pro loď. Poloha lodi se mění v závislosti na změně úhlu, kde silná bílá plná přímka udává hladinu vody v závislosti na lodi a slabá bílá čárkovaná přímka udává na stupnici velikost úhlu.

 Grafické rozhraní projektu rozhraní

obr.1 Grafické rozhraní projektu rozhraní  

 Stavy ohrožení

Indikace nebezpečí obsahuje tři stavy a to:

  • Bezpečný stav (obr.2, vrchní)
  • Nebezpečný stav (obr.2, prostřední)
  • Kritický stav (obr. 2, spodní)
Stavy Vertikální rovina Horizontální rovina
Bezpečný 0°-10° 0°-20°
Nebezpečný 10°-20° 20°-30°
Kritický < 10° < 30°

Demo

Pro realizaci projektu bylo využito prostředí mbed. Za pomocí knihoven pro Freescale Multi-Sensor byl vytvořen projekt MPOA v prostředím mbed pro testování senzoru MULTI-B a propojen s deskou KL25Z projekt MPOA.

Nejprve byla otestována samotná funkce snímání uhlů při pootočení desky, za pomocí sériového rozhraní. Deska funguje ovšem né moc s přesnými hodnoty při prudších pohybech, což nevadí z důvodu pomalého pohybu pro loď.

Pro realizaci grafického rozhraní bylo nutné vytvoření několika objektu, které se využívají pro zobrazení. A to , , , , , . Všechny obrázky byli vytvořeny v programu Photoshop, kromě indikace nebezpečí, které byli jen upraveny pro použití. Při použití stabilizace_lod_prazdny.png jako statický pozadí do kterého jsou v intervalech vkládány obrazce poloha_1 a poloha_2, které jsou natočeny v X stupňů, kde X je rovno úhlu dané osy. Záznam byl uložen do souboru .txt odkaz na záznam a nahrán do aplikace pro vizualizaci.

 Animace grafické funkce

int main()
{
    float acc_data[3], gyro_data[3];
    MotionSensorDataUnits adata;
    MotionSensorDataUnits mdata;
    int16_t acc_raw[3]; 
    float X,Y,Z;
    printf("\r\nStarting\r\n\r\n");
 
    combo_acc.enable();
    combo_mag.enable();
    mag2.enable();
    printf("FXLS8471 Acc   = %X\r\n", acc1.getWhoAmI());
    printf("MMA8652 Acc    = %X\r\n", acc2.getWhoAmI());
    printf("FXOS8700 Combo = %X\r\n", combo_acc.whoAmI());
    printf("FXAS21000 Gyro = %X\r\n", gyro.getWhoAmI());
 
    #if defined(FSL_COMPATIBLE)
        unsigned char alt_data[8];
        alt.Altimeter_Mode();
        printf("MPL3115A2 Alt  = %X\r\n", alt.getDeviceID()); 
    #endif
    printf("cas(s) Accelerometer_osa_X	Accelerometer_osa_Y  Accelerometer_osa_Z \r\n");
 
    wait(3);
 
    while(1) {
        acc1.ReadXYZ(acc_data);
        acc1.ReadXYZraw(acc_raw);
        acc2.ReadXYZ(acc_data);
        acc2.ReadXYZraw(acc_raw);
        combo_acc.getAxis(adata);
        printf("%6.3f %6.3f %6.3f %6.3f\r\n", time, adata.x, adata.y, adata.z);
        wait(1);
    }
}

Závěr

Projekt byl vytvořen pouze na dvě fáze a to nahraní dat samostatně a poté zpracování dat do grafické podoby. Využiti akcelerometru a gyroskopu se neosvědčilo, docházelo k velkým odchylkám. Lepších výsledků bylo dosaženo samotným akcelerometrem s přidaným filtrem „Plovoucí okno“, pro plynulejší pohyb ukazatele. Při pokusu zprovoznění doporučovaného softwaru CodeWarrior od Freescale, jsem narazil na hodně problému, proto jsem tuto možnost opustil. Měl jsem menší problém s hardwarem, ale byl vyřešen výměnou. Ani po týdnu jsem nedocílil pokroku. Problém se nalézá zřejmě mezi klávesnicí a židli.

2014/boat-sensor.txt · Poslední úprava: 2015/01/18 05:15 autor: Martin Svozil