Sie sind auf Seite 1von 26

1

PROYECTO INTEGRADOR

PRESENTADO POR:

LUIS MIGUEL DIAZ FAILACH COD:161218127

YULDANIEL BAZURTO CAJAMARCA COD:161218212

NATALIA SALAMANCA -COD: 161216146

MIGUEL ANGEL CASTILLO -COD: 161218215

UNIVERSIDAD DE CUNDINAMARCA

FACULTAD DE INGENIERÍA

INGENIERÍA DE SISTEMAS

FUSAGASUGÁ, CUNDINAMARCA

2019
2

Tabla de contenido
1. Introducción .......................................................................................................................................... 3

2. Objetivos ............................................................................................................................................... 4

2.1. General .......................................................................................................................................... 4

2.2. Específicos .................................................................................................................................. 4

3. Marco conceptual…………..………………………………………………………………………………………………………………..5

4. Explicación del proyecto………………………………………………………………………………………………………………….6

5. Plano electrónico ................................................................................................................................... 7

6. Lista de componentes eléctricos ........................................................................................................... 8

7. Conclusión……………………………………………………………………………………………………………………………………….9

8. Referencias bibliográficas ................................................................................................................... 10

Índice de Tablas

Tabla 1.Componentes eléctricos ..................................................................................................... 8


Índice de Figuras

Figura 1. Plano electrónico del proyecto ........................................................................................ 7


Índice de Anexos

Anexo 1. Aplicación ..................................................................................................................... 12


Anexo 2. Código fuente Arduino .................................................................................................. 24
Anexo 3.Código fuente del aplicativo ...........................................Error! Bookmark not defined.
3

1. Introducción

Este proyecto nace en primer lugar con el propósito de adquirir un conocimiento con el fin de
llevar a cabo lo que es la programación como tal utilizada para arduino, los datos adquiridos con
los displays de siete segmentos los cuales se encargan de marcar los cupos disponibles; y saber
qué tipo de implementos son los necesarios además de sus usos específicos. Todo esto con la
intención de solucionar la problemática que se presentan en un estacionamiento ya que al
momento de aparcar un coche en ocasiones están copados los cupos y demás; todo esto para lo
que es una buena sistematización la cual se va a centrar por medio de un aplicativo y demás
recursos. Volviendo así el proceso de estacionar un automóvil mucho más sencillo y ameno. Ya
que si se logra esta sistematización nos dirá si hay cupos y la cantidad de los mismos. Ahorrando
así una cantidad considerable de tiempo al estar el estacionamiento sistematizado. En resumidas
cuentas, esta fue como la principal problemática por la que tuvimos la idea de este proyecto
además de reiterar el conocimiento adquirido. Pero no solo eso, también quisimos ejecutar un
plan estructurado u organizado que demostrara que los circuitos usados (arduinos, servomotores,
displays, bluetooth, y demás) son óptimos para hacer este tipo de sistemas y se pueden mecanizar
relativamente fácil con la programación de arduino.
4

2. Objetivos

2.1.General
 Desarrollar e implementar un sistema control para seguridad de la entrada y salida de
hogares; con una app para manejar la parte de la interacción con el teléfono mediante
la sim, logrando así una sistematización Optimizada y fácil de discernir para el
usuario.
2.2.Específicos
 Adquirir un conocimiento que nos ayude en lo que es el ámbito de programar arduino
y de saber coordinar en el uso de los diferentes implementos.
 Agilizar u optimizar como tal el funcionamiento del mismo sistematizándolo:
optimizarlo ya que si ese sistematizado vas a tener un mejor funcionamiento y todo
será con más fluidez.
 Modificar y mejorar el programa cada que se vaya retrayendo o volviendo como tal
obsoleto, esto permite siempre mantener en buenas condiciones el parqueadero para
su mejor uso.
 Ejecutar un plan organizacional que muestre la estructura de los circuitos y
programación de arduino.
 Implementar el uso del modulo GSM para interactuar con nuestro teléfono mediante
la SIM.
5

3. Marco conceptual

Actualmente los celulares y telefonía móvil son tendencia en la actualidad, debido a la gran
inseguridad que tenemos en Colombia podemos tener un sistema rápido, ágil de seguridad que
nos permite por medio de la programación y el uso de aplicativos que cada vez son mucho más
sencillos de utilizar.

Para implementar el uso del Módulo GSM / GPRS SIM800L e introducirse en el mundo de
la programación electrónica, mediante el programa Arduino que es una plataforma de código
abierto (open-source) lo que permite realizar proyectos y modificaciones tanto de hardware como
de software sin ningún problema. Esto nos permite manejar por medio de un código cuya función
es enviar órdenes para poder utilizar diferentes herramientas electrónicas como los servomotores,
que son pequeños y ligeros, con piñonearía metálica, de alta calidad y buena velocidad, este
servo está diseñado para proporcionar un torque de hasta 2.2kgr/cm que nos permite manejar las
puertas del parqueadero, a su vez ,por medio del lenguaje de programación, podemos controlar
los led que son diodos emisores de luz los cuales son una fuente de luz constituida por un
material semiconductor dotado de dos terminales de unión p-n, que emite luz cuando está
activado, si se aplica una tensión adecuada a los terminales, los electrones se recombinan con
espacios en la región de la unión p-n del dispositivo, liberando energía en forma de fotones y por
medio de una compuerta not manejar su mecanismo que nos permitirá hacer que se cumpla una
función diferente cuando no se ejecute dicha función como dar una orden al led que se prenda
cuando el otro este apagado aunque para un eficaz funcionamiento de los elementos del circuito
dependen de resistencias, que consisten en tolerar o se opone al paso de los electrones
eliminando los en forma de calor también podemos destacar que el valor de una resistencia se
mide en ohms por tanto el movimiento de los electrones a través de cualquier circuito eléctrico o
electrónico no es accidental, sino controlado por leyes naturales y comprobadas científicamente
esto nos permite disminuir los voltios para que no haya una sobre carga de energía.

Por otro lado, con el código podemos controlar un sistema de alarma donde envié mensajes de
texto al celular para alertarnos de intrusiones en un sistema de seguridad casero cuando se
presente movimiento, controlados por arduino.
6

4. Explicación del proyecto

El proyecto a presentar (SISTEMA DE SEGURIDAD CON SIM) con un enfoque educativo en el


cual se va a demostrar conocimientos adquiridos en las materias, Fundamentos de electrónica
digital y Programación, así como el desarrollo de nuestra lógica hasta el momento al igual que
discernimiento autónomo relacionado al tema de elaboración de circuitos con Arduino Uno, como
tal el proyecto es una demostración de un sistema de alarma con un sensor casero para cuando se
generó un movimiento, nos envié un mensaje de texto a nuestro teléfono mediante el número de
sim card.

Los conceptos necesarios para la realización del sistema de seguridad en programación y


aplicación con el Arduino Uno de tal forma vemos que la elaboración del proyecto es una
muestra en pequeña escala que en una implementación real sería muy interesante.
7

5. Plano electrónico

Figura 1.

Plano electrónico del proyecto


8

6. Lista de componentes eléctricos

Tabla 1.

Componentes eléctricos

LISTA DE COMPONENTES
CANTIDAD DESCRIPCION CARACTERISTICAS O PRECIO
REFERENCIAS
1 Arduino UNO R3 $25.000
2 Sensor de flujo Infrarrojo $10.000
4 Resistencias 330 ohmios, 5 voltios $800
1 Modulo GSM SIM 800L $23.000
1 Sim Card Cualquier operador $5.000
2 Cables Dupont Macho macho $4.000
1 Fuente de 9 voltios $ 3.000
alimentación
1 Protoboard MB102 830 Puntos $7.800
9

7. Conclusión

Con el desarrollo e implementación de un Sistema de Seguridad basado en el código de


programación, se pudo comprobar que es factible diseñar un sistema que proporcione información
anticipada a los usuarios que buscan tener mayor seguridad en distintos establecimientos. Esto lo
logramos con los conocimientos que obtuvimos en nuestro campo de aprendizaje donde los
ponemos en práctica, y así mismo los reforzamos durante el proceso.

Con este proyecto pudimos tratar con diversos elementos electrónicos además de implementar
conocimientos adquiridos en las asignaturas implicadas, e interactuar con la programación en
Arduino.

No obstante, al no tener un conocimiento amplio de la electrónica y la programación


encontramos algunas dificultades entre ellas el de la falta conocimiento al implementar módulos
como el GSM De Sim, por ende, al indagar pudimos encontrar la solución y a la implementación
de los distintos materiales utilizados en el proyecto. Con los anteriores puntos se logró cumplir
los objetivos y adicional poner en práctica los principios de la programación en Arduino y la
electrónica digital.
10

8. Referencias bibliográficas

 https://servodatabase.com/servos/towerpro
 https://www.geekfactory.mx/tutoriales/tutoriales-arduino/enviar-sms-con-arduino-y-sim800l/
 https://www.arduino.cc/
 http://untitled.es/sms-arduino-sim800l/
 https://www.infootec.net/arduino/#1--Descripcion-y-caracteristicas-tecnicas
 http://www.geekbotelectronics.com/producto/resistencia-330-ohm-14-w/
 https://hetpro-store.com/TUTORIALES/que-es-arduino/
 https://www.vistronica.com/comunicaciones/radiofrecuencia/modulo-gsm-sim800l-detail.html
 https://www.google.com/search?ei=mHVPXLPrFcis0gLh4JmgBQ&q=my+inventor&oq
=my+inventor&gs_l=psy-
ab.3..0i7i30j0j0i7i30l6j0i203l2.4414.4414..5215...0.0..0.183.183.0j1......0....1..gws-
wiz.......0i71.uKAMCxVXsGY
11

Anexos
12

Anexo 1.
package com.example.btarduino.app;

import android.app.Activity;
import android.app.AlertDialog;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;

import java.util.Set;

public class InicioActivity extends Activity implements MiAsyncTask.MiCallback {


private static final String TAG = "InicioActivity";
13

private static final int REQUEST_ENABLE_BT = 1;


private static final String NOMBRE_DISPOSITIVO_BT = "HC-06";//Nombre de neustro
dispositivo bluetooth.
private TextView tvTemperatura;
private TextView tvInformacion;
private MiAsyncTask tareaAsincrona;
@Override
protected void onCreate(Bundle savedInstanceState) {
/*Inicializamos la activity e inflamos el layout*/
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

tvTemperatura = (TextView) findViewById(R.id.texto_temp);//Mostrará la temperatura


tvInformacion = (TextView) findViewById(R.id.textView_estado_BT);//Mostrará la hora a la
que fue registrada.
}

@Override
protected void onResume() {

super.onResume();
descubrirDispositivosBT();
}
private void descubrirDispositivosBT() {

BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

tvInformacion.setText("Comprobando bluetooth");
14

if (mBluetoothAdapter != null) {

if (mBluetoothAdapter.isEnabled()) {

tvInformacion.setText("Obteniendo dispositivos emparejados, espere...");


Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices();

if (pairedDevices.size() > 0) {

BluetoothDevice arduino = null;

for (BluetoothDevice device : pairedDevices) {


if (device.getName().equalsIgnoreCase(NOMBRE_DISPOSITIVO_BT)) {
arduino = device;
}
}

if (arduino != null) {
tareaAsincrona = new MiAsyncTask(this);
tareaAsincrona.execute(arduino);
} else {

Toast.makeText(this, "No hay dispositivos emparejados, por favor, empareje el arduino",


Toast.LENGTH_LONG).show();
finish();
15

}
} else {
//No hay ningun dispositivo emparejado. Salimos de la app.
Toast.makeText(this, "No hay dispositivos emparejados, por favor, empareje el arduino",
Toast.LENGTH_LONG).show();
finish();

}
} else {
muestraDialogoConfirmacionActivacion();
}
} else {

Toast.makeText(this, "El dispositivo no soporta comunicación por Bluetooth",


Toast.LENGTH_LONG).show();
}
}
@Override
protected void onStop() {

super.onStop();
if (tareaAsincrona != null) {
tareaAsincrona.cancel(true);
}
}

@Override
public void onTaskCompleted() {
16

@Override
public void onCancelled() {

@Override
public void onTemperaturaUpdate(Temperatura p) {

tvTemperatura.setText(p.getTemperatura());
tvInformacion.setText(p.getInformacion());

}
private void muestraDialogoConfirmacionActivacion() {
new AlertDialog.Builder(this)
.setIcon(android.R.drawable.ic_dialog_alert)
.setTitle("Activar Bluetooth")
.setMessage("BT esta desactivado. ¿Desea activarlo?")
.setPositiveButton("Si", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {

tvInformacion.setText("Activando BT");
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
}
17

})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//Salimos de la app
finish();
}
})
.show();
}

----------------------------------------------------------------------------------------------

package com.example.btarduino.app;

import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothSocket;
import android.os.AsyncTask;

import java.io.BufferedReader;
import java.io.Closeable;
import java.io.IOException;
import java.io.InputStream;
18

import java.io.InputStreamReader;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;

/**
* Created by Roque on 4/03/14.
*/
public class MiAsyncTask extends AsyncTask<BluetoothDevice, Temperatura, Void>
{
private static final String TAG = "MiAsyncTask";

//Identificador unico universal del puerto bluetooth en android (UUID)


private static final String UUID_SERIAL_PORT_PROFILE = "00001101-0000-1000-8000-
00805F9B34FB";
private Temperatura temperatura = new Temperatura();
private BluetoothSocket mSocket = null;
private BufferedReader mBufferedReader = null;
private MiCallback callback;
private SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
private boolean recibiendo = false;
private InputStream aStream = null;
private InputStreamReader aReader = null;
private int contadorConexiones = 0;
public interface MiCallback {
void onTaskCompleted();

void onCancelled();
19

void onTemperaturaUpdate(Temperatura p);


}

public MiAsyncTask(MiCallback CALLBACK) {


callback = CALLBACK;

}
@Override
protected Void doInBackground(BluetoothDevice... devices) {

final BluetoothDevice device = devices[0];

while (!isCancelled()) {
if (!recibiendo) {
recibiendo = conectayRecibeBT(device);
}
}

cierra();
return null;
}

private boolean conectayRecibeBT(BluetoothDevice device) {


//Abrimos la conexión con el dispositivo.
boolean ok = true;
20

try {
contadorConexiones++;

mSocket = device.createRfcommSocketToServiceRecord(getSerialPortUUID());
mSocket.connect();
aStream = mSocket.getInputStream();
aReader = new InputStreamReader(aStream);
mBufferedReader = new BufferedReader(aReader);

temperatura.setInformacion("Sin datos...");
publishProgress(temperatura);

while (!isCancelled()) {

try {

String aString = mBufferedReader.readLine();


if ((aString != null) && (!aString.isEmpty())) {
temperatura.setInformacion(sdf.format(new Date()));

try {

String s[] = aString.split(",");


temperatura.setNombreDispositivo(s[0]);
temperatura.setTemperatura(s[1]);
publishProgress(temperatura);
} catch (Exception e) {
21

//Si falla el formateo de los datos, no hacemos nada. Mostramos la excepción en la consola para
//observar el error.
e.printStackTrace();
}

}
} catch (IOException e) {
e.printStackTrace();
}

} catch (IOException e) {
ok = false;
e.printStackTrace();
temperatura.setInformacion("Error conectando con dispositivo bt, reintento " +
contadorConexiones + "... Si este error se repite, reinicie el arduino.");
publishProgress(temperatura);
cierra();

}
return ok;
}

private void cierra() {


close(mBufferedReader);
close(aReader);
22

close(aStream);
close(mSocket);
}

private UUID getSerialPortUUID() {


return UUID.fromString(UUID_SERIAL_PORT_PROFILE);
}

private void close(Closeable aConnectedObject) {


if (aConnectedObject == null) return;
try {
aConnectedObject.close();
} catch (IOException e) {
e.printStackTrace();
}
aConnectedObject = null;
}

@Override
protected void onProgressUpdate(Temperatura... values) {
super.onProgressUpdate(values);
callback.onTemperaturaUpdate(values[0]);
}

@Override
protected void onCancelled() {
callback.onCancelled();
}
23

}
------------------------------------------------------------------------------------
package com.example.btarduino.app;

public class Temperatura {

private String informacion = "";


private String temperatura = "";
private String nombreDispositivo = "";

public String getInformacion() {


return informacion;
}

public void setInformacion(String informacion) {


this.informacion = informacion;
}

public String getTemperatura() {


return temperatura;
}

public void setTemperatura(String temperatura) {


this.temperatura = temperatura;
}

public String getNombreDispositivo() {


24

return nombreDispositivo;
}

public void setNombreDispositivo(String nodo) {


this.nombreDispositivo = nodo;
}

}
Anexo 2.
Código fuente Arduino
#include <SoftwareSerial.h>

SoftwareSerial mySerial(10, 11); // RX, TX

void setup() {
Serial.begin(9600);
mySerial.begin(9600);
pinMode (8, INPUT);
delay(1000);
}
void loop() {
if ((digitalRead(8) == 1)) {
// enviaSMS();
mySerial.print("AT+CMGF=1");
delay(100);
mySerial.print("AT+CMGS=\"+573208849757\"");
25

delay(100);
mySerial.print("Se ha detectado movimiento\n");
delay(500);
mySerial.print(char(26));
delay(100);
mySerial.println("");
}
if (Serial.available()) {
while (Serial.available()) {
mySerial.write(Serial.read());
}
mySerial.println();
}

/*void enviaSMS() {
mySerial.print("AT+CMGF=1");
delay(100);
mySerial.print("AT+CMGS=\"+573208849757\"");
delay(100);
mySerial.print("Se ha detectado movimiento\n");
delay(500);
mySerial.print(char(26));
delay(100);
mySerial.println("");
}*/
26