iCisterna, la App para dispositivos iOS más curiosa


Hola a tod@s,

Hoy os traigo una App creada por mi mismo (0xDA_bit). Sé lo que pensaréis tras finalizar la lectura del post y visualización del video pero NO, todavía no estoy loco! jejejejeje

Os pongo en situación, hace unos meses realicé dos cursos con el gran Fernando Rodríguez (@frr149), uno de los mayores cracks del mundo iOS en España y fuera de ella. Son cursos muy intensivos y 1000 por 1000 recomendados, el que esté interesado puede buscar aquí más información.

Uno de los días, en la sobremesa de la comida, iniciamos una conversación que acabo desvariando, y mucho, en la cual salió la idea de automatizar el retrete para que de esta forma pudieses ver en el teléfono si te habías dejado la tapa abierta y de esta forma evitar una futura pelea con tu mujer (Ya se sabe, no sé si es algo genético en la mujer pero esto les molesta mucho! jejjejeje). Así que sin más, le prometí que la primera App que hiciese sería esta y hoy tengo el placer de presentarla en sociedad, a pesar de lo cutre que pueda llegar a ser… no me lo tengáis en cuenta, es mi primera App y no soy diseñador gráfico!

Sin más, a continuación os dejo con el video.

Enjoy!

Arduino GSM Shield y David Cuartielles


Debido a la presentación del Arduino GSM Shield, el cofundador y creador de Arduino David Cuartielles, ha llevado a cabo este gran videotutorial de como empezar a utilizar este gran shield.

En el video podemos ver dos ejemplos muy útiles para poder empezar a trabajar con el GSM Shield.

Sin más, os adjunto el video.

Enjoy!

RaspberryPi Tutorials. Cap 3


Muy buenas a todos otra vez. Hoy os traigo calentito el  3er capítulo de la serie “RaspberryPi Tutorials”.

En este nuevo episodio tratamos el ecosistema entre dos de los más importantes dispositivos del mundo Open Source como son RaspberryPi y Arduino. Vamos a llevar a cabo una comunicación serie entre ambos dispositivos, veremos que archivos debemos modificar en RaspberryPi para que esto sea posible, como solventar un punto de conflicto como son los niveles de tensión y todo esto lo hacemos como siempre, seguido de varios ejemplos y un pequeño documento que podéis descargar desde aquí.

Sin más os dejo el video y espero vuestros comentarios!!

Enjoy!

RaspberryPi tutorials. Cap2.


Hola a tod@s de nuevo, hoy añadimos un nuevo capítulo más a la serie de videotutoriales “RaspberryPi tutorials”.
Hoy os presento el capítulo 2, en el cual se intenta captar la atención de todos aquellos que quieran trabajar con su RaspberryPi como si fuese un Arduino. En este video os muestro como podéis instalaros las librerías wiringPi, las cuales nos permiten programar nuestra RaspberryPi como si fuese un Arduino.
Sin más, aquí os dejo el link de descarga de los archivos relacionados con el tutorial y como no, el viedeo. Enjoy!

RaspberryPi tutorials. Cap1


Hola a tod@s, en esta nueva entrada os quiero presentar, así como inaugurar, está nueva serie de videtutoriales “RaspberryPi tutorials”, en la que, al igual que en “Arduino tutorials” y “Processing tutorials”, nos introduciremos en el mundo del minipc por excelencia del mundo Open Source.

En este video os explico como grabar la tarjeta SD, como realizar las primeras configuraciones y como habilitar las SSH para poder trabajar con un escritorio remoto desde nuestro ordenador habitual, cosa que es más práctica (al menos desde mi punto de vista).

Sin más, aquí os dejo el link con los archivos enlazados al videotutorial y por supuesto el video. Enjoy!

Sensor DHT11 (Humedad y Temperatura) con Arduino


En esta nueva entrada vamos a ver como hacer funcionar este sensor DHT11 que nos va a servir para medir tanto la humedad relativa como la temperatura. Lo malo de este sensor es que solo nos va a dar medidas enteras, es decir sin decimales, ya que la resolución que presenta es de 1% para la humedad relativa y de 1ºC para la temperatura. Pero compensa ya que presenta un valor muy económico para pequeños proyectos y que nos permite obtener medidas tanto para humedad como para temperatura.

DHT11_Pins

Este sensor se caracteriza por tener la señal digital calibrada por lo que asegura una alta calidad y una fiabilidad a lo largo del tiempo, ya que contiene un microcontrolador de 8 bits integrado. Está constituido por dos sensores resistivos (NTC y humedad). Tiene una excelente calidad y una respuesta rápida en las medidas.Puede medir la humedad entre el rango 20% – aprox. 95% y la temperatura entre el rango 0ºC – 50ºC.

Cada sensor DHT11 está estrictamente calibrado en laboratorio, presentando una extrema precisión en la calibración. Los coeficientes de calibración se almacenan como programas en la memoria OTP, que son empleados por el proceso de detección de señal interna del sensor.

El protocolo de comunicación es a través de un único hilo (protocolo 1-wire), por lo tanto hace que la integración de este sensor en nuestros proyectos sea rápida y sencilla. Además presenta un tamaño reducido, un bajo consumo y la capacidad de transmitir la señal hasta 20 metros de distancia.

Os dejo las características de dicho sensor:

caracteristicas

Aquí podéis descargar los archivos de esta entrada (un pdf explicativo, esquema fritzing, sketchs arduino): http://www.mediafire.com/?vvofjfvuu6fttf4

Os pongo el esquema para la conexión del sensor a Arduino (sensor solo sin módulo):

Esquema fritzing dht11

Yo he usado un módulo que adquirí a un precio muy económico y que me ahorra estar poniendo la resistencia de pull-up. Os pongo una imagen del módulo:

3689624d-66bf-48ac-9865-4b42952c227d

Ahora os pongo dos tipos de programa para arduino, uno que no emplea librería para la programación del sensor (programación a través de funciones) y otro que si emplea una librería hecha por ladyada y que va adjunta en los archivos indicados arriba.

Programa sin librería:

//Programa test para sensor DHT11 de humedad y temperatura
//cleaned by sucotronic
//Modificado por Regata para tallerarduino.wordpress.com


#define DHTPIN 2 // Indicamos el pin del arduino donde conectamos el sensor

byte bGlobalErr;  //para pasar el codigo de error de vuelta de las funciones
byte DHTDAT[5];  //Array para almacenar los bytes enviados por el sensor
int maxh=0,minh=100,maxt=0,mint=100,t,h; //variables para ir guardando las maximas de
// humedad y temperatura y las minimas de humedad y temperatura

void setup()
{
  InitDHT();  // Inicializamos el pin empleado para leer el sensor
  Serial.begin(9600);  //Iniciamos comunicacion serie con el pc para ver los datos leidos
  Serial.println("Test sensor DHT11:");
  delay(1000);  //Este delay es para esperar el tiempo recomendado para acceder al sensor (1 segundo) 
}

void loop()
{
  ReadDHT(); // Leemos el sensor y almacenamos el resultados en variables globales
  switch (bGlobalErr)
  {
     case 0:
        //Como en este sensor la humedad y la temperatura no nos sale con decimales, 
        //podemos desechar los bytes 1 y 3 de la lectura del sensor
        h=DHTDAT[0];
        t=DHTDAT[2];
	Serial.print("Humedad relativa: ");
	Serial.print(h);
	Serial.print(" %\t");
	Serial.print("Temperatura: ");
	Serial.print(t);
	Serial.println("*C");
        //Comprobacion de maximos y minimos de humedad y temperatura
        if (maxh<h)
          maxh=h;
        if (h<minh)
          minh=h;
        if (maxt<t)
          maxt=t;
        if (t<mint)
          mint=t;
        Serial.print("Max: ");
        Serial.print(maxh);
        Serial.print(" % ");
        Serial.print("Min: ");
        Serial.print(minh);
        Serial.print(" %\t");
        Serial.print("Max: ");
        Serial.print(maxt);
        Serial.print(" *C ");
        Serial.print("Min: ");
        Serial.print(mint);
        Serial.println(" *C\n");
        break;
     case 1:
        Serial.println("Error 1: Condicion de start 1 no conocida.");
        break;
     case 2:
        Serial.println("Error 2: Condicion de start 2 no conocida.");
        break;
     case 3:
        Serial.println("Error 3: DHT checksum error.");
        break;
     default:
        Serial.println("Error: Encontrado codigo irreconocible.");
        break;
  }
  delay(1000);// Esperamos 1 segundo para la siguiente lectura
}


// Initilize pin for reading
void InitDHT(){
        pinMode(DHTPIN,OUTPUT);
        digitalWrite(DHTPIN,HIGH);
}

void ReadDHT(){
  bGlobalErr=0;
  byte dht_in;
  byte i;
  // Enviamos el comando "start read and report" al sensor
  // Primero: ponemos a "0" el pin durante 18ms
  digitalWrite(DHTPIN,LOW);
  delay(18);
  delay(5);//TKB, frm Quine at Arduino forum
  //Segundo: ponemos a "1" el pin durante 40us,enviamos el comando de "start read" al sensor
  digitalWrite(DHTPIN,HIGH);
  delayMicroseconds(40);
  //Tercero: Cambiamos el pin de Arduino a entrada de datos
  pinMode(DHTPIN,INPUT);
  delayMicroseconds(40); //Esperamos 40 us
  dht_in=digitalRead(DHTPIN);
  //si hay un 1 en la lectura del pin, indicamos que hay error de tipo 1
  if(dht_in)
  {
    bGlobalErr=1;
    return;
  }
  delayMicroseconds(80); //Esperamos 80us
  dht_in=digitalRead(DHTPIN); 
  //si no hay un 1 en la lectura del pin, indicamos que hay error de tipo 2
  if(!dht_in){
    bGlobalErr=2;
    return;
  }
  /*Despues de 40us a nivel bajo, el pin deberia de estar durante 80us a nivel alto.
  Despues de esto comienza el envio del primer bit hasta alcanzar los 40 bits enviados.
  The routine "read_dht_dat()" expects to be called with the system already into this low.*/
  delayMicroseconds(80); //Esperamos 80us
  //Ahora comienza la recepcion de datos, son 5 bytes de datos, es decir 40 bits, almacenamos en un array de 5 bytes
  for (i=0; i<5; i++)
    DHTDAT[i] = read_dht_dat();
  //Cuarto: Volvemos a configurar el pin del arduino como salida
  pinMode(DHTPIN,OUTPUT);
  //Quinto:Ponemos a "1" el pin de salida
  digitalWrite(DHTPIN,HIGH);
  //Comprobamos si los datos recibidos coinciden con el checksum recibido
  byte DHTCHECKSUM = DHTDAT[0]+DHTDAT[1]+DHTDAT[2]+DHTDAT[3];
  //Si no coincide el byte recibido de checksum con la suma de los 4 primeros bytes enviamos error tipo 3
  if(DHTDAT[4]!= DHTCHECKSUM)
    bGlobalErr=3;
  };

byte read_dht_dat()
{
  //Cogemos 8 de los bits recibidos y los devolvemos como un byte.
  //Si por ejemplo recibimos 00000100 , devolvemos en decimal 4
  byte i = 0;
  byte result=0;
  for(i=0; i< 8; i++)
  {
    //Entramos mientras dura el primer bit de start (a nivel bajo durante 50us) del byte
    //Esperamos hasta que el pin se pone a nivel alto señalizando fin del la transmision del bit de start
    while(digitalRead(DHTPIN)==LOW);
    //La linea de datos debera estar ahora a nivel alto durante 27 o 70us, 
    //dependiendo si un "0" o un "1" esta siendo enviado respectivamente
    delayMicroseconds(30);  //Esperamos 30 us
    if (digitalRead(DHTPIN)==HIGH)
      result |=(1<<(7-i));  //Si despues de los 30us el pin permanece a "1" añadimos un 1 al byte, sino queda un "0" 
    //Esperamos hasta que el pin se vuelve a poner a nivel bajo,
    // el cual indica la señal de start del siguiente bit de la transmision
    while (digitalRead(DHTPIN)==HIGH);
  }
  return result; //devolvemos el resultado
}

Y este es el programa con librería:

// Sketch de ejemplo para testear el famoso sensor DHT de humedad y temperatura
// Escrito por ladyada, de dominio público
// Modificado por Regata para www.tallerarduino.wordpress.com

#include "DHT.h"  //Añadimos la libreria con la cual trabaja nuestro sensor

#define DHTPIN 2     // Indicamos el pin donde conectaremos la patilla data de nuestro sensor

// Descomenta el tipo de sensor que vas a emplear. En este caso usamos el DHT11
#define DHTTYPE DHT11   // DHT 11 
//#define DHTTYPE DHT22   // DHT 22  (AM2302)
//#define DHTTYPE DHT21   // DHT 21 (AM2301)

// Conecta el pin 1 (el de la izquierda) del sensor a +5V
// Conecta el pin 2 del sensor al pin que has elegido para DHTPIN
// Conecta el pin 4 (el de la derecha) del sensor a GROUND
// Conecta una resistencia de 10K del pin 2 (data) al pin 1 (+5V) del sensor

DHT dht(DHTPIN, DHTTYPE);  //Indica el pin con el que trabajamos y el tipo de sensor
int maxh=0, minh=100, maxt=0, mint=100;  //Variables para ir comprobando maximos y minimos

void setup() 
{
  //Inicio comunicacion serie para ver los datos en el ordenador
  Serial.begin(9600); 
  //Mensaje de inicio
  Serial.println("Comprobacion sensor DHTxx:");
  //Iniciamos el sensor
  dht.begin();
}

void loop() 
{
  // La lectura de la temperatura o de la humedad lleva sobre 250 milisegundos  
  // La lectura del sensor tambien puede estar sobre los 2 segundos (es un sensor muy lento)
  int h = dht.readHumidity();  //Guarda la lectura de la humedad en la variable float h
  int t = dht.readTemperature();  //Guarda la lectura de la temperatura en la variable float t

  // Comprobamos si lo que devuelve el sensor es valido, si no son numeros algo esta fallando
  if (isnan(t) || isnan(h)) // funcion que comprueba si son numeros las variables indicadas 
  {
    Serial.println("Fallo al leer del sensor DHT"); //Mostramos mensaje de fallo si no son numeros
  } else {
    //Mostramos mensaje con valores actuales de humedad y temperatura, asi como maximos y minimos de cada uno de ellos
    Serial.print("Humedad relativa: "); 
    Serial.print(h);
    Serial.print(" %\t");
    Serial.print("Temperatura: "); 
    Serial.print(t);
    Serial.println(" *C");
    //Comprobacion de maximos y minimos de humedad y temperatura
    if (maxh<h)
      maxh=h;
    if (h<minh)
      minh=h;
    if (maxt<t)
      maxt=t;
    if (t<mint)
      mint=t;
    Serial.print("Max: ");
    Serial.print(maxh);
    Serial.print(" % ");
    Serial.print("Min: ");
    Serial.print(minh);
    Serial.print(" %\t");
    Serial.print("Max: ");
    Serial.print(maxt);
    Serial.print(" *C ");
    Serial.print("Min: ");
    Serial.print(mint);
    Serial.println(" *C\n");
  }
  delay(1000);
}

La salida que obtenemos a través de la consola serie del IDE de Arduino es la misma para ambos códigos, os dejo una imagen:

Medicion sensor dht11

Espero que os sirva de ayuda para vuestros proyectos!! Felices fiestas a todos!!

Si te ha servido de ayuda esta entrada, puedes realizar un donativo para agradecer el tiempo que dedico al blog y ayudar a hacer más entradas.

donativo_paypal

Nueva placa Arduino: Arduino Esplora


arduino esplora delantera

Los chicos de Arduino nos traen una nueva placa: la Arduino Esplora, la cual viene con un procesador Atmega32U4, como el de la placa Arduino Leonardo, y que además trae incorporados varios sensores y actuadores en ella. También presenta un diseño un tanto especial, que puede recordar al de un mando de videoconsola. En la siguiente imagen podéis ver todos los sensores y actuadores de los que dispone:

arduino esplora

Aquí más información: Arduino Esplora

Si te ha servido de ayuda esta entrada, puedes realizar un donativo para agradecer el tiempo que dedico al blog y ayudar a hacer más entradas.

donativo_paypal

Arduino y Pinguino PIC en particular Electrónica en general

A %d blogueros les gusta esto: