Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Obě strany předchozí revize Předchozí verze Následující verze | Předchozí verze | ||
2017:envi-logger [2018/01/22 05:45] Miroslav Waldecker [SHT21, HP03M a ADC] |
2017:envi-logger [2018/01/22 06:23] (aktuální) Miroslav Waldecker [Záver] |
||
---|---|---|---|
Řádek 531: | Řádek 531: | ||
} | } | ||
</code> | </code> | ||
+ | |||
+ | ==== RTC ==== | ||
+ | |||
+ | Inicializácia a nastavenie hodín reálneho času: | ||
+ | <code c> | ||
+ | void Init_rtc(void){ | ||
+ | |||
+ | rtc_config_t rtcConfig; | ||
+ | |||
+ | RTC_GetDefaultConfig(&rtcConfig); | ||
+ | RTC_Init(RTC, &rtcConfig); | ||
+ | /* Select RTC clock source */ | ||
+ | RTC_SetClockSource(RTC); | ||
+ | } | ||
+ | |||
+ | void rtc_settime(rtc_datetime_t date){ | ||
+ | |||
+ | RTC_StopTimer(RTC); | ||
+ | RTC_SetDatetime(RTC, &date); | ||
+ | RTC_StartTimer(RTC); | ||
+ | } | ||
+ | |||
+ | rtc_datetime_t rtc_gettime(void){ | ||
+ | |||
+ | rtc_datetime_t date; | ||
+ | |||
+ | RTC_GetDatetime(RTC, &date); | ||
+ | return(date); | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | ==== Hlavná slučka a Fat FS ==== | ||
+ | Kinetis software development kit obsahuje okrem štandardných ovládačov periférií aj middleware pre prácu s USB a SD kartami s podporou Fat FS, ktorý som použil. Tým, že zapisujem namerané údaje v textovom formáte, tieto sú po pripojeni SD karty do počítača bezproblémov spracovateľné. V hlavnej slučke sa periodicky vyčítavajú údaje, ktoré sa okamžite zobrazujú na display-i a každých 10s sa otvorí súbor pre zápis a udaje sa zapíšu vo formáte dátum, čas, koncentrácia CO2, teplota, vlhkosť a tlak. Po zápise sa súbor okamžite uzavrie. | ||
+ | <code c> | ||
+ | while (1) { | ||
+ | |||
+ | date = rtc_gettime(); | ||
+ | sprintf(str, "%02hd-%02hd-%04hd %02hd:%02hd:%02hd ", date.day, | ||
+ | date.month, date.year, date.hour, date.minute, date.second); | ||
+ | |||
+ | LCD_SetTextColor(ASSEMBLE_RGB(0, 0, 0)); | ||
+ | LCD_CharSize(16); | ||
+ | LCD_StringLine(1, 1, (uint8_t*) str); | ||
+ | co_value = get_concentration(); | ||
+ | sprintf(str, "CO2:%d ppm", co_value); | ||
+ | LCD_SetTextColor(ASSEMBLE_RGB(0, 0, 0xFF)); | ||
+ | LCD_CharSize(24); | ||
+ | LCD_StringLine(1, 16, (uint8_t*) str); | ||
+ | |||
+ | temperature = read_temp(); | ||
+ | humidity = read_hum(); | ||
+ | LCD_SetTextColor(ASSEMBLE_RGB(0xFF, 0, 0)); | ||
+ | sprintf(str, "T: %2.2f C", temperature); | ||
+ | LCD_StringLine(1, 40, (uint8_t*) str); | ||
+ | LCD_SetTextColor(ASSEMBLE_RGB(0, 0, 0xFF)); | ||
+ | sprintf(str, "RH: %2.2f %%", humidity); | ||
+ | LCD_StringLine(1, 64, (uint8_t*) str); | ||
+ | LCD_SetTextColor(ASSEMBLE_RGB(0xFF, 0, 0)); | ||
+ | pressure = read_pressure(); | ||
+ | sprintf(str, "P:%6.2fhPa", pressure); | ||
+ | LCD_StringLine(1, 88, (uint8_t*) str); | ||
+ | Delay(10); | ||
+ | |||
+ | if(card_ok && prev_second != date.second && !(date.second % 10)){ | ||
+ | sprintf(g_bufferWrite, "%02hd-%02hd-%04hd %02hd:%02hd:%02hd %d %2.2f %2.2f %6.2f \r\n", date.day, | ||
+ | date.month, date.year, date.hour, date.minute, date.second, co_value, temperature, humidity, pressure); | ||
+ | f_open(&g_fileObject, _T("/data.dat"), (FA_WRITE | FA_READ | FA_OPEN_APPEND)); | ||
+ | |||
+ | error = f_write(&g_fileObject, g_bufferWrite, strlen(g_bufferWrite), &bytesWritten); | ||
+ | f_close(&g_fileObject); | ||
+ | prev_second = date.second; | ||
+ | } | ||
+ | } | ||
+ | </code> | ||
+ | ===== Video datalogger ===== | ||
+ | {{youtube>R_bAfAzXU1A?medium}} | ||
+ | |||
+ | ===== Výpis dát ===== | ||
+ | V tomto bolku je príklad zmeraných dát, potom ako som začal vetrať. Je vidieť, ako klesá koncentrácia CO2, ale zároveň aj s teplotou... | ||
+ | |||
+ | <file> | ||
+ | 14-01-2018 17:20:10 1052 21.98 27.91 1017.92 | ||
+ | 14-01-2018 17:20:20 1021 21.99 27.36 1017.80 | ||
+ | 14-01-2018 17:20:30 971 21.93 26.92 1017.80 | ||
+ | 14-01-2018 17:20:40 955 21.92 26.60 1017.67 | ||
+ | 14-01-2018 17:20:50 939 21.87 25.60 1017.90 | ||
+ | 14-01-2018 17:21:00 920 21.83 24.97 1017.95 | ||
+ | 14-01-2018 17:21:10 909 21.79 24.63 1017.90 | ||
+ | 14-01-2018 17:21:20 884 21.73 24.27 1017.90 | ||
+ | 14-01-2018 17:21:30 898 21.64 24.33 1017.95 | ||
+ | 14-01-2018 17:21:40 883 21.58 23.90 1017.99 | ||
+ | 14-01-2018 17:21:50 917 21.50 24.53 1017.89 | ||
+ | 14-01-2018 17:22:00 905 21.41 24.16 1018.08 | ||
+ | 14-01-2018 17:22:10 872 21.35 23.40 1017.94 | ||
+ | 14-01-2018 17:22:20 862 21.24 23.51 1017.98 | ||
+ | 14-01-2018 17:22:30 909 21.13 23.87 1017.94 | ||
+ | 14-01-2018 17:22:40 861 21.13 22.79 1017.95 | ||
+ | 14-01-2018 17:22:50 833 21.12 22.56 1017.95 | ||
+ | 14-01-2018 17:23:00 841 21.11 22.62 1018.04 | ||
+ | 14-01-2018 17:23:10 821 21.02 22.26 1017.94 | ||
+ | 14-01-2018 17:23:20 814 20.96 22.06 1018.06 | ||
+ | 14-01-2018 17:23:30 803 20.91 21.89 1018.05 | ||
+ | 14-01-2018 17:23:40 819 20.86 21.93 1017.82 | ||
+ | 14-01-2018 17:23:50 864 20.76 23.28 1018.07 | ||
+ | 14-01-2018 17:24:00 841 20.71 22.27 1017.97 | ||
+ | 14-01-2018 17:24:10 799 20.64 21.51 1018.00 | ||
+ | 14-01-2018 17:24:20 794 20.58 21.94 1018.07 | ||
+ | </file> | ||
+ | |||
+ | |||
+ | ==== Záver ==== | ||
+ | |||
+ | Tento projekt je prototyp, na ktorom som si overil rôzne senzory, vyskúšal som prostredie MCUXpresso firmy NXP a ich software-ové knižnice pre prácu s ARM procesormi Kinetis KSDK verzie 2.3. K tomu, aby to bol plnohodnotný projekt je nutné prerobiť a dorobiť niekoľko vecí. Najmä radiče pre komunikáciu prerobiť z blokovacieho na neblokovací režim, veľa času stráca procesor tým, že čaká, kým periféria zmeria a odpovie. Ďalej je nutné prerobiť HW vývojovej dosky na zálohovanie z batérie pre kalibračné dáta a hodiny reálneho času. Takisto ovládanie z konzoly a prekopírovávanie uložených dát. Z užívateľského rozhrania je vhodné dorobiť grafické zobrazenie údajov v čase. Debug sériový port, ktorý je teraz použitý previesť na USB com port, a tento sériový port priviesť na malý WiFi modul so serverom, na ktorom budú prístupné namerané údaje z lokálnej siete. Za úvahu stojí aj zmena senzora koncentrácie CO2, keďže je to už pomerne obsolete senzor, ktorý je náchylný na všetky parametre ako napájacie napätie, ktoré v tomto prípade nie je vôbec stabilné, nepresnosť, stále je nutné ho kalibrovať a náročný prepočet. | ||
+ | |||
+ | Zdroje:{{ :2017:xwalde01:envilogger.rar | Zdrojové súbory}} | ||
+ | |||
+ |