PetBeeper Grupo 24
SISTEMAS EMPOTRADOS Y DE TIEMPO REAL
PEETBEEPER
Grupo 24
Mariano Loriente Santos
Contenido
1. Objetivo
2. Componentes
2.1 Hardware
2.2 Coste del Hardware
2.3 Software
3. Desarrollo del proyecto
4. Mejoras del proyecto
1. Objetivo
Con este proyecto el objetivo principal es lograr un
dispositivo portátil que permita rastrear la ubicación de tu mascota en todo
momento.
dispositivo portátil que permita rastrear la ubicación de tu mascota en todo
momento.
Para ello se dispondrá de la parte hardware conformada por
el Arduino y la placa gps/gprs/gsm además de una batería que alimente el
conjunto, y la parte software que se compondrá por un servidor VPS en el que se
desarrollará una aplicación con la cual poder seguir las rutas seguidas por tu
mascota.
el Arduino y la placa gps/gprs/gsm además de una batería que alimente el
conjunto, y la parte software que se compondrá por un servidor VPS en el que se
desarrollará una aplicación con la cual poder seguir las rutas seguidas por tu
mascota.
2. Componentes
2.1 Hardware
El componente principal de este desarrollo será un Arduino UNO al que
conectaremos la placa de comunicaciones A7 gps/gprs/gsm dicha placa mediante la
interfaz de conexión bus serie nos permite enviarle comandos AT de modo que
podamos realizar diferentes funciones, en este caso las que nos interesan son
buscar localización gps y enviar dicha ubicación mediante una petición get
usando para ello gprs.
conectaremos la placa de comunicaciones A7 gps/gprs/gsm dicha placa mediante la
interfaz de conexión bus serie nos permite enviarle comandos AT de modo que
podamos realizar diferentes funciones, en este caso las que nos interesan son
buscar localización gps y enviar dicha ubicación mediante una petición get
usando para ello gprs.
Dicha placa de comunicaciones ha sido elegida dado que ha cumplido tres
requisitos básicos para el proyecto que son:
requisitos básicos para el proyecto que son:
·
Funcionalidad: Cubre dos de las funcionalidades
que se requerían en el proyecto, ubicar mediante el protocolo gps y la
posibilidad de enviar datos por internet mediante peticiones.
Funcionalidad: Cubre dos de las funcionalidades
que se requerían en el proyecto, ubicar mediante el protocolo gps y la
posibilidad de enviar datos por internet mediante peticiones.
·
Tamaño: El reducido tamaño de la placa la hace
ideal para integrarla en el conjunto sin añadir demasiadas dimensiones al
proyecto lo cual mantiene la portablidad
Tamaño: El reducido tamaño de la placa la hace
ideal para integrarla en el conjunto sin añadir demasiadas dimensiones al
proyecto lo cual mantiene la portablidad
·
Compatibilidad: La placa es compatible con
Arduino elemento indispensable en el proyecto, lo cual unido a las
características anteriormente mencionadas la hacen ideal para el proyecto.
Compatibilidad: La placa es compatible con
Arduino elemento indispensable en el proyecto, lo cual unido a las
características anteriormente mencionadas la hacen ideal para el proyecto.
Para poder realizar las peticiones
gprs correctamente necesitaremos además una tarjeta sim con conectividad a
internet.
gprs correctamente necesitaremos además una tarjeta sim con conectividad a
internet.
Para alimentar al conjunto,
haremos uso de una batería solar de 2200 mAh la elección de una batería solar
en lugar de una convencional es debido a dos motivos, el principal es que dado
que el aparato se usará en entornos abiertos siempre recibirá algo de luz
solar, al menos por el día, por lo tanto, el hecho de quedarnos sin carga
prácticamente desaparece. Por otra parte, económicamente no supone un gasto
mucho mayor por lo tanto incluirla es la mejor decisión.
haremos uso de una batería solar de 2200 mAh la elección de una batería solar
en lugar de una convencional es debido a dos motivos, el principal es que dado
que el aparato se usará en entornos abiertos siempre recibirá algo de luz
solar, al menos por el día, por lo tanto, el hecho de quedarnos sin carga
prácticamente desaparece. Por otra parte, económicamente no supone un gasto
mucho mayor por lo tanto incluirla es la mejor decisión.
Para colocar el dispositivo en
nuestra mascota hemos optado por un arnés para perros Julius K9 dado que
dispone de dos velcros laterales en los cuales colocaremos los distintos
elementos del dispositivo.
nuestra mascota hemos optado por un arnés para perros Julius K9 dado que
dispone de dos velcros laterales en los cuales colocaremos los distintos
elementos del dispositivo.
El ultimo elemento de la lista
lo componen dos bolsas trasparentes que se sellan para mantener el contenido
seco, en el caso de que haga un día lluvioso, no estropee todo el dispositivo.
lo componen dos bolsas trasparentes que se sellan para mantener el contenido
seco, en el caso de que haga un día lluvioso, no estropee todo el dispositivo.
2.2 Coste
del Hardware
Elemento |
Url de compra |
Coste |
|
Arduino UNO |
https://www.amazon.es/AZDelivery-UNO-R3-compatible-Arduino/dp/B01MDJA464/ref=sr_1_4?ie=UTF8&qid=1524936570&sr=8-4&keywords=arduino+uno&dpID=51jx96gBudL&preST=_SY300_QL70_&dpSrc=srch |
7.99€ |
|
A7 gps/gprs/gsm |
https://es.aliexpress.com/store/product/Wireless-Module-A7-GSM-GPRS-GPS-3-In-1-Module-Shield-DC-5-9V-For-Arduino/716258_32799943254.html?spm=a219c.search0204.3.175.11a215d9Ncu4yd&ws_ab_test=searchweb0_0,searchweb201602_1_10152_10065_10709_10151_10344_10068_10342_10547_10343_10340_5722611_10341_10548_10697_10696_5722911_5722811_10084_5722711_10083_10618_10710_10307_10301_10303_5711211_10059_10184_308_100031_10103_441_10624_10623_10622_10621_10620_5711311_5722511,searchweb201603_31,ppcSwitch_4_ppcChannel&algo_expid=4fc0ed6d-fd38-45d4-b491-10df75bb0cff-27&algo_pvid=4fc0ed6d-fd38-45d4-b491-10df75bb0cff&priceBeautifyAB=0 |
10.99 |
|
Bateria solar |
https://www.amazon.es/POWER-SOLAR-5000MAH-INDICADOR-D2372/dp/B07C898NN9/ref=sr_1_11?s=computers&ie=UTF8&qid=1524937059&sr=1-11&keywords=power+bank+solar |
16.19€ |
|
Arnés Julius K9 |
https://www.amazon.es/Julius-K9-16IDC-P-2-Power-Harness-Tama%C3%B1o/dp/B0041W9PXG/ref=sr_1_3?s=pet-supplies&ie=UTF8&qid=1524937120&sr=1-3&keywords=julius+k9&dpID=41pyLkPnzJL&preST=_SX300_QL70_&dpSrc=srch |
29.99€ |
|
Bolsas trasparentes acuáticas |
https://www.amazon.es/Mpow-Impermeable-Unidades-Universal-Pulgada/dp/B01IJKI874/ref=sr_1_cc_2?s=aps&ie=UTF8&qid=1524937189&sr=1-2-catcorr&keywords=bolsas+acuaticas |
9.99€ |
|
COSTE TOTAL |
75.15 € |
||
2.3 Software
El software lo componen el
servidor VPS que albergará la aplicación.
servidor VPS que albergará la aplicación.
La aplicación, que proveerá al
usuario de una interfaz en la cual podrá consultar los distintos recorridos
seguidos por la mascota.
usuario de una interfaz en la cual podrá consultar los distintos recorridos
seguidos por la mascota.
Dicha aplicación será
desarrollada con el framework de desarrollo en PHP Laravel en su versión 5.3.
desarrollada con el framework de desarrollo en PHP Laravel en su versión 5.3.
La elección de este framework se
basa en la facilidad y velocidad que provee dicho framework para desarrollar.
Además de la seguridad que provee.
basa en la facilidad y velocidad que provee dicho framework para desarrollar.
Además de la seguridad que provee.
A nivel de frontend se a optado
por un theme basado en Bootstrap que nos facilita el desarrollo de la interfaz
gráfica y la adaptabilidad a los distintos tipos de dispositivos.
por un theme basado en Bootstrap que nos facilita el desarrollo de la interfaz
gráfica y la adaptabilidad a los distintos tipos de dispositivos.
3. Desarrollo
del proyecto
Para el desarrollo del proyecto comencé leyendo a cerca de
las características del modulo gps y su conectividad con el Arduino.
las características del modulo gps y su conectividad con el Arduino.
Una vez realizadas las conexiones pertinentes comencé a
escribir un programa con el que realizar pruebas con la placa. Dicho programa
consistía en una interfaz a través del monitor serie que permitía enviar
comandos a la placa A7 y ver en el mismo monitor la respuesta de dicho comando.
escribir un programa con el que realizar pruebas con la placa. Dicho programa
consistía en una interfaz a través del monitor serie que permitía enviar
comandos a la placa A7 y ver en el mismo monitor la respuesta de dicho comando.
Una vez realizado las pruebas iniciales que consistieron en
probar la ubicación gps y las funciones sim en este caso con una llamada.
probar la ubicación gps y las funciones sim en este caso con una llamada.
En la idea original se incluía una pantalla OLED de 0,96
pulgadas en la que se mostraría información del estado del dispositivo, como
buscando posición gps, posición establecida, y enviando datos.
pulgadas en la que se mostraría información del estado del dispositivo, como
buscando posición gps, posición establecida, y enviando datos.
Sin embargo al incluir la librería de control de la pantalla
algún componente causaba algún tipo de problema y bloqueaba en cierto punto el
Arduino provocando que no se pudiesen enviar posiciones gps y hubiese que
reiniciar el dispositivo.
algún componente causaba algún tipo de problema y bloqueaba en cierto punto el
Arduino provocando que no se pudiesen enviar posiciones gps y hubiese que
reiniciar el dispositivo.
Para intentar solventar este problema incluimos un watchdog
que se encargaba de reiniciar el programa cada vez que se quedase bloqueado,
sin embargo muchas veces reiniciaba el dispositivo antes de lo debido de modo
que no daba tiempo a conseguir una posición gps y enviar dato alguno antes de
que se reinciase. Por lo tanto el uso de esta librería quedó suprimida, y por
tanto sin solución para el problema de los bloqueos decidí eliminar la pantalla
del proyecto por el bien de este.
que se encargaba de reiniciar el programa cada vez que se quedase bloqueado,
sin embargo muchas veces reiniciaba el dispositivo antes de lo debido de modo
que no daba tiempo a conseguir una posición gps y enviar dato alguno antes de
que se reinciase. Por lo tanto el uso de esta librería quedó suprimida, y por
tanto sin solución para el problema de los bloqueos decidí eliminar la pantalla
del proyecto por el bien de este.
En la idea original y pendiente como mejora también se
incluía una tira led la cual iluminaria el arnes por la noche para localizar
visualmente a la mascota, sin embargo la elección de la tira led no fue la
adecuada ya que al conectarla al Arduino provocaba que este por consumo
eléctrico se viniese abajo, y causaba problemas de estabilidad. Por tanto fue
eliminado también.
incluía una tira led la cual iluminaria el arnes por la noche para localizar
visualmente a la mascota, sin embargo la elección de la tira led no fue la
adecuada ya que al conectarla al Arduino provocaba que este por consumo
eléctrico se viniese abajo, y causaba problemas de estabilidad. Por tanto fue
eliminado también.
El programa que finalmente va incluido en el Arduino
funciona de la siguiente manera:
funciona de la siguiente manera:
En el setup se enciende la placa A7 mediante la activación
del pin 3 durante dos segundos que está conectado al pin power en la placa A7.
del pin 3 durante dos segundos que está conectado al pin power en la placa A7.
Así mismo se inicializan las conexiones serie configurando
los balaudios, en este caso 19200.
los balaudios, en este caso 19200.
Una vez se ha establecido conexión se manda el comando AT
hasta recibir OK por parte de la placa de modo que tengamos seguridad de que se
ha establecido la conexión con la misma.
hasta recibir OK por parte de la placa de modo que tengamos seguridad de que se
ha establecido la conexión con la misma.
A continuación se ejecuta el comando AT CREG para obtener el
código de estado de la tarjeta sim de modo que nos aseguramos que tenemos
cobertura.
código de estado de la tarjeta sim de modo que nos aseguramos que tenemos
cobertura.
Para finalizar el setup se inicia la búsqueda de ubicación
gps.
gps.
Siguiendo el curso del programa entramos en la parte loop en
la cual esperamos a que se establezca la ubicación gps.
la cual esperamos a que se establezca la ubicación gps.
Una vez establecida troceamos la cadena devuelta por la
placa A7 en latitud, longitud y tiempo.
placa A7 en latitud, longitud y tiempo.
Enviamos estos datos a la función sendData().
Esta función se encarga de realizar una petición get a la
url petbeeper.lorientedev.com/gps
url petbeeper.lorientedev.com/gps
Enviando la información de latitud, longitud tiempo y
usuario.
usuario.
Esta información se almacena en la base de datos del
servidor para mas tarde trazar la ruta en la aplicación.
servidor para mas tarde trazar la ruta en la aplicación.
4. Mejoras
del proyecto
En el futuro se podría incluir como mejoras una pantalla en
la que se muestre información acerca del estado del dispositivo.
la que se muestre información acerca del estado del dispositivo.
También integrarle una tira led con la que poder iluminar el
arnés para poder localizar la mascota en condiciones de poca visibilidad.
arnés para poder localizar la mascota en condiciones de poca visibilidad.
Otra mejora seria encontrar una placa de conexión gps la
cual tuviese cobertura gps en interiores.
cual tuviese cobertura gps en interiores.
Minimizar el tamaño del conjunto que actualmente resulta un
tanto aparatoso.
tanto aparatoso.