{"id":10192,"date":"2026-05-08T15:29:09","date_gmt":"2026-05-08T13:29:09","guid":{"rendered":"https:\/\/blogs.etsii.urjc.es\/dseytr\/?p=10192"},"modified":"2026-05-08T15:39:38","modified_gmt":"2026-05-08T13:39:38","slug":"sistema-antirrobo-para-mochila-grupo-13","status":"publish","type":"post","link":"https:\/\/blogs.etsii.urjc.es\/dseytr\/sistema-antirrobo-para-mochila-grupo-13\/","title":{"rendered":"Sistema antirrobo para mochila &#8211; Grupo 13"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"653\" height=\"1024\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/image-89-653x1024.png\" alt=\"\" class=\"wp-image-10530\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/image-89-653x1024.png 653w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/image-89-191x300.png 191w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/image-89.png 704w\" sizes=\"auto, (max-width: 653px) 100vw, 653px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">\u00cdndice<\/h2>\n\n\n\n<p>1.Introducci\u00f3n<\/p>\n\n\n\n<p>2.Funcionamiento<\/p>\n\n\n\n<p>3.Caso de uso<\/p>\n\n\n\n<p>4.Material usado y costes<\/p>\n\n\n\n<p>5.Dise\u00f1o<\/p>\n\n\n\n<p>6.Implementaci\u00f3n<\/p>\n\n\n\n<p>7.Construcci\u00f3n<\/p>\n\n\n\n<p>8.Problemas y soluciones encontradas<\/p>\n\n\n\n<p>9.Posibles mejoras<\/p>\n\n\n\n<p>10.Demostraci\u00f3n<\/p>\n\n\n\n<p>11.Autores<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Introducci\u00f3n<\/h2>\n\n\n\n<p>Este proyecto consiste en el dise\u00f1o y construcci\u00f3n de un sistema de seguridad para una mochila. La finalidad principal es detectar si la mochila se abre o si alguien se acerca o la manipula, avisando al usuario mediante una alarma f\u00edsica y mediante una aplicaci\u00f3n m\u00f3vil conectada por Bluetooth.<\/p>\n\n\n\n<p>El sistema combina varios elementos de detecci\u00f3n y aviso: un sensor magn\u00e9tico para detectar la apertura de la mochila, un sensor PIR para detectar movimiento, un buzzer para emitir una alarma sonora, un motor vibrador para generar una alerta f\u00edsica y un m\u00f3dulo Bluetooth HC-05 para comunicar el Arduino con la aplicaci\u00f3n Android.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Funcionamiento<\/h2>\n\n\n\n<p>El funcionamiento general del sistema se basa en la comunicaci\u00f3n entre una aplicaci\u00f3n Android y un Arduino mediante el m\u00f3dulo Bluetooth HC-05. La aplicaci\u00f3n act\u00faa como panel de control del usuario, mientras que el Arduino se encarga de leer los sensores y activar los elementos f\u00edsicos de aviso. Desde la app se env\u00edan comandos simples al Arduino para activar o desactivar la alarma, y el Arduino responde enviando mensajes de estado para que la aplicaci\u00f3n actualice la pantalla.<\/p>\n\n\n\n<p>La comunicaci\u00f3n desde la aplicaci\u00f3n hacia el Arduino se realiza mediante tres se\u00f1ales principales: el comando \u00ab1\u00bb, el comando \u00ab2\u00bb y el comando \u00ab0\u00bb. Cuando la app env\u00eda \u00ab1\u00bb, el Arduino activa la alarma en modo normal. Cuando env\u00eda \u00ab2\u00bb, activa la alarma en modo movimiento. Cuando env\u00eda \u00ab0\u00bb, desactiva completamente la alarma. De esta forma, el usuario puede controlar el sistema desde el m\u00f3vil sin tocar directamente el circuito.<\/p>\n\n\n\n<p>En el modo normal, el sistema utiliza tanto el sensor magn\u00e9tico como el sensor PIR. El sensor magn\u00e9tico detecta si la mochila se abre, mientras que el sensor PIR detecta movimiento cerca de la mochila. Por tanto, en este modo la alarma se dispara si se abre la mochila o si se detecta movimiento alrededor. Este modo est\u00e1 pensado para cuando la mochila est\u00e1 quieta y se quiere vigilar cualquier intento de manipulaci\u00f3n.<\/p>\n\n\n\n<p>Cuando la app env\u00eda el comando \u00ab1\u00bb, el Arduino cambia la variable interna de la alarma a activada y pone el sistema en modo normal. Despu\u00e9s env\u00eda a la aplicaci\u00f3n el mensaje \u00abMODO_NORMAL\u00bb, para que Android cambie visualmente el estado de la interfaz y muestre que la alarma est\u00e1 funcionando en modo normal. Si al activar este modo ya hay una intrusi\u00f3n detectada, el Arduino env\u00eda tambi\u00e9n el mensaje \u00abPELIGRO\u00bb. Si no detecta nada extra\u00f1o, env\u00eda el mensaje \u00abSEGURO\u00bb.<\/p>\n\n\n\n<p>En el modo movimiento, el sistema ignora el sensor PIR y solo tiene en cuenta el sensor magn\u00e9tico. Esto se hace para evitar falsas alarmas cuando la mochila se est\u00e1 moviendo o transportando, ya que el PIR podr\u00eda detectar movimiento constantemente. En este modo, la alarma solo se dispara si el sensor magn\u00e9tico detecta que la mochila se abre.<\/p>\n\n\n\n<p>Cuando la app env\u00eda el comando \u00ab2\u00bb, el Arduino activa la alarma en modo movimiento. A continuaci\u00f3n, env\u00eda a la aplicaci\u00f3n el mensaje \u00abMODO_MOVIMIENTO\u00bb, para que Android actualice la interfaz y muestre que est\u00e1 activo ese modo. Igual que en el modo normal, si en ese momento el sensor magn\u00e9tico detecta apertura, el Arduino env\u00eda \u00abPELIGRO\u00bb; si no hay apertura, env\u00eda \u00abSEGURO\u00bb.<\/p>\n\n\n\n<p>El estado \u00abSEGURO\u00bb significa que la alarma est\u00e1 activa, pero no se ha detectado ninguna intrusi\u00f3n. En este caso, la aplicaci\u00f3n Android muestra que la mochila est\u00e1 segura y detiene la vibraci\u00f3n del m\u00f3vil si estuviera activa. Este estado permite diferenciar entre una alarma activada sin peligro y una alarma activada con intrusi\u00f3n detectada.<\/p>\n\n\n\n<p>La alarma solo se considera activa cuando el usuario la activa expresamente desde la aplicaci\u00f3n m\u00f3vil. Es decir, el sistema no dispara la alarma si el usuario no ha seleccionado previamente el modo normal o el modo movimiento. Mientras la alarma est\u00e1 desactivada, el Arduino puede seguir leyendo los sensores, pero no activa ni el buzzer ni el motor vibrador ante una posible detecci\u00f3n.<\/p>\n\n\n\n<p>Cuando el Arduino detecta una intrusi\u00f3n, cambia el estado interno de la alarma a disparada. En ese momento activa el buzzer y el motor vibrador. El buzzer emite una alarma sonora intermitente y el motor vibrador genera una alerta f\u00edsica. Al mismo tiempo, el Arduino env\u00eda por Bluetooth el mensaje \u00abPELIGRO\u00bb a la aplicaci\u00f3n Android.<\/p>\n\n\n\n<p>Una vez que la alarma se dispara, permanece activa hasta que el usuario la desactiva manualmente desde la aplicaci\u00f3n. Esto significa que, aunque el sensor deje de detectar movimiento o aunque la mochila vuelva a cerrarse, el buzzer sigue sonando, el motor sigue vibrando y la aplicaci\u00f3n sigue mostrando el estado de \u201cPELIGRO\u201d. La alarma no se reinicia sola, sino que necesita que el usuario pulse el bot\u00f3n de desactivar alarma en la app.<\/p>\n\n\n\n<p>Cuando la aplicaci\u00f3n recibe el mensaje \u00abPELIGRO\u00bb, cambia su interfaz para mostrar una alerta visual. En la pantalla aparece el estado de peligro, se muestra un mensaje de intrusi\u00f3n detectada y el tel\u00e9fono comienza a vibrar. Por tanto, el m\u00f3vil no decide por s\u00ed solo si hay peligro, sino que cambia su pantalla en funci\u00f3n de las se\u00f1ales que recibe del Arduino.<\/p>\n\n\n\n<p>Si el usuario quiere apagar la alarma, pulsa el bot\u00f3n de desactivar en la aplicaci\u00f3n. En ese momento la app env\u00eda al Arduino el comando \u00ab0\u00bb. Al recibirlo, el Arduino desactiva el sistema, apaga el buzzer, detiene el motor vibrador, borra el estado de alarma disparada y sale de cualquier modo activo.<\/p>\n\n\n\n<p>Despu\u00e9s de recibir el comando \u00ab0\u00bb, el Arduino env\u00eda a la aplicaci\u00f3n los mensajes \u00abDESACTIVA\u00bb y \u00abSEGURO\u00bb. El mensaje \u00abDESACTIVA\u00bb indica que la alarma ya no est\u00e1 armada, por lo que la aplicaci\u00f3n cambia el modo activo a apagado. El mensaje \u00abSEGURO\u00bb indica que ya no hay peligro activo, por lo que la app vuelve a un estado tranquilo y detiene la vibraci\u00f3n del tel\u00e9fono.<\/p>\n\n\n\n<p>Adem\u00e1s de esos mensajes, el Arduino tambi\u00e9n puede enviar \u00abACTIVA\u00bb en el estado inicial si el sistema estuviera armado. La aplicaci\u00f3n interpreta \u00abACTIVA\u00bb como un estado de alarma activada en modo normal.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Caso de uso<\/strong><\/h2>\n\n\n\n<p>Como ejemplo de uso del modo normal, se puede pensar en una mochila guardada en una taquilla del gimnasio, en una biblioteca o en un lugar donde permanece quieta durante un tiempo. En ese caso interesa detectar cualquier intento de manipulaci\u00f3n, tanto si alguien abre la mochila como si alguien se acerca o se mueve cerca de ella. Por eso se utilizar\u00eda el modo normal, ya que en este modo est\u00e1n activos tanto el sensor magn\u00e9tico como el sensor PIR.<\/p>\n\n\n\n<p>Como ejemplo de uso del modo movimiento, se puede pensar en una situaci\u00f3n en la que el usuario lleva la mochila puesta o se desplaza con ella, por ejemplo caminando por la calle. En este caso no ser\u00eda \u00fatil que el sensor PIR activara la alarma, porque al estar en movimiento podr\u00eda detectar personas alrededor constantemente y generar falsas alarmas. Por eso se utilizar\u00eda el modo movimiento, en el que el PIR se ignora y la alarma solo se dispara si alguien abre la mochila y salta el sensor magn\u00e9tico.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Materiales usados y costes<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>Componentes<\/td><td>Coste<\/td><\/tr><tr><td>Arduino UNO<\/td><td>17,99\u20ac<\/td><\/tr><tr><td>Protoboard<\/td><td>2,41\u20ac<\/td><\/tr><tr><td>Bluetooth BT-05<\/td><td>9,99\u20ac<\/td><\/tr><tr><td>Sensor Magn\u00e9tico<\/td><td>1,39\u20ac<\/td><\/tr><tr><td>Sensor PIR <\/td><td>2,80\u20ac<\/td><\/tr><tr><td>Vibrador DC<\/td><td>1,82\u20ac<\/td><\/tr><tr><td>Buzzer<\/td><td>2,39\u20ac<\/td><\/tr><tr><td>Otros(pila, cables, resistencias&#8230;)<\/td><td>\u22433\u20ac<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>El total de nuestro producto es:<strong>41,79\u20ac<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Dise\u00f1o<\/h2>\n\n\n\n<p>El dise\u00f1o del proyecto se divide en dos partes principales: el dise\u00f1o del circuito electr\u00f3nico y el dise\u00f1o de la aplicaci\u00f3n m\u00f3vil. El circuito se ha organizado alrededor de una placa Arduino UNO, que act\u00faa como unidad central de control. A esta placa se conectan los sensores encargados de detectar una posible intrusi\u00f3n y los elementos de aviso que se activan cuando se detecta peligro.<\/p>\n\n\n\n<p>En el circuito se incluye un sensor magn\u00e9tico conectado al pin 3 del Arduino, que permite detectar la apertura de la mochila. Tambi\u00e9n se utiliza un sensor PIR conectado al pin 4, encargado de detectar movimiento cerca de la mochila. Como elementos de salida, se ha conectado un buzzer al pin 8 para emitir una se\u00f1al sonora y un motor vibrador al pin 7 para generar una alerta f\u00edsica.<\/p>\n\n\n\n<p>La comunicaci\u00f3n entre el Arduino y la aplicaci\u00f3n Android se realiza mediante un m\u00f3dulo Bluetooth HC-05. Este m\u00f3dulo permite que la aplicaci\u00f3n env\u00ede \u00f3rdenes al Arduino, como activar la alarma en modo normal, activar el modo movimiento o desactivar el sistema. Tambi\u00e9n permite que el Arduino env\u00ede mensajes de estado a la aplicaci\u00f3n, como \u201cPELIGRO\u201d, \u201cSEGURO\u201d, \u201cMODO_NORMAL\u201d, \u201cMODO_MOVIMIENTO\u201d o \u201cDESACTIVA\u201d.<\/p>\n\n\n\n<p>En el dise\u00f1o del circuito se han incluido resistencias en la conexi\u00f3n del Bluetooth para proteger el m\u00f3dulo HC-05. Esto se debe a que el Arduino trabaja con se\u00f1ales de 5 V, mientras que el Bluetooth trabaja con l\u00f3gica de aproximadamente 3,3 V. Por tanto, las resistencias act\u00faan como divisor de tensi\u00f3n y reducen la se\u00f1al que llega al pin RX del Bluetooth.<\/p>\n\n\n\n<p>Tambi\u00e9n se ha a\u00f1adido un transistor para controlar el motor vibrador. El motivo es que el Arduino no debe alimentar directamente un motor desde uno de sus pines digitales, ya que el vibrador puede necesitar m\u00e1s corriente de la que el pin puede entregar con seguridad. El transistor funciona como un interruptor electr\u00f3nico: el Arduino solo env\u00eda una se\u00f1al de control y el transistor permite o corta el paso de corriente hacia el vibrador.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"585\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/CircuitoSistemaAntiroboParaMochilas-1024x585.png\" alt=\"\" class=\"wp-image-10193\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/CircuitoSistemaAntiroboParaMochilas-1024x585.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/CircuitoSistemaAntiroboParaMochilas-300x172.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/CircuitoSistemaAntiroboParaMochilas-768x439.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/CircuitoSistemaAntiroboParaMochilas.png 1450w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>El dise\u00f1o de la aplicaci\u00f3n Android se ha planteado como una interfaz sencilla para el usuario. La pantalla permite conectarse al Bluetooth, activar el modo normal, activar el modo movimiento y desactivar la alarma. Adem\u00e1s, cambia visualmente seg\u00fan los mensajes que recibe del Arduino, mostrando si la mochila est\u00e1 segura, si hay peligro o si la alarma est\u00e1 desactivada.<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"490\" height=\"1024\" data-id=\"10236\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoMiMochilaSeguraAppConectarBluetooth-5-490x1024.jpg\" alt=\"\" class=\"wp-image-10236\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoMiMochilaSeguraAppConectarBluetooth-5-490x1024.jpg 490w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoMiMochilaSeguraAppConectarBluetooth-5-143x300.jpg 143w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoMiMochilaSeguraAppConectarBluetooth-5-768x1607.jpg 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoMiMochilaSeguraAppConectarBluetooth-5-734x1536.jpg 734w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoMiMochilaSeguraAppConectarBluetooth-5.jpg 979w\" sizes=\"auto, (max-width: 490px) 100vw, 490px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"487\" height=\"1024\" data-id=\"10234\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoMiMochilaSeguraAppAlarmaDesactivada-487x1024.jpg\" alt=\"\" class=\"wp-image-10234\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoMiMochilaSeguraAppAlarmaDesactivada-487x1024.jpg 487w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoMiMochilaSeguraAppAlarmaDesactivada-143x300.jpg 143w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoMiMochilaSeguraAppAlarmaDesactivada-768x1617.jpg 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoMiMochilaSeguraAppAlarmaDesactivada-730x1536.jpg 730w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoMiMochilaSeguraAppAlarmaDesactivada.jpg 973w\" sizes=\"auto, (max-width: 487px) 100vw, 487px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"489\" height=\"1024\" data-id=\"10235\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoMiMochilaSeguraAppModoNormalActivo-2-489x1024.jpg\" alt=\"\" class=\"wp-image-10235\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoMiMochilaSeguraAppModoNormalActivo-2-489x1024.jpg 489w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoMiMochilaSeguraAppModoNormalActivo-2-143x300.jpg 143w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoMiMochilaSeguraAppModoNormalActivo-2-768x1608.jpg 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoMiMochilaSeguraAppModoNormalActivo-2-734x1536.jpg 734w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoMiMochilaSeguraAppModoNormalActivo-2.jpg 978w\" sizes=\"auto, (max-width: 489px) 100vw, 489px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"492\" height=\"1024\" data-id=\"10237\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoMiMochilaSeguraAppPeligroDetectado-1-492x1024.jpg\" alt=\"\" class=\"wp-image-10237\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoMiMochilaSeguraAppPeligroDetectado-1-492x1024.jpg 492w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoMiMochilaSeguraAppPeligroDetectado-1-144x300.jpg 144w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoMiMochilaSeguraAppPeligroDetectado-1-768x1600.jpg 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoMiMochilaSeguraAppPeligroDetectado-1-737x1536.jpg 737w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoMiMochilaSeguraAppPeligroDetectado-1.jpg 983w\" sizes=\"auto, (max-width: 492px) 100vw, 492px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"491\" height=\"1024\" data-id=\"10233\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoMiMochilaSeguraAppModoMovimientoPeligroDetectado-491x1024.jpg\" alt=\"\" class=\"wp-image-10233\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoMiMochilaSeguraAppModoMovimientoPeligroDetectado-491x1024.jpg 491w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoMiMochilaSeguraAppModoMovimientoPeligroDetectado-144x300.jpg 144w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoMiMochilaSeguraAppModoMovimientoPeligroDetectado-768x1603.jpg 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoMiMochilaSeguraAppModoMovimientoPeligroDetectado-736x1536.jpg 736w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoMiMochilaSeguraAppModoMovimientoPeligroDetectado.jpg 981w\" sizes=\"auto, (max-width: 491px) 100vw, 491px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"485\" height=\"1024\" data-id=\"10232\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoMiMochilaSeguraAppModoMovimientoActiva8-485x1024.jpg\" alt=\"\" class=\"wp-image-10232\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoMiMochilaSeguraAppModoMovimientoActiva8-485x1024.jpg 485w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoMiMochilaSeguraAppModoMovimientoActiva8-142x300.jpg 142w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoMiMochilaSeguraAppModoMovimientoActiva8-768x1622.jpg 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoMiMochilaSeguraAppModoMovimientoActiva8-728x1536.jpg 728w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoMiMochilaSeguraAppModoMovimientoActiva8.jpg 970w\" sizes=\"auto, (max-width: 485px) 100vw, 485px\" \/><\/figure>\n<\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Implementaci\u00f3n<\/h2>\n\n\n\n<p><strong>C\u00f3digo de arduino:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;SoftwareSerial.h&gt;\n\nSoftwareSerial BT(10, 11); \/\/ RX, TX\n\nconst int buzzerPin = 8;\nconst int vibradorPin = 7;\nconst int magneticoPin = 3;\nconst int pirPin = 4;\n\nbool sistemaArmadoApp = false;\nbool ultimoEstadoPeligro = false;\nbool ultimoEstadoArmado = false;\nbool alarmaDisparada = false;\nbool modoMovimiento = false;\n\nunsigned long ultimoCambioAlarma = 0;\nbool estadoBuzzer = false;\n\nvoid setup() {\n  configurarPines();\n  iniciarComunicacion();\n  mostrarInicio();\n  enviarEstadoInicial();\n}\n\nvoid loop() {\n  leerBluetooth();\n  revisarEstadoArmado();\n  revisarPeligro();\n}\n\nbool hayIntrusion() {\n  bool magneticoAbierto = digitalRead(magneticoPin) == HIGH;\n  bool movimientoDetectado = digitalRead(pirPin) == HIGH;\n\n  if (modoMovimiento) {\n    return magneticoAbierto;\n  } else {\n    return magneticoAbierto || movimientoDetectado;\n  }\n}\n\nvoid configurarPines() {\n  pinMode(buzzerPin, OUTPUT);\n  pinMode(vibradorPin, OUTPUT);\n\n  pinMode(magneticoPin, INPUT_PULLUP);\n  pinMode(pirPin, INPUT);\n\n  desactivarAlarma();\n}\n\nvoid iniciarComunicacion() {\n  Serial.begin(9600);\n  BT.begin(9600);\n}\n\nvoid mostrarInicio() {\n  Serial.println(\"=================================\");\n  Serial.println(\"   SISTEMA DE ALARMA INICIADO\");\n  Serial.println(\"=================================\");\n  Serial.println();\n}\n\nvoid enviarEstadoInicial() {\n  bool armado = sistemaActivo();\n\n  if (armado) {\n    Serial.println(\"&#091;ESTADO] Estado inicial: ALARMA ACTIVADA\");\n    BT.println(\"ACTIVA\");\n  } else {\n    Serial.println(\"&#091;ESTADO] Estado inicial: ALARMA DESACTIVADA\");\n    BT.println(\"DESACTIVA\");\n  }\n\n  ultimoEstadoArmado = armado;\n}\n\nvoid revisarEstadoArmado() {\n  bool armado = sistemaActivo();\n\n  if (armado != ultimoEstadoArmado) {\n    if (armado) {\n      Serial.println(\"&#091;ESTADO] Alarma ACTIVADA\");\n\n      if (modoMovimiento) {\n        BT.println(\"MODO_MOVIMIENTO\");\n      } else {\n        BT.println(\"MODO_NORMAL\");\n      }\n\n    } else {\n      Serial.println(\"&#091;ESTADO] Alarma DESACTIVADA\");\n      BT.println(\"DESACTIVA\");\n    }\n\n    ultimoEstadoArmado = armado;\n  }\n}\n\nvoid revisarPeligro() {\n  bool armado = sistemaActivo();\n  bool intrusion = hayIntrusion();\n\n  if (armado) {\n    if (intrusion &amp;&amp; !alarmaDisparada) {\n      alarmaDisparada = true;\n\n      Serial.println(\"&#091;ALERTA] INTRUSION DETECTADA\");\n      mostrarSensores();\n      BT.println(\"PELIGRO\");\n      ultimoEstadoPeligro = true;\n    }\n\n    if (alarmaDisparada) {\n      activarAlarmaSinDelay();\n    }\n\n  } else {\n    desactivarAlarma();\n\n    if (ultimoEstadoPeligro) {\n      Serial.println(\"&#091;INFO] Alarma apagada por la app\");\n      BT.println(\"SEGURO\");\n      ultimoEstadoPeligro = false;\n    }\n\n    alarmaDisparada = false;\n  }\n}\n\nvoid leerBluetooth() {\n  while (BT.available()) {\n    char dato = BT.read();\n\n    Serial.print(\"&#091;BT] Comando recibido: \");\n    Serial.println(dato);\n\n    procesarComandoBluetooth(dato);\n  }\n}\n\nvoid procesarComandoBluetooth(char dato) {\n  if (dato == '1') {\n    sistemaArmadoApp = true;\n    modoMovimiento = false;\n\n    Serial.println(\"&#091;BT] La app ha ACTIVADO la alarma en MODO NORMAL\");\n    BT.println(\"MODO_NORMAL\");\n\n    if (hayIntrusion()) {\n      alarmaDisparada = true;\n      ultimoEstadoPeligro = true;\n    }\n\n    if (alarmaDisparada) {\n      BT.println(\"PELIGRO\");\n    } else {\n      BT.println(\"SEGURO\");\n    }\n  }\n\n  else if (dato == '2') {\n    sistemaArmadoApp = true;\n    modoMovimiento = true;\n\n    Serial.println(\"&#091;BT] La app ha ACTIVADO la alarma en MODO MOVIMIENTO\");\n    Serial.println(\"&#091;BT] En este modo se ignora el PIR\");\n    BT.println(\"MODO_MOVIMIENTO\");\n\n    if (hayIntrusion()) {\n      alarmaDisparada = true;\n      ultimoEstadoPeligro = true;\n    }\n\n    if (alarmaDisparada) {\n      BT.println(\"PELIGRO\");\n    } else {\n      BT.println(\"SEGURO\");\n    }\n  }\n\n  else if (dato == '0') {\n    sistemaArmadoApp = false;\n    modoMovimiento = false;\n    ultimoEstadoPeligro = false;\n    alarmaDisparada = false;\n    desactivarAlarma();\n\n    Serial.println(\"&#091;BT] La app ha DESACTIVADO la alarma\");\n    BT.println(\"DESACTIVA\");\n    BT.println(\"SEGURO\");\n  }\n\n  else if (dato == '\\n' || dato == '\\r') {\n    \/\/ Ignorar saltos de linea\n  }\n\n  else {\n    Serial.println(\"&#091;BT] Comando no reconocido\");\n  }\n}\n\nbool sistemaActivo() {\n  return sistemaArmadoApp;\n}\n\nvoid mostrarSensores() {\n  Serial.print(\"&#091;SENSORES] Magnetico: \");\n  Serial.print(digitalRead(magneticoPin));\n\n  Serial.print(\" | PIR: \");\n  Serial.println(digitalRead(pirPin));\n}\n\nvoid activarAlarmaSinDelay() {\n  digitalWrite(vibradorPin, HIGH);\n\n  unsigned long ahora = millis();\n\n  if (ahora - ultimoCambioAlarma &gt;= 200) {\n    ultimoCambioAlarma = ahora;\n    estadoBuzzer = !estadoBuzzer;\n\n    if (estadoBuzzer) {\n      tone(buzzerPin, 1000);\n    } else {\n      noTone(buzzerPin);\n    }\n  }\n}\n\nvoid desactivarAlarma() {\n  noTone(buzzerPin);\n  digitalWrite(vibradorPin, LOW);\n  estadoBuzzer = false;\n}<\/code><\/pre>\n\n\n\n<p><strong>C\u00f3digo de la aplicaci\u00f3n Android:<\/strong><\/p>\n\n\n\n<p>La aplicaci\u00f3n Android se ha desarrollado en Kotlin. En esta memoria no se incluye el c\u00f3digo completo de la interfaz, ya que la mayor parte corresponde al dise\u00f1o visual de la pantalla. Se recogen \u00fanicamente los fragmentos relacionados con la comunicaci\u00f3n Bluetooth, por ser los m\u00e1s relevantes para el funcionamiento del sistema empotrado.<\/p>\n\n\n\n<p>Esta comunicaci\u00f3n permite que la app env\u00ede al Arduino los comandos de control y procese los mensajes que recibe como respuesta. De este modo, la aplicaci\u00f3n puede activar el modo normal, activar el modo movimiento, desactivar la alarma y actualizar visualmente el estado del sistema.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>private fun sendCommand(command: Char) {\n    if (!_isConnected.value || outputStream == null) {\n        return\n    }\n\n    scope.launch {\n        try {\n            outputStream?.write(command.code)\n            outputStream?.flush()\n\n            withContext(Dispatchers.Main) {\n                _statusMessage.value = \"Comando enviado: $command\"\n            }\n\n        } catch (e: IOException) {\n            withContext(Dispatchers.Main) {\n                _isConnected.value = false\n                _statusMessage.value = \"Error al enviar\"\n            }\n\n            cerrarConexion()\n        }\n    }\n}<\/code><\/pre>\n\n\n\n<p>La funci\u00f3n <code>sendCommand()<\/code> se utiliza desde los botones principales de la aplicaci\u00f3n. Seg\u00fan el bot\u00f3n pulsado por el usuario, se env\u00eda un car\u00e1cter diferente al Arduino:<\/p>\n\n\n\n<p>De esta forma, el usuario no interact\u00faa directamente con el circuito, sino que controla el sistema desde la aplicaci\u00f3n m\u00f3vil. El Arduino recibe el comando, lo interpreta y activa o desactiva la alarma seg\u00fan corresponda.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>onActivate = { sendCommand('1') }\nonMoveMode = { sendCommand('2') }\nonDeactivate = { sendCommand('0') }<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>private fun processMessage(message: String) {\n    val msg = message.trim().uppercase()\n\n    when {\n        msg.contains(\"DESACTIVA\") -&gt; {\n            _alarmMode.value = AlarmMode.OFF\n            _dangerStatus.value = \"ESPERANDO\"\n            _statusMessage.value = \"Alarma desactivada\"\n            vibratePeligro(false)\n        }\n\n        msg.contains(\"PELIGRO\") -&gt; {\n            _dangerStatus.value = \"PELIGRO\"\n            _statusMessage.value = \"Alerta \u2014 Intrusi\u00f3n detectada\"\n            vibratePeligro(true)\n        }\n\n        msg.contains(\"SEGURO\") -&gt; {\n            _dangerStatus.value = \"SEGURO\"\n            _statusMessage.value = \"Mochila segura\"\n            vibratePeligro(false)\n        }\n\n        msg.contains(\"MODO_MOVIMIENTO\") -&gt; {\n            _alarmMode.value = AlarmMode.MOVIMIENTO\n            _statusMessage.value = \"Modo Movimiento activo\"\n        }\n\n        msg.contains(\"MODO_NORMAL\") || msg == \"ACTIVA\" -&gt; {\n            _alarmMode.value = AlarmMode.NORMAL\n            _statusMessage.value = \"Modo Normal activo\"\n        }\n\n        else -&gt; {\n            _statusMessage.value = \"Mensaje: $msg\"\n        }\n    }\n}<\/code><\/pre>\n\n\n\n<p>La funci\u00f3n <code>processMessage()<\/code> es la encargada de interpretar los mensajes recibidos desde el Arduino. Primero limpia el texto recibido y lo convierte a may\u00fasculas para evitar errores por espacios o diferencias de formato. Despu\u00e9s, mediante una estructura <code>when<\/code>, comprueba qu\u00e9 mensaje ha llegado y actualiza los distintos atributos de la interfaz.<\/p>\n\n\n\n<p>Por ejemplo, si recibe <code>\"PELIGRO\"<\/code>, la aplicaci\u00f3n cambia el estado de seguridad a peligro, muestra un mensaje de intrusi\u00f3n detectada y activa la vibraci\u00f3n del tel\u00e9fono. Si recibe <code>\"SEGURO\"<\/code>, muestra que la mochila est\u00e1 segura y detiene la vibraci\u00f3n. Si recibe <code>\"DESACTIVA\"<\/code>, cambia el modo de alarma a apagado y vuelve al estado de espera.<\/p>\n\n\n\n<p>Esta funci\u00f3n se ejecuta cada vez que llega un nuevo mensaje por Bluetooth desde el Arduino. Por tanto, la aplicaci\u00f3n va cambiando din\u00e1micamente seg\u00fan las se\u00f1ales recibidas: muestra el modo activo, el estado de seguridad, los mensajes informativos y la vibraci\u00f3n del m\u00f3vil. De esta manera, la app act\u00faa como panel de control y visualizaci\u00f3n del sistema de alarma.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Costrucci\u00f3n<\/h2>\n\n\n\n<p>La construcci\u00f3n del prototipo se realiz\u00f3 de forma progresiva, siguiendo estos pasos:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Dise\u00f1o del circuito en Fritzing: primero se realiz\u00f3 el esquema del circuito, colocando el Arduino, el m\u00f3dulo Bluetooth HC-05, el sensor magn\u00e9tico, el sensor PIR, el buzzer, el motor vibrador, las resistencias y el transistor. <\/li>\n\n\n\n<li>Prueba individual de componentes: despu\u00e9s se probaron los componentes uno a uno en la protoboard, comprobando el funcionamiento del buzzer, el vibrador, el sensor magn\u00e9tico, el PIR y el m\u00f3dulo Bluetooth. <\/li>\n\n\n\n<li>Desarrollo de la aplicaci\u00f3n m\u00f3vil: una vez comprobados los componentes, se desarroll\u00f3 la app Android. Antes de conectarla al Arduino, se simularon mensajes como \u201cPELIGRO\u201d, \u201cSEGURO\u201d, \u201cMODO_NORMAL\u201d, \u201cMODO_MOVIMIENTO\u201d y \u201cDESACTIVA\u201d para comprobar que la interfaz cambiaba correctamente. <\/li>\n\n\n\n<li>Integraci\u00f3n entre Arduino y aplicaci\u00f3n: posteriormente se conect\u00f3 la app con el circuito real. Se comprob\u00f3 que la aplicaci\u00f3n enviaba correctamente los comandos \u201c1\u201d, \u201c2\u201d y \u201c0\u201d, y que el Arduino respond\u00eda activando el modo normal, el modo movimiento o desactivando la alarma. <\/li>\n\n\n\n<li>Montaje de la maqueta: por \u00faltimo, se colocaron los componentes en la mochila. El sensor magn\u00e9tico se situ\u00f3 en la zona de apertura, el sensor PIR se orient\u00f3 hacia el exterior y se integraron el buzzer y el motor vibrador como elementos de aviso.<\/li>\n\n\n\n<li> Pruebas finales: finalmente se realizaron pruebas del sistema completo, comprobando que al detectar una intrusi\u00f3n se activaban el buzzer y el vibrador, y que la aplicaci\u00f3n mostraba correctamente el estado de peligro.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"1024\" data-id=\"10245\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoCajaCerradaMiMochilaSegura-4-768x1024.jpg\" alt=\"\" class=\"wp-image-10245\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoCajaCerradaMiMochilaSegura-4-768x1024.jpg 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoCajaCerradaMiMochilaSegura-4-225x300.jpg 225w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoCajaCerradaMiMochilaSegura-4-1152x1536.jpg 1152w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoCajaCerradaMiMochilaSegura-4.jpg 1536w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"1024\" data-id=\"10247\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoCircuitoMiMochilaSegura-768x1024.jpg\" alt=\"\" class=\"wp-image-10247\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoCircuitoMiMochilaSegura-768x1024.jpg 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoCircuitoMiMochilaSegura-225x300.jpg 225w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoCircuitoMiMochilaSegura-1152x1536.jpg 1152w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoCircuitoMiMochilaSegura.jpg 1536w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/figure>\n<\/figure>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"588\" height=\"1024\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoMaquetaConMochila-2-588x1024.jpg\" alt=\"\" class=\"wp-image-10249\" style=\"width:373px;height:auto\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoMaquetaConMochila-2-588x1024.jpg 588w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoMaquetaConMochila-2-172x300.jpg 172w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoMaquetaConMochila-2-768x1338.jpg 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoMaquetaConMochila-2-882x1536.jpg 882w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/fotoMaquetaConMochila-2.jpg 946w\" sizes=\"auto, (max-width: 588px) 100vw, 588px\" \/><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\">Problemas y soluciones encontradas<\/h2>\n\n\n\n<p>1.<strong>Falsos positivos en el sensor PIR<\/strong>:<\/p>\n\n\n\n<p>Durante las primeras pruebas del sistema, el sensor de movimiento PIR detectaba actividad de forma constante, incluso cuando no hab\u00eda movimiento real cerca de la mochila. Esto provocaba que la alarma se disparase de forma continua, haciendo que el modo normal no fuese fiable.<\/p>\n\n\n\n<p><strong>Causa: <\/strong>El sensor PIR ten\u00eda la distancia de detecci\u00f3n y la sensibilidad configuradas demasiado altas. Este sensor dispone de potenci\u00f3metros de ajuste que permiten modificar la distancia de detecci\u00f3n y el tiempo de activaci\u00f3n de la se\u00f1al. Al estar configurado con valores demasiado elevados, detectaba peque\u00f1as variaciones del entorno como si fueran movimiento real.<\/p>\n\n\n\n<p><strong>Soluci\u00f3n: <\/strong>Se calibr\u00f3 manualmente el sensor PIR, reduciendo la distancia de detecci\u00f3n y ajustando su sensibilidad a un valor m\u00e1s adecuado para el proyecto. Tras este ajuste, el sensor dej\u00f3 de detectar movimientos irrelevantes y pas\u00f3 a activarse \u00fanicamente cuando hab\u00eda una presencia real cerca de la mochila.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"522\" height=\"491\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/image-32.png\" alt=\"\" class=\"wp-image-10250\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/image-32.png 522w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/image-32-300x282.png 300w\" sizes=\"auto, (max-width: 522px) 100vw, 522px\" \/><\/figure>\n<\/div>\n\n\n<p><strong>&nbsp;2.Limitaciones de MIT App Inventor<\/strong><\/p>\n\n\n\n<p>En la fase inicial del proyecto, la aplicaci\u00f3n m\u00f3vil se intent\u00f3 desarrollar con MIT App Inventor, una herramienta visual sencilla para crear aplicaciones Android. Sin embargo, durante las pruebas se comprob\u00f3 que no era suficiente para el funcionamiento que necesitaba nuestro sistema.<\/p>\n\n\n\n<p><strong>Causa:<\/strong>La aplicaci\u00f3n necesitaba gestionar comunicaci\u00f3n Bluetooth en tiempo real, recibir mensajes de forma continua desde el Arduino y actualizar la interfaz de manera inmediata cuando llegaran se\u00f1ales como \u201cPELIGRO\u201d, \u201cSEGURO\u201d o \u201cDESACTIVA\u201d. MIT App Inventor presentaba limitaciones para gestionar esta recepci\u00f3n continua de datos de forma fiable.<\/p>\n\n\n\n<p><strong>Soluci\u00f3n: <\/strong>Se decidi\u00f3 descartar MIT App Inventor y desarrollar la aplicaci\u00f3n desde cero en Kotlin utilizando Android Studio. Aunque esta opci\u00f3n aument\u00f3 la complejidad del desarrollo, permiti\u00f3 controlar mejor la conexi\u00f3n Bluetooth, procesar los mensajes recibidos correctamente y actualizar la interfaz de forma m\u00e1s estable.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"493\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/image-33-1024x493.png\" alt=\"\" class=\"wp-image-10251\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/image-33-1024x493.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/image-33-300x144.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/image-33-768x370.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/image-33-1536x739.png 1536w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/image-33.png 1887w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><strong>Problemas con el divisor de tensi\u00f3n del Bluetooth<\/strong><\/p>\n\n\n\n<p>Durante el montaje del m\u00f3dulo Bluetooth HC-05, surgieron problemas de comunicaci\u00f3n entre el Arduino y la aplicaci\u00f3n m\u00f3vil. En un primer momento parec\u00eda que el fallo pod\u00eda estar en el c\u00f3digo o en la conexi\u00f3n Bluetooth, pero finalmente se comprob\u00f3 que el problema estaba en el divisor de tensi\u00f3n utilizado para proteger el pin RX del HC-05.<\/p>\n\n\n\n<p><strong>Causa: <\/strong>El Arduino trabaja con se\u00f1ales de 5 V, mientras que el pin RX del m\u00f3dulo HC-05 debe recibir una se\u00f1al de aproximadamente 3,3 V. Para ello era necesario montar un divisor de tensi\u00f3n con resistencias. Necesit\u00e1bamos una resistencia de 2 k\u03a9 y otra de 1 k\u03a9, pero al no tener una resistencia de 2 k\u03a9 utilizamos dos resistencias de 1 k\u03a9 en serie para obtener el valor equivalente. El problema fue que inicialmente las resistencias se colocaron de forma incorrecta, por lo que la se\u00f1al no llegaba bien al m\u00f3dulo Bluetooth.<\/p>\n\n\n\n<p><strong>Soluci\u00f3n: <\/strong>Se revis\u00f3 el esquema del divisor de tensi\u00f3n y se corrigi\u00f3 la posici\u00f3n de las resistencias. Finalmente, se colocaron dos resistencias de 1 k\u03a9 en serie para formar la resistencia equivalente de 2 k\u03a9, junto con otra resistencia de 1 k\u03a9, consiguiendo reducir la se\u00f1al del Arduino a un valor seguro para el HC-05. Tras corregir la conexi\u00f3n, la comunicaci\u00f3n Bluetooth empez\u00f3 a funcionar correctamente.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"299\" height=\"282\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/image.jpeg\" alt=\"\" class=\"wp-image-10252\" \/><\/figure>\n<\/div>\n\n\n<p><strong>Recepci\u00f3n de mensajes Bluetooth incompletos<\/strong><\/p>\n\n\n\n<p>Durante las pruebas de integraci\u00f3n entre el Arduino y la app, se detect\u00f3 que en ocasiones los mensajes enviados por el Arduino (por ejemplo, \u00abPELIGRO\u00bb) llegaban a la aplicaci\u00f3n de forma parcial, proces\u00e1ndose como cadenas incompletas como \u00abPELI\u00bb o \u00abGRO\u00bb que no eran reconocidas por la l\u00f3gica de la app.<\/p>\n\n\n\n<p><strong>Causa: <\/strong>La lectura del stream Bluetooth se realizaba byte a byte, sin esperar a que llegara el mensaje completo. Dado que el protocolo SPP no garantiza que los datos lleguen en un \u00fanico paquete, es posible que un mensaje se fragmente en varias lecturas.<strong>Soluci\u00f3n: <\/strong>Se implement\u00f3 un BufferedReader sobre el InputStream Bluetooth, utilizando el m\u00e9todo readLine() que espera hasta recibir el car\u00e1cter de fin de l\u00ednea (\\n) antes de devolver el mensaje completo. El Arduino ya enviaba los mensajes con BT.println(), que a\u00f1ade autom\u00e1ticamente el \\n al final. Con este cambio, la app siempre recibe mensajes \u00edntegros.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"666\" height=\"410\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/image-34.png\" alt=\"\" class=\"wp-image-10253\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/image-34.png 666w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/image-34-300x185.png 300w\" sizes=\"auto, (max-width: 666px) 100vw, 666px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Posibles mejoras<\/h2>\n\n\n\n<p>Una posible mejora del proyecto ser\u00eda sustituir el sensor PIR de movimiento por un aceler\u00f3metro. El PIR detecta movimiento en el entorno, pero puede generar falsas alarmas si hay personas cerca o si la mochila se encuentra en una zona con mucho movimiento. En cambio, un aceler\u00f3metro permitir\u00eda detectar directamente vibraciones, golpes o desplazamientos de la propia mochila, por lo que la detecci\u00f3n ser\u00eda m\u00e1s precisa y estar\u00eda m\u00e1s relacionada con una manipulaci\u00f3n real del objeto protegido.<\/p>\n\n\n\n<p>Otra mejora ser\u00eda sustituir la placa Arduino UNO por una placa ESP32. Esta opci\u00f3n permitir\u00eda reducir el coste total del sistema, ya que el ESP32 es una placa econ\u00f3mica y adem\u00e1s incorpora conectividad Bluetooth integrada. De esta manera, no ser\u00eda necesario utilizar un m\u00f3dulo Bluetooth HC-05 externo, simplificando el circuito y reduciendo tanto el n\u00famero de componentes como el espacio ocupado dentro de la mochila.<\/p>\n\n\n\n<p>Tambi\u00e9n ser\u00eda recomendable sustituir la protoboard y el cableado provisional por una PCB personalizada. Aunque fabricar una PCB para una \u00fanica unidad puede resultar m\u00e1s caro que montar el circuito en una protoboard, esta soluci\u00f3n ser\u00eda mucho m\u00e1s adecuada si el proyecto se quisiera escalar o fabricar en varias unidades. Una PCB permitir\u00eda reducir el tama\u00f1o del montaje, mejorar la resistencia de las conexiones, evitar cables sueltos y conseguir un acabado m\u00e1s profesional.<\/p>\n\n\n\n<p>Adem\u00e1s, se podr\u00eda mejorar la alimentaci\u00f3n del sistema utilizando una bater\u00eda recargable integrada. Esto permitir\u00eda que la mochila funcionara de forma aut\u00f3noma sin depender de una conexi\u00f3n USB o de una fuente externa de alimentaci\u00f3n. Junto con esto, podr\u00eda a\u00f1adirse un sistema de carga y un indicador del nivel de bater\u00eda en la aplicaci\u00f3n m\u00f3vil.<\/p>\n\n\n\n<p>Por \u00faltimo, la aplicaci\u00f3n Android podr\u00eda ampliarse incorporando un registro de eventos. De esta forma, el usuario podr\u00eda consultar cu\u00e1ndo se activ\u00f3 la alarma, cu\u00e1ndo se detect\u00f3 peligro y cu\u00e1ndo se desactiv\u00f3 el sistema. Esto har\u00eda que la aplicaci\u00f3n no solo sirviera como panel de control, sino tambi\u00e9n como herramienta de seguimiento del estado de seguridad de la mochila.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Demostraci\u00f3n<\/h2>\n\n\n\n<figure class=\"wp-block-video\"><video height=\"1504\" style=\"aspect-ratio: 896 \/ 1504;\" width=\"896\" controls src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/video-explicacion_fcP30mGV.mp4\"><\/video><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Autores<\/h2>\n\n\n\n<p><strong>Hecho por: <\/strong><\/p>\n\n\n\n<p>Borja Gonz\u00e1lez Rebollo, David Ingunza Romero, Gonzalo Valverde Manso, Diego Quinza\u00f1os D\u00edaz<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00cdndice 1.Introducci\u00f3n 2.Funcionamiento 3.Caso de uso 4.Material usado y costes 5.Dise\u00f1o 6.Implementaci\u00f3n 7.Construcci\u00f3n 8.Problemas y soluciones encontradas 9.Posibles mejoras 10.Demostraci\u00f3n 11.Autores Introducci\u00f3n Este proyecto consiste en el dise\u00f1o y construcci\u00f3n de un sistema de&#46;&#46;&#46;<\/p>\n","protected":false},"author":327,"featured_media":10539,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-10192","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-proyectos"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Sistema antirrobo para mochila - Grupo 13 - Proyectos con Arduino.<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/sistema-antirrobo-para-mochila-grupo-13\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Sistema antirrobo para mochila - Grupo 13 - Proyectos con Arduino.\" \/>\n<meta property=\"og:description\" content=\"\u00cdndice 1.Introducci\u00f3n 2.Funcionamiento 3.Caso de uso 4.Material usado y costes 5.Dise\u00f1o 6.Implementaci\u00f3n 7.Construcci\u00f3n 8.Problemas y soluciones encontradas 9.Posibles mejoras 10.Demostraci\u00f3n 11.Autores Introducci\u00f3n Este proyecto consiste en el dise\u00f1o y construcci\u00f3n de un sistema de&#046;&#046;&#046;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/sistema-antirrobo-para-mochila-grupo-13\/\" \/>\n<meta property=\"og:site_name\" content=\"Proyectos con Arduino.\" \/>\n<meta property=\"article:published_time\" content=\"2026-05-08T13:29:09+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-08T13:39:38+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/Gemini_Generated_Image_cj7yimcj7yimcj7y-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1579\" \/>\n\t<meta property=\"og:image:height\" content=\"938\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"seytrma2526g13\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"seytrma2526g13\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"20 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/sistema-antirrobo-para-mochila-grupo-13\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/sistema-antirrobo-para-mochila-grupo-13\\\/\"},\"author\":{\"name\":\"seytrma2526g13\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#\\\/schema\\\/person\\\/fba5bdd98ec8459c799d166a9962f953\"},\"headline\":\"Sistema antirrobo para mochila &#8211; Grupo 13\",\"datePublished\":\"2026-05-08T13:29:09+00:00\",\"dateModified\":\"2026-05-08T13:39:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/sistema-antirrobo-para-mochila-grupo-13\\\/\"},\"wordCount\":3465,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/sistema-antirrobo-para-mochila-grupo-13\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2026\\\/05\\\/Gemini_Generated_Image_cj7yimcj7yimcj7y-1.png\",\"articleSection\":[\"Proyectos\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/sistema-antirrobo-para-mochila-grupo-13\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/sistema-antirrobo-para-mochila-grupo-13\\\/\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/sistema-antirrobo-para-mochila-grupo-13\\\/\",\"name\":\"Sistema antirrobo para mochila - Grupo 13 - Proyectos con Arduino.\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/sistema-antirrobo-para-mochila-grupo-13\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/sistema-antirrobo-para-mochila-grupo-13\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2026\\\/05\\\/Gemini_Generated_Image_cj7yimcj7yimcj7y-1.png\",\"datePublished\":\"2026-05-08T13:29:09+00:00\",\"dateModified\":\"2026-05-08T13:39:38+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/sistema-antirrobo-para-mochila-grupo-13\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/sistema-antirrobo-para-mochila-grupo-13\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/sistema-antirrobo-para-mochila-grupo-13\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2026\\\/05\\\/Gemini_Generated_Image_cj7yimcj7yimcj7y-1.png\",\"contentUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2026\\\/05\\\/Gemini_Generated_Image_cj7yimcj7yimcj7y-1.png\",\"width\":1579,\"height\":938},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/sistema-antirrobo-para-mochila-grupo-13\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Sistema antirrobo para mochila &#8211; Grupo 13\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#website\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/\",\"name\":\"Proyectos con Arduino.\",\"description\":\"Blog de proyectos de Arduino de alumnos de la URJC\",\"publisher\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#organization\",\"name\":\"Universidad Rey Juan Carlos\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2022\\\/05\\\/logourjc-1.jpg\",\"contentUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2022\\\/05\\\/logourjc-1.jpg\",\"width\":745,\"height\":288,\"caption\":\"Universidad Rey Juan Carlos\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#\\\/schema\\\/person\\\/fba5bdd98ec8459c799d166a9962f953\",\"name\":\"seytrma2526g13\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d49c8d44726b89a84d84689a50f60b58847f06396034c5e3bd04eca56fc2b9f7?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d49c8d44726b89a84d84689a50f60b58847f06396034c5e3bd04eca56fc2b9f7?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d49c8d44726b89a84d84689a50f60b58847f06396034c5e3bd04eca56fc2b9f7?s=96&d=mm&r=g\",\"caption\":\"seytrma2526g13\"},\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/author\\\/seytrma2526g13\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Sistema antirrobo para mochila - Grupo 13 - Proyectos con Arduino.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blogs.etsii.urjc.es\/dseytr\/sistema-antirrobo-para-mochila-grupo-13\/","og_locale":"es_ES","og_type":"article","og_title":"Sistema antirrobo para mochila - Grupo 13 - Proyectos con Arduino.","og_description":"\u00cdndice 1.Introducci\u00f3n 2.Funcionamiento 3.Caso de uso 4.Material usado y costes 5.Dise\u00f1o 6.Implementaci\u00f3n 7.Construcci\u00f3n 8.Problemas y soluciones encontradas 9.Posibles mejoras 10.Demostraci\u00f3n 11.Autores Introducci\u00f3n Este proyecto consiste en el dise\u00f1o y construcci\u00f3n de un sistema de&#46;&#46;&#46;","og_url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/sistema-antirrobo-para-mochila-grupo-13\/","og_site_name":"Proyectos con Arduino.","article_published_time":"2026-05-08T13:29:09+00:00","article_modified_time":"2026-05-08T13:39:38+00:00","og_image":[{"width":1579,"height":938,"url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/Gemini_Generated_Image_cj7yimcj7yimcj7y-1.png","type":"image\/png"}],"author":"seytrma2526g13","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"seytrma2526g13","Tiempo de lectura":"20 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/sistema-antirrobo-para-mochila-grupo-13\/#article","isPartOf":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/sistema-antirrobo-para-mochila-grupo-13\/"},"author":{"name":"seytrma2526g13","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#\/schema\/person\/fba5bdd98ec8459c799d166a9962f953"},"headline":"Sistema antirrobo para mochila &#8211; Grupo 13","datePublished":"2026-05-08T13:29:09+00:00","dateModified":"2026-05-08T13:39:38+00:00","mainEntityOfPage":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/sistema-antirrobo-para-mochila-grupo-13\/"},"wordCount":3465,"commentCount":0,"publisher":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#organization"},"image":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/sistema-antirrobo-para-mochila-grupo-13\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/Gemini_Generated_Image_cj7yimcj7yimcj7y-1.png","articleSection":["Proyectos"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blogs.etsii.urjc.es\/dseytr\/sistema-antirrobo-para-mochila-grupo-13\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/sistema-antirrobo-para-mochila-grupo-13\/","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/sistema-antirrobo-para-mochila-grupo-13\/","name":"Sistema antirrobo para mochila - Grupo 13 - Proyectos con Arduino.","isPartOf":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/sistema-antirrobo-para-mochila-grupo-13\/#primaryimage"},"image":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/sistema-antirrobo-para-mochila-grupo-13\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/Gemini_Generated_Image_cj7yimcj7yimcj7y-1.png","datePublished":"2026-05-08T13:29:09+00:00","dateModified":"2026-05-08T13:39:38+00:00","breadcrumb":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/sistema-antirrobo-para-mochila-grupo-13\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blogs.etsii.urjc.es\/dseytr\/sistema-antirrobo-para-mochila-grupo-13\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/sistema-antirrobo-para-mochila-grupo-13\/#primaryimage","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/Gemini_Generated_Image_cj7yimcj7yimcj7y-1.png","contentUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2026\/05\/Gemini_Generated_Image_cj7yimcj7yimcj7y-1.png","width":1579,"height":938},{"@type":"BreadcrumbList","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/sistema-antirrobo-para-mochila-grupo-13\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/blogs.etsii.urjc.es\/dseytr\/"},{"@type":"ListItem","position":2,"name":"Sistema antirrobo para mochila &#8211; Grupo 13"}]},{"@type":"WebSite","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#website","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/","name":"Proyectos con Arduino.","description":"Blog de proyectos de Arduino de alumnos de la URJC","publisher":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blogs.etsii.urjc.es\/dseytr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#organization","name":"Universidad Rey Juan Carlos","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#\/schema\/logo\/image\/","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/05\/logourjc-1.jpg","contentUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/05\/logourjc-1.jpg","width":745,"height":288,"caption":"Universidad Rey Juan Carlos"},"image":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#\/schema\/person\/fba5bdd98ec8459c799d166a9962f953","name":"seytrma2526g13","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/d49c8d44726b89a84d84689a50f60b58847f06396034c5e3bd04eca56fc2b9f7?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/d49c8d44726b89a84d84689a50f60b58847f06396034c5e3bd04eca56fc2b9f7?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d49c8d44726b89a84d84689a50f60b58847f06396034c5e3bd04eca56fc2b9f7?s=96&d=mm&r=g","caption":"seytrma2526g13"},"url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/author\/seytrma2526g13\/"}]}},"_links":{"self":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/10192","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/users\/327"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/comments?post=10192"}],"version-history":[{"count":3,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/10192\/revisions"}],"predecessor-version":[{"id":10531,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/10192\/revisions\/10531"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/media\/10539"}],"wp:attachment":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/media?parent=10192"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/categories?post=10192"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/tags?post=10192"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}