STM32F407TinyML icon indicating copy to clipboard operation
STM32F407TinyML copied to clipboard

TinyML for STM32F407 using different frameworks in C and C++ with Keil uVision IDE.

TinyML using different frameworks applied to STM32F407 uC

Caution:

CubeMX code must be generated for every project, since libraries are included in .gitignore. For TFLite projects, the auto-generated main must be changed to .cpp and must be merged with the latest changes from main.c.-

Development IDE: Keil uVision v6

CubeMXAI/003MagicWand

Modify the following parameters in CubeMXAI\003MagicWand\Middlewares\Third_Party\MachineLearning\edgeimpulse\model-parameters\model_metadata.h: #define EI_CLASSIFIER_RAW_SAMPLE_COUNT 200 #define EI_CLASSIFIER_INTERVAL_MS 10 #define EI_CLASSIFIER_FREQUENCY 100

Disable the following files for compilation:

  • BasicMathFunctionsF16.c
  • CommoTablesF16.c
  • TransformFunctionsF16.c

References:

  • https://www.digikey.ph/en/maker/projects/intro-to-tinyml-part-1-training-a-model-for-arduino-in-tensorflow/8f1fc8c0b83d417ab521c48864d2a8ec
  • https://colab.research.google.com/github/tensorflow/tensorflow/blob/master/tensorflow/lite/micro/examples/hello_world/train/train_hello_world_model.ipynb#scrollTo=l4-WhtGpvb-E
  • https://www.digikey.com/en/maker/projects/tinyml-getting-started-with-tensorflow-lite-for-microcontrollers/c0cdd850f5004b098d263400aa294023
  • https://www.digikey.com/en/maker/projects/tinyml-getting-started-with-stm32-x-cube-ai/f94e1c8bfc1e4b6291d0f672d780d2c0
  • https://github.com/tensorflow/tensorflow/issues/45686#issuecomment-789658362
  • https://www.coursera.org/learn/introduction-to-embedded-machine-learning
  • https://studio.edgeimpulse.com/
  • https://github.com/RashadShubita/STM32F407-tinyML-EdgeImpulse-Motion
  • https://github.com/BoschSensortec/BNO055_driver
  • https://github.com/ivyknob/bno055_stm32
  • https://www.keil.com/pack/doc/compiler/EventRecorder/html/er_use.html
  • https://www.tensorflow.org/lite/microcontrollers
  • https://www.tensorflow.org/lite/microcontrollers/get_started

ToDo:

  • https://github.com/choas/uTensor_workshop