Auckland မှာ တလောက ကျင်းပတဲ့ NXP ရဲ့ NXP technology day ကို သွားဖြစ် လိုက်သေးတယ်။ သူတို့ရဲ့ နောက်ဆုံးပေါ် microcontroller တွေ၊ i.MX microprocessor တွေနဲ့ semiconductor technologies တွေ အဓိက ပြတာ။ NXP က ထိပ်သီး Dutch semiconductor ကုမ္ပဏီ တစ်ခု။ ပြီးတော့ automotive ၊ industrial ၊ IoT applications နဲ့ ဆိုင်တာတွေ အများဆုံး ထုတ်တယ်။ လက်ဟောင်း Philips နဲ့ Freescale ရဲ့ Kinetis MCU architecture တွေကို ပေါင်းစပ် လိုက်တဲ့ သူ့ ရဲ့ နောက်ဆုံးထွက် MCX microcontroller တွေထဲက MCXN947 ကိုတော့ တော်တော် သဘောကျတယ်။ ပါဝါ အစားနည်းပြီး၊ လုပ်ဆောင်မှု မြင့်မားတယ်။ နောက်ပြီး NPU ဆိုတဲ့ neural processing unit ပါတော့ on-device AI processing တွေ လုပ်ဆောင်နိုင် တယ်တဲ့။ Edge computing တွေ ပို ခေတ်စား လာတဲ့ အချိန်၊ ဒီလို energy-efficient ဖြစ်ပြီး၊ real-time AI ရတဲ့ hardware သေးသေး တွေက တော် တော် စိတ်ဝင်စား ဖို့ ကောင်းတယ်။
- Hardware လိုအပ်ချက်
- Software လိုအပ်ချက်
- Classification ပရောဂျက် တည်ဆောက်ခြင်း
- Model ကို အသုံးချခြင်း
- MCUXpresso IDE
- Data Logging
- Anomaly Detection
Hardware လိုအပ်ချက်
- FRDM-MCXN947 - MCX N94/N54 MCU အတွက် development board။ I/O access နဲ့ serial interfaces တွေ အတွက် header တွေပါတယ်။ onboard flash memory နဲ့ integrated MCU-Link debugger တွေလည်းပါတဲ့ အပြင် ဆော့ဖ်ဝဲ နမူနာ တွေလည်း ပေးထားတယ်။ Accel 4 Click by Mikroe - Mikroe ရဲ့ three-axis acceleration sensor add-on board ။ သူ့ရဲ့ FXLS8974CF accelerometer က ±2g က နေ ±16g ထိ range တွေ ချိန်လို့ရပြီး SPI နဲ့ I2C communication တွေ သုံးလို့ရတယ်။
Software လိုအပ်ချက်
- MCUXpresso IDE v24.12 နဲ့ နောက်ပိုင်း -
Eclipse အခြေခံ တဲ့ IDE ဖြစ် ပြီး NXP MCU တွေ အတွက် အထူးပြု ပြင် ထားတာ။
ဒီမှာ Download လုပ်ပါ။ -
eIQ Toolkit 1.14 -
NXP processor တွေ အတွက် AI/ML development suite ပါ။ Install လုပ်တဲ့ အခါ မြန် အောင် optional add-ons တွေ မထည့် ပါနဲ့။
Toolkit ကို ဒီမှာ Download လုပ်ပါ။ - SDK 24.12 for FRDM-MCXN947 -
Drivers တွေ middleware တွေ နဲ့ နမူနာ တွေ ပါတယ်။
NXP ရဲ့ MCUXpresso Github repository ဒါမှမဟုတ် MCUXpresso SDK portal မှာ ရယူ နိုင်ပါတယ်။
Classification ပရောဂျက် တစ်ခု တည်ဆောက်ခြင်း
1. Time Series Studio (TSS) ကို ဖွင့်ခြင်း
ပထမ eIQ Toolkit ကို ဖွင့်ပြီး "TIME SERIES" ခလုပ်ကို နှိပ်ရင် Time Series Studio (TSS) ပွင့်လာပါမယ်။ နောက် အဆင့် တွေ မှာ error မတက်အောင် eIQ Portal ကို ပိတ် မပစ်ပဲ၊ ဒီအတိုင်း ဆက်ဖွင့်ထားပါ။ TSS home screen မှာ နမူနာ applications တွေ တွေ့ ရပါလိမ့်မယ်။ 'Classification' ဆိုတဲ့ tab ကို ရွေးပါ။ "Fan State Monitoring Application" အောက်က "More" ကို နှိပ်ရင် သူနဲ့ ပတ်သက်တဲ့ အချက်အလက် အထောက်အကူ တွေ တွေ့ ရပါမယ်။2. Sample Dataset ရယူခြင်း
အဲဒီ Fan State Monitoring ထဲကပဲ Dataset ခလုပ်ကို နှိပ်ပြီး Sample Dataset ကို ရယူနိုင်ပါတယ်။ ပုံမှန်အားဖြင့် အောက်က နေ ရာ မှာ သွားပြီး extract လုပ်ယူဖို့ လိုပါတယ်။C:\Users\[username]\AppData\Roaming\time_series_studio\sample_dataset
3. Project ဖန်တီးခြင်း
ဘယ်ဘက်က "Classification" ကို ရွေးပြီး၊ project tab ထဲက "Create New Project" ကို နှိပ်ပါ။Default project name ကို သုံး ရင်သုံး၊ ဒါမှမဟုတ် စိတ်ကြိုက် project name တစ်ခု ကိုယ်ဟာကိုယ် ပေးပါ။ Target board အတွက် FRDM-MCXN947 ကို သုံးပါ။ Channel အရေ အတွက် က 3-axis accelerometer မို့ 3 ဖြည့် ပါမယ်။ Training data အတွက် က classes အရေ အတွက် က on, off, clog, နဲ့ friction အတွက် လေးမျိုး ဖြစ် တာကြောင့် 4 သုံးပါ။ ရလာမယ့် library က ပုံမှန် အားဖြင့် သေးတာကြောင့် ကန့်သတ်ချက် ပေးဖို့ မလို တဲ့ အတွက် max RAM နဲ့ max Flash ကို default values တွေ အတိုင်း ထားလိုက် ပါမယ်။ ပြီးရင် "Confirm and Create" ဆိုတဲ့ ခလုပ် ကို နှိပ်လိုက်ပါ။
4. Train နဲ့ Validate လုပ်ခြင်း
အပေါ်က "Dataset" tab ကို ရွေးပြီး ပထမ class အတွက် '+' သင်္ကေတ ကို နှိပ်ပြီး training data ကို import လုပ်ပါမယ်။ ခုနက extract လုပ်ထားတဲ့ ထဲက CSV file တစ်ခု ကို ရွေးပါမယ်။ delimiter အတွက် 'Space' ကို ရွေးပါ။ ပြီးရင် Class name အတွက် လည်း ရွေးတဲ့ CSV ဖိုင် အ လိုက် edit လုပ်ပေး နိုင် ပါတယ်။အခြား class ၃ ခု အတွက်လည်း အဲလို ထပ်လုပ်ပါမယ်။ ပြီးတဲ့ အခါ sample chart မှာ ပုံပါ အတိုင်း even distribution ဖြစ် နေတာ မြင်ရ ပါမယ်။
အပေါ် ဘက်က training tab ကို ရွေးပြီး၊ "Start New Training" ခလုပ်ကို နှိပ်ပါမယ်။ မြန်အောင် တက်လာတဲ့ dialog မှာ "Quick Search" ကို on ပေးပါမယ်။ ပြီးရင် train/validation ratio ကို သူ့ အတိုင်းပဲ ထားပြီး "Start" ကို နှိပ်နိုင်ပါတယ်။ Training လုပ်ပြီး သွားတဲ့ အခါ မှာ RAM နဲ့ flash အသုံးပြုမှု၊ confusion matrix စတာ တွေကို စစ်နိုင် ပါတယ်။
ပြီးတဲ့ အခါမှာတော့ ရလာတဲ့ model ကို test dataset တွေ သုံးပြီး ပြန် validate လုပ်ပါမယ်။ "Emulation" tab ကို ရွေး၊ '37 RForest' စတဲ့ model တစ်ခု ကို ရွေး ပြီး new emulation ကို နှိပ်ပါမယ်။ တက်လာတဲ့ pop up window မှာ select ကို နှိပ်၊ သက်ဆိုင်ရာ test dataset ဖိုင် တွေကို ရွေး ပေး ပြီးရင် "start" နှိပ် ပေးရုံပါပဲ။
ရရှိတဲ့ accuracy စတာ တွေကို ခွဲခြမ်း စိတ်ဖြာပြီး၊ report ကို download လုပ်လို့ လည်း ရပါတယ်။
Model ကို အသုံးချခြင်း
အပေါ်နားက "Deployment" tab ကို သွားပြီး model နဲ့ toolchain ကို ရွေးပါမယ်။ Library မလုပ်ပဲ MCUXpresso IDE project လိုချင်တာ ဖြစ် တဲ့ အတွက် "Library/Project" မှာ "Project" ကို ရွေးထားဖို့ လိုပါတယ်။ ပြီးတော့ "Generate" ကို နှိပ်လိုက်ရင် project ကို ZIP ဖိုင် အနေနဲ့ ရလာမှာ ဖြစ် ပါတယ်။MCUXpresso IDE အသုံးပြု ခြင်း
MCUXpresso IDE ကို ဖွင့်ပြီး workspace ကို သတ်မှတ် ပါမယ်။ ပေါ်လာတဲ့ welcome screen panel ကို ပိတ်မယ်။ ရှေ့ အဆင့်က ပြောထားတဲ့ အတိုင်း MCXN947 SDK က installed လုပ်ထားရပါမယ်။ ဘယ်ဘက် အောက်နားက Quickstart Panel ထဲက 'Import project(s) from file system...' ကို နှိပ်ပြီး ခုနက generate လုပ်ထားတဲ့ zip file ကို ရွေးပေးလိုက်ပါ။ ပြီးရင် 'Next' နဲ့ 'Finish'နှိပ်ပါ။SDK version သတိပေးချက် ပေါ်လာရင် OK ပဲ နှိပ် ပေး လိုက်လို့ ရပါတယ်။ ညာဘက် အ ပေါ် နားက project tab ထဲမှာ project ပေါ် right click နှိပ်ပြီး ပုံမှာ ပြ ထား သလို 'rename' လုပ်ပါမယ်။
Quickstart panel ထဲက 'Build' ကို နှိပ်ပြီး project ကို build လုပ်ကြည့် ပါမယ်.
ကွန်ပျူတာ နဲ့ MCXN947 ဘုတ် ကို USB-C ကြိုးနဲ့ ဆက်လိုက်ပါမယ် (reset button SW1 နားက J17 အပေါက်ကိုပါ။) Windows device manager ထဲမှာ virtual com port တစ်ခု ပေါ် လာတာ တွေ့ နိုင် ပါတယ်။ အဲဒါ ကို serial terminal တစ်ခု ခု သုံးပြီး ဆက်လို့ ရပါတယ်။ ဒီ နမူနာ မှာတော့ MCUXpresso နဲ့ အတူပါတဲ့ built-in serial terminal ကို သုံးလိုက်ပါမယ်။ အောက်နားက "Terminal" tab ကို သွားပြီး သူ့ရဲ့ ညာဘက် အပေါ် နားက terminal icon လေးကို နှိပ်လိုက်ပါ။ Serial port ကို ရွေးပြီး baud rate ကို 115200 ထားပြီး ရင် OK နှိပ်ပြီး ဖွင့်လိုက်ပါ။ အားလုံး အဆင်ပြေ တာ သေချာပြီးတဲ့ အခါ အနီ ရောင် N ပုံစံ "Disconnect Terminal Connection" icon လေးနှိပ်ပြီး ပြန် ပိတ်ထားလိုက်ပါမယ်။
Quickstart panel ထဲက "Debug" ကို နှိပ် ပြီး hardware အတွက် pop up dialog ပေါ် လာရင် OK နှိပ် ပေး လိုက်ပါမယ်။ ဒါဆို MCUXpresso က board ထဲကို firmware download လုပ်ထည့်ပါလိမ့် မယ်။ အကယ်၍ primary core ကို သတ်မှတ် ရွေးချယ်ဖို့ dialog ပေါ် လာရင် default device 0 ကို ပဲ ရွေးပေးလိုက်ပါ။ ပြီးတဲ့ အခါ "Resume" (play button) ကို နှိပ်လိုက်ရင် program ကို run ပါလိမ့်မယ်။
Program ကို run ထားရင်း terminal tab ကို သုံးပြီး virtual com port ကို ဆက်လိုက်ပါမယ်။ အဲဒီ tab ပေါ် double click နှိပ်ပြီး maximize လုပ်ချင်ရင် လုပ်လို့ ရပါတယ်။ ပြီးရင် 'help' လို့ ရိုက်ထည့် လိုက်မယ် ဆိုရင် သုံးလို့ ရတဲ့ commands တွေ စာရင်း ပေါ် လာပါမယ်။ လော လော ဆယ် တော့ debugging ရပ်ဖို့ ခုနက play ရဲ့ ဘေးနား က 'Stop' icon ကို နှိပ်ပြီး ရပ် လိုက် ပါမယ်။
Default project က simulated sensor data တွေ ကို သုံးတာ ဖြစ် တဲ့ အတွက် တပ်ထားတဲ့ ACCEL_4_CLICK board က hardware accelerometer ရဲ့တကယ့် data တွေ ကို သုံးဖို့ ပြု ပြင် မှု အနည်းငယ် လုပ်ပါမယ်။ hardware.c ဆိုတဲ့ ဖိုင် ကို ဖွင့် ပြီး reigster_sensor_hal_dummy lines (line 75 ~ 76) ကို comment လုပ်လိုက်ပါမယ်။ ပြီးရင် register_sensor_hal_FXLS8974 section (line 66 ~ 73) ကို uncomment လုပ်ပြီး save လိုက်ပါ။ ကိုယ့် sensor ကို HAL မှာ ဘယ်လို ထည့်ရလဲ ဆိုတဲ့ အသေးစိတ်ကို project ထဲက README.pdf ထဲမှာ ဖတ်လို့ ရပါတယ်။
ပြီးတဲ့ အခါ project ကို ပြန် Build လုပ် ပြီး debugging ကို ပြန်စ လိုက်ပါမယ်။ နောက် ပြီး terminal ကို ပြန် ဆက် 'start pre' လို့ရိုက် ထည့် လိုက်ရင် classification result ကို prediction စလုပ်ပါလိမ့်မယ်။ အဲဒါကို ရပ်ချင်ရင် 'stop' လို့ ရိုက်ထည့် နိုင်ပါတယ်။
Data Logging
သုံးတဲ့ sensor နဲ့ output data rate (ODR), sample count (SC) စတာ တွေကို ကြည့် ချင်ရင် 'get info' ဆိုတဲ့ command ကို terminal မှာ ရိုက်ထည့် ပြီး စစ်လို့ ရပါတယ်။
ဒီအထိ က TSS က sample dataset တွေ နဲ့ ပဲ သုံးနေ တာ။ ဒါကြောင့် ကိုယ့် ဟာကိုယ် training data set တွေ ဘယ်လို ရယူ မလဲ ဆက်ကြည့် ရအောင်။ Terminal ထဲမှာ 'start log' ကို ရိုက်ထည့် လိုက်ရင် sensor data တွေ ထုတ်ပေး တာကို terminal မှာ တွေ့ ရပါလိမ့်မယ်။ ဘုတ် ပေါ်က အပြာရောင် LED ကလည်း မှိတ်တုပ် မှိတ်တုပ် ဖြစ်နေ တာ တွေ့ရ မှာပါ။ အဲလို data တွေ printing ဖြစ် နေ တာ သေ ချာပြီ ဆို ဘုတ်ကို ဒီ အတိုင်းထားပြီး terminal ကို disconnect လုပ်လိုက်ပါ။
TSS ကို ပြန်သွားပြီး "Data Logging" ကို သွားပါ။ မှန်ကန်တဲ့ com port နဲ့ baud rate ကို ရွေးပြီး connect ကို နှိပ်နိုင် ပါတယ်။ ပြီးရင် accelerometer ရဲ့ x,y, နဲ့ z axis သုံးခု အတွက် channel ကို 3 လို့ ထားပါ။ ပြီးရင် abnormality project အသစ် လုပ်မှာမို့ normal နဲ့ abnormal အတွက် classes ကို 2 လို့ ထားပါမယ်။ ညာဘက်က check mark ကို နှိပ်ထားပါမယ်။ normal condition အတွက် class 1 ဆိုပြီး စဖို့ ဖိုင်နာမည် ကို 'Normal_train.csv' လို့ ပေးနိုင် ပါတယ်။ ပြီးရင် training data အတွက် line 100 ကောက်မယ် လို့ ထားလိုက်ပါမယ်။ ဘုတ်ကို ငြိမ် ငြိမ် ထားပြီးရင် start ကို နှိပ်ပြီး normal training data စကောက် လိုက်ပါ။
ပြီးသွားရင် 'open saved data set' ခလုပ်ကို နှိပ်ပြီး csv file ကို ကြည့် နိုင်ပါတယ်။ ပြီးရင် full path ကို ပြန်ရှာရ လွယ်အောင် Windows explorer ကို မပိတ်ပဲ ထားထားပါ။ နောက် test data အတွက် လည်း 50 lines စာ 'normal_test.csv' ဆိုတဲ့ ဖိုင်နာမည်နဲ့ ပြန် ထပ်ကောက် ပါ။
ပြီးရင် ခုနက အတိုင်း abnormal condition အတွက် လည်း ပြန် လုပ်ပါမယ်။ abnormal condition အတွက် ဒေတာ ကောက် တဲ့ အချိန်မှာ တော့ ဘုတ်ကို လက်ချောင်းလေးနဲ့ အသာအယာ ထိထိပြီး တုန်ခါမှု ဖြစ် အောင် လုပ်ပေး ထားလိုက်ပါ။ ပုံမှာလို ဒေတာ မှာ vibration ဖြစ် နေတာကို မြင် နေရ ပါလိမ့်မယ်။ ခုနက လို 'abnormal_train.csv' အတွက် 100 lines နဲ့ 'abnormal_test.csv' အတွက် 50 lines ကောက်လိုက် ပါမယ်။
Anomaly Detection
TSS မှာ "Amonaly Detection" ကို နှိပ်ပါ။ ပြီးရင် Create new project လုပ်ပြီး project name ထည့်ပါ။ ထုံးစံ အတိုင်း target ကို MCXN947 ၊ နောက် number of channel ကို 3 ထား ပြီး confirm and create နှိပ်ပါမယ်။"Dataset" tab ကို ဆက်သွား ပြီးရင် ခုနက ကောက် ထားတဲ့ normal နဲ့ abnormal training datasets တွေကို import လုပ်ပါ။
ပြီးရင် Training tab ကို သွားပြီး new training ကို quick search enabled လုပ်ပြီး စတင်လိုက်ပါ။
Train လုပ်ပြီး သွားတာနဲ့ emulation tab ကို သွား၊ normal နဲ့ abnormal test data တွေ ကို import လုပ်ပြီး PCA model ကို ရွေး၊ "New Emulation" ကို စတင်လိုက်ပါ။
အကယ်၍ model က OK တယ်ဆိုရင် "Deployment" tab ကို နှိပ်ပြီး project ကို generate လုပ်ဖို့ project option checkbox ကို ရွေးထားလိုက်ပါမယ်။ ပြီးရင် အရင် နမူနာ ကလိုပဲ generate လုပ်လိုက်ပါ။
MCUXpresso IDE ကို ပြန် ဖွင့် Quickstart panel tab ထဲက 'Import prorject form file system' ကို နှိပ်ပြီး ခုနက generate လုပ်ထားတဲ့ project ကို import လုပ်လိုက်ပါမယ်။ ခုနက project ကို နာမည် ပြောင်းမထားရင် နာမည်တူ project ဖြစ် နေတဲ့ အတွက် import လုပ်မရပဲ ပြဿနာတက်နိုင် ပါတယ်။ အဲဒါဆို ရှိပြီးသားဟာကို နာမည် ပြောင်း၊ ဒါမှမဟုတ် Delete လုပ်ပေးဖို့ လိုပါလိမ့်မယ်။ အဲဒီ generated zip file ကို MCUXpresso IDE ထဲ import လုပ်ပြီးရင် project နာမည်ကို MCXN947_anomaly_fan1 လို့ ပြောင်းလိုက်ပါမယ်။ ပြီးရင် hardware.c ကို ပြီးခဲ့ တဲ့ နမူနာ မှာ ဖော်ပြ ထားတဲ့ အတိုင်း real hardware accelerometer ကို သုံးဖို့ ပြင် လိုက်ပါမယ်။ နောက် project ကို build လုပ်၊ board ကို USB C cable နဲ့ ဆက်ထားပြီး debug ကို နှိပ်လိုက်ရင် firmware ကို ဒေါင်းလုပ် လုပ်ပြီး program ကို run ပါလိမ့်မယ်။ ခုနက လိုပဲ terminal ကို သွား virtual com port ကို ဆက်လိုက် ပြီး "get info" command နဲ့ sensor information ကို ပြန် စစ်ပါမယ်။ ပြီးတာနဲ့ "start pre" ကို ရိုက်ထည့်ပြီး prediction စတင်နိုင်ပါပြီ။ ဘုတ်က ငြိမ် နေရင် normal label ကို print လုပ်ပေးပြီး၊ လက်ချောင်းနဲ့ အသာအယာ ပုတ်ပေးရင်တော့ abnormal ပြ တာကို တွေ့ ရမှာပါ။
No comments:
Post a Comment