Documentos de Académico
Documentos de Profesional
Documentos de Cultura
FACULTAD DE CIENCIAS
URADO EVALUADOR
PRESIDENTE
ING. CARW~RAMÍREZ
SECRETARIO
Taking advantage of the existing technologies like tablets and the facility
proposed by operating systems like Android to allow the programming and the creation
of applications, it is presented in this project the development of an application in that
operating system with Java programming Janguage, which will be executed within a
tablet for the voting process and the final results will be stored in a database, so that
after the elections, these results are transmitted via Bluetooth to a hardware designed
with a microcontroller PIC so as to be connected to a datalogger to obtain and storage
the final data on a USB stick.
During the explanation of this project, the advantages of the application and the
hardware design and the requirements of the to-be-used devices will be discussed.
Finally, the results of a real prototype, brief but meaningful conclusions and sorne
'recommendations and views of future improvements will be detailed.
ÍNDICE
l. Introducción ................................................................................................................................ 9
II. Planteamiento Metodológico .................................................................................................. JI
2.1 Realidad problemática .......................................................................................................... JI
2.2 Definición y delimitaciones del problema ............................................................................ 12
2.3 Fonnulación del problema ................................................................................................... 14
2.4 Objetivos del proyecto ......................................................................................................... 14
2.4.1 Objetivo principal ........................................................................................................ 14
2.4.2 Objetivos específicos ................................................................................................... 14
2.5 Justificación e importancia ................................................................................................... 15
2.6 Viabilidad y limitaciones de la investigación.................................................... ,.................. 15
2.6.1 Limitaciones ................................................................................................................ J6
2.7 Hipótesis ............................................................................................................................... 16
2.8 Metodología ......................................................................................................................... 17
2.9 Procesamiento, análisis e interpretación de datos ................................................................ 17
2.1 OOrganización del proyecto ................................................................................................. 18
111. Marco Teórico ........................................................................................................................ 19
3.1 Elecciones ............................................................................................................................. 19
3.2 Voto electrónico ................................................................................................................... 19
3.3 Modalidades del voto electrónico ........................................................................................ 20
3.4 Breve reseña histórica .......................................................................................................... 21
3.4.1 Principios ..................................................................................................................... 21
3.4.2 Europa y Asia .............................................................................................................. 22
3.4.3 Estados Unidos ............................................................................................................ 22
3.4.4 Latinoamérica .............................................................................................................. 23
3.5 Equipos de votación electrónica implementados ................................................................. 24
3.5.1 Urna electrónica en Brasil ........................................................................................... 24
3.5.2 SmartMatic SAES-3370 .............................................................................................. 25
3.5.3 SmartMatic en Venezuela ........................................................................................... 26
3.5 .4 Perú ............................................................................................................................. 28
IV. Diseño de la Aplicación - Software ....................................................................................... 29
4.1 Software a utilizar ................................................................................................................ 29
4 .1.1 Android........................................................................................................................ 29
4.1.2 Tableta ......................................................................................................................... 31
7
4.1.3 Java .............................................................................................................................. 32
4.1.4 Eclipse ......................................................................................................................... 32
4.2 Análisis del proyecto ............................................................................................................ 33
4.3 Aplicación de votación ......................................................................................................... 34
4.3.1 Tableta como cédula .................................................................................................... 35
4.3.2 Algoritmo de la aplicación .......................................................................................... 36
4.3.3 Diagrama de flujo de la aplicación .............................................................................. 36
4.3.4 Diseño de la aplicación ............................................................................................... 38
4.4 Aplicación de envío de datos ............................................................................................... 51
4.4.1 Diagrama de flujo ........................................................................................................ 51
4.4.2 Actividad de la aplicación ........................................................................................... 52
4.5 Resumen ............................................................................................................................... 55
V. Diseño de la Aplicación- Hardware ...................................................................................... 56
5.1 Componentes para el diseño ................................................................................................. 56
5.1.1 Microcontrolador PIC ................................................................................................. 56
5.1.2 Bluetooth ..................................................................................................................... 57
5.1.3 Datalogger ................................................................................................................... 58
5.1.4 Otros componentes electrónicos .................................................................................. 58
5.2 Análisis del proyecto ............................................................................................................ 58
5.3 Algoritmo ............................................................................................................................. 59
5.4 Diagrama de flujo ................................................................................................................. 60
5.5 Diseño ................................................................................................................................... 60
5.5.1 Módulo Bluetooth .................................................................. :.................................... 62
5.5.2 Módulo Datalogger ..................................................................................................... 63
5.5.3 Código del microcontrolador ...................................................................................... 64
5.6 Resumen ............................................................................................................................... 69
VI. Prototipo y su Funcionamiento ............................................................................................. 70
6.1 Votación ............................................................................................................................... 70
6.2 Envío de los datos ................................................................................................................ 73
6.3 Costos ................................................................................................................................... 76
Vll. Conclusiones .......................................................................................................................... 77
VIII. Recomendaciones .......................................................................................................... 79
Referen das ............................................................................................................................. 80
Anexos ..................................................................................................................................... 83
8
CAPÍTULOI
INTRODUCCIÓN
9
.EQUIPO I'ORt :rll DE VOTO ELECTR JCO DESPLEGADO
.------
;-·----
1
:.::=-=------..:
Es así pues que en este proyecto se plantea el diseño de una aplicación para nso
de las tabletas como medio y/o máquina de votación. Gracias a sus dimensiones
reducidas y su liviandad puede ser transportado fácilmente a cualquier sitio. Además se
presentará el diseño de un hardware con un microcontrolador PIC con un módulo
bluetooth que se comunicaría con la tableta para el traspaso de los datos a una base de
datos que sería almacenada en una memoria USB a través de un módulo datalogger
conectado también a tal microcontrolador.
10
CAPÍTULOII
PLANTEAMIENTO METODOLÓGICO
En otros países con mayor interés en la facilidad y reducción de los costos de los
procesos electorales como EE.UU., Bélgica y España, ya se han implementado diversas
tecnologías en base a computadoras [1] para realizar votaciones electrónicas. Por otro
lado, en Latinoamérica, en Brasil (Ver Figura 2) y Venezuela, ya se ha implementado
un sistema de voto electrónico, el cual permite al votante el uso de las herramientas
tecnológicas de la información y herramientas modernizadas para realizar el proceso.
11
Este sistema consiste en una máquina especial y de grandes dimensiones que
permite a través de tm lector de código de barras para DNI, acceder a una pantalla
donde se presenta la cédula de votación. Al final el votante recibe un ticket donde
consta su votación.
-~·~\
... ·
''·
)-"'
-- _-,, .
f'
__) - '·
Observando estos avances para los sistemas de votación electrónica, nace este
proyecto, que tiene como desarrollar un sistema de voto electrónico sobre un sistema
operativo Android, de forma que se reemplace la fabricación de máquinas basadas en
computadoras que son de dimensiones considerables y costosas, por tabletas, las cuales
proporcionarán los medios para la realización del proceso electoral conjuntamente con
una pequeño hardware basado en un microcontrolador PIC para la obtención de los
datos y su almacenamiento.
12
./ La reducción del tiempo de escrutinio y cómputo .
./ La facilitación del ejercicio de voto por parte de los analfabetos .
./ La posibilidad de realizar votaciones con gran frecuencia y a bajo costo .
./ La comodidad para el votante.
13
2.3. FORMULACIÓN DEL PROBLEMA
~ Crear una aplicación en Java para Android, usando eclipse. Dicha aplicación se
encargará de identificar al votante, guardar su selección, y hacer el conteo de
votos por candidato.
"' Hacer el diseño de un hardware que a través de un microcontrolador de bajo
costo como un PIC sea capaz de recibir los datos procesados y almacenarlos en
memoria.
"' La aplicación se diseña para la tecnología de una tableta como formato de
votación y almacenamiento de datos, reemplazando las cédulas fisicas y
reemplazando el uso de computadores.
14
./ Que Jos procesos electorales proporCionen al votante o ciudadano mayor
confianza y credibilidad en Jos resultados finales, disminuyendo la posibilidad
de fraude electoral y acelerar el proceso de conteo de votos.
Con estas tecnologías podremos mejorar los recursos y solucionar los problemas
generados por la incertidumbre del votante ¿Se elegirá con justicia a nuestro Presidente
y autoridades regionales? Además con los diseños propuestos por este proyecto se
puede disminuir los costos y gastos de los procesos. Se pretende pues que en el futuro se
utilicen tabletas y hardware desarrollado con microcontroladores para cumplir con los
mejoramientos requeridos.
15
2.6.1. LIMITACIONES
2.7. HIPÓTESIS
16
2.8. METODOLOGÍA
17
2.10. ORGANIZACIÓN DEL PROYECTO
18
CAPÍTULO Ili
MARCO TEÓRICO
3.1. ELECCIONES
19
emisión de reportes de resultados; así como de una de una red de comunicaciones para
la transmisión y presentación de resultados de un proceso electoral.
Las tecnologías del voto electrónico pueden acelerar el conteo de los votos y
proveer una mejor accesibilidad para los votantes con algún tipo de discapacidad.
Pantalla Táctil, es una máquina de votación (Ver Figura 4) que presenta menús
de selección en pantalla en los que el elector elige, valida el voto mediante una taijeta
de identificación, y el voto quedará almacenado en memoria para trasmitirlo al cierre de
la jornada electoral.
Internet, más complicada que las anteriores. Es necesario que cada votante
disponga de una clave especial de identificación, que junto con su número de identidad,
le den acceso al sistema, yahí es donde se produce el principal problema [11].
20
Figura 4 Ejemplo de modalidad de Pantalla Táctil [12]
3.4.1. Principios
Los sistemas de voto electrónico han sido utilizados desde épocas tan lejanas
como los años 60.
En dichos años, los sistemas de taijeta perforada fueron puestos en práctica, por
primera vez, en el estado de Oregon, Estados Unidos. A pesar de que generaron
problemas desde los años 60, no fue sino hasta las elecciones de noviembre del 2000
cuando la discusión sobre la exactitud de las "punch cards" tomó dimensión pública.
Durante los años 80 [13], diversos informes reseñaron la falta de exactitud en los
recuentos en elecciones realizadas con los sistemas de tmjetas perforadas, y existieron
importantes disputas (que llegaron a la Corte Suprema norteainericana) sobre las fallas
en el software de los sistemas de lectura ópticos.
21
nuevos sistemas de grabación directa electrónica, con pantallas táctiles, teclados, e
interfaces informáticas.
22
3.4.4. Latinoamérica
Venezuela
Brasil
Nicaragua
Panamá
Puerto Rico
Uruguay
23
3.5. EQUIPOS DE VOTACIÓN ELECTRÓNICA IMPLEMENTADOS
,/ Gabinete
,/ Placa madre
,/ Procesador compatible con X86 de 32 bits
,/ RAM socket DDR
,/ Reloj interno
,/ Generador de sonidos
24
,¡ Controlador de video VGA
,¡ Controlador SATA, ATA 2
,¡ Unidades de almacenamiento
,¡ Teclado numérico
,¡ Display LCD 1O" 800x600
,¡ Fuente de alimentación
,¡ Alimentación externa con tensión de entrada variando entre 90 a 220 VAC
./ Batería interna
,¡ Diodos emisores de luz
,¡ Mecanismo de impresión
,¡ Gabinete
,¡ Display alfanumérico
,¡ Teclado numérico
,¡ Diodos emisores de luz
,¡ Dispositivo de lectura de huellas dactilares
,¡ Dispositivo de lectura y grabación de tarjetas inteligentes
,¡ Generador de sonidos
,¡ Puerto USB 2.0
Bélgica tiene una de las comisiones electorales más visionarias del mundo. Fue
pionera del voto electrónico en los años 90, y desde entonces, siempre se ha mantenido
a la vanguardia en la adopción de tecnología electoral. Las elecciones al Parlamento
Europeo 2014 marcaron la primera vez en la historia en que los belgas utilizan un
sistema de votación totalmente verificable para elegir a Jos miembros del Parlamento.
Smartmatic facilitó la experiencia electoral de Jos municipios que contrataron nuestros
servicios (17].
25
Figura 7 Equipo SMARTMATIC SAES-3370 [18]
26
./ Microprocesador Celeron 600Mhz
./ Memoria RAM máxima de 1 GB
./ Dispositivo de almacenamiento (memoria interna de 256 MB, un slot para
compact flash)
./ hnpresora térmica con ancho de papel de 8 cm .
./ 6 puertos USB 2.0
./ Un puerto PS2 para la boleta electrónica
./ Un puerto de red RJ-45
./ Peso del equipo igual a 5.9 Kg .
./ Alimentación externa con tensión de entrada variando entre 100 a 240 VAC
Accesorios:
./ Boletas electrónicas
,¡' Bateria externa
./ Maleta protectora
27
3.5.4. PERÚ
Se menciona en [3) que el sistema se compone por dos equipos que no tienen
conexión física entre ellos. Uno permite la identificación del votante a través de la
lectura del número de su DNI mediante un escáner, o digitando en la pantalla táctil Jos
números del DNI y a la vez comprobando que el votante pertenece a la mesa de
votación. Se activa una tarjeta que habilitará y pennitirá realizar un solo voto en el otro
equipo llamado cabina de votación. En la cabina de votación, el votante introduce la
taijeta en la ranura del lector de tarjetas, la aplicación de voto electrónico por la pantalla
le presenta la cédula de votación para que pueda ejecutar un solo voto. Finalmente, el
voto se imprime en papel térmico mostrando al votante su selección. En la Figura 3
presentada anteriormente se puede apreciar el sistema de la ONPE, y en la Figura 9 se
aprecia el diagrama de bloques de su funcionamiento.
o -'-
tnl:errup!Dres
MemorioUS8
p._"'rn •etdeetiol•
Con:rda<IO< ...
"""""""'usa
A
e ..,.,con
C<ln1Unlcoddn
~ ~ ,
8
ded"""
o 1'
"""""--
"V\1"
"V\1"
G
F
~
~
-
~RISC
3:. ;e
""',_ ...
"""""" G
ln!etruplOrde-o
,
~ H lEDdenviso
0<---~
LECTOR DE
TARJETAS TARJETA ft 6
INTEUGENTES INTEUGENTE
""""""""
·Elédtlcas
1
~~
Alanna
"""""'
Figura 9 Diagrama de bloques del controlador de la máquina de votación Perú-ONPE
28
CAPÍTULO IV
4.1.1. ANDROID
Android Beta
Android 1.0 Apple Pie
Android 1. 1 Banana Bread
Androicl1.5 Cupcake
Android 1.6 Donut
Android 2.0f2.1 Eclair
Android 2.2.x Froyo
Android 2.3.>< Gingerbread
Android 3.x Honeycomb
Android 4.0.x Ice Cream Sandwich
Android 4. 1 Jelly Sean.
Androíd 4.2 Jelly Sean (Gummy Bear)
Androíd 4 . 3 Jelly Sean
Android 4.4 KitKat
Android 5.0 Lollipop
29
Aplicaciones
30
4.1.2. TABLETA
Una tableta [20] es una computadora portátil de mayor tamaño que un teléfono
inteligente o una PDA, integrado en una pantalla táctil (sencilla o multitáctil) con la que
se interactúa primariamente con los dedos o una pluma stylus (pasiva o activa), sin
necesidad de teclado fisico ni ratón. Estos últimos se ven reemplazados por un teclado
virtual y, en determinados modelos, por una mini-trackball integrada en uno de los
bordes de la pantalla. En la Figura 12 se puede apreciar el disefio de una tableta de la
marca Samsung.
,,1
; ____., _...,.te:u,,..._
~ ~ _.,.,......,.,.1_
1 '
!' ·~------- ··C
1
:
u w~- '
i
\l S"'USIJNQ )
1
Ventajas
Las tabletas presentan ciertas ventajas sobre las computadoras, que ponen de
manifiesto su utilidad para la elaboración y cumplimiento de objetivos de este proyecto.
Éstas son:
31
,¡ Su facilidad de uso en ambientes no favorables a un teclado y un ratón, como en
símbolos.
,¡ La duración de la batería es mucho mayor que la de una computadora portátil.
4.1.3. JAVA
4.1.4. ECLIPSE
32
llamado Java Development Toolkit (JDT) y el compilador (ECJ) que se entrega como
parte de Eclipse (y que son usados también para desarrollar el mismo Eclipse).
33
4.3. APLICACIÓN DE VOTACIÓN
Esta parte del proyecto consiste en un sistema de voto electrónico diseñado para
la plataforma Android. Se trata de crear una aplicación (software) en el programa
Eclipse, que como se ha descrito anteriormente, permite la programación y compilación
usando la IDE de JAVA. Dicha aplicación es un programa prototipo que permite
realizar un proceso electoral como si lo hiciéramos en un ordenador, el usuario entrará a
la aplicación realizará el voto y este voto será almacenado en la memoria de la tableta
en una base de datos.
./ Permite el ingreso de los dígitos del DNI. A través de un teclado numérico para
mayor comodidad del votante .
./ Reconoce si el usuario pertenece a esa mesa de votación y avisar si es que el
usuario puede o no votar .
./ Presenta en pantalla la cédula de votación con la imagen y nombres de los
candidatos.
,¡ Ventana de confirmación de voto. Asegura al votante que su elección ha sido
registrada y que se ha almacenado como conteo en la base de datos .
./ Voto único. No permite que un usuario ingrese luego de haber realizado su
votación.
,¡ Almacena en memoria interna o externa (micro SD) una base de datos donde
llevará la cuenta de la cantidad de votos para cada candidato, y una base de datos
donde registrará las personas que realizaron el voto y las que no.
34
4.3.1. TABLETA COMO CÉDULA
Como parte del diseño de la aplicación se considera este equipo principal para el
sistema de votación electrónica. Una tableta que contará con sistema operativo Android
y que a través de la aplicación será capaz de:
TABLETA ANDROID
Alimentación
[220v a s;-l ----~--, ¡·P~,;,;I..; cl~-~~b~~- .. ~. ··-·~. - ---~
~
======!--t1 BateríaRecargable i,. - - - - - - - .... ~ , . . . " ' . . . . . . - - - - - - ... , ..
--~ 1 1
-
ONI
•
i 1
1
Cédula de 't
Hil ni ware 11e 1 Memoria interna '~
L l ..... _..,. __ ,... '...... Votación .,.. ,..,.."
... ________
rv ---
1 Sackup ·)
~controlador ~-----~----'
.1\-----
: '
r·-
(
J]-
-~ ~ ··~
Módulo
~ ~~ 1 .J -··
Módulo f Base de datos nombres de votantes J l
i Bluetooth r lb;~B~I~ue~to~o~t~h~ln~te~m;o;;~~~~B~a~se~de~d~a~to~s~pa~ra~g~u~ar~d~ar~s~e~le~cc~ió~n~~·J
Inalámbrico
La tableta puede ser de cualquier modelo o marca, pero tiene que cumplir ciertos
requerimientos que, según lo investigado y dados los objetivos planteados en este
proyecto, son los óptimos para lograr crear un sistema de votación electrónica confiable,
económico y fácil de transportar. Así mismo debe contar con ciertas características
básicas. Éstos son:
35
./ Bajo Costo. Una tableta Android básica cuesta entre 199 a 399 nuevos soles .
./ Cédula. La tecnología de la tableta permite diseñar la cédula de votación para ser
presentada en la pantalla.
./ Dispositivo ligero. De tamaño pequeño, poco peso y fácil de transportar .
./ Registro del proceso. A través de la programación es posible almacenar a los
votantes y sus votos en dos bases de datos diferentes en Android .
./ Energía suficiente. Para el proceso electoral que es mayor de 1O horas, la
alimentación es a 220V, adicionalmente en caso de emergencias la tableta cuenta
con batería de litio que puede durar entre 1Oa 14 horas .
./ Memoria interna. Donde se pueda almacenar la base de datos .
./ Base de datos ONPE. La tableta estará precargada con base de datos que
permitirá saber si el votante pertenece o no le mesa de votación.
36
INICIO
¿AplCadón
funcionando
Nó ?
¿S.
seleccionó
·confirm:u:ión
de voto?
No
Indicar usuario no
pertenece a mesa
¿ONI
corresponde
a mesa de
votación?
Indicar usuSriJ ya
realizó su Voto Si
¿Usuario
realizó voto
antes?
Si
elecciones No
:No
Si
37
4.3.4. DISEÑO DE LA APLICACIÓN
En la primera etapa (ver Figura 16) se presenta una interfaz (llamada actividad
en Android) donde se dará la opción al(los) miembro(s) de mesa para que active la
aplicación a través del ingreso de la mesa de votación y la clave de ingreso. A esta
ventana o interfaz se le llamará configuración de mesa (activity_main.xml en eclipse).
~ ProyectoTes1s i
N" de mesa:
~----~
Contraseña:
~--·
[ • lni~ar Sesión
En este punto, se debe tener en cuenta que se está trabajando con bases de datos
en SQLite [24], que es un sistema de gestión de bases de datos relacional compatible
38
con ACID (Atomicity, Consistency, Isolation and Durability), contenida en una
relativamente pequeña (-275 KB) biblioteca escrita en C. De esta manera se ha creado
una base de datos que contendría el identificador de las mesas de votación y su
respectiva contraseña (Ver Figura 17).
1 014050 0501
2 014051 0511
3 014052 0521
4 014053 0531
S 014054 0541
../ SQLiteOpenHelper. Crea, actualiza y conecta con una base de datos SQLite y
posee dos métodos, onCreate() para crear tablas si no existen y onUpgrade()
para actualizar tablas si es necesario .
../ Se crean los métodos para crear, verificar, y/o copiar una base de datos .
../ Se crea una base de datos en blanco en la dirección
"/data/data!com.hassan.proyectotesis/databases/", seguido se busca la base de
datos propiamente dicha que se encuentra dentro de la memoria (base de datos
que contendria las mesas y claves), para finalmente copiar esa base de datos a la
carpeta por defecto de la aplicación para poder trabajarla en conjunto con la app.
39
public class CopiarBaseHesas extends SQliteOpenHelper {
11 Constructor
public CopiarBaseMesas(Context context) {
super(contert, DB_NNIE~ null, 1);
this.myContext = contex~;
}
1/(J:.e¡¡_ Ji!lA base !~..~. li..•J;g.>.- Y-i!!'~,i!. m el .>.-iA"-. y l.'!- r..eJ:.:;¡;tiJJ~ J;.OlJ. JJ.'!!'átm. :t.~.llm>. P~·~ ha'" P.!', Po•J~.·
public void createDataBase() thraw5 IOException{
boolean dbExist e checkDataBase();
if(dbExist){
IIU base jjg ~~~.S~. ~M$)' no M>-~. JJ.aAIJ..
}else{
ti~ =· 1;< base AA ~.!R:i. w;jJ! ¡:¡:¡ U< J;MS,a !!!'Á !!.dg.<;tR ~. ~Jli1- AA ®.!'~ J!2.lk'!.QM
this.getReadableDatabase();
try {
copyOataBase( );
} catch (IOException e) {
throw new Error('"Error copiando Base de Datos");
}
Figura 18 Parte del código para manejar base de datos, método de creación
11~ :..:i, .l!!. base AA aw ~ ~ ~m WJUJ!.r.; ~.u. el ;U~ .Q'M w. ll.~. ;;;¡,
prívate boolean checkDataBase(){
SQLiteDatabase checkOB = null;
try{
String myPath = DB_PATH + DB_NAME;
checkDB = SQLiteDatabase.openOotabase(myPath, null~ SQLiteDatabase.OPEN_READONLY);
}catch(SQliteException e){
1/~:J, .u~~ i!!W.~. ~- B.O~ 19, oase AA mo~ no ~" :tlW~~
}
if(checkOB != null)(
checkOB.close();
}
return checkOB != null ? true ~alse;
}
Figura 19 Parte del código para manejar base de datos, verificación y copia
40
está disponible, cumple la función de permitir la habilitación de la mesa de votación.
Cada miembro de mesa debe conocer su número de mesa y contraseña e ingresarla en la
pantalla e iniciar sesión. Para ello se hace el programa principal de dicha actividad
llamado MainActivity.java, donde se hace el llamado a la base de datos con la sentencia
CopiarBaseMesas MDB = new CopiarBaseMesas(getApplicationContextO); y donde
se hace una lectura de cada fila y columna de dicha base a través de los comandos
queryO y openDatabaseO. En la Figura 20 se muestra parte del código para manejar las
filas y columnas de la base de datos y compararlas con el texto ingresado en Jos
TextFields de la actividad. Y en la Figura 21 se muestra el código base de Jos botones.
Figura 20 Parte del código que maneja la base en la actividad "configuración de mesa"
41
11~ PRU el !Jl>.t.§n 8
public void numeroOcho(View view){
i f (etl.isFocused() == true){
texto = etl.getText().toString() + "8";
etl.setText(texto);
}
íf ( et2. isFocused() == true){
texto = et2.getText(). toString() + "8";
et2.setText(texto);
}
}
~ ProyectoTes1s ;
:10r;lir-;l
lL.JJLlJ;~
Ingrese DNI
QGG
[2J0GJ
¡ ln~cie Votación J [~]l. SOBRAR. J
42
.1' Al momento de seleccionar en Inicie Votación debe conectarse a la base de
datos y verificar que el DNI pertenece a la mesa de votación configurada y que
el DNI no ha votado antes .
.1' Finalmente enviar a la siguiente actividad donde se presentará la cédula de
votación .
.1' También debe poseer un menú de configuración para que el encargado o
miembro de mesa pueda cerrar la sesión de votación en cualquier momento, en
caso de alguna emergencia.
43
Similar a la primera parte, el archivo .java creado se llama CopiarBase Votantes
que se ejecuta de la misma manera que el archivo del caso anterior, es decir cumple con
el algoritmo:
../ SQLiteOpenHelper. Crea, actualiza y conecta con una base de datos SQLite .
../ Se crean los métodos para crear, verificar, y/o copiar una base de datos .
../ Se crea una base de datos en blanco en la dirección
"/data!data/com.hassan.proyectotesis/databases/", seguido se busca la base de
datos propiamente dicha que se encuentra dentro de la memoria (base de datos
que contendría las mesas y claves), para finalmente copiar esa base de datos a la
carpeta por defecto de la aplicación para poder trabajarla en conjunto con la app.
11 Constructor
public CopiarBaseVotan~es(Context context) {
super(context, DB_NAf~E~ null, 1);
t'his.myContext = context;
}
1/~J!. !1M. base 9-« Jisi;JJ.;;. lt..osi.s g¡¡, el ~1:JW!il. y l..~ ~~~ ¡;y..u JJ-'l$'ZJ:S. :Us.b.'!.m ll..«
:public void createOataBase() t:hrows IOException{
boolean dbExist = checkOataBase();
H(dbExist){
1/J,~ base ¡k ~,.¡¡,t_q;;, m.>l~- y no )¡;¡_¡;~. n.a.!iE..
}else{
1/fi,<;, ¡;¡:._~ 1;¡. base ~ Jisi;JJ.;;. ~ g¡¡, 1;¡. OOJ!. J!!U: lls>.fs.tl9. !l.e.l ~ ll..o;. ll$¡
this.getReadableDatabase()~
try {
copyOataBase();
} <atch (IOException e) {
throw new Error(nError copiando Base de Datos");
}
}
}
44
Con respecto a la parte del código de la actividad ingreso de DNI se aprecia en
la Figura 22 que contiene 11 elementos button para el teclado de ingreso del DNI del
votante. Una vez que la base de datos original está disponible, cumple la función de
verificar si el votante pertenece a la mesa de votación abierta en sesión y si el votante ha
realizado antes el escrutinio o no. Para ello se hace el programa principal de dicha
actividad llamado FirstActivity.java, donde se hace el llamado a la base de datos con la
sentencia CopiarBaseVotantes MDB = new
CopiarBaseVotantes(getApplicationContext()); y donde se hace una lectura de cada
fila y columna de dicha base a través de los comandos query() y openDatabase(). En la
Figura 25 se muestra parte del código para manejar las filas y columnas de la base de
datos y compararlas con el texto ingresado en el TextField de la actividad.
Figura 25 Parte del código que maneja la base en la actividad "ingreso de DNI"
De la Figura 25 se puede observar que en esta parte del proyecto se trabaja con
dos bases de datos. Una es la ya mencionada votantes.db que es importada y abierta con
el comando myBaseVotantes para comprobar los datos del votante y si su DNI
pertenece a la mesa de votación configurada al comienzo. La otra es una base de datos
que llamaré votacion.db que es importada y trabajada por el comando myBaseVotacion
y en donde se va a registrar solamente el DNI de la persona votante para la
45
comprobación y constancia del sufragio, aquí se comprobará si el DNI ya había
realizado antes el sufragio, y de no ser así, se registrará en dicha base de datos; y si el
DNI no pertenece a dicha mesa de votación se avisará por pantalla (Ver Figura 26).
111 ProyectoTesrs S
Ingrese DNI
--
]11ONl no pertenece a esta mesa de V-otac1on
[ lni~~Votación
46
BIENVENIDO AL SISTEMA DE VOTACION
1 2
Ingrese DNI
GJGJGJ
GJGJGJ
Gl 1
¡----"·--- -··----
'
Inicie Votación BORRAR
h
·! Cambiar Mesa
:--------~U'
Ingrese conlraseña de mesa 014050 o
Conf11mar 1 i
Gl. J
BORRAR
Una vez que se haya ingresado correctamente el DN1 y se haya comprobado que
pertenece a la mesa de votación establecida y se haya comprobado que el votante no ha
realizado el sufragio anteriormente, se presenta en pantalla la tercera actividad o interfaz
que será la segunda de la aplicación de voto propiamente dicha. Esta actividad llamada
activity_second.xml y a la cual le diremos selección de candidato, tendrá un esquema
muy parecido a las cédulas de votación de papel en donde se presentará el nombre y las
fotos de los candidatos y donde el votante podrá seleccionar y hacer su votación con
47
solo tocar en la pantalla sobre el nombre o foto. Aparecerá entonces una ventana de
confirmación para que el elector confirme su votación. En este paso ya no se podrá
regresar y el elector debe hacer su votación. En la Figura 29 y 30 se muestra la interfaz
de la cédula de votación.
~ ProyectoTesis
_jlli\11 1 ~[
Candidato 1 Candidato 5
Candidato 2
]~
.... . "
[![][ Candidato 6
Candidato 3
]~ ~[ ;.¡_
Candidato 7
Candidato 4
l[!_J ~¡ VOTO BLANCO
Conftrmación
48
Una vez seleccionada la confmnación la aplicación muestra una ventana de
confirmación y regresará a la pantalla de ingreso de DNI (Ver Figura 31). La aplicación
también presenta la opción de voto en blanco como se aprecia en la Figura 29.
Votación realizada
49
1/e&t~.taJj...;.f!d~n ~~~ l!.~fl_.$._lc!c5Jl
Cursor e • myBaseConteo.query(·m~sa_• + ~esaPertenece, new String[] {•id•, Mcandidato•, "votos"}, null, null
C.IIIOVeToFirst();
While (c.isAfterlast() •• false) {
myid • c.getString(e).toString();
conteo • c.getstring(2).toString();
if (~id.equals(representacion)) {
int contador e Integer.parsernt(conteo);
contador • contador + 1;
String valorConteo • Integer.toString(contador);
ContentValues voto • new ContentValues();
voto.put("id", ~id);
voto.put("votos•, valorConteo);
myBase<onteo.update("mesa_· + ~saPertenece, voto, "id•" + ~id, null);
myBaseConteo.close();
break;
~he{
c.a:oveToHext();
)
)
c.close();
Figura 32 Parte del código para trabajar base de datos para llevar conteo de escrutinio
Cada vez que se realiza un voto, la aplicación actualiza la base de datos con el
comando myBaseConteo.updateO en donde se añade al valor actual la suma de valor
uno y se reescribe en la columna llamada votos. En la Figura 33 se muestra el resultado
almacenado tras cinco ejemplos de votaciones en una mesa de votación, el cual
corresponde a la base de datos conteo.db.
rabie:~ Q,¡
'id candidato votos
1 1 candirlato 1 o
2 2 candirlato 2 o
3 3 candirlato 3 o
4 4 candidato 4 o
S S candirlato S 1
6 6 candirlato 6 o
7 7 candirlato 7 o
8 8 candidato 2 S
50
4.4. APLICACIÓN DE ENVÍO DE DATOS
iNICIO
Imprimir
·auetooth no
No
51
4.4.2. ACTIVIDAD DE LA APLICACIÓN
[i1 ProyectOTCSIS
MeS.!!
{Eñviar ConteoJ
!Enviar ONis}
En la Figura 35 se puede observar que la interfaz del envio de datos posee tres
buttons, el primero llamado Conectar para emparejar el Bluetooth de la tableta con el
hardware de microcontrolador, y los otros dos para la transmisión de los datos en sí. El
segundo llamado Enviar Conteo enviará los resultados del escrutinio con la cantidad de
votos perteneciente a cada candidato, mientras el tercero llamado Enviar DNis será
para que el encargado envíe los DNis de las personas que no realizaron su voto durante
el período establecido. Es destacable que este proceso será posible solamente para cada
mesa de votación respectivamente.
Cuando la actividad inicia, se hace la carga de dos bases de datos a través de los
llamados baseVotosO y baseDniO. El primero abre la base de datos de los resultados
del escrutinio para almacenar en variables los resultados. El segundo abre la base de
datos donde se almacenan los DNis de las personas que no votaron para su posterior
envio.
52
En la Figura 36 se puede apreciar parte del código de conexión Bluetooth
diseñada para el envío de datos. En esta parte, se han creado tres métodos llamados
conectarQ, envioUnoO y envioDosO, los cuales responden al presionar cada button
mencionado en el párrafo anterior, respectivamente. El primero, conectarO responde al
llamado del button Conectar en donde se obtiene el dispositivo bluetooth con el código
B/uetootllAdapter.getDefau/tAdapterO y BluetootllDevice, y se crea la variable
ntBTsocket como el hilo de conexión entre la aplicación y el dispositivo HC-06.
Cuando estén conectados, estamos listos para enviar los datos. Con presionar el button
Enviar Conteo se llama al método envioUnoO que enviará como símbolo de
identificación el "$" seguido de un "O" y luego los dígitos de la mesa de votación
correspondiente (el "O" será para que el microcontrolador sepa que subrutina seguir, se
explicará en el siguiente capítulo). Después enviará el identificador "&" seguido de Jos
resultados del conteo por cada candidato en un formato de 3 dígitos. Con presionar el
button Enviar DN/s se llama al método envioDosO que enviará como identificador el
"$" seguido con un "1" y los dígitos de la mesa de votación correspondiente (el "1" será
para que el microcontrolador sepa que subrutina seguir, se explicará en el siguiente
capítulo). Después hará un barrido por cada fila de la base de datos novoto.db (donde se
almacenan los DNis de los que no hayan votado) para enviar la cadena "%" + "4
primeros dígitos del DNI" + "4 segundos dígitos del DNI" + "valor O o 1" a través de
bluetooth. Cuando llegue a la última fila enviará como último valor el "O" con lo que el
microcontrolador sabrá que será el último dato a recibir y escribir en el datalogger.
53
11 ~Jl!:, J;;!?.J!),.UIJJJ.s, $1,\; ¡;_,._cLJ!.):~J)_;\,9.. 1!9$. BT
private void envioUno(){
try{
ntOos ·= ·new OataOutputStream( ntBTsocket .. getout:putS"trealll()};
Bundle bundle = get:Int.ent() .. get:Extras();
String mesaPertenece -= bundle .. get:String("mesaPertenece••);
St:ring mesl = mesaPertenece .. substring(e# 1);
String mes2 = mesaPertenece .. substring(l# 2};
String rr.es3 : mesaPertenece.substring(2~ 3);
'S'tring mes4 = mesaPertenece .. substring(3:.o 4.);
String mesS = mesaPert.enece.substring(4J 5);
String mes6 = mesaPertenece .. substring(5 7 6);
JI~ valor-~~ "0"
ntDos .write(new String(".$") .getBytes());
ntDos.write(new String("0") .getBytes() );
nt:Oos.writ:e(mesl.get:Bytes());
nt:Oos .\ff"Íte(mes2 .get:Bytes());
nt:Dos. l'frite(mes3.get:Bytes ());
ntOos.writ:e(mes4.getBytes());
ntDos .wri te(mesS.getBytes());
nt:Oos.write(rr.es6~getBytes(,));
for(int q=0¡q<590080000¡q++){
//;¡;j.~e~ $1,\; .<;.~~
}
ll);máll!:, ~
ntDos.write(new String('"&") .getBytes() );
ntOos.write(contl.getBytes());
ntDos.write(cont2.getBytes());
ntOos.write(cont3.getBytes()};
ntOos.write(cont4~getBytes());
ntDos.write(contS~getBytes()};
ntOos.write(cont6 .. getBytes());
ntDos .wri te( cont7 .getBytes()) ¡
ntDos.write(cont8.getBytes());
} catch (IOException ice) {
11 Error ¡;¡¡. M, ¡;_s~,¡;¡¡.
}
}
Figura 36b Parte del código para enviar resultados de escrutinio a HC-06
Figura 36c Parte del código para enviar DNis que no votaron a HC-06
54
4.5. RESUMEN
../ Se ha desarrollado una aplicación en Java para Android que presenta tres
interfaces o actividades. En la primera interfaz se muestra una pantalla para
ingresar el número de mesa de votación y una clave de ingreso que solo debe ser
conocida por el encargado y/o el(los) miembro(s) de mesa. Cuando se haya
comprobado el número de mesa y su contraseña en la base de datos, se pasará a
la segunda interfaz. En ella, se presenta un diseño donde el votante podrá
ingresar su DNI a través de un teclado numérico y se ha elaborado un menú de
opciones para que el miembro de mesa pueda, con la respectiva contraseña,
cambiar de mesa de votación, salir de la aplicación, y enviar los datos del
escrutinio por Bluetooth. Al mismo tiempo en esta segunda interfaz se
comprobará que el DNI del elector no esté registrado como si ya hubiese
realizado su voto y se comprobará en la respectiva base de datos que tal DNI
pertenezca a la mesa de votación en funcionamiento. Finalmente, una vez hechas
las comprobaciones se pasará a una tercera actividad donde el elector podrá ver
la cédula de votación por la pantalla y seleccionar al candidato de su preferencia.
La selección quedará registrada en tma base de datos donde se guarda el conteo
de votos por candidato. El DNI se registra en otra base de datos para que quede
constancia de que el elector realizó la votación .
../ También se ha desarrollado como parte de la aplicación una interfaz para que a
través del módulo Bluetooth de cualquier dispositivo Android se pueda enviar
los resultados del escrutinio por candidato para su futuro procesado junto a los
resultados de otras mesas de votación. Se enviarán tanto los resultados de la
votación como la base de datos de los DNis que no hayan efectuado la votación
en el tiempo establecido.
55
CAPÍTULO V
DISEÑO DE LA APLICACIÓN-HARDWARE
56
5.1.2. BLUETOOTH
,/ Robustez
,/ Bajo costo
,/ Necesidad de poca potencia
,/ Baja complejidad
,/ Es un estándar global
.&~ \ /,.
.1 __ _ Red de telefonia
Ratón
57
5.1.3. DATALOGGER
58
En la Figura 39 se puede apreciar el diagrama de bloques del funcionamiento del diseño
propuesto.
HARDWARE
ll. Módulo
~':'!.~~-
L~em~aU~
rv L~~~J
1
MOdulo datalogger
'---------..........!
!
·¡ PIC16FS77a)
~~MuestraAct~des ~ 1
L.----·--·
5.3. ALGORITMO
../ El hardware estará apagado hasta que se vaya a hacer el envío de la información,
es decir, al finalizar el escrutinio.
,/ Una vez encendido, habrá un interruptor de selección, cuando el interruptor esté
en un estado OFF el microcontrolador no activará el funcionamiento del módulo
Bluetooth ni del Datalogger. Cuando el interruptor esté en modo ON, el
microcontrolador estará atento a la llegada de datos por Bluetooth.
,/ En el LCD se muestra el estado de los procesos que se realizan en el hardware .
../ El PIC está constantemente esperando los identificadores que fueron
mencionados en el capítulo anterior, es decir "$"y los otros identificadores para
saber cuáles son los datos va a recibir.
,/ Los datos llegan por Bluetooth al PIC y son enviados por él hacia el Datalogger
en donde se almacenan los resultados en un archivo .txt dentro de una carpeta
con el nombre de la mesa de votación
../ Finaliza el proceso de envío de datos y resultados.
59
5.4. DIAGRAMA DE FLUJO
INICIO
No
LCO "Biuetooth
·en espera"
5.5. DISEÑO
60
conectado al puerto D del PIC con uso de 4 pines de datos, el datalogger (que posee 8
pines, 4 de conexión serie) se conecta al puerto C y finalmente el módulo Bluetooth de
4 pines (2 de conexión serie) se conecta al puerto B. El interruptor para selección del
modo recepción de datos se conecta en un pin del puerto D. En la Figura 42 se presenta
las conexiones del PIC con los dispositivos electrónicos.
40-Pin PDIP
mmrv,.,_~ 1 \_.1 40 ~- RB7/PGO
RADIANO -~ 2 39 ~- R8&'PGC
~-=
RA1/AN1-( 3 38
R/{]J~-[
• 37
--
RAJIAN:lM!EF+ - ~ 5 36 ~- RBJIPGM
RA41ll10<J/C10UT - [ 6 35 ~-RB2
RAS/~- 7
....~
34 -RB1
-- -
RE!llml~AN5 - 8 33
RE11W!!/AN6- 1!! -voo
R~AN1- 10
11
9
...11;
< 32
31
30
-vss
- RD7/PSP7
Vss- 12 u. 29 - RD61PSP6
OSC11CLKJ- 13 "'
!,!
28
~- R04/PSP4
RD5IPSP5
0SC21CLKO- 14 o. 27 -
RCOIT10SO'T100 - 15 26 ~ - RC7/RXIDT
RC1/T1=<:1'2 --:~ 16
~=~
25
RC2/CCP1- 17 24
RC3ISCKISCI. - ~ 18 23 ~ - RC4/SOIISDA
RDO'PSPO - ~ 19 22 ~- RDJ/PSP3
RD11PSP1 -e 20 21 J - R02IPSP2
U1
.,~¡;;;;,-----¡
va:
"'
••
c..,.-.,;~--o=
ES~
EST
R1
·~
R2 ""'""""'
"""""" '
·~
o_CTS
"""""
"""""""' """""""' '
"-"'
RC>SCK.«1
RO.<CP> """'""'
RE11~
"-"'
l
RC1/T1~
O_RTS RWTl<>,<YNOO ""'""""'
""'~
...,_..
RMITCCIQ.CtOUT
RA2l_1.mJriR'iF~
RA11Nfl
.,.
P1
""'
RXST """""
CJ 0
....
ERROO
61
5.5.1. MÓDULO BLUETOOTH
Para este proyecto se ha optado por usar el módulo Bluetooth Slave HC-06 el
cual se muestra en la Figura 43. Con dimensiones tan pequeñas [30] como un conector
USB, el módulo Bluetooth HC-06 es una de las piezas de mercado más económicas que
puedas encontrar dedicadas a este tipo de conectividad. La mayoria de los aficionados a
los enlaces inalámbricos de datos, encuentran en este pequeño dispositivo todo lo
necesario para resolver sus conexiones "wireless" y a un costo que no alcanza a la
quinta parte de lo que hay que pagar por otros dispositivos de las mismas caracteristicas.
Como modo de fábrica, este dispositivo viene configurado para trabajar como
esclavo, a 9600 baudios, sin paridad, 8 bits, 1 bit de parada y pincode por defecto
"1234".
62
5.5.2. MÓDULO DATALOGGER
63
5.5.3. CÓDIGO DEL MICROCONTROLADOR
Como primer aspecto, los datos provenientes de la aplicación serán los 6 dígitos
de la mesa de votación establecida en el proceso electoral, y los resultados del escrutinio
por cada candidato (en este proyecto como prototipo, 8 postulantes) donde cada
resultado tiene 3 dígitos y es recibido por el HC-06 almacenándolo en una variable tipo
Word para luego em~arlo al datalogger. En la Figura 45 se puede apreciar los comandos
principales para la recepción de datos vía Bluetooth. El microcontrolador ha sido
programado en PicBasic Pro con el entorno Microcode Studio.
64
Como se estableció en el apartado 4.4.2 la comunicación entre la aplicación
Android y el microcontrolador PIC se hará a través del módulo Bluetooth HC-06 el cual
esperará el símbolo"$" con el dígito ESPERA y con los dígitos de la mesa de votación.
Dependíendo del valor de la variable ESPERA que puede ser 1 o O se procederá a
llamar a la correspondiente subrutina. Si ESPERA es O, el PIC espera recibir el
identificador"&" seguido de los resultados de conteo de votos por candidato en formato
de tres dígitos, muestra el proceso en el LCD y manda a la subrutina
GRABAR_VOTOS. Si ESPERA es 1, el PIC indica en el LCD que estará escribiendo
los DNis que no realizaron votación y por ende, manda a la subrutina GRABAR_DNI.
Se destaca que la conexión entre el módulo Bluetooth y el PIC es del tipo UART
o serial asíncrono, y se trabaja en picbasic pro con el comando SERIN2 y SEROUT2 a
9600 baudios.
65
• Comando OPW. Crea un archivo con el nombre que se indique después de él y
lo abre para escritura.
• Comando WRF. Escribe dígitos y/o número en el archivo de texto creado por el
comando OPW.
• Comando CLF. Cierra el archivo. Finalización de escritura.
66
'----------------------------[Grabando Datalogger)-----------------------------
GRABAR VOTOS:
'Comandos cortos datalogger
PAUSE 200
SEROUT2 TX\CTS, Baud, [aECS", 13)
GOSUB Get_Serial_B~es
'Regresa al directorio Raiz
PAUSE 200
SEROOT2 TX\CTS, Baud, {"CD . .• ' 13]
GOSUB Gec_Ser1al_Bytes
'Crear folder
PAUSE 200
SEROUT2 TX\CTS, Baud, {'"MKD ", DECl MESl, DECl MES2, DECl MES3, DECl MES4,
DECl MESS, DECl MES6, 13]
GOSUB Ge~_Serial_Bytes
'Entrar al folder
PAUSE 200
SEROUT2 TX\CTS, Baud, {"CO ", DECl MESl, DECl MES2, DECl MES3, DEC1 MES4,
DECl MESS, DECl MESE, 13]
GOSUB ·Get_Serial_B~es
'Si el archivo existe la borra para actualizar
PAUSE 200
SEROUT2 TX\CTS, Baud, ["DLF VOTOS.TXT", 13)
GOSUB Get_Serial_Bytes
'Crear archivo . txt
PAUSE 200
SEROUT2 TX\CTS 1 Baud, {'"OPW VOTOS.TXT", 13)
GOSUB Get_Serial_Byees
'Escribir en el archivo
PAUSE 200
SEROUT2 TX\CTS, Baud, ("WRF .. , $00, $00 1 $00., $26, 13, DEC3 RESl, 13, 10,
DEC3 RES2, 13, 10, DEC3 RES3, 13, 10, DEC3 RES4 1 13, 10, DEC3 RESS, 13, 10,
DEC3 RES6, 13, 10, DBC3 RES7,. 13, 10., DEC3 RES8, 13)
GOSUB Gec_Seríal_Bytes
'Cierra el archivo
PAUSE 200
SEROUT2 TX\CTS,, Baud, ("CLF VOTOS.TXT", 13)
GOSUB Get_Serial_Byt;ee
'Regresa al directorio Raiz
PAUSE 200
SEROUT2 TX\CTS, Baud, ("CD . .• ' 13)
GOSUB Ge~_Serial_Bytee
'Termina Subrutina
RETURN
Para el caso en que el PIC reciba los datos de los DNis que no realizaron
votación, se llama a la subrutina GRABAR_DNI. Aquí, el PIC estará atento a dos
situaciones, una es que reciba el identificador "%" seguido de los 4 primeros dígitos y
los 4 segundos dígitos del primer DNI que no votó, la otra es que reciba la variable
67
CONFIRMA que será 1 si es que la aplicación tiene que seguir enviando DNis o será O
si es que ya no habrá que esperar a que lleguen más datos. Esto es así porque pueden
haber pocas o muchas personas que no hayan realizado votación y, para poder grabar
todas a través del datalogger, se ha preferido enviar tmo a uno los DNis
correspondientes a cada persona. De esta forma la subrutina se mantendrá mientras haya
datos por recibir y actualizará automáticamente el archivo de texto NOVOTOS. En la
Figura 48 se puede ver parte del código para escribir los datos de los DNis.
GRABAR DNI :
'Comandos cortos datalogger
PAUSE 200
SEROUT2 TX\CTS, Baud, (ftECS", 13}
GOSUB Get_Serial~Bytes
'Regresa al directorio Raiz
PAUSE 200
SEROUT2 TX\CTS, Baud, ["CD .. .
' 13]
GOSUB Get_Serial_Bytes
'Crear folder
PAUSE 200
SEROUT2 TX\CTS, Baud, ["MRD ", DECl MESl, DEC1 MES2, DECl MES3, DECl MES'!i,
DEC1 MESS, DECl MES6, 13J
GOSUB Get_Serial_B~~es
'Entrar al folder
PAUSE 200
SEROUT2 TX\CTS, Baud, ["'CD •, DEC1 MESl, DEC1 MES2, DEC1 HES3, DECl MES4,
DECl MES5, DECl MES6, 13]
OOSUB Get_Serial_Bytes
'Crear archivo . t.xt
PAUSE 200
SEROUT2 TX\CTS, Baud, ["OPW NOVOTOS.TXI" , 13)
GOSUB Get_Serial_Byces
'Esperamos recibir datos
PAUSE 200
SERIN2 BT_RX, Baud, 10000, GRABAR_DNI, [WAIT(~%~), DEC4 DNil, DEC4 DNI2,
DECl COUFIRMA}
PAUSE 200
SEROUT2 TX\CTS, Baud, [•WRF •, $00, $00, $00, $0A, 13, DEC4 DNil, DEC4 DNI2,
13, 10, 13]
GOSUB Gec_Serial_Byces
'Cierra e~ archivo
PAUSE 200
SEROUT2 IX\CTS., Baud, f"CLF NOVOTOS.TXT .. , 13}
OOSUB Gee_Se::ial_B~es
'Regresa al directorio Rsiz
PAUSE 200
SEROUT2 TIC\CTS, Baud, ['"CD . .• ' 13]
GOSUB Gee_Serial_B~es
PAUSE 200
'Condiciones
IF {CONFIRMA = 1) TBEN
GOSUB GRABAR_DNI
ENDIF
IF (CONFIRMA = 0) TREN
GOTO MESAl
ENDIF
68
De esta manera se graban los datos del conteo de votos total por mesa de los
candidatos así como los DNis de cada persona que no haya participado en la elección.
Pues se ha considerado que estos datos son los de mayor requerimiento y prisa en un
proceso electoral. Se agiliza el proceso de conteo ya que es realizado por la misma
aplicación y se tiene también un archivo de texto que incluye a las personas que no
votaron para la posterior sanción por parte del organismo regulador. Estos archivos
podrían ser luego leídos por alguna aplicación de computador.
5.6. RESUMEN
69
CAPÍTULO VI
PROTOTIPO Y SU FUNCIONAMIENTO
Después de haber presentado el disefio tanto del software como del hardware en
los capítulos IV y V, se presentará en éste la implementación de un prototipo real. En
este contexto, se ha exportado la aplicación Android desde Eclipse en un archivo .apk
para instalarlo en una tableta (el archivo pesa 258 KB), se ha construido el hardware
comandado por el microcontrolador PIC con las conexiones mostradas anteriormente al
módulo Bluetooth y al módulo Datalogger. También se decidió usar como tableta de
prueba la Samsung Tab 2 (7.0) que trae Android versión 4.0, pantalla de 7 pulgadas y
1GB de RAM.
6.1. VOTACIÓN
70
Una vez el programa hizo la corroboración en la base de datos de la mesa y la
contraseña, muestra la segunda actividad llamada ingreso de DNI. La aplicación realiza
dos comprobaciones, si el DNl que se ingresa pertenece a la mesa de votación en
funcionamiento y si dicho DNI no ha realizado votación anteriormente. Luego de las
comprobaciones correspondientes se muestra la tercera actividad llamada selección de
candidato. En las Figura 50 y 51 se aprecian las actividades.
f:~RESCDNJ
07.00001
~
Chf..'DIDJ\TO l 1":1. CM.J!"Jfl:>l.r.T06
.,'....... 1". .
UNDIMT05
e.. ~-
..J'
CAJ.f>rr.>"TO 7
CANDiDATO~
-1"1
.1.
VOTO B!.lii'!CO
71
En la cédula de votación el votante puede presionar el nombre de su candidato
de preferencia y se confirmará su votación. Además, como se detalló en los capítulos de
diseño la aplicación debe ser capaz de reconocer si el votante ya había realizado su voto.
En la Figura 52 se muestra la pantalla de confirmación de votación y en la Figura 53 la
pantalla que se muestra cuando una persona que ya realizó su voto intenta hacerlo
nuevamente.
72
6.2. ENVÍO DE LOS DA TOS
!"'EVo. 01'-1050
ENVIhR DNlS
73
Se puede apreciar en la Figura 54 que para este ejemplo se enviaron los datos de
la supuesta mesa 014050 y se muestra la pantalla de conexión Bluetooth. En la Figura
55 se observa el inicio del hardware en donde el PIC inicializa y sincroniza al módulo
datalogger. Una vez listo el hardware (Ver Figura 56), podemos conectar la tableta con
él presionando el botón Conectar (Ver Figura 54).
74
Figura 58 Se reciben los datos de los DNls que no realizaron votación
Compartir Vlfta
~~Este equipo
ti 0Heargas
1} Oocummtos
¡¡Escritorio
[J:~ 1mig....,
WMüskl
[1 Vídeos
S. Disco local (0)
ói DATA(!}.)
....., TESIS (f:)
111 014050
75
• 'lJt~i,. l 014050
*f_,.j¡os
~S
•
cmu'SI"
baiono
iiS!tio1~n
-·
~ NOVOTOS.TXT
LJ VOTOS.TXT
ropo
Docvne!lto41110'-
~oóctrx...
te..... ~
1~
11(1
11-
J VOTOS.TXT; Bloc de notas
At~ fdoo6<> fo-.o Vfl Ayudl
1ool
..........,
~bteec¡l.ipo
ij.Onca<9f1
. 091 fi!OVOTOS.TXT; BlOc de notas - o:-::::
ill-
CM EwWio
""'gtnft
¡¡\::~
'001
02011982
02011006
..
0201100!
i»""*'
.a.- looo 021111010 ,,
. . Dncolocd(C:)
o DATA (Do.)
-
,.,,_lESIS(M)
,.
,,
t
•
,¡ •
.~---r:'~_-
6.3. COSTOS
76
CAPÍTULO VII
CONCLUSIONES
77
de papel, bolígrafos, tinta, etc. Cada paso queda registrado en una base de datos
que solo puede ser manipulada por medios informáticos externos como
computadoras.
v' Finalmente, al ser una aplicación para Android implementada para su uso en
tableta y al tener un hardware controlado por microcontrolador, en vez de tener
máquinas basadas en computadoras, se logra reducir notablemente las
dimensiones de los dispositivos e instrmnentos electrónicos para realizar las
elecciones. Esto además provee mayor facilidad para el transporte de los mismos
haciendo que el sistema de votación pueda llegar a cualquier lugar del país.
78
CAPÍTULO VIII
RECOMENDACIONES
79
REFERENCIAS
80
[15] Smartmatic. Página web. Disponible en: www.smartmatic.com
[16] Oficina Nacional de Procesos Electorales (ONPE). Observatorio del voto-e en
Latinoamérica. Publicado en Lima, 2011.
[17] Smartmatic. Elecciones Bélgica 2012 - 2014. Página web. Disponible en:
http://www.smartmatic.com/es/experiencia/articulo/elecciones-belgica-2012-
2014/
[18] Smartmatic. Getting to know the next generation of voting technology: the
Smartmatic Electronic Voting Machines. Página web. Disponible en:
http://www.smartmatic.info/Sistema/saes-3370/
[19] Wikipedia. Android. Página web. Disponible en:
http:/1es. wikipedia. org/wiki/Androi d
[20] Wikipedia. Tableta (computadora). Página web. Disponible en:
http://es.wikipedia.org/wiki/Tableta (computadora)
[21] Java. ¿Qué es la tecnología Java y para qué la necesito? Página web.
Disponible en: http://www.java.com/es/down1oad/faq/whatis java.xml
[22] Eclipse. What is Eclipse? Página web. Disponible en:
http://help.eclipse.org/indigo/index.jsp?topic=/org.eclipse.platform.doc.isv/gui
de/int eclipse.htm
[23] Java Ya. Pasos para crear un programa en Eclipse. Página web. Disponible
en: http://www.javaya.com.ar/detalleconcepto.php?codigo=76&inicio=
[24] SQLite. Welcome to SQLite. Página web. Disponible en:
https://www.sglite.org/
[25] Reyes, Carlos A Microcontroladores PIC 16F62X 16F8JX 16F87X
Programación en Basic. Tercera Edición. Volumen l. Publicado en Quito,
2008.
[26] Monografías. Control de un invernadero. Página web. Disponible en:
htto://www.monografias.com/trabajos81/control-invernadero/control-
invernadero2.shtml
[27] Gálvez Navarro, Jaime. Control de un módulo bluetooth mediante
microcontrolador. Trabajo fin de carrera. Presentado en Barcelona, 2005.
[28] Wikipedia. Registrador de datos. Página web. Disponible en:
http://es.wikipedia.org/wiki/Registrador de datos
[29] Microchip. PICI6F87xA Data Sheet 28/40/44-Pin Enhanced Flash
Microcontrollers. Publicado en Estados Unidos, 2003.
81
[30] Neoteo. Módulo Bluetooth HC-06 (Android). Página web. Disponible en:
http://www.neoteo.com/modulo-bluetooth-hc-06-android/
[31] Parallax. Memory Stick Datalogger. Página web. Disponible en: Parallax:
httos://www.parallax.com/product/27937
82
ANEXOS
Specifications
Symbol Quantlty Mlntmum Typlcal Maxfmum Unlts
Vdd Supply Voltage 4.75 5.0 5.25 V
- Storage Temperature -65° - 150° e
- Operating Temperature oo - 70° e
Jvdd Supply CUrrent (Running) - 25 - mA
Ivdd Supply eurrent (Standby) 1 2 2 mA
~ ~
QJ
b2J
LEO Definitions
Operation LEO Behavior
PowerOn Green LEO and Red LEO flosh
oltemotely for 2 seconds Repeated
until monitor connects
USB Disk lnilialization Green LEO on, Red LEO off
USB Disk Ready Green LEO off, Red LEO on
USB Disk Removed Green LEO off, Red LEO off
Commnnds From tt.1onitor Port to USB Otsk Green LEO off. Red LEO flashes
Commands From Monitor Port with USB Disk Removed Graen lEO off, Red LEO off
83
PARALLAX MEMORY STICK DATALOGGER- COMANDOS
~ ~ 'i!S
land 1sets
'SCS'<cr> $10,$00 to !he shortened com~ This will retum the prompt '>',$00
1mand set to indicate thnt the device is in
1 '"'' mode.
$11,$00 Switches lo !he erlended com- This vlill retum the pmmpt
mand se! '0:\>' ,SOD to indicate that the
device is in extended command
setmode.
'E'<oc> 'E'<a-> E<Oho This wlll cetum 'E',$00 fo' syn-
> PU'POSes
'e'<oc> 'e'<cr> 1Emo This will retum ' , ,,,
> PU'POSes
; to • lf disk ls onllne
<e<> $00 Check if online This will retum the appropriate
prompt or 'no disK message for
tMcurrent• 1 set.
Response lo Check if online for Extended Command Mode tf no valid disk is found 'No msk',$00
tf o valid disk is found
Check if online for Short Command Mode tf no volid disk is found 'N0',$00
tf a valid disk is found '>',$00
ul~-w $01,$00 Llsts the curren! directory A lisl of file nemes ond directory
names are retumed. Each entry is
terminated by $00. A directory en-
by has <sp>'OIR' aner the name
and befare the $00.
1
-- <name><cr> $01,$20, <name> ,$00 Lists the file name followed by the
siZe. Use thiS betore doing a file
~ud to know how many bytes to
$00,<name><sp><size in hex(4
bytes) LSB first> $00
expect
·n. n'< n> <name><cr> $05,$20, <name>, $00 Oelete directory Delates the directory <name>
from the current directory.
<name><cr> $06,$20, <na me> ,$00 Make directory Creates a new directory
<name> in the current directory.
'RDF'<sp> <siZe in hex(4 bytes $0B,$20,size in hex(4 bytes), Reads the data of <size in hax(4 This wi1! send back the requested
MSB first) ><cr> $00 bytes)> from lhe curren! open file. amount of dato lo the monitor.
-- <name><cr> $07,$20. <name> $00 Oelete file <name> This will delato the filo from the
curren! directory and froe up the
FAT sectors.
<Size in heX{4 bytes $08,$20,size in hox(4 bytes), Writes the data of <size in hex(4 <prompt>$00
><cr> <data bytes of $00 $dato,SOD bytes)> lo the end ofthe current
open file.
' <name><cr> $09,$20, <name::>,$00 Opens a file for writing to wfth <prompt>$00
WRP
<name><cr> 1 $0E,$20, Opens a file for roadion to with <prompt>$00
·RoF"
1 $0A,$20,
,,
'
84
BLUETOOTH HC-06- CONFIGURACIÓN
Oefault:
Slave, 9600 baud rate, N, 8, 1_ Pincode 1234
ATcommand:
1. Communications Test:
Sen!: AT
receive .: OK
Sen! : AT+BAU01
receive : OK 1200
Sen! : AT+BAUD2
receive : OK2400
1-·-------1200
2-------2400
3---------4800
4--------9600
5---------19200
6--------38400
7---------57600
8---------115200
Sent : AT+NAMEdevicename
receive : OKname
(devicename is the name yo u want the device to be ! and it will be searched with
this name)
4. Change Pincode:
Sent : AT+PINxxxx
receive : OKselpin
85
PCB DEL PROTOTIPO- EAGLE
0000000000000000
86