sábado, 31 de octubre de 2015

Tutorial: Aprender a usar la pantalla LCD del Nokia 5110 con Arduino


Bienvenido a un nuevo tutorial de Lunegate, hoy vamos a rehacer un tutorial antiguo, y vamos a mejorarlo para que los usuarios puedan usar la pantalla LCD de un Nokia 5110, de una forma muy sencilla a través de librerías.


INTRODUCCIÓN

Muchos conocemos las antiguas pantallas LCD del Nokia 5110, no tienen mucha definición, pero para proyectos que requieran mostrar información al usuario son idóneas por su calidad y precio.

Para este tutorial es importante que sepáis incluir librerias de Arduino en C++, y si no sabes como hacerlo, te añado el link al tutorial, que es realmente sencillo.

La pantalla cuenta con una revolución de 84x84 pixeles, cada carácter ocupa apoximadamente 5x7 pixeles. Lo que te permite unos 14 caracteres por línea y en altura entrarían aproximadamente 6 lineas de caracteres.

Las dimensiones de esta pantalla son 4.5 cm x 4.5 cm x 1.3 cm y un peso de 41 g.
Esta trabaja a 3.3v, así que mucho cuidado con eso y para los leds de la pantalla habrá que usar una resistencia de 1 Kohms, +/-5% (se explica más detenidamente en el montaje).
Y su precio ronda los 4'5€.

Por último, os adjunto el Data Sheet de la pantalla (fabricada por Philips)

Para este tutorial, se requerirá
Dificultad:

           Tiempo:  25 minutos (montarlo y programarlo)


MATERIAL NECESARIO

A continuación os describo el material necesario para realizar el tutorial y donde conseguirlo:

Imagen
Nombre producto
Donde comprarlo
LCD Nokia 5110
Arduino Micro
Conectores universales
Resistencia 1 Kohms, +/-5%
Cualquier tienda de electrónica


MONTAJE

Bien una vez que disponemos de todos los componentes, vamos a ponernos manos a la obra. Para ello os dejo a continuación un esquemático de como debéis interconectar los diferentes componentes para que esto funcione.


Tenemos 8 pines que nacen de nuestro LCD, de los 8 el que hay que tener cuidado es el que pone LIGHT o LED (según el fabricante). A este pin habrá que conectarle una resistencia de 1 Kohms, +/-5% (Código de color: Marrón-Negro-Rojo-Dorado).

Otro punto a tener en cuenta es que según el fabricante, cambia un poco el orden de los pines, así que según que placa os encontrareis desordenado esto. Si veis que no os cuadra con el mapeo de pines que uso yo, no os preocupeis, simplemente, poned los pines del 2 al 7 y el tenga el del led le ponéis la resistencia y luego en la parte de programación os digo como solucionarlo.

Mapeo de Pines:
Número de entrada digital 2 3 4 5 6 VCC 7 GND
Nombre pin LCD RST CE DC DIN CLK VCC (3,3v) LIGHT GND


PROGRAMACIÓN

LIBRERÍA: Bitbucket - lcd-nokia-5110
LIBRERÍA: DropBox - lcd-nokia-5110

Una vez montado todo correctamente (verificar las conexiones que eso trae mucho de cabeza). Conectamos nuestro Arduino a el ordenador y añadimos el código que os pongo a continuación:

#include <LCD.h>

LCD lcd;

void setup()
{

}

void loop()
{
     lcd.drawBox();  // Dibujar marcos
     lcd.printText(15,1,"Lunegate");
     lcd.scroll(1,3,"Ejemplo de los tutoriales de www.lunegate.net");
     lcd.led(0);  // LCDS encendidos
     delay(500);
}


Si los pines os han coincidido con los mios, simplemente instanciáis la clase LCD y ya esta.

Esta clase contiene otras 3 sobrecargas de constructor.
1) LCD(int PIN_RESET, int PIN_SCE, int PIN_DC, int PIN_SDIN, int PIN_SCLK, int PIN_LCD);
2) LCD(byte contrast);
3) LCD(byte contrast, int PIN_RESET, int PIN_SCE, int PIN_DC, int PIN_SDIN, int PIN_SCLK, int PIN_LCD);
La primera sobrecarga es para el caso en el que no os coincidan los pines que están marcados por defecto en la librería. Simplemente marcáis en el orden descrito arriba el pin que deseáis.
La segunda sobrecarga es para teniendo los mismos pines, si queréis cambiar el contraste de la pantalla. Esto se define en bytes. Actualmente la que he puesto por defecto es:0xA7 . Si queréis que sea más oscuro pones 0xA8..0xA9 ...0xB1...0xB8...
La última sobrecarga es para usar vuestros propios pines y controlar el contraste.

Código de las opciones de los constructores:
#include <LCD.h>

LCD lcd(1,4,5,7,8,12);
LCD lcd(0xB8);
LCD lcd(0xB8,1,4,5,7,8,12);

void setup()
...


Por último para finalizar la parte de programación, os dejo los métodos que contiene la librería:
        /**
         * x - Rango: 0 a 5
         * y - Rango: 0 a 75
         */
        void printText(int x, int y, char *characters);
        void scroll(int x, int y,String message);
        /**
         * Light =   Led display
         * light = 0 (Mucha luz)
         * light = 10000 (Apagado)
         */
        void led(int light); 
        void drawBox();

PUNTUACIÓN

Calidad Componentes
4,5
Montaje
4,5
Precio
4'0
Características
3'5
Puntuación Global
4


Se echa de menos un poco mas de resolución y los leds de la pantalla no iluminan demasiado (sobretodo por que son azules)



Actuadores Arduino Nokia 5110 Tutoriales

domingo, 25 de octubre de 2015

Tutorial: Aprender a usar librerias de C++ en Arduino.


Bienvenido a un nuevo tutorial de Lunegate, hoy vamos a explicar paso a paso como desarrollar librerías de C++ en Arduino.


INTRODUCCIÓN

Según se programa y avanzas en programas mas complicados, nos damos cuenta que hay mucho código que debería estar en clases en las que simplemente llamemos y nos desentendamos de este código.

Para ello tienes varios sistemas, uno por ejemplo es dividir nuestro código de Arduino en varios archivos .ino, lo cual es muy aconsejable y otro es cuando tenemos algo que se va a repetir y esta claramente muy focalizado, meterlo a una librería de C++.
Por ejemplo, si tenemos un sensor de ultrasonidos, no vamos a estar leyendo de la entrada analógica y hacer una serie de comprobaciones para saber si estar muy cerca o no. O un ejemplo mas claro, una pantalla LCD que requiere un tratamiento muy extenso para pintar por pantalla. Tenerlo dentro de una librería anudaría muchisimo, limpiaría nuestro código y lo haría mas reutilizable.

PASOS A SEGUIR

Primero tenemos que localizar la carpeta donde están todas las librerías. Para ellos abriremos el Id de Arduino e iremos a la pestaña de Archivo->Preferencias, ahí cogeremos la url de "Ubiciación del Sketchbook" y la pegaremos en nuestro directorio de carpetas. Allí encontrareis una carpeta llamada libraries (Si no existe la creáis).

Segundo, dentro de esa carpeta están todas las librerías a vuestra disposición. Si queréis crear una nueva, es tan sencillo como crear una carpeta y dentro crear 2 archivos, uno .cpp y otro .h (Importante el nombre de la carpeta llamado igual que el nombre de los archivos). Para el tema de nomenclatura, por lo que he visto que se usa es la clase con la primera letra en mayúsculas.

Ejemplo.cpp y Ejemplo.h

Yo personalmente para programar las librerías (que no las suelo complicar mucho) uso el Notepad++, pero vamos usad el IDE que mas os guste.

El esqueleto para vuestras librerías será el siguiente:

Archivo .h
#ifndef Ejemplo_h
#define Ejemplo_h

#include "arduino.h" // Esta es la librería que tenéis que llamar para poder usar los métodos de Arduino

class Ejemplo{
      private:
            int variable1;

            //** MÉTODOS **
            void configurar();

       public:
            //** CONSTRUCTOR **
            Ejemplo();
            Ejemplo(int sobrecarga);

            //** MÉTODOS **
            void mover(int x,int y);
};
#endif

Archivo .cpp
#include "Ejemplo.h"
/*** Public Method ***/
//-- Constructor --
Ejemplo:: Ejemplo(){
      _variable1 = 7;
}

Ejemplo::Ejemplo(int sobrecarga){
      _variable1 = sobrecarga;
}

//----- Métodos Privados -----
void Ejemplo::configurar()
{
      pinMode(_variable1, OUTPUT);
}

//-- Métodos Publicos --
void Ejemplo::mover(int x,int y)
{
       digitalWrite(_variable1, LOW);
}


Tercero, una vez que tenemos nuestro esqueleto, guardamos y vamos a nuestro IDE de Arduino. Ahora tenemos que crear importar la librería que acabamos de crear, para ellos iremos a la pestaña de "Sketch -> Importar librería -> Add library"

Seleccionamos nuestra librería y la añadimos (la carpeta completa).
Es posible que os diga que no la podéis insertar porque ya existe, no pasa nada es por no cerrar el IDE y volver a abrirlo, para que refresque la lista de librerías.

Una vez que tenemos listo esto, volvemos a "Sketch -> Importar librería -> (buscamos nuestro Ejemplo)".
Ahora podemos observar que nos importa en nuestro proyecto : #include <Ejemplo.h>

Por último, dejo el código de como se llaman a los constructores y como se llaman a los métodos.

#include

Ejemplo variableClaseEjemplo;   // Aquí instanciamos a nuestra clase con el constructor vacio - NO poner ()
//Ejemplo variableClaseEjemplo(33);   // Aquí instanciamos a nuestra clase con el constructor sobrecargado

void setup()
{

}

void loop()
{
      variableClaseEjemplo.mover(1,2);

      delay(500);
}



Y eso es todo, con esto podéis tener vuestras propias librerías de C++ en Arduino.



Arduino C++ Tutoriales

martes, 20 de octubre de 2015

Tutorial: Aprender a usar un sensor de humedad con Arduino


Bienvenido a un nuevo tutorial de Lunegate, hoy vamos a analizar este sensor de humedad. Este puede ser un buen primer elemento para domotizar nuestra casa.


INTRODUCCIÓN

Este sensor será muy útil para saber cuanto de seca, humedad o mojada se encuentra nuestra tierra de nuestras plantas. Este sensor será idóneo para realizar pequeños prototipos para domotizar nuestra casa.

En próximos tutoriales se va a presentar algo muy interesante donde incluiremos este sensor.

Este sensor en cuestión monta un chipset LM393, que trabaja entre 3.3V y 5v., es bastante sencillo de montar y separa su chipset de su sensor para no estropearlo por la humedad o por que le pueda caer agua.

Para aquellos que deseen conocer el funcionamiento interno os dejo el diagrama.



Las dimensiones del sensor son: 4.3 cm x 1.4 cm x 0.8 cm y pesa 6g.

El coste de driver es de 1,91€, podréis encontrar donde comprarlo en el desglose de componentes que vendrán a continuación.

Para este tutorial, se requerirá
Dificultad:

           Tiempo:  15 minutos (montarlo y programarlo)


MATERIAL NECESARIO

A continuación os describo el material necesario para realizar el tutorial y donde conseguirlo:

Imagen
Nombre producto
Donde comprarlo
Sensor de humedad
Arduino Micro
Conectores universales


MONTAJE

Bien una vez que disponemos de todos los componentes, vamos a ponernos manos a la obra. Para ello os dejo a continuación un esquemático de como debéis interconectar los diferentes componentes para que esto funcione.


Montaremos los 4 pines que salen de la controladora del sensor de humedad, para que podáis ver los valores tanto analógicos como digitales.
Para ello, elegiremos el A0 para el analógico, el D12 para el digital, 5v para el voltaje entrante y por último GND.


PROGRAMACIÓN

Una vez montado todo correctamente (verificar las conexiones que eso trae mucho de cabeza). Conectamos nuestro Arduino a el ordenador y añadimos el código que os pongo a continuación:

void setup()
{
  Serial.begin(9600);
  pinMode(12, INPUT_PULLUP);
}

void loop()
{
  int sensorVal = digitalRead(12);
  Serial.print("Digital : ");
  Serial.println(sensorVal);
 
  int sensorVal2 = analogRead(0);  
  Serial.print("Analogico : ");
  Serial.println (sensorVal2);
 
  delay(100); 
}


Con este código basicamente buscamos recoger los valores de las 2 salidas (Analógia y digital) y mostrarlas por pantalla.

A continuación, os dejo una tabla que mostrará que valores indican cada estado que detecta el sensor.

Digital Analógico
Muy seco 1 + 1000
Seco 1 Entre 1000 y 800
Húmedo 1 Entre 800 y 400
Muy mojado 0 Menos de 400

PUNTUACIÓN

Calidad Componentes
3,5
Montaje
4
Precio
4'5
Características
3'5
Puntuación Global
4


Por ahora, no lo he testeado mucho, iré actualizado mi valoración del producto y comportamiento de los componentes.



Arduino sensor sensor humedad Sensores Tutoriales

sábado, 17 de octubre de 2015

RoBoHon, la evolución del teléfono móvil


Combined Exhibition of Advanced Technologies o también conocido como CEATEC 2015, se celebró el pasado 7 al 10 de octubre de 2015 en Makurahi. Makurahi es una localidad al este de Tokio, entre Tokio y Chiba. En la exposición, Sharp presentó a "RoboHon". Robohon es un robot que convierte un teléfono móvil en un increíble robot, este pretende convertirse en una revolución comercial en el primer trimestre del 2016.


RoBoHon es un pequeño robot con una altura de aproximadamente 19,5 centímetros y pesa alrededor de 390 gramos. Este simpático robot soporta 3G y LTE, así como Wi-Fi (802.11b / g / n), y claramente lo podrás usar como un teléfono móvil.

Cuando alguien llame, podrás contestar como siempre se ha echo, o lo coges como si fuera un móvil o se le activa la opción de manos libres.




Según sus creadores , "podrás llevarlo en el bolsillo, en la funda especial que existe para el o incluso llevarlo al cuello. Es posible que necesites un poco de coraje para ir allá donde vallas con el y comunicarte a través del robot, pero sera una experiencia emocionante. Como salido de un manga del futuro". He de decir que es cierto que puede ser curioso y te alguno que te mire raro... pero sinceramente yo me compraria uno y me daría exactamente igual lo que dijera la gente.



La entrada de voz, es una entrada estándar (micrófono) pero informan, que cuando haya sitio donde haya mucho ruido o no quiera hablar con el robot para comunicarse, en la parte posterior cuenta con una pantalla táctil donde poder realizar cualquier operación.


Actualmente cuenta con una versión personalizada de Android, pero están trabajado en crear su propio sistema operativo.


RoBoHon cuenta con una cámara que te permitirá hacer fotos o vídeo a través de su pantalla táctil o por comandos de voz y como broche de oro, cuenta con un proyector en su cabeza con el que podrás ver tus fotos o vídeos.


En cuanto a interactividad con RoBoHon, este puede caminar, bailar o levantarse por si solo. Sobre los comandos de voz, además de los mencionados anteriormente, podrás preguntarle el tiempo o disfrutar de una conversación con el.




Un último apunte, es para aquellos que conozcan Chobits, este pequeño robot os recordara a una posible versión inicial de Sumomo.





Por último os dejo el vídeo promocional de RoBoHon.



Fuente recogida de Tokyo Otaku Mode.


Empresas Investigacion y Desarrollo Festivales-Concursos Noticias RoBoHon

sábado, 10 de octubre de 2015

Halluc II, un robot, 3 en 1 con muchas patas


Un equipo de ingenieros del Instituto de Tecnología Chiba (Japón) desarrolló un robot para el festival Ars Electronica 2015 en Australia. Dicho robot esta basado en una Hallucigenia, un fósil de 508 millones de años, de cuerpo tubular de cinco centímetros de largo, siete pares de espinas largas que sobresalían en una dirección y siete tentáculos del otro lado. No tenía cabeza, o bien no se sabía dónde estaba. Sin embargo, el fósil en sí era la cabeza.

Durante la presentación, se menciono todas las características de este robot, pero no se informo de ninguna finalidad comercial, por lo que suponemos que aun esta en desarrollo comercial.

Halluc II esta equipado con 8 piernas-módulos roboticos. Como sus creadores describen, este robot permite 3 tipos de movilidad.
- Modalidad vehículo
- Modalidad insecto
- Modalidad animal


Estas 8 piernas cuentan con 56 motores que le permiten maniobrar en cualquier dirección y disposición del terreno.


Toda la información de este robot y de otros robots de la misma compañía los podéis encontrar en la web de Furo

Por último y como siempre, os dejo un vídeo de como funciona este interesante robot.




Empresas I+D Empresas Investigacion y Desarrollo Halluc II Noticias

sábado, 3 de octubre de 2015

DARPA presenta su nuevo tren de aterrizaje robótico


Los sistemas tradicionales de aterrizaje de los helicópteros tiene un claro problema en el aterrizaje en zonas escarpadas.

Por ello DARPA, lleva desarrollando desde hace unos años un sistema de aterrizaje que solvente este problema. Este sistema adaptativo remplaza el sistema estándar por uno con 4 partes articuladas.

Estas piernas son capaces de doblarse hacia arriba junto al fuselaje del helicóptero en vuelo (como el de un tren de aterrizaje de un avión) y están equipadas con sensores de contacto sensible a la fuerza en los pies. Durante el aterrizaje, cada pierna se extiende y utiliza sus sensores para determinar en tiempo real el ángulo adecuado para asegurarse de que el helicóptero queda a nivel y así minimizar cualquier riesgo de que el rotor pueda toca la zona de aterrizaje.


"El equipo, ha montado este sistema sobre un helicóptero (UAV) sin modificar. Este demostró con éxito la capacidad de aterrizar y despegar de terreno que sería imposible operar desde con tren de aterrizaje estándar," dijo Ashish Bagai, Gerente del programa de DARPA.

Entre las ventaja que presenta Ashish Bagai destacó:
- Menor riesgo de daños durante los aterrizajes, en un factor de 5 a 1, en comparación con el tren de aterrizaje convencional
- Aterrizaje y despegue estable en terrenos con una pendiente de hasta 20 grados, más del doble los límites actuales y en terreno escarpado, con rocas no fijas y de manera irregular.
- Estabilidad en desembarcos en el mar en malas condiciones climatológicas.
- Aumento significativo en las capacidades con sólo un pequeño aumento en el peso del tren de aterrizaje.

El sistema robótico de aterrizaje fue desarrollado con la financiación del programa de misión adaptativa Rotor (MAR) de DARPA y ahora está en continuo desarrollo por el Instituto de tecnología de Georgia.

Cualquier información extra en su página oficial. www.darpa.mil




DARPA Noticias
 

Productos y tecnologias usadas en este blog:

  • Copyright © LuneGate™ is a registered trademark.
    Designed by Templateism. Hosted on Blogger Platform.