Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - rreedd

#61
Hola !! en mi caso yo los uso mayormente cuando viajo en bus para poder dormir y no escuchar el ruido propio del vehículo  y el murmullo del hablar de los demás

Citar¿Utilizas a todo volumen los audífonos?

No Por que me duelen los oídos  ;D
Citar¿Cuéntanos si escuchas música con tus auriculares mientras Realizas tareas informáticas ?

Cuando encuentro alguna vulnerabilidad y logro explotarla, escucho música a modo de celebración  8)
Citar¿Cuál es tu género preferido?

Rap Chileno

Saludos desde chile!!
rreedd

#62
Debates, Reviews y Opiniones / Re:¿Que SO usas?
Agosto 03, 2016, 10:48:17 AM
Nada como el viejo y fiel Ubuntu  ;D ;D
#63
Hola !!
Creo que te refieres a un correo temporal, este tipo de correos se crean de forma aleatoria y de elimina la cuenta en un determinado tiempo.
Para eso solo escribe "correo temporal" en google y listo.
Pero para enviar un virus en un archivo adjunto, podrías ven un poco sobre como camuflar un virus dentro de otro archivo y en el foro existen post sobre eso, así que te recomiendo que recorras un poco el y veras como funcionara  ;D

Saludos
rreedd
#64
Seguridad / Borrado Seguro de Información
Julio 07, 2016, 11:34:18 AM
Borrado Seguro De Información


" El borrado seguro se ejecuta cuando al borrar un archivo, alguna utilidad de borrado escribe ceros sobre el archivo, no permitiendo que éste se pueda recuperar posteriormente."
Fuente (No tienes permitido ver los links. Registrarse o Entrar a mi cuenta)

Hola mis hermanos de underc0de, yo les presentare los distintos tipos de eliminación segura de ficheros ya que debemos llevarlo a cabo para deshacernos de alguna información de nuestra maquina para que tanto a la policía como a alguna novia con instinto de forense no  pueda recuperar algunos ficheros que nos incriminen y nos hagan pasar un mal rato.

Primero lo primero, tenemos que definir que entendemos por "borrado seguro de un archivo", mas de alguna persona en el mundo a de pensar que con tan solo mandar a papelera de reciclaje sus ficheros serán en un 100% irrecuperable, pues nada mas alejado de la realidad que esto, lo que sucede en verdad  al eliminar un archivo de forma convencional es quitar el acceso directo a este en el disco duro pero este sigue existiendo íntegramente.

Para poder dificultar las tarea de recuperación de tiene que sobrescribir el espacio físico que utiliza algún archivo en la unidad que lo almacena, la efectividad de este método dependerá de la cantidad de veces que se realice el proceso y los algoritmos utilizados, esta tarea la realizan numerosas herramientas entre las cuales están:


Darik's Boot And Nuke
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

WipeFile
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

wipe
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

shred
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Ejemplo de Borrado seguro

Linux

Borrado con shred 
   Aunque shred No es estrictamente un programa que borre la información por defecto  pero si la sobrescribe para hacerla ilegible para quien quiera hacer un trabajo forense e intente recuperarla.

   Opciones :
   -u Borrar el archivo.
   -n numero de verses que se sobrescribe el archivo.
   -z se le agregan '0' en la ultima pasada para ocultar el algoritmo usado en el proceso.
   -v puedes ver el proceso.

Ejemplo de borrado seguro
  Ejemplo : shred -n 50 -z -u -v topSecret.pdf
 
Código: php
    
$ shred -n 50 -z -u -v topSecret.pdf
   shred: topSecret.pdf: paso 1/51 (random)...
   shred: topSecret.pdf: paso 2/51 (088888)...
   shred: topSecret.pdf: paso 3/51 (444444)...
   shred: topSecret.pdf: paso 4/51 (911111)...
   shred: topSecret.pdf: paso 5/51 (800000)...
   shred: topSecret.pdf: paso 6/51 (f77777)...
   shred: topSecret.pdf: paso 7/51 (492492)...
   shred: topSecret.pdf: paso 8/51 (c44444)...
   shred: topSecret.pdf: paso 9/51 (a49249)...
   shred: topSecret.pdf: paso 10/51 (2aaaaa)...
   shred: topSecret.pdf: paso 11/51 (random)...
   shred: topSecret.pdf: paso 12/51 (bbbbbb)...
   shred: topSecret.pdf: paso 13/51 (b33333)...
   shred: topSecret.pdf: paso 14/51 (5ddddd)...
   shred: topSecret.pdf: paso 15/51 (7fffff)...
   shred: topSecret.pdf: paso 16/51 (cccccc)...
   shred: topSecret.pdf: paso 17/51 (924924)...
   shred: topSecret.pdf: paso 18/51 (db6db6)...
   shred: topSecret.pdf: paso 19/51 (edb6db)...
   shred: topSecret.pdf: paso 20/51 (000000)...
   shred: topSecret.pdf: paso 21/51 (random)...
   shred: topSecret.pdf: paso 22/51 (199999)...
   shred: topSecret.pdf: paso 23/51 (777777)...
   shred: topSecret.pdf: paso 24/51 (555555)...
   shred: topSecret.pdf: paso 25/51 (dddddd)...
   shred: topSecret.pdf: paso 26/51 (222222)...
   shred: topSecret.pdf: paso 27/51 (124924)...
   shred: topSecret.pdf: paso 28/51 (ffffff)...
   shred: topSecret.pdf: paso 29/51 (6db6db)...
   shred: topSecret.pdf: paso 30/51 (666666)...
   shred: topSecret.pdf: paso 31/51 (random)...
   shred: topSecret.pdf: paso 32/51 (5b6db6)...
   shred: topSecret.pdf: paso 33/51 (e66666)...
   shred: topSecret.pdf: paso 34/51 (36db6d)...
   shred: topSecret.pdf: paso 35/51 (eeeeee)...
   shred: topSecret.pdf: paso 36/51 (333333)...
   shred: topSecret.pdf: paso 37/51 (3bbbbb)...
   shred: topSecret.pdf: paso 38/51 (c92492)...
   shred: topSecret.pdf: paso 39/51 (aaaaaa)...
   shred: topSecret.pdf: paso 40/51 (888888)...
   shred: topSecret.pdf: paso 41/51 (random)...
   shred: topSecret.pdf: paso 42/51 (249249)...
   shred: topSecret.pdf: paso 43/51 (111111)...
   shred: topSecret.pdf: paso 44/51 (999999)...
   shred: topSecret.pdf: paso 45/51 (b6db6d)...
   shred: topSecret.pdf: paso 46/51 (d55555)...
   shred: topSecret.pdf: paso 47/51 (6eeeee)...
   shred: topSecret.pdf: paso 48/51 (4ccccc)...
   shred: topSecret.pdf: paso 49/51 (a22222)...
   shred: topSecret.pdf: paso 50/51 (random)...
   shred: topSecret.pdf: paso 51/51 (000000)...
   shred: topSecret.pdf: borrando
   shred: topSecret.pdf: renombrado a 0000000000000
   shred: 0000000000000: renombrado a 000000000000
   shred: 000000000000: renombrado a 00000000000
   shred: 00000000000: renombrado a 0000000000
   shred: 0000000000: renombrado a 000000000
   shred: 000000000: renombrado a 00000000
   shred: 00000000: renombrado a 0000000
   shred: 0000000: renombrado a 000000
   shred: 000000: renombrado a 00000
   shred: 00000: renombrado a 0000
   shred: 0000: renombrado a 000
   shred: 000: renombrado a 00
   shred: 00: renombrado a 0
   shred: topSecret.pdf: borrado




Windows

Borrado con WipeFile 
WipeFile es Muy simple es un programa portable que solo se tiene que seleccionar el archivo y la forma de borrado que se desea.






Aunque algunas herramientas en la actualidad que son muy efectivas y pueden llevar a que la posibilidad de ensamblar de la información sea casi nulo, no se puede asegurar que si el forense tiene el suficiente dinero, tiempo o paciencia como para probar con métodos de avanzada en la reconstitución de la información (como por ejemplo agencias de inteligencia como la SIA o el GRU ) es probable  que logren el cometido de obtener partes de ficheros que quedaron resegados en el proceso de sobre escritura.

Es por eso que la única forma de poder estar tranquilo con que aquella información sensible sera totalmente irrecuperable se debe destruir físicamente el medio de almacenamiento que la contiene de tal forma que no quede atisbo de esta, aquí algunos métodos que ademas son muy divertidos ;)

La mejor forma de destruir completamente la información de un disco duro es lijar la superficie de los discos y hacer agujeros con un taladro, tiene que ser muy eficiente por que por algo es usado por las agencias de inteligencia en el mundo como lo reveló Edward Snowden.









Listado de Algoritmos de Borrado





























Método de borrado                    DefiniciónNivel de seguridad
Grado 1.
Super Fast Zero Write
Sobreescritura del soporte con un valor fijo (0x00) en cada tercer sector.                     Bajo
Grado 2.
Fast Zero Write
Sobreescritura del soporte con un valor fijo (0x00) en cada sector.
Bajo
Grado 3.
Zero Write
Sobreescritura del soporte con un valor fijo (0x00) en todo el área al completo.
Bajo
Grado 4.
Random Write
Sobreescritura del soporte con valores aleatorios. Su fiabilidad aumenta con el número de pasadas.
Medio
Grado 5.
Random & Zero Write
Después de sobreescribir el soporte con valores aleatorios, se vuelve a sobreescribir de nuevo con un valor fijo (0x00), sobreescribe con valores aleatorios y termina con escritura de valor cero; este método es más seguro que Zero Write.Medio
Grado 6.
US Navy, NAVSO P-5239-26 – MFM
Estándar de la Armada estadounidense (US Navy) NAVSO P-5239-26 para discos codificados con MFM (Modified Frequency Modulation). El método consiste en la escritura de un valor fijo (0xffffffff) sobre el soporte, después un valor fijo (0xbfffffff), y finalmente una serie de valores aleatorios. El área de datos se lee para verificar la sobreescritura. El método suele ser aplicado sobre disquetes.Medio
Grado 7.
US Navy, NAVSO P-5239-26 – RLL
Estándar de la Armada estadounidense (US Navy) NAVSO P-5239-26 para discos codificados con RLL (Run Length Limited). Este método aplica la escritura de un valor fijo (0xffffffff) sobre el soporte grabado, un valor fijo (0x27ffffff), y finaliza con valores aleatorios. El área de datos se lee para verificar la sobreescritura. El método es aplicable a discos duros y soportes ópticos como el CD, DVD o el disco BlueRay.Medio
Grado 8.
Bit Toggle
Sobreescritura de toda la zona de datos cuatro veces, primero con el valor (0x00), sigue con el valor (0xff), luego (0x00) y finaliza con (0xff).Medio
Grado 9.
Random Random Zero
Sobreescritura del soporte dos veces con valores aleatorios, una vez más con un valor fijo (0x00). Vuelta a sobreescribir dos veces con valores aleatorios y una última vez con ceros; el método es más seguro que Random & Zero Write.
Medio
Grado 10.
US Department of Defense (DoD 5220.22-M)

Este método de borrado fue introducido por el Departamento de Defensa de los EE.UU. (Pentágono) y es conocido como "DoD5220.22-M". El método consiste en la sobreescritura del soporte con un valor fijo determinado una vez (por ejemplo 0x00), seguidamente se escribe su valor complementario (0xff) una vez, y finalmente se repasa con valores aleatorios una vez. El disco se verifica para comprobar la escritura correcta de los valores.
Medio
Grado 11.
US Air Force, AFSSI5020
Estándar de las Fuerzas Aéreas de los EE.UU. (US Air Force) AFSSI5020. Este método de borrado primero sobreescribe el soporte con un valor fijo (0x00), después otro valor fijo (0xff), y finalmente un valor aleatorio constante. Se comprueba al menos un 10% del disco para verificar la sobreescritura.Medio
Grado 12.
North Atlantic Treaty Organization - NATO standard
Estándar de borrado de la OTAN (North Atlantic Treaty Organization). Sobreescribe el soporte siete veces. Las primeras seis pasadas son de sobreescritura con valores fijos alternativos entre cada pasada (0x00) y (0xff). La séptima pasada sobreescribe con un valor aleatorio.Alto
Grado 13.
Peter Gutmann Secure Deletion
El método fue creado por Peter Gutmann en 1996. Probablemente sea el método de borrado de datos más seguro que existe sin combinación con otros métodos. La sobreescritura del soporte se realiza grabando valores aleatorios cuatro veces sobre cada sector. Seguidamente se sobreescribirá todo el soporte con valores pseudoaleatorios sobre cada sector durante veintisiete pasadas. Para terminar, se escribirán valores aleatorios durante cuatro pasadas sobre cada sector. En total, se realizan treinta y cinco pasadas de sobreescritura.Alto
Grado 14.
US Department of Defense (DoD 5220.22-M) + Gutmann Method
Método de alta seguridad consistente en 35 pasadas, complementables con iteraciones de Mersenne, para agilizar los procesos de borrado seguro mediante la generación de números pseudoaleatorios. Combina el Grado 13 y el 10.Muy Alto
( Tabla tomada desde No tienes permitido ver los links. Registrarse o Entrar a mi cuenta )



UNDERtips Borrado Seguro



  • Toda información sensible tiene que ser borrada de forma segura

  • Nunca desechar un medio de almacenamiento sin antes borrar seguramente su contenido

  • Todo archivo borrado siempre estará almacenado en un dispositivo físico

  • Algunos algoritmos hacen casi irrecuperables los archivos pero nunca se puede asegurar al 100%

  • El único método seguro al 100% para eliminar datos es destruir el medio de almacenamiento


UNDERtips:

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta


Si tienes alguna duda o reparo solo comenta.
Saludos desde Chile
#65
Hacking ShowOff / [SQLi] http://www.procircuit.cl
Julio 04, 2016, 09:03:00 PM

Sitio : No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Descripción Del Sitio : Venta de artículos y accesorios para motociclistas

[SQLi] Inyección en URL


Descripción de la inyección : es una inyección muy básica pero no por eso la vulnerabilidad deja de ser peligrosa, ya que expone todas las bases de datos alojadas en el servidor.

Url del sitio :  No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Xploit
:  No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Reportado : SI (hace mas de 1 mes y aun no la reparan así que no creo que lo hagan)

Después de unos momentos de Sqlmap  ;)



Listado de las db alojadas en el servidor
Código: php

available databases [40]:
      [*] admin_prueba
      [*] AirCloud
      [*] AirCloud_M
      [*] AirCloud_Soporte
      [*] BD_CLAZO
      [*] BD_Procircuit2015
      [*] BDdes1
      [*] BDPREL2
      [*] bea_profile_management
      [*] BibliotecaElecmetal
      [*] Britanico2
      [*] Britanico_Eng
      [*] datacenter
      [*] DirectoPro_db2
      [*] GORILACONTROL
      [*] iia_db_encuesta
      [*] iia_elecmetal_cl
      [*] INDISA_WFLOW
      [*] ingles
      [*] localhost
      [*] master
      [*] model
      [*] moscoso_cl_1
      [*] msdb
      [*] pide
      [*] plataforma
      [*] prueba2
      [*] psa
      [*] ReportServer
      [*] ReportServerTempDB
      [*] sitebuilderAFE1A86606277534FBE47ED6219A39AF
      [*] soporte_
      [*] soporte_1
      [*] soporte_indisa
      [*] soporte_prueba
      [*] soporte_pruebas
      [*] soporte_test
      [*] tempdb
      [*] Traspaso
      [*] traspaso 2 prueba



Tablas de la db de la pagina BD_Procircuit2015
Código: php


+------------------------------------------------+
| cal_user_procircuit.PC_ALCPOPUP                |
| cal_user_procircuit.PC_ALCUSER                 |
| cal_user_procircuit.PC_CATEGMENU               |
| cal_user_procircuit.pc_Noticia                 |
| cal_user_procircuit.pc_SemiNuevas_Cotizacion   |
| cal_user_procircuit.pc_aplicacion              |
| cal_user_procircuit.pc_busqueda                |
| cal_user_procircuit.pc_carro                   |
| cal_user_procircuit.pc_categoria               |
| cal_user_procircuit.pc_clasificacion           |
| cal_user_procircuit.pc_cliente                 |
| cal_user_procircuit.pc_contacto                |
| cal_user_procircuit.pc_cotizacion              |
| cal_user_procircuit.pc_cotizacion_item         |
| cal_user_procircuit.pc_cotizacion_movimiento   |
| cal_user_procircuit.pc_estado_cotizacion       |
| cal_user_procircuit.pc_estado_orden_compra     |
| cal_user_procircuit.pc_estado_pago             |
| cal_user_procircuit.pc_galeria                 |
| cal_user_procircuit.pc_marca                   |
| cal_user_procircuit.pc_motivo_no_pago          |
| cal_user_procircuit.pc_orden_compra            |
| cal_user_procircuit.pc_orden_compra_item       |
| cal_user_procircuit.pc_orden_compra_movimiento |
| cal_user_procircuit.pc_perfil                  |
| cal_user_procircuit.pc_perfil_aplicacion       |
| cal_user_procircuit.pc_producto                |
| cal_user_procircuit.pc_producto_busqueda       |
| cal_user_procircuit.pc_producto_contacto       |
| cal_user_procircuit.pc_producto_relacionado    |
| cal_user_procircuit.pc_promocion               |
| cal_user_procircuit.pc_repuesto                |
| cal_user_procircuit.pc_segmento                |
| cal_user_procircuit.pc_subcategoria            |
| cal_user_procircuit.pc_sucursal                |
| cal_user_procircuit.pc_usuario                 |
+------------------------------------------------+


No busque mas vulnerabilidades en la pagina, pero estoy seguro que tienen que existir mas  ;D

Autor: RREEDD

Saludos desde Chile
#66
rreedd


Hola!!! @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta y @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Vengo literalmente desde el mas allá a responder  ;D ajjajajajajaja.


Cita de: Once link=quote author=Once link=topic=28721.msg101901#msg101901 date=1466549182]
Hola chicos, perdonad por revivir el tema, pero tengo un par de dudas acerca del funcionamiento. Por lo que entiendo, para que esto funcione se tiene que tener una corriente variable en la bobina emisora, para que el campo magnético también varie e induzca una corriente en la bobina receptora. No entiendo como hace el transistor para variar la corriente de la bobina o estás conectando el sistema a la red usando CA?

Saludos!

Compañero con el mayor agrado espero resolver su duda , la bovina emisora es alimentada desde una pila y esta corriente pasa por un transistor el cual aumenta su frecuencia (abriendo y cerrando a muy alta velocidad ) al pasar esta corriente intermitente se logra crear un campo electromagnético estable el cual colapsa y se crea constantemente, este no es muy fuerte pero lo suficiente para lograr inducir la bovina receptora al estar relativamente cerca.

Saludos rreedd.



Nunca esta de mas algunas referencias  ;)

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta



Un gran a brazo a todos los hermanos de Underc0de
Saludos Desde Chile


Cualquier Duda o Reparo Solo Comenten.
#67
Ubuntu 16.04 LTS



Bueno compañeros por fin esta disponible la ultima versión estable y LTS (soporte a largo plazo de 5 años) de Ubuntu.
Quien tiene por nombre "Xenial Xerus" lo que llevado al español comun y corriente seria algo así como "La ardilla amigable"  ;D

¿Que quiere decir LTS?
para aquellos que no se manejen en el tema "LTS" quiere decir "Long Term Support" lo que quiere decir que es un sistema con un soporte a largo plazo,
el cual por los próximos 5 años tendrá actualizaciones de seguridad y soporte asegurado.

El nuevo sistema tiene una gran gama de novedades , aunque la mayoría de estas están en la familia de Ubuntu como es natural este no se iba a quedar tal cual aquí están algunas:


  • Se vasa en el kernet 4.4.
  • Utilizara el nuevo y renovado Unity 7.4.
  • La tienda se Software que traía por defecto se elimino y la nueva version esta a cargo de GNOME.
  • La búsqueda en linea viene desactivada por defecto (como siempre tuvo que  ser).
  • Trae un nuevo pack de aplicaciones pre-instaladas, contando los mas de 25.000 paquetes que tiene en el repositorio listo para instalar entre los que están : Firefox 45, LibreOffice 5.1


Con este sistema operativo el cual es el ultimo caballito de batalla de Ubuntu y quien nos acompañara con soporte hasta el 2021, quien espera poder
al fin conquistar el mundo del escritorio.

Enlaces de Descarga

    Ubuntu 16.04 i32
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
    Ubuntu 16.04 amd64
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta


Saludos desde Chile
#68
rreeddHola !!
Sera un placer compañero @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta ;D
Pronto lo subiré.

Saludos desde Chile
#69
rreedd


rreeddHola !!!

Compañeros les presento un proyecto muy fácil de construir, pero que es muy bueno para demostrar la transmisión inalámbrica de energía.
Además de ser fácil, es muy barato  ;D ;D solo necesitaremos un led, un transistor 2N222 (cualquiera sirve pero lo haremos con este  8) ) y un par de metros de alambre de un calibre delgado (de trasformador para los cuchareros igual a mi).

materiales



  • 1.  Transistor 2N222

  • 1.  Led


  • 2 metros de alambre (Depende del porte o la forma de bobinado que hagan)


¿Como funciona la transición inalámbrica de energía?


Esto funciona de una manera muy simple, para lograr trasmitir una onda por el espacio, solo tenemos que entender el funcionamiento de la materia y el porque del asunto.
Tendremos que remontarnos a las clases de física del colegio, y entender que todo esta en constante movimiento, en especial la electricidad y las ondas no son mas de que átomos vibrando a una  frecuencia determinada.

Para llevar a cavo nuestro proyecto haremos 2 bobinas.

Bobina 1 : excitara la electricidad a una frecuencia gracias a un transistor y gracias a esto nos servirá como un emisor de radiofrecuencia (de forma muy similar a como lo hace una emisora de radio, pero en miniatura).

Bobina 2 :  Esta nos servirá como receptora de la electricidad que transmitirá la primera bobina  gracias a que esta se inducida por el campo electromagnético.



--Esquemático--



--Armado del Proyecto--


  • Armado de la Bobina receptora.
    Esta bobina tiene 20 vueltas lo mas ordenadas y juntas posibles, para que se genere el menor porcentaje de perdida posible, una ves tenemos las vueltas soldamos los extremos de la bobina a un led.


  • Armado de la Bobina emisora.
    Para hacer la bobina emisora se tienen que hacer 2 bobinas de 20 vueltas y unirlas por un extremo para que nos queden 3 cables de conexión, así que nos quedarían 2 extremos de cada bobina y 1 que seria de la unión de ellas.


           El polo positivo es la unión de las 2 bobinas



-Proyecto Terminado-



--Descargar versión PDF--
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Cualquier consulta o sugerencia no dudes en comentarla  ;D.
Saludos desde Chile
#70
rreedd

rreeddDescargar Versión PDF.
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Hola !!

Como están compañeros, en este post les haré un tutorial sobre como construir un sistema de medición de humedad con Arduino , el cual se pueda conectar con Android por medio de bluetooth.

Este es el primero de una serie de tutoriales que haré para que se entretengan armando sus propios artilugios y aprendamos entre todos.

El sistema en si es muy simple, pero para hacerlo mas interesante le agregue la interfaz con Android ;D, intentare hacerlo lo mas simple posible pero si por el camino surge alguna duda o sugerencia, por favor no duden en comentarla.



Materiales

  • Placa Arduino Nano


  • Sensor de Humedad (Módulo HL-69)


  • Módulo Bluetooth HC-06






¿Como funciona el medidor de Humedad?   :'(

Este sensor Funciona de una forma muy simple, para poder calcular la humedad de la tierra el modulo
hace pasar una corriente por los extremos de una sonda, midiendo la resistencia entre ambos polos
logrando darnos una estimación de la humedad.
Esto se traduce en que mientras mayor sera la cantidad de agua en el suelo (humedad), la electricidad
podrá circular con menos resistencia en cambio si existe un nivel bajo de humedad en el la tierra la
electricidad no podrá circular tan eficazmente y encontrara mas resistencia.
Pines
VCC : 3.3 - 5 V.
GND : Masa (negativo).
DO : (Salida Digital) nos devolverá un prendido o apagado (on - off)
AO : (Salida Analógica) la cual nos traducirá en en una respuesta entre 0 y los 1023, siendo 0 una máxima
sequedad y 1023 un exceso de agua (charco)


Codigo del programa en  Arduino

Código: php

PROYECO_DETECTOR_DE_HUMEDAD.ino

/*     
                           
                    _________________
                    |d13         D12|
                    |3v3         D11|
                    |REF         D10|     
       A0 (SENSOR)  |A0   Arduino D9|
                    |A1    NANO   D8|
                    |A2           D7|
                    |A3           D6|
                    |A4           D5|
                    |A5           D4|
                    |A6           D3|
                    |A7           D2|
VCC (Bluetooth, Sensor)  |5v          GND| GND (Bluetooth, Sensor)
                    |RST         RST|
    -9 v (Bateria)  |GND          TR| TX (Bluetooth)
    +9 v (Bateria)  |VIN          TX| TR (Bluetooth)
                    |_______________|       
*/
int humedad,temp;
void setup()   {
 
Serial.begin(9600);  // Establecemos la comunicacion Serial a 9600 baud

humedad =0;
temp=0;

}
void loop() {
   temp = analogRead(A0);                  //leemos el sensor
   humedad = (map(temp, 0, 1032, 0, 100));// establecemos los limites del valor recivido
   Serial.println(humedad);             // mostramos por pantalla
   delay(500);                         //espera de medio segundo para volver a correr el programa
}









Codigo del programa en  Android

MainActivity.java

Código: php
package com.example.rreedd.rreeddarduino01;

import android.app.ListActivity;
import android.bluetooth.*;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.*;
import java.io.*;
import java.util.ArrayList;
import java.util.Set;
import java.util.UUID;

public class MainActivity extends ListActivity {

    private TextView humedad, txtlog,txtdata;
    private ProgressBar barraHumedad;
    Thread hiloA = new HiloCliente();
    private ArrayAdapter<String> ListadoDeAdaptadores;
    private BluetoothAdapter AdaptadorBluetooth;
    private BluetoothSocket BluetoothSocket;
    private ArrayList<BluetoothDevice> ListadoDeDispositivos = new ArrayList<BluetoothDevice>();
    private ConnectAsyncTask connectAsyncTask;
    private String log;
    private ImageView img;
    private Bitmap on,off;
    private Button Botton;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //  creamos los objetos del tipo correspondientes a la interfaz para poder obtener sus valores

        img = (ImageView) findViewById(R.id.imageView2);
        off = BitmapFactory.decodeResource(getResources(), R.drawable.off);
        on = BitmapFactory.decodeResource(getResources(), R.drawable.on );
        humedad = (TextView) findViewById(R.id.txtDatos);
        txtlog = (TextView) findViewById(R.id.txtLog);
        txtdata = (TextView) findViewById(R.id.txtDatos);
        barraHumedad = (ProgressBar) findViewById(R.id.barraHumedad);
        Botton = (Button)findViewById(R.id.button);


        ListadoDeAdaptadores = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1);
        setListAdapter(ListadoDeAdaptadores);

        connectAsyncTask = new ConnectAsyncTask();

        AdaptadorBluetooth = BluetoothAdapter.getDefaultAdapter();

        //  se ve si es que el dispositivo acepta bluetooth
        if(AdaptadorBluetooth == null){
            Toast.makeText(getApplicationContext(), "Not support bluetooth", Toast.LENGTH_LONG).show();
            finish();
        }
        // se ve si es que el bluetooth esta activado
        if(!AdaptadorBluetooth.isEnabled()){
            Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
            startActivityForResult(enableBtIntent, 1);
        }

        ActualizarDispositivos();




        Botton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View arg0) {


                // se llama a función ActualizarDispositivos()
                ActualizarDispositivos();

            }
        });

    }

    // funcion encargada de actualizar la lista de dispositivos reconocidos por el teléfono
    private void ActualizarDispositivos(){
        Set<BluetoothDevice> pariedDevices = AdaptadorBluetooth.getBondedDevices();
        if(pariedDevices.size() > 0) {
            for (BluetoothDevice device : pariedDevices) {
                ListadoDeAdaptadores.add(device.getName() + "\n" + device.getAddress());
                ListadoDeDispositivos.add(device);
            }
        }
    }

    @Override
    // si se presiona un dispositivo en la lista se ejecutara la conexión con este
    protected void onListItemClick(ListView l, View v, int position, long id) {
        try {
            BluetoothDevice device = ListadoDeDispositivos.get(position);
            connectAsyncTask.execute(device);
        }catch (IllegalStateException a){
        }catch (NullPointerException a){}
    }

    // cierra la conexión con el dispositivo
    private void DetenerServidor() throws IOException {

        BluetoothSocket.close();
    }

    //
    private void IniciarServidor() {
            OutputStream mmOutStream = null;
            try {
                if(BluetoothSocket.isConnected()){
                    mmOutStream = BluetoothSocket.getOutputStream();
                    mmOutStream.write(new String("").getBytes());
                }
            } catch (IOException e) {
                System.out.println(e);
            }
    }

    // se configura la conexión para con el dispositivo bluetooth
    private class ConnectAsyncTask extends AsyncTask<BluetoothDevice, Integer, BluetoothSocket> {
        private BluetoothSocket SocketConf;
        private BluetoothDevice DeviceConf;
        @Override
        protected BluetoothSocket doInBackground(BluetoothDevice... device) {

            DeviceConf = device[0];
            try {

                String mmUUID = "00001101-0000-1000-8000-00805F9B34FB";
                SocketConf = DeviceConf.createInsecureRfcommSocketToServiceRecord(UUID.fromString(mmUUID));
                SocketConf.connect();

            } catch (Exception e) {
            }
            return SocketConf;
        }

        @Override

        protected void onPostExecute(BluetoothSocket result) {

            BluetoothSocket = result;
            BluetoothDevice d = BluetoothSocket.getRemoteDevice();
            log = log + "\n" + "log";
            log = " Conectado !!!" + "\n" + "\n" +
                    " Direccion : " + d.getAddress() + "\n" +
                    " Nombre    : " + d.getName() + "\n";
           txtlog.setText(log);
           hiloA.start();
           img.setImageBitmap(on);

            Toast.makeText(getApplicationContext(), "CONECTADO", Toast.LENGTH_LONG).show();
        }
    }

    // hilo encargado de recibir los mensajes desde arduino
    class HiloCliente extends Thread {

        public void run() {
            InputStream input;

                try {
                    sleep(500);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                try {
                    // si esta conectado sigue
                        if(BluetoothSocket.isConnected()){
                        if(BluetoothSocket == null)System.out.println("El Socket no tiene contenido");
                        //PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(BluetoothSocket.getOutputStream())),true);
                            // Se toma la entrada desde el socket y se pasa a un BufferedReader donde posteriormente la extraeremos
                            BufferedReader  Entrada = new BufferedReader(new InputStreamReader(BluetoothSocket.getInputStream()));

                    // ciclo infinito
                        while(true){
                            // variable a la que se le dara el valor de cada dato recibido desde el arduino
                          final String  Respuesta = Entrada.readLine();
                            System.out.println(Respuesta);

                            runOnUiThread(new Runnable() {
                                @Override
                                public void run() {
                                    // se editan los datos vistos por el usuario
                                txtdata.setText(Respuesta + "%"+"\n"+" De Humedad" );
                                    barraHumedad.setProgress(Integer.parseInt(Respuesta));
                          }
                       });
                      }
                    }
                } catch (IOException e) {
                    System.out.println("IOException Fallo en el el hilo Cliente");
                }
            }
        }
    }



activivity_main.xml

Código: php
<?xml version="1.0" encoding="utf-8"?>


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.rreedd.rreeddarduino01.MainActivity"
    android:background="#db020202">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/imageView3"
        android:layout_gravity="center_horizontal|bottom"
        android:src="@drawable/logo_underc0de"
        android:layout_alignParentBottom="true"
        android:layout_alignParentStart="true" />


    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="Log"
        android:id="@+id/txtLog"
        android:layout_gravity="bottom"
        android:background="@drawable/log"
        android:textColor="#40d92e"
        android:textSize="15dp"
        android:layout_alignParentStart="true"
        android:layout_alignEnd="@+id/imageView3"
        android:layout_above="@+id/imageView3"
        android:textStyle="normal"
        android:layout_alignTop="@+id/textView" />

    <ScrollView
        android:layout_width="wrap_content"
        android:layout_height="60dp"
        android:id="@+id/scrollView2"
        android:background="@drawable/log"
        android:layout_alignParentTop="true"
        android:layout_alignParentEnd="true"
        android:layout_toEndOf="@+id/textView5"
        android:layout_alignStart="@+id/imageView4">

        <ListView
            android:id="@android:id/list"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            android:layout_above="@+id/imageView"
            android:textSize="15dp"
            android:layout_below="@+id/btToggle"
            android:textAlignment="center">

        </ListView>
    </ScrollView>

    <ImageView
        android:layout_width="20dp"
        android:layout_height="20dp"
        android:id="@+id/imageView2"
        android:src="@drawable/off"
        android:layout_alignParentTop="true"
        android:layout_toStartOf="@+id/scrollView2" />

    <ImageView
        android:layout_width="70dp"
        android:layout_height="100dp"
        android:id="@+id/imageView4"
        android:src="@drawable/humedad"
        android:layout_gravity="center"
        android:layout_marginTop="37dp"
        android:layout_below="@+id/scrollView2"
        android:layout_centerHorizontal="true" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:id="@+id/textView"
        android:layout_marginBottom="68dp"
        android:layout_above="@+id/imageView3"
        android:layout_alignParentEnd="true" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="Sin Datos"
        android:id="@+id/txtDatos"
        android:textColor="#19aace"
        android:textSize="25dp"
        android:textAlignment="center"
        android:textStyle="bold"
        android:gravity="center_horizontal"
        android:layout_gravity="center"
        android:layout_below="@+id/imageView4"
        android:layout_centerHorizontal="true" />

    <ProgressBar
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/barraHumedad"
        android:background="#404040"
        android:layout_above="@+id/txtLog"
        android:layout_alignParentEnd="true"
        android:layout_marginBottom="34dp"
        android:max="100"
        android:indeterminate="false" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:text="Muy Bajo"
        android:id="@+id/textView2"
        android:textColor="#c8db232f"
        android:textSize="18dp"
        android:layout_above="@+id/barraHumedad"
        android:layout_alignParentStart="true" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:text="Medio"
        android:id="@+id/textView4"
        android:textColor="#c5dbd523"
        android:textSize="18dp"
        android:layout_alignTop="@+id/textView5"
        android:layout_centerHorizontal="true" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:text="Alto (Charco)"
        android:id="@+id/textView5"
        android:textColor="#c100ff11"
        android:textSize="18dp"
        android:layout_above="@+id/barraHumedad"
        android:layout_alignEnd="@+id/barraHumedad" />

    <Button
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:id="@+id/button"
        android:background="@drawable/recargar"
        android:layout_alignParentTop="true"
        android:layout_alignParentStart="true" />


</RelativeLayout>



AndroidManifest.xml

Código: php
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.rreedd.rreeddarduino01"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="18"
        android:targetSdkVersion="23" />

    <uses-permission android:name="android.permission.BLUETOOTH" />
    <uses-permission android:name="android.permission.BLUETOOTH_PRIVILEGED" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/humedad"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.rreedd.rreeddarduino01.MainActivity"
            android:label="@string/app_name"
            android:screenOrientation="portrait" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>



String.xml

Código: php
<resources>
    <string name="app_name">Arduino-Android</string>
    <string name="DesactivarBluetooth">Desactivar el Bluetooth</string>
    <string name="ActivarBluetooth">Activar el Bluetooth</string>
    <string name="sinConexion">No Conectado</string>
    <string name="title_activity_main2">Main2Activity</string>

</resources>



Esquemático




Terminado







Descargar Versión PDF
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Enlace al proyecto
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta



Cualquier consulta por favor coméntala

Saludos desde Chile
#71
rreeddHola Compañeros !!

Yo comencé parecido a todos, primero queriendo ser hacker  ;D, asi fue como encontre las "WARZONE" jugué en varias pero en la que mas tiempo pase fue en No tienes permitido ver los links. Registrarse o Entrar a mi cuenta y dado el tiempo buscando mas información y nuevos métodos me tope con No tienes permitido ver los links. Registrarse o Entrar a mi cuenta y esta comunidad me pareció simplemente genial.

rreedd
Saludos desde Chile
#72
Hola !!

Podrías sacarle las tarjetas ram, no lo romperías pero sin ellas no podrá arrancar y parecerá roto.
pero siempre esta la opcion del horno de @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta;D ;D
#73
Hola !!
muy bueno su post compañero @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta  :D
#74
Off Topic / Re:[PELICULA HACKER] Algoritmo
Abril 06, 2016, 12:02:11 PM
Descargando ...
Gracias @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta.
#75
Hola Compañero !!
Yo en mi opinión personal te recomendaría java por que me parece mas simple(fue el primer lenguaje en el programe  ;D), pero consume mas recursos que python.


Saludos desde Chile.
#76
 Hola a todos !!
Es solo cosa mía o aquí ahí gato encerrado, es raro que no sepa la clave de su GMAIL, ni la de el correo de recuperación y ademas su teléfono con el cual podría entrar esta bloqueado.
No se si es que yo soy muy paranoico o aquí se dieron muchas coincidencias juntas   ;D

rreedd.
Saludos desde Chile
#77
RREEDD
Hola a todos!!!!

Soy el nuevo moderador de Electrónica y Robótica.  ;D
Mi intención es poder obtener sus opiniones para que juntos adaptemos esta sección haciéndola mas amigable con el fin de aprender entre todos y que compartamos nuestros conocimientos, aportes e inventos de forma mas cercana y sencilla para que podamos llegar a toda la comunidad.

(Así como va el foro me parece genial pero nunca esta demás saber como están los ánimos)


La imagen es para que no se vea tan formal jajjaja

Por favor si tienes alguna consulta o sugerencia solo comenta.
#78
Hola Compañeros !!
Quiero crear una aplicación tipo WhatsApp pero que se conecte sin Internet, mi idea es que se comuniquen solo usando la conexión de las redes WiFi de cada dispositivo.
No logro encontrar un ejemplo entendible para crear una conexión WiFi Direct y utilizarla, he encontrado alguno que otro código pero todos esta sin un solo comentario sobre la programación.
Así que recurro a ustedes si es que alguien tiene un ejemplo o algún aporte que me pueda ayudar a establecer la conexión se lo agradecería mucho.

PD: Se que existen aplicaciones así en el mercado, pero yo quiero crear la mía con el fin de aprender mas sobre Android.

Saludos desde Chile
#79
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Me encantó bro!!! tienes mas proyectos hechos con arduino?

saludos!
ANTRAX

Si compañero @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta tengo muchos mas  ;D , así que pronto esta haciendo mas post.
#80
RREEDD
Hola!!

El otro día estaba jugando con mi auto hecho con Arduino y un familiar que trabaja en gasfiteria me dijo que necesitaba un detector de fugas de gas (para poder encontrar las fugas en las mangueras) y si le podría hacer uno así que me puse manos a la obra gane  un poco de dinero y antes de entregarlo se los presento para que puedan construir el suyo
(disculpen si no se ve muy perfecto las terminaciones pero el armazon lo hice con cartón piedra)

::: MATERIALES :::


  • 1x modulo metector de gas MQ-2 (detector de gas propano butano y gases inflamables)

  • 1x LCD 19x2 (I2C)
  • 1x Arduino nano
  • 1x Zumbador (piezoeléctrico)
  • 1x interruptor pequeño
  • 1x Porta batería 


Bueno el funcionamiento de el detector es bastante simple, se toma el valor obtenido desde el sensor y si encuentra una fuga emite un sonido para alertar.

Una ves consigamos los materiales solo nos queda armarlo  ;) , la explicación de la conexión la puse en el código el cual dejo a continuación.


Código: php
// Proyecto_SensorDeGas_0.1.ino



#include <Wire.h>                 
#include <LiquidCrystal_I2C.h>    // Libreria que controla la pantalla LCD
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // Inicializa el LCD
const int gasPin = A0;
const int pinPiezo  = 6;    // pin de conexion del Piezoelectrico

/*

                    Codigo by RREEDD

Para descargar la libreria  LiquidCrystal_I2C.h.

https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads/LiquidCrystal_V1.2.1.zip

             
                    _________________
                    |d13         D12|
                    |3v3         D11|
                    |REF         D10|     
        AD(sensor)  |A0   Arduino D9|
                    |A1    NANO   D8|
                    |A2           D7|
                    |A3           D6| Pin VCC del zumbador
         SDA (lcd)  |A4           D5|
         SCL (lcd)  |A5           D4|
                    |A6           D3|
                    |A7           D2|
         VCC (lcd)  |5v          GND| GND (lcd,sensor,zumbador)
                    |RST         RST|
     GND (bateria)  |GND          TR|
     VCC (bateria)  |VIN          TX|
                    |_______________|       
*/
void setup()   {
  pinMode(pinPiezo, OUTPUT);   // declaramos el pin del piezo de salida
           
lcd.begin(16,2);      // Se introduce el tamaño de nuestro LCD 
Serial.begin(9600);  // Establecemos la comunicación Serial a 9600 baud

}
void loop() {
   
lcd.clear();                                  // Limpia la pantalla
lcd.setCursor(0,0);                          // Establece la ubicación en el lcd       
lcd.print("NIVEL DE GAS");                  // mensaje por lcd
lcd.setCursor(1,1);                        // Establece la ubicación en el lcd
Serial.println(analogRead(gasPin));       // mensaje por serial, para poder calibrar nuestro sensor       
principal();                             // llama a la función que comparara los valores recibidos desde el sensor
delay (700);                            // establece una espera en el codigo

}

void tono(int frecuencia){
                                                //se emitirá un sonido con la frecuencia introducida
for( int i=0; i<500; i++ ) {               
digitalWrite(pinPiezo, HIGH);
delayMicroseconds(frecuencia);
digitalWrite(pinPiezo, LOW);
delayMicroseconds(frecuencia);     

}

}

void principal(){
if(analogRead(gasPin) <= 390){
lcd.setCursor(0,1);                               // Establece la ubicación                               
lcd.print("#");                                  // mensaje por lcd, para mostrar el nivel de gas detectado
}else
if(analogRead(gasPin) <= 400){
lcd.setCursor(0,1);                               // Establece la ubicación                           
lcd.print("##");                                 // mensaje por lcd, para mostrar el nivel de gas detectado
}else
if(analogRead(gasPin) <= 500){
lcd.setCursor(0,1);                               // Establece la ubicación                             
lcd.print("###");                                // mensaje por lcd, para mostrar el nivel de gas detectado
}else
if(analogRead(gasPin) <= 600){
lcd.setCursor(0,1);                               // Establece la ubicación                               
lcd.print("####");                               // mensaje por lcd, para mostrar el nivel de gas detectado 
}else
if(analogRead(gasPin) <= 700){
lcd.setCursor(0,1);                               // Establece la ubicación                                 
lcd.print("#####");                              // mensaje por lcd, para mostrar el nivel de gas detectado
}else
if(analogRead(gasPin) <= 750){
lcd.setCursor(0,1);                               // Establece la ubicación                           
lcd.print("######");                             // mensaje por lcd, para mostrar el nivel de gas detectado   
}else
if(analogRead(gasPin) <= 790){
lcd.setCursor(0,1);                               // Establece la ubicación                                 
lcd.print("#######");                            // mensaje por lcd, para mostrar el nivel de gas detectado   
}else
if(analogRead(gasPin) <= 800){
lcd.setCursor(0,1);                               // Establece la ubicación                         
lcd.print("#########");                          // mensaje por lcd, para mostrar el nivel de gas detectado   
}else
if(analogRead(gasPin) <= 850){
lcd.setCursor(0,1);                               // Establece la ubicación                                 
lcd.print("##########");                         // mensaje por lcd, para mostrar el nivel de gas detectado   
}else
if(analogRead(gasPin) <= 890){
lcd.setCursor(0,1);                               // Establece la ubicación                               
lcd.print("##########");                         // mensaje por lcd, para mostrar el nivel de gas detectado   
}else
if(analogRead(gasPin) <= 900){
lcd.setCursor(0,1);                               // Establece la ubicación                                 
lcd.print("##########");                         // mensaje por lcd, para mostrar el nivel de gas detectado   
delay (1000);
}else
if(analogRead(gasPin) <= 920){
lcd.setCursor(0,1);                               // Establece la ubicación                               
lcd.print("###########");                        // mensaje por lcd, para mostrar el nivel de gas detectado   
tono(500);                                     // emite una alerta sonora
}else
if(analogRead(gasPin) <= 950){
lcd.setCursor(0,1);                               // Establece la ubicación                               
lcd.print("############");                       // mensaje por lcd, para mostrar el nivel de gas detectado   
tono(400);                                     // emite una alerta sonora
}else
if(analogRead(gasPin) <= 960){
lcd.setCursor(0,1);                               // Establece la ubicación                                 
lcd.print("#############");                      // mensaje por lcd, para mostrar el nivel de gas detectado   
tono(300);                                     // emite una alerta sonora
}else
if(analogRead(gasPin) >= 970){
lcd.setCursor(0,1);                               // Establece la ubicación                                   
lcd.print("##############");                     // mensaje por lcd, para mostrar el nivel de gas detectado
tono(200);                                     // emite una alerta sonora
}
}



Armazon




Armado 




Terminado




Funcionamiento




El detector ya esta probado y funcionando a un 100%.

Cualquier duda sobre el proyecto o si quieres hacer una sugerencia solo comenta.


Saludos desde Chile