Commit f4b7985b authored by Qiwei Ni's avatar Qiwei Ni

Merge branch 'jordi' into 'master'

Revisió global i canvis a l'apartat 3.2



See merge request !1
parents 577a80dd 2ef88e76
......@@ -60,7 +60,7 @@
\chapter{Resum}
Aquest projecte consisteix en crear un sistema de notificacions per proximitat utilitzant la tecnologia Bluetooth Low Energy. La solució consisteix en un dispositiu electrònic amb BLE que fa de localitzador i amb telèfon mòbil dels usuaris detecta el localitzador. També disposa d'una pàgina web per configurar el localitzador.
Aquest projecte consisteix en crear un sistema de notificacions per proximitat utilitzant la tecnologia Bluetooth Low Energy. La solució consisteix en un dispositiu electrònic amb BLE que fa de difusor d'un punt d'interès de manera que els telèfons mòbils amb BLE que es trobin aprop del punt d'interès el detectaran. La informació del punt d'interès es rebrà a una aplicació Android que s'ha desenvolupat i la gestió de la informació que envia el punt d'interès es farà a través d'un panell web d'administració.
Aquest document està format per tres parts. Primer, desenvolupament d'un dispositiu electrònic que fa de localitzador. Segon, construcció d'una interfície de configuració del dispositiu localitzador. Tercer, creació d'una aplicació pels telèfons mòbils que detecta el localitzador.
......@@ -78,17 +78,16 @@ Quan passejem per una ciutat desconeguda o viatgem a un lloc nou, en algun momen
Quan es vol saber la posició d'una persona, es parla de localització. De seguida, es comenta unes tecnologies (més comuns) de localització per mòbil.
\subsection{GPS}
El Sistema de Posicionament Global (GPS) \cite{GPS}, és un sistema de navegació per satè\l.lit que permet saber la mateixa situació geogràfica i l'hora de referència. El GPS funciona mitjançant una xarxa de satè\l.lits que orbiten al voltant de la terra. Quan es desitja determinar la posició, l'aparell el receptor de GPS detecta el senyal de com a mímim quatre satè\l.lits de la xarxa, dels quals rep uns senyals indicant la posició i el rellotge de cadascun d'ells. Sobre la base d'aquests senyals, l'aparell sincronitza el rellotge del GPS i calcula el retard dels senyals, és a dir, la distància al satè\l.lit. Per \"triangulació\" calcula la posició en què aquest es troba.
El Sistema de Posicionament Global (GPS) \cite{GPS}, és un sistema de navegació per satè\l.lit que permet saber la situació geogràfica i l'hora de referència. El GPS funciona mitjançant una xarxa de satè\l.lits que orbiten al voltant de la terra. Quan es desitja determinar la posició, l'aparell receptor de GPS detecta el senyal de com a mímim quatre satè\l.lits de la xarxa, dels quals rep uns senyals indicant la posició i el rellotge de cadascun d'ells. Sobre la base d'aquests senyals, l'aparell sincronitza el rellotge del GPS i calcula el retard dels senyals, és a dir, la distància al satè\l.lit. Per \"triangulació\" calcula la posició en què aquest es troba.
La fiabilitat depèn del nombre de satè\l.lits utilitzats, del grau de dispersió que tinguin aquests, de l'existència d'efectes atmosfèrics adversos que afectin a la velocitat de transmissió del senyal. Els GPS d'ús comú tenen un error de precisió de 15 metres.
\subsection{WPS}
El sistema de posicionament Wi-Fi \cite{WPS} s'utilitza per posicionament d'interor, sovint fa de complementari de GPS, ja que s'utilitza per l'exterior. WPS ha sigut possible aprofitant el ràpid creixement a principis del segle 21 dels punts d'accés sense fil a les zones urbanes. La tècnica de localització més comú i estès utilitzat es basa en el mesurament de la intensitat del senyal rebut i el mètode de "empremtes dactilars". La base de dades de punt d'accés Wi-Fi s'omple mitjançant la correlació de les dades d'ubicació GPS del dispositiu mòbil amb l'adraça MAC del punt d'accés Wi-Fi. Per tant, la presició depèn de nombres de posicions que havia introduit en la base de dades.
El sistema de posicionament Wi-Fi \cite{WPS} s'utilitza pel posicionament en interiors però sovint fa de sistema complementari al GPS quan s'utilitza a l'exterior (per millorar la precisió). WPS ha sigut possible aprofitant el ràpid creixement a principis del segle 21 dels punts d'accés sense fil a les zones urbanes. La tècnica de localització més comuna i estesa utilitzada actualment es basa en mesurar la intensitat del senyal rebut i el mètode de "empremtes dactilars". S'omple una base de dades amb la correlació de les dades d'ubicació GPS del dispositiu mòbil amb l'adraça MAC del punt d'accés Wi-Fi. Per tant, la presició depèn del nombre de punts d'accés que havia introduit en la base de dades.
\subsection{Bluetooth Low Energy}
Bluetooth Low Energy \cite{BLE} és un dels 3 protocols de Bluetooth v4.0 \cite{Bluetooth}, té un protocol nou que està dirigit a aplicacions de molt baixa potència (sovint només alimenta amb una pila de botó). BLE no és compartible amb protocol clàssic de Bluetooth, però s'utilitza les mateixes freqüències de radio, 2,4 GHz, i d'aquesta manera amb els xips que tenen BLE i Bluetooth clàssic es poden compartir la mateixa antena.
BLE té avantatges com baix consum, mida petita, preu barat i compartible amb telefons mòbils, tablets i ordinadors.
Bluetooth Low Energy (BLE) \cite{BLE}, un dels 3 protocols de Bluetooth v4.0 \cite{Bluetooth}, està dirigit a aplicacions de molt baixa potència (aparells que sovint només s'alimenten amb una pila de botó). BLE no és compartible amb el protocol clàssic de Bluetooth, però utilitza les mateixes freqüències de radio, 2,4 GHz, i d'aquesta manera amb els xips que tenen BLE i Bluetooth clàssic poden compartir la mateixa antena. BLE té avantatges com: baix consum, mida petita, preu barat i compartible amb telefons mòbils, tauletes i ordinadors.
Segons SIG (el grup amb especial interes en Bluetooth en anglès Bluetooth Special Interest Group), Bluetooth és tot sobre la proximitat, no sobre la ubicació exacta com GPS.
Segons SIG (el grup amb especial interes en Bluetooth en anglès Bluetooth Special Interest Group), Bluetooth és tot sobre la proximitat, no sobre la ubicació exacta com GPS.
\chapter{Situació del treball}
......@@ -116,7 +115,7 @@ Per aconseguir l'objectiu que s'ha definit, es busca una solució per resoldre.
Es qüestiona quines tecnologies es pot per determinar la localització de la persona. Realitzem les següents propostes:
\begin{itemize}
\item \emph{GPS}. Només funciona en l'aire lliure i consumeix molt ràpid la bateria del mòbil \cite{GPS_battery}. Utilitzar GPS té un cost car perquè és un canal de comunicació molt lenta, necessita per comunicar-se amb tres o quatre satè\l.lits de pròrroga a 50b/s. S'exigeix l'alimentació de l'antena durant qualsevol comunicació. El pitjor es que mentre el GPS està activat, el sistema no pot entrar en un estat de son. El cost de la bateria del GPS es nota molt durant l'adquisició inicial del missatge de navegació del satè\l.lit: estat del satè\l.lit, efemèrides i almanac. L'adquisició de cada satè\l.li triga de 12s a 30s, però si es necessita l'almanac complet, es pot arribar fin a 12min. Durant tot això , el telèfon és incapaç d'entrar mode son. Tot i tenint l'ajuda de A-GPS (GPS assistit) que resol parcialment el problema, enviant el missatge de navegació al seu dispositiu mòbil a través de la seva xarxa de dades ce\l.lular o fins i tot Wi-Fi, GPS continua gastant molta bateria.
\item \emph{GPS}. Només funciona en l'aire lliure i consumeix molt ràpid la bateria del mòbil \cite{GPS_battery}. Utilitzar GPS té un cost car perquè és un canal de comunicació molt lent, necessita per comunicar-se amb tres o quatre satè\l.lits de pròrroga a 50b/s. S'exigeix l'alimentació de l'antena durant qualsevol comunicació. El pitjor es que mentre el GPS està activat, el sistema no pot entrar en un estat de son. El cost de la bateria del GPS es nota molt durant l'adquisició inicial del missatge de navegació del satè\l.lit: estat del satè\l.lit, efemèrides i almanac. L'adquisició de cada satè\l.li triga de 12s a 30s, però si es necessita l'almanac complet, es pot arribar fin a 12min. Durant tot això , el telèfon és incapaç d'entrar mode son. Tot i tenint l'ajuda de A-GPS (GPS assistit) que resol parcialment el problema, enviant el missatge de navegació al seu dispositiu mòbil a través de la seva xarxa de dades ce\l.lular o fins i tot Wi-Fi, GPS continua gastant molta bateria.
\item \emph{Wi-Fi}. Aprofitant els punts d'accés Wi-Fi per determinar la posició. Requereix que els locals tinguin un punt d'accés Wi-Fi.
\item \emph{GPS i Wi-Fi}. Determina la localització de l'usuari utilitzant l'antena de telefonia mòbil conjuntament amb el receptor de Wi-Fi, tant en interiors com en exteriors. Conté les avantatges i inconvenients anteriors.
\item \emph{Bluetooth Low Energy}. Com el seu nom indica és de baix consum. Una de les moltes funcionalitats que ofereix és detectar i informar de la proximitat d'un dispositiu BLE a curta distància. En aquest cas, es necessita un dispositiu BLE que emeti un identificador de manera que quan un mòbil amb BLE s'apropi a l'emisor, rebi l'identificador i conegui l'existencia de l'altre.
......@@ -153,7 +152,7 @@ Per poder fer ho realitat, es necessita els següent:
\begin{figure}
\centering
\includegraphics[width=0.9\textwidth]{esquema.pdf}
\includegraphics[width=0.9\textwidth]{imatges/esquema.pdf}
\caption{Les connexions que hi ha entre diferentes parts en conjunt.}
\label{fig:connexions}
\end{figure}
......@@ -168,16 +167,16 @@ La figura~\ref{fig:connexions} representa l'esquema global del projecte. La part
\end{enumerate}
\section{Desenvolupament del dispositiu BLE}
Inicialment, es va utilitzar Radino nRF8001 \cite{radino}, un mòdul que combina el microcontrolador ATmega32U4 i el circuit integrat nRF8001 \cite{nRF8001} (un xip de conectivitat BLE del fabricant Nordic Semiconductor), la figura~\ref{fig:radino} és un mòdul radino. Les raons perquè es va escollir aquest mòdul són: primer, l'ATmega32U4 és molt semblant a l'ATmega328P (l'integrat que incorpora la placa Arduino UNO) i ja que amb aquest mòdul s'ha treballat molt durant el grau, segon, Nordic Semiconductor disposa una llibreria \emph{ble-sdk-arduino} \cite{ble-sdk-arduino} que facilita la comunicació entre l'integrat nRF8001 i les plaques Arduino (Arduino UNO, Mega, Leaonardo\dots). \\
Inicialment, es va utilitzar Radino nRF8001 \cite{radino}, un mòdul que combina el microcontrolador ATmega32U4 i el circuit integrat nRF8001 \cite{nRF8001} (un xip de conectivitat BLE del fabricant Nordic Semiconductor), la figura~\ref{fig:radino} és un mòdul radino. Les raons perquè es va escollir aquest mòdul són: primer, l'ATmega32U4 és molt semblant a l'ATmega328P (l'integrat que incorpora la placa Arduino UNO) i com que s'ha treballat molt amb aquest mòdul durant el grau, tenim una certa experiència; segon, Nordic Semiconductor proporciona una llibreria \emph{ble-sdk-arduino} \cite{ble-sdk-arduino} que facilita la comunicació entre l'integrat nRF8001 i les plaques Arduino (Arduino UNO, Mega, Leaonardo\dots). \\
\begin{figure}
\centering
\includegraphics[width=0.4\textwidth]{radino}
\includegraphics[width=0.4\textwidth]{imatges/radino}
\caption{El mòdul Radino nRF8001}
\label{fig:radino}
\end{figure}
Finalment, per qüestió de preu (19,90€), s'ha escollit combinar una placa de circuit imprès pròpia (...), ja que el Radino té molts perifèrics que són inecessàris pel projecte. \\
Finalment, per qüestió de preu (19,90€), s'ha escollit combinar una placa de circuit imprès pròpia (TODO: ...), ja que el Radino té molts perifèrics que són inecessàris per aquest projecte en particular. \\
\subsection{BLE}
BLE té dos perfils (el que defineix com s'ha d'utilitzar els protocols per aconseguir un objectiu particular) genèrics, GAP i GATT.
......@@ -255,15 +254,43 @@ Cada paquet consisteix en 2 bytes de header, el primer byte és la mida de paque
\begin{figure}
\centering
\includegraphics[scale=0.52]{nRFgo}
\includegraphics[scale=0.52]{imatges/nRFgo}
\caption{Configuració de GAP en nRFgo studio}
\label{fig:nrfgo}
\end{figure}
\section{Serveis web}
Disposa dos serveis webs diferents, un per administració de local i altre per l'aplicació Android. Com mostra en la figura~\ref{fig:connexions}, tots dos comuniquen amb la base de dades. És una bona idea ficar els dos serveis web i la base de dades en tres màquines diferentes, d'una banda aïlla els serveis web de la base de dades, si els serveis web estan compromesos, no currompurà la base de dades i d'altra el fet de separar els dos serveis web implica més seguretat per cadascú. Una manera d'estalviar recursos és utilitzar Docker.
Docker \cite{docker_overview} proporciona la capacitat d'empaquetar i executar una aplicació en un entorn sense prémer aïllat anomenat contenidor. L'aïllament i la seguretat li permeten executar molts contenidors de forma simultània en una màquina. A causa de la naturalesa lleugera de contenidors, que s'executen sense la càrrega addicional d'un hipervisor, pot executar més contenidors en una combinació de maquinari donada que si estigués utilitzant màquines virtuals.
\begin{figure}
\centering
\includegraphics[width=0.5\textwidth]{containers.pdf}
\caption{L'esquema relacional}
\label{fig:containers}
\end{figure}
Tal com es mostra l'anterior figura, els serveis web estan formats per:
\begin{itemize}
\item \emph{Panell d'administració}: per administrar la informació del punt d'interès i.
\item \emph{API per Android}: endpoint per l'aplicació Android perquè pugui consultar la informació dels punt d'interès.
\item \emph{MariaDB}: base de dades relacional encarregada d'emmagatzemar tota la informació que es gestiona al panell d'administració.
\item \emph{Redis}: base de dades NoSQL volàtil que permet mantenir les sessions d'usuari del panell d'administració obertes.
\end{itemize}
Els serveis web que són accessibles a través d'internet són el panell d'administració i l'API per l'aplicació d'Android. Aquests dos serveis comparteixen la mateixa base de dades MariaDB.
Els quatre serveis que apareixen a la figura~\ref{fig:containers} estan aïllats entre sí. Aïllar els serveis en màquines diferentes és una bona idea perquè si un dels serveis web es veu compromès, serà més difícil comprometre els altres serveis. Separar els serveis web afavoreix més independència, flexibilitat i seguretat.
A priori, un pot pensar que separar els serveis en quatre màquines (físiques) diferents implica haver de gastar més recursos en maquinària, però és possible aconseguir l'aïllament dels serveis utilitzant només una màquina (física). Es disposa de tres opcions:
\begin{itemize}
\item \emph{Emular}: TODO
\item \emph{Virtualitzar}: TODO
\item \emph{Contenidor}: TODO
\end{itemize}
En aquest treball s'ha obtat per treballar amb contenidors, utilitzant l'eina Docker.
Docker \cite{docker_overview} proporciona la capacitat d'empaquetar i executar una aplicació en un entorn sense prémer aïllat anomenat contenidor. L'aïllament i la seguretat li permeten executar molts contenidors de forma simultània en una màquina. A causa de la naturalesa lleugera dels contenidors, que s'executen sense la càrrega addicional d'un hipervisor, pot executar més contenidors en una combinació de maquinari donada que si estigués utilitzant màquines virtuals.
A part de 3 contenidors que es necessiten, s'ha afegit un altre per gestió de sessions de usuaris de web d'administració~\ref{docker_containers}.
......@@ -272,10 +299,10 @@ A part de 3 contenidors que es necessiten, s'ha afegit un altre per gestió de s
\begin{tabular}{ | c | c | c | c | }
\hline
& nom & servei & SO \\ \hline
1 & tic-mariadb & MariaDB 10.1 & Debian Jessie \\ \hline
2 & tic-redis & Redis & Alpine \\ \hline
3 & tic-flask & Flask & Ubuntu16.04 \\ \hline
4 & tic-flask2 & Flask & Ubuntu16.04 \\
1 & mariadb & MariaDB 10.1 & Debian Jessie \\ \hline
2 & redis & Redis & Alpine \\ \hline
3 & flask-admin & Flask & Ubuntu 16.04 \\ \hline
4 & flask-api-android & Flask & Ubuntu 16.04 \\
\hline
\end{tabular}
\caption{La taula de contenidors de Docker}
......@@ -296,7 +323,7 @@ En la figura~\ref{fig:esquema_db} mostra: Els \texttt{usuaris} tenen nom de usua
\begin{figure}
\centering
\includegraphics[width=0.5\textwidth]{esquema_db.pdf}
\includegraphics[width=0.5\textwidth]{imatges/esquema_db.pdf}
\caption{L'esquema relacional}
\label{fig:esquema_db}
\end{figure}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment