Xarxa neuronal aplicada a un microcontrolador. Octubre de 2024

De binefa.com
Salta a la navegació Salta a la cerca

Enllaç al simulador

Enllaç a un exemple de xarxa neuronal aplicada a un Arduino

Exemple de xarxa neuronal aplicada a un Arduino

Maquinari i biblioteques

  • MPU6050: Sensor que és acceleròmetre i giroscopi. Mesura acceleració i velocitat angular.
  • I2Cdev: Una biblioteca per comunicar-se amb dispositius I2C com el MPU6050.
  • Wire: Una biblioteca per a la comunicació I2C a Arduino.

Calibració del sensor

  • setup(): Inicialitza el sensor MPU6050 i el calibra per a tenir en compte qualsevol biaix o desplaçament del valor de referència (offset).
  • calibrateSensor(): Recull les dades crues (raw) del sensor durant un període de temps i calcula els valors mitjans per a ser emprats com a valors de referència (offset).

Adquisició de dades i processament

  • loop(): Llegeix les dades del sensor, aplica desplaçaments de calibratge i converteix els valors crus (raw) en unitats d'acceleració (g) i velocitat angular (graus per segon).

Model de xarxa neuronal

  • runNeuralNetwork(): Implementa una xarxa neuronal amb dues capes ocultes i una funció d'activació sigmoide. Pren les dades del sensor calibrades com a entrada i retorna una predicció percentual de la "puntuació de caiguda".

Detecció de caiguda

  • S'utilitza un llindar de 0,7 per determinar si s'ha produït una caiguda basada en la puntuació de caiguda prevista.
  • Si la puntuació de caiguda està per sobre del llindar, s'activa un LED per indicar una caiguda potencial.

Sortida

  • El codi imprimeix al monitor sèrie les dades del sensor calibrat, la puntuació de caiguda predita en tant per cent i si es detecta una caiguda.

Punts clau

  • Els paràmetres de la xarxa neural (pesos i biaixos) són marcadors de posició i s'han de substituir per valors reals obtinguts de l'entrenament de la xarxa en un conjunt de dades de caiguda i no caiguda.
  • El procés de calibració és essencial per assegurar mesures precises i millorar el rendiment de l'algorisme de detecció de caiguda.
  • El llindar per determinar una caiguda s'ha d'ajustar en funció del rendiment de la xarxa neuronal i els requisits d'aplicació específics.

Consideracions addicionals

  • El codi assumeix una única sortida de la xarxa neuronal per a la simplicitat. En un escenari més complex, es podrien utilitzar múltiples sortides per representar diferents patrons de caiguda o nivells de gravetat.
  • El codi no inclou cap mecanisme de seguretat ni alarmes. En una aplicació del món real, seria important implementar mesures per alertar els cuidadors o activar els serveis d'emergència en cas de caiguda.