마이크로칩 8월
STM32 퀘스트 챌린지 : STM32Cube.AI
콘테스트 프로젝트진행중

STM32_Quest_AI_Elliot_2022

STM32 퀘스트 챌린지 : STM32Cube.AI
E
2022.07.21에 시작
1
좋아요
1.9K
조회
0
댓글
STM32_Quest_AI_Elliot_2022

사용 기술

Internet of ThingsMachine Learning & AISTM32
STM32 퀘스트 챌린지 : STM32Cube.AI완료
콘테스트 프로젝트 진행 상황

각 Quest를 단계적으로 완성하는 프로젝트입니다.

Quest 1
Quest 2
Quest 3
Quest 4
Quest 5
5 / 6 완료
Quest 1: STM32퀘스트챌린지.Q1.결과제출
2022.08.07
완료

[STM32CubeMX 설치]

 

 

[Get FP-AI-SENSING1] 

 

[X-CUBE-AI 설치] 

 

[Analize 결과]

 

 

 

 

[Show graph 결과]

 

[첨부파일: network_analyze_report.txt]

 

 

 

 

 

Quest 2: Neural Network Model을 만드는 개발 환경을 구축
2022.08.28
완료

[Quest 2] Neural Network Model을 만드는 개발 환경을 구축
* 설치한 개발툴 
- Anaconda3-2022.05-Windows-x86_64.exe
- pycharm-community-2022.2.exe

* 아나콘다 참조 싸이트
  https://anaconda.cloud/getting-started-with-anaconda-distribution-notebook

* 아나콘다 설치

* 아나콘다 네비게이터에서 환경 설정

* Python 3.7 패키지 설치

 

 

 

* tensorflow, tensorflow-base, tensorflow-datasets, Keras, keras-applications, keras-base를 설치

 

 

* Python IDE 에서 RunMe.py 빌드 시 모듈에러

- numpy등 추가 모듈 설치

* HAR 폴더안에 Log_data 폴더를 새로 생성합니다.

* IoT01-MemsAnn_03_Oct_19_10h_01m_26s.csv 복사

* Dataset 다운로드 & 복사

 

 

 

 

 

* Cube_AI network Analize Report

 

 

 

Quest 3: STM32 퀘스트 챌린지 Q3 B-L475E-IOT01A 보드에 바이너리 파일 라이팅하기
2022.09.08
완료

1. CleanSensing1.bat 실행

B-L475E-IOT01A1보드의 펌웨어를 클리어 하기 위한 Batch파일을 실해하기 위해서는 몇가지 수정이 필요합니다.
그리고, STM32툴을 사용하다보면 256자가 넘는 긴~ 폴더명으로 인해 오류가 생기는 일이 잦습니다.
다음 파일들을 D:\Temp 와 같이 루트 디렉토리에 임시 폴더를 만들어 복사 한 후
BATCH파일의 내용을 다음과 같이 수정하고 실행 하시면 됩니다.

* CleanSENSING1.BAT
* SENSING1.BIN
* sensing1_bl.bin

 

@echo off
set CUBE_PROG="C:\Program Files\STMicroelectronics\STM32Cube\STM32CubeProgrammer\bin\STM32_Programmer_CLI.exe"
set NAMESENSING1=D:\Temp\sensing1
set BOOTLOADER="D:\Proj\STM32CubeFunctionPack_SENSING1_V4.0.3\Utilities\BootLoader\STM32L476RG\BootLoaderL4.bin"
color 0F
echo                /******************************************/
echo                           Clean FP-AI-SENSING1
echo                /******************************************/
echo                              Full Chip Erase
echo                /******************************************/
%CUBE_PROG% -c port=swd mode=UR reset=HWrst -e all
echo                /******************************************/
echo                              Install BootLoader
echo                /******************************************/
%CUBE_PROG% -c port=swd mode=UR reset=HWrst -d %BOOTLOADER% 0x08000000 -v
echo                /******************************************/
echo                          Install FP-AI-SENSING1
echo                /******************************************/
%CUBE_PROG% -c port=swd mode=UR reset=HWrst -d %NAMESENSING1%.bin 0x08004000 -v
echo                /******************************************/
echo                      Dump FP-AI-SENSING1 + BootLoader
echo                /******************************************/
set offset_size=0x4000
for %%I in (%NAMESENSING1%.bin) do set application_size=%%~zI
echo %NAMESENSING1%.bin size is %application_size% bytes
set /a size=%offset_size%+%application_size%
echo Dumping %offset_size% + %application_size% = %size% bytes ...
echo ..........................
%CUBE_PROG% -c port=swd mode=UR reset=HWrst -u 0x08000000 %size% %NAMESENSING1%_BL.bin
echo                /******************************************/
echo                                 Reset STM32
echo                /******************************************/
%CUBE_PROG% -c port=swd mode=UR reset=HWrst -rst
if NOT "%1" == "SILENT" pause

2.STM32CubeIDE에서 FP-AI-SENSING1프로젝트를 Import 하고, Build를 완료

*Build 전 부팅 메시지
UART Initialized
OK Accelero/Gyroscope Sensor
OK Magneto Sensor
OK Humidity/Temperature1 Sensor
OK Pressure/Temperature2 Sensor
Disabled Accelero Sensor
Disabled Gyroscope Sensor
Disabled Magneto Sensor
Disabled Humidity Sensor
Disabled Temperature Sensor1
Disabled Pressure Sensor
Disabled Temperature Sensor2
Attempting to read STM32.TXT...
FatFs volume ready
------------------------------------------------------------
STMicroelectronics AI-SENSING1
        Version 4.0.3
        STM32L475R-IoT01A1 board
        (HAL 1.10.0_0)
        Compiled Apr 13 2021 10:25:31 (IAR)
------------------------------------------------------------
Meta Data Manager read from Flash
Meta Data Manager version=1.0.0
        Generic Meta Data found:
                 NODE_NAME Size=8 [bytes]
SERVER: BLE Stack Initialized
                BoardName= IAI_403
                BoardMAC = c2:55:05:07:9a:9f
HW & SW Service W2ST added successfully
Console Service W2ST added successfully
Config  Service W2ST added successfully
Testing BootLoaderCompliance:
        Version  2.0.0
        MagicNum    OK
        MaxSize = 507904
        OTAStartAdd OK
        OTADoneAdd  OK
BootLoader Compliant with FOTA

Console command server.
Type 'help' to view a list of registered commands.
$

3.STM32CubeProgrammer를 실행하고 B-L475E-IOT01A1 보드를 연결하고 \STM32CubeFunctionPack_SENSING1_V4.0.3\Projects\B-L475E-IOT01A\Applications\SENSING1\Binary 의 경로에 부트로더 바이너리 “SENSING1_BL.bin” 파일을 라이팅

* Build후 부팅 메시지

------------------------------------------------------------
STMicroelectronics AI-SENSING1
        Version 4.0.3
        STM32L475R-IoT01A1 board

        (HAL 1.10.0_0)
        Compiled Sep  8 2022 11:22:05 (GCC)  <<< BUILD완료
------------------------------------------------------------
Meta Data Manager read from Flash
Meta Data Manager version=1.0.0
        Generic Meta Data found:
                 NODE_NAME Size=8 [bytes]

4.B-L475E-IOT01A1 보드에 연결된 BLE 모듈인 BlueNRG의 Device Name을 Code에서 최대 7개의 글자 내에서 설정합니다. 설정 후 STBLESensor App에서 본인이 설정한 Device Name이 보이도록 아래와 같이 보드와 호스트 디바이스가 보이도록 촬영후에 제출

static void Init_BlueNRG_Stack(void)
{
  char BoardName[8] = {'E','L','L','I','O','T','7'};
  uint16_t service_handle, dev_name_char_handle, appearance_char_handle;
  int ret;

  for(int i=0; i<7; i++) {
    NodeName[i+1] = BoardName[i];
  }

  //BoardName[7]= 0;

#ifdef MAC_SENSING1
  {
    uint8_t tmp_bdaddr[6]= {MAC_SENSING1};
    int32_t i;
    for(i=0;i<6;i++) {
      bdaddr[i] = tmp_bdaddr[i];
    }
  }
#endif /* MAC_SENSING1 */

 

 

 

5. 스마트폰의 Mobile App Store에서 STBLESensor Application을 다운로드 받습니다. STBLESensor App에서 Activity Recognition을 클릭합니다. 아래와 같이 B-L475-IOT01A1 보드를 손으로 흔들어 보면서 Activity Recognition의 결과가 달라지는 과정을 담은 동영상을 촬영하여 제출합니다. ( 보드를 흔들면서 Activity Recognition 결과가 달라지는 과정이 포함된 10초 이내의 동영상으로 촬영)

 

 

 

 

 

Quest 4: STM32_AI_Quest4 Dataset 구성하기
2022.09.16
완료

B-L475E-IOT01A1 보드와 STBLESensor Mobile App 사용하여 Jogging, Stationary, Stairs, Walking 라벨링하여 로깅한 파일을 제출합니다

 

 

 

 

Quest 5: 새로 생성한 학습된 Model을 STM32Cube.AI를 사용하여 프로젝트에 적용하기
2022.09.25
완료

새로 생성한 학습된 Model을 STM32Cube.AI를 사용하여 프로젝트에 적용하기.

Mobile App과 B-L475-IOT01A1 보드를 이용하여 Human Activity Recognition 을 진행하는 짧은 영상을 레코딩하여 업로드합니다.

 

*  Pycharm에서 Dataset 재생성

 

 

 

 

*CubeMX project에 에서 Cube-AI 5.0 추가 및 network 추가 

 

 

 

 

 

 

* project 소스 코드 생성 후 Cube-AI-Sensing1 project폴더로 생성된 소스로 교체

 

* CubeIDE에서 B-L475E-IOT01A1보드 프로젝트 RE-Build

이런 과정으로 데이터세트 및 펌웨어 빌드 후 동영상을 제작했습니다. 

 


 

프로젝트 자료실

프로젝트를 재현하거나 학습하는데 필요한 모든 자료를 제공합니다.

등록된 자료가 없습니다.

프로젝트 소개

사용 기술
Internet of ThingsMachine Learning & AISTM32

코드 & 회로도

등록된 코드/회로 자료가 없습니다.

댓글 0

아직 댓글이 없습니다. 첫 댓글을 남겨보세요!