Xarxa neuronal aplicada a un microcontrolador. Octubre de 2024
Salta a la navegació
Salta a la cerca
Contingut
Enllaç al simulador
Enllaç a un 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.