콘테스트 프로젝트 진행 상황
각 Quest를 단계적으로 완성하는 프로젝트입니다.
Quest 1: [Quest1] 수행
2022.08.04
Cube Ai개발 환경 구축하기
1 mcu 선택
2.Soiftware Packs -> Components선택

3.X Cube Ai 버전 선택

.png)
4.Software Packs -> STMicroelectronics 선택
.png)
5.모델 선택
.png)
6. 분석 버튼 누르기 결과
Analyzing model
C:/Users/Owner/STM32Cube/Repository/Packs/STMicroelectronics/X-CUBE-AI/7.2.0/Utilities/windows/stm32ai analyze --name network -m E:/tmp2/contest/cubeai/en.fp-ai-sensing1/STM32CubeFunctionPack_SENSING1_V4.0.3/Utilities/AI_Ressources/models/cnn_gmp.h5 --type keras --compression none --verbosity 1 --workspace C:\Users\Owner\AppData\Local\Temp\mxAI_workspace3688848629900381216412329733069 --output C:\Users\Owner\.stm32cubemx\network_output --allocate-inputs --allocate-outputs
Neural Network Tools for STM32AI v1.6.0 (STM.ai v7.2.0-RC5)
Exec/report summary (analyze)
------------------------------------------------------------------------------------------------------------------------
model file : E:\tmp2\contest\cubeai\en.fp-ai-sensing1\STM32CubeFunctionPack_SENSING1_V4.0.3\Utilities\AI_Ressources\models\cnn_gmp.h5
type : keras
c_name : network
compression : none
allocator strategy : ['allocate-inputs', 'allocate-outputs']
workspace dir : C:\Users\Owner\AppData\Local\Temp\mxAI_workspace3688848629900381216412329733069
output dir : C:\Users\Owner\.stm32cubemx\network_output
model_name : cnn_gmp
model_hash : 954164d0a35496bd293bb6b3429c6a79
input 1/1 : 'input_0'
72 items, 288 B, ai_float, float, (1,24,3,1), domain:activations/**default**
output 1/1 : 'softmax_1'
5 items, 20 B, ai_float, float, (1,1,1,5), domain:activations/**default**
params # : 1,477 items (5.77 KiB)
macc : 68,928
weights (ro) : 5,908 B (5.77 KiB) (1 segment)
activations (rw) : 6,976 B (6.81 KiB) (1 segment) *
ram (total) : 6,976 B (6.81 KiB) = 6,976 + 0 + 0
(*) input/output buffers can be used from the activations buffer
Model name - cnn_gmp ['input_0'] ['softmax_1']
---------------------------------------------------------------------------------------------------------
id layer (original) oshape param/size macc connected to
---------------------------------------------------------------------------------------------------------
0 input_0 (None) [b:None,h:24,w:3,c:1]
quantize_1_conv2d (Conv2D) [b:None,h:20,w:3,c:16] 96/384 4,816 input_0
quantize_1 (Conv2D) [b:None,h:20,w:3,c:16] 960 quantize_1_conv2d
---------------------------------------------------------------------------------------------------------
1 quantize_2_conv2d (Conv2D) [b:None,h:16,w:3,c:16] 1,296/5,184 61,456 quantize_1
quantize_2 (Conv2D) [b:None,h:16,w:3,c:16] 768 quantize_2_conv2d
---------------------------------------------------------------------------------------------------------
2 quantize_3 (GlobalMaxPooling2D) [b:None,h:1,w:1,c:16] 768 quantize_2
---------------------------------------------------------------------------------------------------------
3 quantize_4_dense (Dense) [b:None,h:1,w:1,c:5] 85/340 85 quantize_3
---------------------------------------------------------------------------------------------------------
4 softmax_1 (Softmax) [b:None,h:1,w:1,c:5] 75 quantize_4_dense
---------------------------------------------------------------------------------------------------------
model/c-model: macc=68,928/68,928 weights=5,908/5,908 activations=--/6,976 io=--/0
Number of operations per c-layer
-------------------------------------------------------------------------------------
c_id m_id name (type) #op (type)
-------------------------------------------------------------------------------------
0 0 quantize_1_conv2d (conv2d) 5,776 (smul_f32_f32)
1 2 quantize_2_conv2d (optimized_conv2d) 62,992 (smul_f32_f32)
2 3 quantize_4_dense (dense) 85 (smul_f32_f32)
3 4 softmax_1 (nl) 75 (op_f32_f32)
-------------------------------------------------------------------------------------
total 68,928
Number of operation types
---------------------------------------------
smul_f32_f32 68,853 99.9%
op_f32_f32 75 0.1%
Complexity report (model)
-----------------------------------------------------------------------------------
m_id name c_macc c_rom c_id
-----------------------------------------------------------------------------------
0 input_0 || 8.4% || 6.5% [0]
2 quantize_3 |||||||||||||||| 91.4% |||||||||||||||| 87.7% [1]
3 quantize_4_dense | 0.1% | 5.8% [2]
4 softmax_1 | 0.1% | 0.0% [3]
-----------------------------------------------------------------------------------
macc=68,928 weights=5,908 act=6,976 ram_io=0
Creating txt report file C:\Users\Owner\.stm32cubemx\network_output\network_analyze_report.txt
elapsed time (analyze): 1.386s
Getting Flash and Ram size used by the library
Model file: cnn_gmp.h5
Total Flash: 24356 B (23.79 KiB)
Weights: 5908 B (5.77 KiB)
Library: 18448 B (18.02 KiB)
Total Ram: 8956 B (8.75 KiB)
Activations: 6976 B (6.81 KiB)
Library: 1980 B (1.93 KiB)
Input: 288 B (included in Activations)
Output: 20 B (included in Activations)
Done
Analyze complete on AI model
7.그래프
.png)

Analyzing model
C:/Users/Owner/STM32Cube/Repository/Packs/STMicroelectronics/X-CUBE-AI/7.2.0/Utilities/windows/stm32ai analyze --name network -m E:/tmp2/contest/cubeai/en.fp-ai-sensing1/STM32CubeFunctionPack_SENSING1_V4.0.3/Utilities/AI_Ressources/models/cnn_gmp.h5 --type keras --compression none --verbosity 1 --workspace C:\Users\Owner\AppData\Local\Temp\mxAI_workspace398348037730015289195114066522834 --output C:\Users\Owner\.stm32cubemx\network_output --allocate-inputs --allocate-outputs
Neural Network Tools for STM32AI v1.6.0 (STM.ai v7.2.0-RC5)
Exec/report summary (analyze)
------------------------------------------------------------------------------------------------------------------------
model file : E:\tmp2\contest\cubeai\en.fp-ai-sensing1\STM32CubeFunctionPack_SENSING1_V4.0.3\Utilities\AI_Ressources\models\cnn_gmp.h5
type : keras
c_name : network
compression : none
allocator strategy : ['allocate-inputs', 'allocate-outputs']
workspace dir : C:\Users\Owner\AppData\Local\Temp\mxAI_workspace398348037730015289195114066522834
output dir : C:\Users\Owner\.stm32cubemx\network_output
model_name : cnn_gmp
model_hash : 954164d0a35496bd293bb6b3429c6a79
input 1/1 : 'input_0'
72 items, 288 B, ai_float, float, (1,24,3,1), domain:activations/**default**
output 1/1 : 'softmax_1'
5 items, 20 B, ai_float, float, (1,1,1,5), domain:activations/**default**
params # : 1,477 items (5.77 KiB)
macc : 68,928
weights (ro) : 5,908 B (5.77 KiB) (1 segment)
activations (rw) : 6,976 B (6.81 KiB) (1 segment) *
ram (total) : 6,976 B (6.81 KiB) = 6,976 + 0 + 0
(*) input/output buffers can be used from the activations buffer
Model name - cnn_gmp ['input_0'] ['softmax_1']
---------------------------------------------------------------------------------------------------------
id layer (original) oshape param/size macc connected to
---------------------------------------------------------------------------------------------------------
0 input_0 (None) [b:None,h:24,w:3,c:1]
quantize_1_conv2d (Conv2D) [b:None,h:20,w:3,c:16] 96/384 4,816 input_0
quantize_1 (Conv2D) [b:None,h:20,w:3,c:16] 960 quantize_1_conv2d
---------------------------------------------------------------------------------------------------------
1 quantize_2_conv2d (Conv2D) [b:None,h:16,w:3,c:16] 1,296/5,184 61,456 quantize_1
quantize_2 (Conv2D) [b:None,h:16,w:3,c:16] 768 quantize_2_conv2d
---------------------------------------------------------------------------------------------------------
2 quantize_3 (GlobalMaxPooling2D) [b:None,h:1,w:1,c:16] 768 quantize_2
---------------------------------------------------------------------------------------------------------
3 quantize_4_dense (Dense) [b:None,h:1,w:1,c:5] 85/340 85 quantize_3
---------------------------------------------------------------------------------------------------------
4 softmax_1 (Softmax) [b:None,h:1,w:1,c:5] 75 quantize_4_dense
---------------------------------------------------------------------------------------------------------
model/c-model: macc=68,928/68,928 weights=5,908/5,908 activations=--/6,976 io=--/0
Number of operations per c-layer
-------------------------------------------------------------------------------------
c_id m_id name (type) #op (type)
-------------------------------------------------------------------------------------
0 0 quantize_1_conv2d (conv2d) 5,776 (smul_f32_f32)
1 2 quantize_2_conv2d (optimized_conv2d) 62,992 (smul_f32_f32)
2 3 quantize_4_dense (dense) 85 (smul_f32_f32)
3 4 softmax_1 (nl) 75 (op_f32_f32)
-------------------------------------------------------------------------------------
total 68,928
Number of operation types
---------------------------------------------
smul_f32_f32 68,853 99.9%
op_f32_f32 75 0.1%
Complexity report (model)
-----------------------------------------------------------------------------------
m_id name c_macc c_rom c_id
-----------------------------------------------------------------------------------
0 input_0 || 8.4% || 6.5% [0]
2 quantize_3 |||||||||||||||| 91.4% |||||||||||||||| 87.7% [1]
3 quantize_4_dense | 0.1% | 5.8% [2]
4 softmax_1 | 0.1% | 0.0% [3]
-----------------------------------------------------------------------------------
macc=68,928 weights=5,908 act=6,976 ram_io=0
Creating txt report file C:\Users\Owner\.stm32cubemx\network_output\network_analyze_report.txt
elapsed time (analyze): 1.790s
Getting Flash and Ram size used by the library
Model file: cnn_gmp.h5
Total Flash: 24356 B (23.79 KiB)
Weights: 5908 B (5.77 KiB)
Library: 18448 B (18.02 KiB)
Total Ram: 8956 B (8.75 KiB)
Activations: 6976 B (6.81 KiB)
Library: 1980 B (1.93 KiB)
Input: 288 B (included in Activations)
Output: 20 B (included in Activations)
Done
Analyze complete on AI model
이상입니다
Quest 2: [ Quest2 수행 ]
2022.08.08
Accuracy 결과

Model Loss Function 그래프

Confusion matrix graph

cubeMx.Ai에서 Network Analysis 결과

network_analyze_report.txt 파일은 첨부하였습니다
SAEBA 드림
Quest 3: Quest 3 보드에 바이너리 라이팅 + 폰앱에서 BLE 인식 화면 제출
2022.09.07
사용한 HW 구성
STEVAL-MKSBOX1V1 - SensorTile.Box
J-LinK debugger

SensorTile.Box HW 대한 초간단 요약
다양한 종류의 mems센서들 및 마이크센서가 실장되어 있어서 보드 한장으로 다양한 센서 기능을 테스트할 수 있음
MEMS sensor devices:
- HTS221, LPS22HH, LSM6DSOX, LIS2DW12, LIS3DHH, LIS2MDL, STTS751
Analog microphone: MP23ABS1
Battery charger: STBC02
실장된 mcu 품명 : STM32L4R9ZI
Software package로는 FP-AI-CTXWARE1을 사용하였다.

< 다운로는 화면>
소스 tree
.png)
소스 수정
.png)
빌드는 IAR에서 수행하였음.
SensorTile.Box에 라이팅 후 핸드폰 앱에서의 테스트 준비.
핸드폰에는 다음 앱을 설치

.png)
.png)
.png)
앱 실행후 connect on device 버튼을 클릭하면 현재 ON된 BLE 장치를 연결함.
아래 화면 참조.
.png)
<핸드폰 화면 사진>
핸드폰에서 HAR 동작 영상
Quest 4: Quest4_log수집 - (SensorTile.Box HW사용하여 로깅함)
2022.09.17
사용한 HW
- SensorTile.Box 보드 – 1EA
- Jlink 디버거 – 1EA
FW
이전 퀘스트수행에서 사용했던 AI-CTXWARE1 Code를 사용하지 않고 Ai-Sensing_V4.03 코드를 사용하여 테스트를 진행하였습니다.
FW 변경 이유 :
- AI-CTXWARE1 에서는 센서 로깅을 위한 기능이 누락되어 있어서 기능 구현이 필요했습니다. 그래서 Ai-Sensing_V4.03 코드를 다시 살펴보니 SensorTile.Box가 지원됨을 확인하고 소스를 변경후 핸드폰에 Paring후 로깅 테스트 진행하였습니다.
로깅 데이터
4 가지 액션(walking, jogging, standing, staring)에 대한 25개 로깅 파일을 압축하여 첨부하였습니다.
추가기록
로깅 할 때 휴대용 배터리에 연결하여 작업 중이었는데 배터리 전원이 불안하여 sdcard에 저장된 파일이 깨져 있었고 파일을 복원해야 했습니다. 아래 복원 방법에 대한 기록을 남김니다.
console창에서 다음 명령어 실행
>>chkdsk e: /f
(아시겠지만, 위 파라미터 중에서 “e:” 는 sdcard 드라이브 명칭입니다)
이상입니다
From SAEBA
Quest 5: Quest5. 수행 내용 등록(SAEBA)
2022.09.25
퀘스트5. Quest4에서 저장했던 로그 학습후 펌웨어에 적용하기
원래 진행하던 환경(Python 3.7 + Cube.Ai v7.x) 에서 생성한 FW코드에 호환성 이슈가 있어서
새로운 환경(Python v3.6.13 + Keras v2.2.4 + Cube.Ai v5.0) 에서 작업을 진행하였습니다.
1.새로 환경 구축 후 FW 빌드하기
Anaconda에서 새로운 환경 버전들을 모두 설치 후 PyCharm에서 새로운 환경에 맞게 빌드하여 har_IGN.h5를 얻었고 FW코드를 다음과 같이 생성하였습니다.
à .png)
생성된 FW에서 위 오른쪽 창에서 선택된 har_ign.h/c와 har_idg_data.h/c 파일 4개를 모두 Sensing1펌웨어 소스에 복사 후 펌웨어를 라이팅하여 테스트를 진행하였습니다..
2.Python코드 수정
Runmy.py 코드 수정후 테스트 했습니다
수정 내용:: Log 데이터 폴더를 매번 지정하지 않기 위해 아래 내용처럼 수정 후 테스트 진행했음.

3.RunMe.py 빌드 및 모델 사이즈 체크
빌드시 내용을 아래 복사했습니다.
C:\Users\anaconda3\envs\st_pyv36_kerasv224\python.exe E:/contest/stm32_quest_ai_Saeba_2022/HAR/RunMe.py
Using TensorFlow backend.
Running HAR on WISDM dataset, with following variables
merge = True
modelName = IGN,
segmentLength = 24
stepSize = 24
preprocessing = True
trainTestSplit = 0.6
trainValidationSplit = 0.7
nEpochs = 20
learningRate = 0.0005
decay =1e-06
batchSize = 64
verbosity = 1
dataDir = Log_data
nrSamplesPostValid = 2
Segmenting Train data
Segments built : 100%|??????????| 27456/27456 [00:17<00:00, 1613.49 segments/s]
Segmenting Test data
Segments built : 100%|??????????| 18304/18304 [00:08<00:00, 2124.77 segments/s]
Segmentation finished!
preparing data file from all the files in directory Log_data
parsing data from IoT01-MemsAnn_03_Oct_19_09h_58m_09s.csv
......
parsing data from STBox-MemsAnn_13_Sep_22_22h_58m_13s.csv
parsing data from STBox-MemsAnn_17_Sep_22_20h_28m_28s.csv
parsing data from STBox-MemsAnn_17_Sep_22_20h_29m_15s.csv
parsing data from STBox-MemsAnn_17_Sep_22_20h_30m_17s.csv
parsing data from STBox-MemsAnn_17_Sep_22_20h_30m_55s.csv
parsing data from STBox-MemsAnn_17_Sep_22_20h_31m_34s.csv
parsing data from STBox-MemsAnn_17_Sep_22_20h_32m_17s.csv
parsing data from STBox-MemsAnn_17_Sep_22_20h_32m_38s.csv
parsing data from STBox-MemsAnn_17_Sep_22_20h_32m_57s.csv
parsing data from STBox-MemsAnn_17_Sep_22_20h_33m_18s.csv
parsing data from STBox-MemsAnn_17_Sep_22_20h_33m_39s.csv
.......
parsing data from STBox-MemsAnn_17_Sep_22_20h_46m_09s.csv
parsing data from STBox-MemsAnn_17_Sep_22_20h_46m_29s.csv
parsing data from STBox-MemsAnn_17_Sep_22_20h_46m_46s.csv
parsing data from STBox-MemsAnn_17_Sep_22_20h_47m_04s.csv
parsing data from STBox-MemsAnn_17_Sep_22_20h_47m_26s.csv
Segmenting the AI logged Train data
Segments built : 100%|??????????| 301/301 [00:00<00:00, 4373.88 segments/s]
Segments built : 0%| | 0/201 [00:00
Segments built : 100%|??????????| 201/201 [00:00<00:00, 4460.73 segments/s]
Segmentation finished!
_________________________________________________________________
Layer (type) Output Shape Param #
===============================================================
conv2d_1 (Conv2D) (None, 9, 3, 24) 408
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 3, 3, 24) 0
_________________________________________________________________
flatten_1 (Flatten) (None, 216) 0
_________________________________________________________________
dense_1 (Dense) (None, 12) 2604
_________________________________________________________________
dropout_1 (Dropout) (None, 12) 0
_________________________________________________________________
dense_2 (Dense) (None, 4) 52
===========================================================
Total params: 3,064
Trainable params: 3,064
모델 분석 로그 내용으로 살펴본 코드 사이즈 결과
model_name : har_IGN
model_hash : 06ed806c1f78d42402495c1f684661b8
input : input_0 [72 items, 288 B, ai_float, FLOAT32, (24, 3, 1)]
input (total) : 288 B
output : dense_2_nl [4 items, 16 B, ai_float, FLOAT32, (4,)]
output (total) : 16 B
params # : 3,064 items (11.97 KiB)
macc : 14,388
weights (ro) : 12,256 (11.97 KiB)
activations (rw) : 1,728 (1.69 KiB)
ram (total) : 2,032 (1.98 KiB) = 1,728 + 288 + 16
à모델의 코드사이즈: 11.97KB, 파라미터 ram사이즈: 1.98KB
4.동작 시험
학습할 때마다 동일한 데이터인데도 학습 결과가 약간씩 달랐습니다.
NN초기화 함수에서 Random Noiser값이 영향을 주는 것 같긴한데 매번 다르면 여러 번해서 그중 제일 좋은 결과로 골라야 될 듯한데 좀 더 확인이 필요할 듯합니다.
그리고 얼마의 데이터가 학습에 필요한지 아직 잘 모르겠지만 데이터가 얼마되지 않아도 학습이 잘 되는 것을 보면 Wisdom 데이터셋이 중요한 영향을 미치는 것 같다는 생각이 듭니다.
이에 대한 상관 관계 설명이 있는 문서가 있으면 좋겠다는 생각이 드네요.
아직 학습 횟수를 변경한 실험은 하지 못했습니다.
*20회 기본 epoch 학습에서의 최종 정밀도 결과치는 다음과 같았습니다.
Accuracy for each class is given below.
Jogging : 93.83 %
Stationary : 98.69 %
Stairs : 67.73 %
Walking : 88.9 %
5.데모 결과 동영상
링크 : https://youtu.be/TCwblOc8Cm4
youtube영상을 올리려 하였으나 다음과 같은 오류가 발생하여 위 링크만 복사합니다.

이상입니다.
Quest 6: LSTM 모델을 이용한 HAR(Human Activity Recongnition) 구현
2022.10.09
Quest6. 자율 과제 (ID명 : SAEBA)
주제 : LSTM 모델을 이용한 HAR(Human Activity Recongnition) 구현
- 과제 수행 환경 정보
1.0 HW 정보
SensorTile.Box, Jlink debugger.( 아래 사진 참조)

-
- SW 정보
Model 빌드환경 : python 3.6.13, Keras2.2.4,
Mcu compiler : IAR 8.50
Cube.AI : v5.0.0
Fw pkg : ai-sensing1 v4.0.3
- 과제 주제 선정 이유
지금까지의 퀘스트에서 사용해온 HAR의 모델은 CNN이었는데 다른 모델은 어떻게 동작할까 궁금하여 주제의 방향을 모델 변경을 통한 HAR구현으로 정하였고 목표 모델을 LSTM으로 정하였습니다. 처음에는 평범한 ANN으로 구성해도 되지 않을까도 싶었지만 제가 이번 기회에 LSTM에 대한 내용도 조사도 하면서 공부도 하고 싶어서 주제를 위와 같이 정하게 되었습니다.
잘 모르던 내용을 웹에서 찾아서 구현해 보았으니 참고해 주세요.
- 학습에 사용한 dataset

UCI 에서 smartphone으로 만든 데이터셋을 이용하여 학습한 모델을 많아서 적용하게 되었습니다.
UCI의 Dataset에 대한 기본 내용은 다음과 같습니다.
.png)
- LSTM 모델
4.1 모델 그래프
.png)
4.2 LSTM 모델 keras 소스
.png)
4.3 UCI Dataset의 데이터 구성에 대한 검토

기본 UCI 데이터셋을 보면 위와 같이 9가지의 데이터가 존재합니다.
Total_acc…데이터와 body_acc…데이터는 모두 가속도 센서 x/y/z에 대한 데이터에서
파생된 데이터고 bosy_gyro…데이터는 각속도센서 x/y/z의 데이터입니다.
저는 각속도 센서 데이터는 취득하기 힘든점도 있이서 가속도 센서만으로 모델을 구현하는것
을 목표로하고 위 데이터에서 body_acc와 total_acc 데이터만 사용하였습니다.
참고로 total_acc데이터는 raw_acc데이터를 0.3Hz로 저역통과필터(LPF)처리한 데이터고
body_acc데이터는 고주파통과필터(HPF) 처리한 데이터라고 명시되어 있어서 FW에서 이와 유
사하게 처리하였습니다. 좀더 정확한 LPF/HPF 필터를 구현할 수도 있지만 굳이 그렇게 하지 않
아도 되는 데이타라고 판단되어 일단 간단하게 구현하였으니 참고해 주세요.
아래 관련 FW코드 사진입니다.

위 코드처럼 했을 때 파형은 다음과 같은 형태입니다.

LPF처리된 Total_acc 데이터 그래프

HPF 처리된 body_acc 데이터 그래프.
Keras로 된 python 소스를 통해 학습한 결과
.png)
5회 학습했을때 정확도가 높았다 낮았다 하면서 79% 나왔습니다.
생성된 hcihar_lstm.h5를 이용하여 CubeMX에서 코드를 생성합니다
.png)
위에서 생성된 ai 소스코드(har_lstm.c/h, har_lstm_data.c/h)를 FW pkg에 적용합니다.
원본 Fw pkg에 적용된 부분을 살짝 변경해서 적용하였습니다.
코드 변경: 원본 코드에서 HAR_IGN으로 적용되어 있던 부분들을 모두 HAR_LSTM으로 변경하는 형태로 코드를 대체하면서 변경하였습니다. 일부 변경 코드 형태를 아래와 같이 그림으로 보여드립니다.
<변경예1>

<변경예2>
.png)
<변경예3>

그리고 wisdom 데이터를 사용하지 않으므로 다음처럼 주석처리하였습니다(왼쪽이 변경된 코드임)

HAR_run 함수는 입력처리를 변경해야해서 다음과 같이 변경하였습니다
.png)

- 끝맺으며…
기존 CNN모델의 HAR 동작을 LSTM모델의 HAR로 변경하여 구현하고 테스트해 보았습니다. 시간에 따라 변하는 데이터에 대한 추론을 LSTM이 더 잘 하리라 생각했지만 생각과는 달리 정확도가 79%로 기존 CNN의 90%에 미치지 못했으며 Target보드에서의 동작 또한 잘 될때도 있었지만 방향에 따라 잘 안되는 경우도 많았습니다.
Ai 초보자가 무작정 만들어본거라서 좀 무리였던게 아닌가 싶지만 정확도가 높지는 않지만 의도한대로 동작하는 결과가 나와서 다행이라는 생각이 듭니다.
앞으로도 좀 더 다양하고 흥미진진한 내용을 접하면 좋겠다는 생각을 하게 되었고
이런 유익한 이벤트를 진행해 주신 분들께 감사의 말씀을 전하고 싶습니다.
감사합니다.
6. 테스트 영상
첨부파일 (소스, 정리문서, ptrhon 코드) 은 업로드 다시 시도해 보았습니다만 업데이트가 되지 않아서
아래 google drive 링크에 올려놓고 제출합니다.
접속하셔서 다운 부탁드립니다.
https://drive.google.com/drive/folders/1WCCz-1KsV6537XP-ab0AZCZC19ca-yat?usp=sharing
프로젝트 갤러리
프로젝트 제작 과정과 최종 결과물을 담은 이미지 갤러리입니다.
![[Quest1] 수행](https://cdn.e4ds.com/make/images/7qs3idk13l98yqwbwpv2.png)
![[Quest1] 수행](https://cdn.e4ds.com/images/ck/emt39u005d1fnt1q5eel.png)
![[Quest1] 수행](https://cdn.e4ds.com/images/ck/leb5jnoudkra1tkg6q8k.png)
![[Quest1] 수행](https://cdn.e4ds.com/images/ck/leb5jnoudkra1tkg6q8k(3).png)
![[ Quest2 수행 ]](https://cdn.e4ds.com/make/images/jzbsn5fodzafotwkdinz.png)
![[ Quest2 수행 ]](https://cdn.e4ds.com/images/ck/x6osdvs8xmbeh687ptpv.png)
![[ Quest2 수행 ]](https://cdn.e4ds.com/images/ck/vi9a19ewewke47ic7h9h.png)
![[ Quest2 수행 ]](https://cdn.e4ds.com/images/ck/1f8a76ett3pxrqnvs507.png)



.png)



.png)




.png)
프로젝트 자료실
프로젝트를 재현하거나 학습하는데 필요한 모든 자료를 제공합니다.
등록된 자료가 없습니다.
프로젝트 소개
아직 등록된 프로젝트 소개가 없습니다.
코드 & 회로도
등록된 코드/회로 자료가 없습니다.
댓글 4개
업로드 가 안되서 구글드라이브에 올린후 링크 업데이트하였습니다. 양해 부탁드립니다
재등록 했습니다
Saeba님도 Araxis 애용자이셨군요. 저와 동지네요. ㅎㅎ 저두 코드 diff할때, Araxis (유료) for win10 and Meld(무료) for ubuntu 를 젤 자주 사용하거던요. :)

.jpg)
첨부파일이 잘못 올라가서 수정해서 올렸는데 이전에 올린 파일만 다운로드 됩니다. 새 파일이 제대로 업로드 안됩니다. 확인 부탁드립니다. From SAEBA