IGLU CONTROL

En principio quería explicar el nombre… porque se me ocurrió exactamente haciendo eso, buscando un nombre… ya que este proyecto se inicia como un control domótico utilizando PINGÜINO para comandar todos los artefactos y censar temperatura y humedad de todos los puntos de la casa. Entonces aunando PINGÜINO y CASA, se me ocurrió el nombre de PROYECTO IGLU CONTROL.

Me he basado en la mezcla de varias tecnologías, como suelo hacer siempre:

  1. Cliente grafico (un ordenador o teléfono inteligente con un browser) y conexión a Internet.
  2. Un router de borde con Linux “OPENWRT” y un túnel seguro (OPENVPN/PPTP) para recibir la conexión y dejar entrar en mi red privada desde cualquier parte del mundo.
  3. Un servidor Linux, para centralizar toda la información recibida de los PINGUINOS, procesarla y presentarla en pantalla, a la vez también es el encargado de enviar las ordenes a cada una de los PINGUINOS (control de domótico de electrodomésticos)
  4. Varios módulos XBEE, para la comunicación entre el servidor y los PINGUINOS
  5. Algunos routers con Linux “OPENWRT” y puertos USB para la monitorización de la actividad mediante cámaras WEB.
  6. Y muchos PINGUINOS con controles de potencia, relés eléctricos y sensores de temperatura, iluminación y humedad.

NOTA: el punto “2” se puede obviar si solo queremos conectarnos desde nuestra misma red.



COMENZAMOS EL PROYECTO:

Utilizando un cliente grafico (Un teléfono inteligente o un ordenador con WIFI) nos conectamos a nuestro router de borde, este no hace mucho más que recibir la conexión, una vez conectado, el cliente abre una sesión con un servidor WEB, que es el encargado de centralizar toda la información enviada por los PINGUINOS que se sitúan en puntos estratégicos de mi casa, también se encarga de enviar a cada uno las órdenes dictadas por cada cliente conectado al servidor.

*Imagen del control via un browser en WINDOWS.

En este punto nos aparece en el cliente una pantalla de bienvenida que nos ofrece las opciones:

  • Control de iluminación

Mediante la utilización de RELES y transistores de potencia, por ejemplo TIC 226, se pueden controlar los electrodomésticos y la iluminación de toda la casa. (se recomienda separar eléctricamente el microcontrolador de la corriente alterna, utilizando optoacopladores)

  • Control de temperaturas

Mediante la utilización de sensores LM35, puedo monitorizar la temperatura en la casa, la caldera de agua caliente y el acuario.

  • Monitorización de cámaras

El sistema se compone también de cámaras para monitorizar cada punto en donde poseo un router con puerto USB o un servidor LINUX. En total activas siempre tengo un mínimo de 4 cámaras.

  • Control de cortinas

Subir y bajar las cortinas, utilizando un motor eléctrico (algunas cortinas lo traen), y sensores infrarrojos para detectar la altura de la cortina.

Se puede medir la incidencia solar en la habitación y la temperatura y regular la altura de las cortinas.

  • Controles predeterminados

Casos de emergencia, activa la alarma y desconecta servicios*.

Vacaciones, desconecta servicios.

Cerraduras, bloquea puertas y ventanas.

*Algunos de estos controles no los tengo implementado, más que nada porque vivo de alquiler y para realizar estas modificaciones necesito hacer reformas en la vivienda… lo dejare para más adelante. (Cerraduras)

*SERVICIOS: se refiere a los servicios de usos generales; agua, luz y gas. (con una simple electroválvula se controla el suministro)

  • Control del acuario

Control de iluminación (horas y potencia)

Regulación de cantidad y frecuencia de la Alimentación (alimentador electrónico, conectado a PINGÜINO)

Temperatura, mediante un rele, conectado a PINGÜINO y alimentado el calefactor eléctrico.(al mismo tiempo censando la temperatura con un LM35 impermeabilizado.)

En cuanto tenga la captura lo posteo, se me paso por alto guarda esta imagen

Además he incluido algún detalle personal, por presumir un poco de equipamiento.

  • Mediante “MRTG”

Monitorización de estado de la red

Velocidades de transferencias de cada puerto del router de borde

Temperaturas de los CPU de todos los involucrados (Servidor Linux, FONERAS y router de borde)

  • Control del TDT

Voy a presumir un poquito “nomas” (ya que poseo un GIGASET con Linux modificado), se pueden:

Programar grabaciones

Ver transmisiones broadcast de televisión en la red

Visualizar las grabaciones realizadas a través de la red y muchas cosas mas

AUN ME QUEDA PENDIENTE CUSTOMIZAR EL CSS PARA COMPATIBILIZARLO AL IPHONE

Una vez aquí solo tenemos que controlar, las luces, temperatura, censar la humedad, algún que otro electrodomésticos, cortinas, el acuario, seleccionar las configuraciones predeterminadas para la iluminación y las luces, como por ejemplo la configuración CINE, la cual apaga las luces enciende el proyector y baja la pantalla de proyección. Inclusive podríamos controlar la frecuencia de comida de los peces del acuario como su temperatura y configuración diaria de iluminación. También tenemos las opciones de monitorizar el consumo de CPU, las descargar y el trafico en general de la red. Y adicionalmente verificar que canal se está visionando en el televisor y programar cualquier grabación, todo desde fuera de casa, y pudiendo utilizar cualquier dispositivo que posea navegador y conexión a internet.

PROYECTO:

Básicamente utilizo UNIX SHELL, PHP, LUA y JavaScript, no es que sea un bocho (GURU) en todos estos lenguajes, pero en internet hay mucho tutorial y manual que ayuda mucho.

La información de los PINGÜINO las recibo por XBEE, y cada uno informa cada minuto su identificación, la información de todos sus sensores y las puertas activas.

Por ejemplo puedo recibir este mensaje: habitación,1,temp,20,hum,60,luz,12,puertas,00000100.

Nota: los mensajes de sensores se entienden, por eso explico el último dato (00000100) indica que posee la puerta 6 activa, pudiendo referirse a una luz en especial. Para estos casos he resuelto una disposición especial para cada control. Las primeras 3 puertas controlan los electrodomésticos o luces del lado norte de la habitación, los siguiente del lado central y los últimos tres del sur de la habitación. Indicando este mensaje que una luz o electrodoméstico del suroeste de la habitación, se encuentra activo.

Para el caso de corte de luz, guardo esta info en el servidor, para ser enviada al PINGÜINO y restablecer el estado anterior de este controlador.

SCRIPT DE EJECUCION DE COMANDOS VIA SERIE

Esto son algunos de los scripts usados. Los cuales he copiado de mi propio proyecto RGB PINGÜINO http://pinguino.walii.es/?p=18

Con un poco de imaginación y esmero se pueden hacer maravillas.

Por ejemplo este es un script en LUA que envía un carácter “R” por puerto serie.

[sourcecode language=”py”]
—# //para rojo envía por puerto serie el carácter "r"
—#! /usr/bin/lua
caracter="echo r > /dev/tts/1";
os.execute(caracter);

[/sourcecode]

Y esta la pagina web que posee el botón para ejecutar el script:

[sourcecode language=”py”]
<html>
<head>
<title>control de RGB via web walii.es</title>
</head>
<body>
<h2>Control remoto RGB via web (<a href="http://blog.walii.es/" target="_new">blog de Walii.es</a>)</h2>
<p>
<b>Presionando el boton activamos la salida para el color ROJO </b>
</p>
<table border="0" cellpadding="0">
<tr>
<td valign="top" width="50%">
<p>
<b>Este es solo para un color, necesita un poco de imaginación y diseño web para hacer el resto</b>
<ul>
<li><a href="/cgi-bin/rojo.lua" target="_new">ROJO</a></li>
</ul>
</body>
</html>

[/sourcecode]

Con esto se supone que ustedes son capaces de hacer la web que quieran… pero para comenzar es más que suficiente, recuerden que el tipo de orden es la misma para PINGUINOS conectados vía serie directo que a través de XBEE.

CIRCUITOS:

No voy a poner todos los circuitos y diagramas de cada punto de control, solo indicare en detalle uno, e incluiré los diferentes controles.

CONTROL ILUMINACION

CONTROL DE CORTINAS

CONTROL DE TEMPERATURA (Hogar)

El tema del control de temperatura, lo resolví más fácilmente, controlando toda la temperatura de la casa, como tengo una caldera electrónica, y utilizando un poco de ingeniería inversa, pude encontrar el control electrónico por PWM que regula la temperatura. Y enviando info desde un PINGÜINO, puedo controlar la temperatura general. (mas adelante y con algunos aditamentos veré si puedo diferencia las temperaturas por zonas).

Utilizo el puerto 16 del PIC, serían el 11 y 12 del pingüino 18f4550, los cuales son PWM.

CONTROL TEMPERATURA ACUARIO

Para esto utilizo el mismo circuito que de iluminación, combinado con un sensor de temperatura, ya que el termostato es puramente eléctrico.

SENSORES DE TEMPERATURA, ILUMINACION Y HUMEDAD

PROGRAMA PINGÜINO:

El programa básico de los pingüinos es algo general, realizando todos más o menos la misma tarea.

[sourcecode language=”py”]
/*
*
* IGLU CONTROL PROJECT
*
* Example to home remote control
* With PINGUINO PIC
* And received all the control information
* From a XBEE and WIFI
*/

int key;
int volts=5; //alimentación del micro, o tension de referencia si tendriamos.
int name=1; //nombre del pinguino
int samples[10];
int tempc=0;
int luzc=0;
int humedadc=0;
int i,x,port0,port1,port2,port3,port4,port5,port6,port7;
float val1;

void setup()
{
for ( i=0 ; i <8; i++){
pinMode(i,OUTPUT);
digitalWrite(i,LOW);
}
Serial.begin(9600);
}

void loop ()
{
//controlamos temperatura, luz y humedad
//Temperatura
for (i=0;i<=9;i++){
val1=analogRead(13);
samples[i]=(volts*val1*100)/1024.0;
tempc=tempc+samples[i];
}
//Dividimos por la misma cantidad de lecturas
tempc=tempc/10.0;

//Humedad
for (i=0;i<=9;i++){
val1=analogRead(14);
samples[i]=val1/10.0;
humedadc=humedadc+samples[i];
}
//Obtenemos el promedio de valores
humedadc=humedadc/10.0;

//Iluminacion
for (i=0;i<=9;i++){
val1=analogRead(15);
samples[i]=val1/10.0;
luzc= luzc+samples[i];
}
//Obtenemos el promedio de valores
luzc=luzc/10.0;

//Ahora vamos a escuchar el puerto serie
if (Serial.available()>0){
key=Serial.read();//leemos la entrada del serie
if (key==’a’) digitalWrite(0,digitalRead(0)^1); //Cambia el estado del Puerto 0 por su valor inverso
if (key==’b’) digitalWrite(1,digitalRead(1)^1); //Cambia el estado del Puerto 1 por su valor inverso
if (key==’c’) digitalWrite(2,digitalRead(2)^1); //Cambia el estado del Puerto 2 por su valor inverso
if (key==’d’) digitalWrite(3,digitalRead(3)^1); //Cambia el estado del Puerto 3 por su valor inverso
if (key==’e’) digitalWrite(4,digitalRead(4)^1); //Cambia el estado del Puerto 4 por su valor inverso
if (key==’f’) digitalWrite(5,digitalRead(5)^1); //Cambia el estado del Puerto 5 por su valor inverso
if (key==’g’) digitalWrite(6,digitalRead(6)^1); //Cambia el estado del Puerto 6 por su valor inverso
if (key==’h’) digitalWrite(7,digitalRead(7)^1); //Cambia el estado del Puerto 7 por su valor inverso
port0=digitalRead(0);
port1=digitalRead(1);
port2=digitalRead(2);
port3=digitalRead(3);
port4=digitalRead(4);
port5=digitalRead(5);
port6=digitalRead(6);
port7=digitalRead(7);
Serial.print("received… OK!!!"); //debug la respuesta y recepción del mensaje
Serial.print("\n\r");
Serial.print("habitacion,",name,", temp,",tempc,", hum,",humedadc,", luz,",luzc,", puertas,",port0,port1,port2,port3,port4,port5,port6,port7);
Serial.print("\n\r");
Serial.flush();//clear the serial buffer }
}
}

[/sourcecode]

ROUTERs OPENWRT y SERVIDOR LINUX UBUNTU

Básicamente estos tienen varios tipos de Scripts y programas para realizar las tareas correspondientes:

  • Los routers están customizados con la última versión “a día de hoy” del OPENWRT Backfire (10.03.1-rc4, r24045), en mi caso utilizo router compatibles con este sistema operativo, varias FONERAS y un router TP_LINK.
  • El servidor LINUX, es un UBUNTU versión 10.10, con un servidor web APACHE, PHP y MYSQL, además posee el programa MOTION porque también le he incorporado alguna cámara para monitorizar su zona.
  • Publicación de las imágenes vía WEBCAM, utilizo “MOTION“, que funciona muy bien, y tiene infinidad de opciones, como enviar un correo con la fotografía tomada si se detecta movimiento, guardar en un servidor remoto las imágenes para no dejarlas en la red privada, orientación de las imágenes, compresiones, etc.
  • La información de consumo de CPU, temperatura de CPU, utilización de la red, etc, la obtengo con el programa MRTG, el cual vía el protocolo SNMP recopila toda la información necesaria para realizar los reportes gráficos que se ven en las capturas.
  • Comunicación con PINGÜINO, mediante el puerto serie de estos dispositivos y utilizando algunos script de LUA y LINUX SHELL, también pueden utilizar los programas, MICROCOM y PICOCOM, son muy útiles en el caso de querer debugear un problema.
  • Para la comunicación con la red XBEE, es fácil, porque hay en el mercado un adaptador USBtoXBEE (se llama Xbee EXPLORER), y cuando se conecta al ordenador, este lo reconoce como un puerto serie, y utilizando los programas mencionados en el punto anterior, es fácil la comunicación.

APLICACIÓN IPHONE:

Para más complicaciones he realizado una aplicación web (tradicionalmente llamada WEBAPPLICATION) para poder tener el control directo y acceso al servidor, sin tener que buscar el vinculo en el browser, y poder hacerlo todo más fluido. Son las imágenes mostradas en los ejemplos. Este es el acceso desde la propia aplicación.

Esto último se hace muy fácil, luego os indico en otro POST como, así no mesclamos las cosas.

Igual para los que quieran investigar, he utilizado un FRAMEWORK llamado IUI, aquí pueden descargarlo. Una recomendación: para sacarle todo el poder al framework utilizar el navegador de Apple, SAFARI.

http://iui.googlecode.com/files/iui-0.31.tar.gz

Saludos y no duden en consultar lo que deseen.

27 Responses to “IGLU CONTROL”

  • Phantom88:

    Guau!Impresionante! Este tipo de posts sí que son inspiradores para continuar avanzando con pingüino, de mayor quiero ser como tú jeje! Felicidades!

  • humongous logbook you get hands on

  • Tenas:

    Hola amigo WalterLeonardo, es un grandisimo proyecto!!! muy completo y me ha impresionado de sobremanera la implementación con iphone, ademas de ver las posibilidades que tiene pinguino!

    Tengo una consulta!!

    Se puede hacer lo mismo en codigo arduino, veras yo poseoo un duemilanove y me gustaria conectarlo via serie a mi fonera con dd-wrt donde instalare el servidor e implemetar almenos un par de sensores de temperatura, uno de luz, control de termostato de caldera y 2 webcam para vigilancia, una interior y otra exterior., podrias ayudarme con el codigo o indicarme como puedo hacerlo en arduino??

    Muchas gracias de antemano,

    Saludos, Daniel

  • walterleonardo:

    Gracias por tus halagos… pero no sabría como transportarlo a ARDUINO… no tengo ni el IDE ni ningún kit… solo tengo pinguinos. Igual este es un proyecto que he vendido a un cliente… y por tal motivo no puedo dar mas ayuda de la que ofrezco en el post… puedo acompañarte en tu proyecto… pero no puedo envíarte info…
    Dime como vas, y veo si puedo ayudarte…

  • Tenas:

    Hola WalterLeonardo, Gracias, me imaginaba que no era sencillo la conversion a Arduino, no te preocupes, de momento estoy por el ecuador de mi actual proyecto (Aerogenerador controlado por Arduino con estación meteorológica + webcam) así que, tardare en empezar con éste de domótica!!!

    Mas adelante te contactaré para ver si puedes darme un helpdesk básico!!!

    un saludo de un Burgales.

  • geragts_9:

    Hola primero que nada felicitaciones por el proyecto, estoy tratando de hacer algo mas simple solo con sensores, poder mostrar en una pagina valores como temperatura, movimiento, iluminacion, etc., ya tengo programado el pinguino, por el momento lo estoy haciendo en windows y hago las pruebas con el hypertherminal y me da bien las lecturas, bueno ahora mi problema es como guardar esa informacion automaticamente en una base de datos y despues verlos desde la pagina, no se si me puedas decir mas o menos como le hiciste para ver esos datos en la pagina, si no puedes lo entendere ya que veo que vendiste el proyecto.

    Saludos

  • walterleonardo:

    Gracias … el proyecto como dices se ha vendido… pero te puedo indicar cosas “genéricas” que pueden ayudarte. La info la capturo como tu haces por puerto Serie… y con perl la envío a una base de datos MYSQL, luego desde la pagina web la solicito con PHP. es fácil… igual puedes saltarte un paso y solicitar la info directamente desde el puerto serie con PHP, pero esto no deja guardada la información y luego no puedes realizar gráficos chulos… 🙂

  • geragts_9:

    Hola gracias por contestarme, pues si me ayuda mucho la info, voy a intentar hacerlo con base de datos, tengo pensado usar java para capturar lo del serial y guardarlo en mysql, ya que tengo un poco de mas experiencia en ese lenguaje, si no pues a intentar con otro….muchas gracias por el dato.

    Saludos y un Abrazo.

  • ubanov:

    Epa,

    Hace tiempo intenté buscar formar grupo de gente para hacer proyecto de domótica basado en pingüino… veo que tu ya has hecho esto tu solito 😀

    Lo “malo” que lo hayas conseguido vender 😀

    La comunicación tu la hacías por medio de un XBEE, cuanto sale (+ o -) el conjunto de un pingüino más el módulo XBEE?

    Gracias y un saludo.

  • walterleonardo:

    Y bueno el XBEE ronda los 18 o 25 según potencia… explicame mas lo que necesitas, hay unos módulos de 2.4 que salen por 9 euros…o bluetooth por 10€ y pueden ser mas económicos que con xbee… xbee lo he usado para probar, pero en una casa las distancias no son tantas y con bluetooht o 2.4ghz van muy bien.

  • hola,

    Yo pensé en hacer algo genérico y pensé en dos formas de comunicarse, RS485 y algo inalámbrico… quería algo en el que cada dispositivo fuese muy barato… pero al final no hice nada.

    Qué módulo BT cuesta tan solo 10€

    Es simplemente por curiosidad….

    Gracias y un saludo.

  • walterleonardo:

    Aquí tienes uno muy parecido al que he comprado yo… tiene salida TTL y por el otro lado bluetooth… se reconoce como un puerto serie cualquiera… yo lo he hecho comunicar con PROCESSING, utilizando la librería de serie.
    http://www.ebay.es/itm/1pcs-TTL-Bluetooth-Module-adapter-board-for-arduino-/270933615210?pt=LH_DefaultDomain_0&hash=item3f14e6e26a#ht_1662wt_853

    Con estos módulos, el pinguino y algún modulo de potencia.. creo que puede costarte en hardware entorno a los 40 a 60 euros… luego el coste es el diseño del software y la aplicación para su manejo… por eso ahora estoy metido al 100% en diseño de aplicaciones para IPHONE e IPAD, para poder hacer algo útil y practico para estas plataformas.
    Saludos.

  • geragts_9:

    Hola de nuevo aqui con la molestia, tengo un problemilla no se a que se deba, cuando quiero imprimir el estado de los puertos Serial.print(port0,port1,port2…..); en el monitor del serial solo me desplega el estado del puerto 0 es decir no me manda el mensaje esperado por ejemplo 00010010 solo me manda un 0 o un 1 dependiendo del estado del puerto 0 y no el de todos los puertos, sabes por que sucede eso????

    Saludos.

  • walterleonardo:

    Comparte el código así lo vemos y podemos ayudarte… lo primero que debes hacer es intentar de hacerlo de la forma fácil, realizando un Serial.print() por cada puerto, no intentes lo complicado antes de lo fácil… luego cuando esto dé un buen resultado pasa al siguiente paso.

    Comparte el código y te intento dar una mano.

  • geragts_9:

    Hola e logrado resolver ese problema de una forma algo rara despues de varios intentos, ya lo habia intentado con Serial.print() para cada uno y me daba lo mismo solo desplegaba el estado del port0 y en ocasiones cuando le mandaba el primer caracter al pinguino entraba como en un ciclo infinito y me desplegaba puras letras r o puras letras T en el monitor serial, lo saturaba, la aplicacion que estoy haciendo es el control de focos osea la iluminacion de una maqueta, bueno despues de resolver el problema del despliegue del estado de los puertos, quiero tambien controlar un servo, el codigo para usarlo de forma independiente funciona bien pero cuando quiero mezclarlo con el de la iluminacion se descontrolan los puertos digitales del pinguino, no reaccionan como deben.

    Codigo para el control solo del servo que me funciona bien usando el servo:
    #define PIC18F4550
    int key;
    void setup()
    {
    servo.attach(13);
    Serial.begin(9600);
    }

    void loop()
    {
    if (Serial.available())
    {//escucha el Puerto serie…
    if (key==’a’) servo.write(13,150);
    if (key==’b’) servo.write(13,60);
    }
    }

    Códigos mezclados:

    #define PIC18F4550
    int key;
    int i,port0,port1,port2,port3,port4,port5,port6;
    void setup()
    {
    for (i=0;i0)
    {
    key=Serial.read();
    if (key==’a’) digitalWrite(0,digitalRead(0)^1),Serial.print(“”);
    if (key==’b’) digitalWrite(1,digitalRead(1)^1),Serial.print(“”);
    if (key==’c’) digitalWrite(2,digitalRead(2)^1),Serial.print(“”);
    if (key==’d’) digitalWrite(3,digitalRead(3)^1),Serial.print(“”);
    if (key==’e’) digitalWrite(4,digitalRead(4)^1),Serial.print(“”);
    if (key==’f’) digitalWrite(5,digitalRead(5)^1),Serial.print(“”);
    if (key==’g’) digitalWrite(6,digitalRead(6)^1),Serial.print(“”);
    if (key==’h’) servo.write(13,150),Serial.print(“”);// CONTROL DEL SERVO
    if (key==’i’) servo.write(13,60),Serial.print(“”);// CONTROL DEL SERVO
    if (key==’t’) digitalWrite(0,0),digitalWrite(1,0),digitalWrite(2,0),digitalWrite(3,0),digitalWrite(4,0),digitalWrite(5,0),digitalWrite(6,0),Serial.print(“”);
    port0=digitalRead(0);
    port1=digitalRead(1);
    port2=digitalRead(2);
    port3=digitalRead(3);
    port4=digitalRead(4);
    port5=digitalRead(5);
    port6=digitalRead(6);
    Serial.print(port0,DEC);
    Serial.print(port1,DEC);
    Serial.print(port2,DEC);
    Serial.print(port3,DEC);
    Serial.print(port4,DEC); // CUANDO QUERIA PONER LOS DOS SIGUENTES print PARA LOS PUERTOS 5 Y 6 YA NO ME LOS DESPLEGABA ASI QUE POR ESO PUSE LOS SIGUIENTES IF ELSE
    if(digitalRead(5)==0){Serial.print(“0”);}
    else {Serial.print(“1”);}
    if(digitalRead(6)==0){Serial.print(“0”);}
    else {Serial.print(“1”);}

    Serial.print(“\n\r”);
    Serial.flush();
    }
    }

    Debug, cuando uso el codigo de iluminacion sin las lineas del servo me da bien los resultados
    1000000 envio a
    1100000 b
    1110000 c
    1111000 d
    1111100 e
    1111110 f
    1111111 g
    1111110 de nuevo g
    1111111 de nuevo g, y asi con los demas activa y desactiva cada puerto correctamente
    0000000 desactivamos todos con la t

    cuando uso el codigo que tambien tiene el control del servo, el servo funciona bien pero los puertos digitales se descontrolan:
    1000100 envio a
    1000110 de nuevo a
    1000110 a
    1000110 a
    0100110 envio b
    0010110 c
    0001110 d
    0000010 e
    0000100 f
    0000110 g
    0000010 de nuevo g
    1000110 etc
    0100110
    0010110
    0000010
    0001110
    0000100
    0000110
    0000000 el unico que funciona bien es la t de desactivar todo

    Muy grande mi comentario lo se pero si me saca de onda derepente pinguino, por cierto lo e probado en 2 pinguinos y dan el mismo resultado por eso dudo que tenga mal algo del hardware, espero me entiendas y me digas si tengo algo mal por favor.

  • geragts_9:

    corrigiendo, puse mal el código que es solo para el servo le borre la linea key=Serial.read(); por error

    Saludos

  • geragts_9:

    mil disculpas el otro codigo tambien se copio incompleto

    #define PIC18F4550
    int key;
    int i,port0,port1,port2,port3,port4,port5,port6;
    void setup()
    {
    for (i=0;i0)
    {
    key=Serial.read();
    if (key==’a’) digitalWrite(0,digitalRead(0)^1),Serial.print(“”);
    if (key==’b’) digitalWrite(1,digitalRead(1)^1),Serial.print(“”);
    if (key==’c’) digitalWrite(2,digitalRead(2)^1),Serial.print(“”);
    if (key==’d’) digitalWrite(3,digitalRead(3)^1),Serial.print(“”);
    if (key==’e’) digitalWrite(4,digitalRead(4)^1),Serial.print(“”);
    if (key==’f’) digitalWrite(5,digitalRead(5)^1),Serial.print(“”);
    if (key==’g’) digitalWrite(6,digitalRead(6)^1),Serial.print(“”);
    if (key==’h’) servo.write(13,150),Serial.print(“”);// CONTROL DEL SERVO
    if (key==’i’) servo.write(13,60),Serial.print(“”);// CONTROL DEL SERVO
    if (key==’t’) digitalWrite(0,0),digitalWrite(1,0),digitalWrite(2,0),digitalWrite(3,0),digitalWrite(4,0),digitalWrite(5,0),digitalWrite(6,0),Serial.print(“”);
    port0=digitalRead(0);
    port1=digitalRead(1);
    port2=digitalRead(2);
    port3=digitalRead(3);
    port4=digitalRead(4);
    port5=digitalRead(5);
    port6=digitalRead(6);
    Serial.print(port0,DEC);
    Serial.print(port1,DEC);
    Serial.print(port2,DEC);
    Serial.print(port3,DEC);
    Serial.print(port4,DEC);// CUANDO QUERIA PONER LOS DOS SIGUENTES print PARA LOS PUERTOS 5 Y 6 YA NO ME LOS DESPLEGABA ASI QUE POR ESO PUSE LOS SIGUIENTES IF ELSE
    if(digitalRead(5)==0){Serial.print(“0”);}
    else {Serial.print(“1”);}
    if(digitalRead(6)==0){Serial.print(“0”);}
    else {Serial.print(“1”);}
    Serial.print(“\n\r”);
    Serial.flush();
    }
    }

  • geragts_9:

    De nuevo se puso incompleto, cuando lo copio y verifico me aparece bien pero cuando envio el comentario se corta el código, estas lineas son las que no aparecen:
    void setup()
    {
    for (i=0;i0)
    {

  • geragts_9:

    No se por que se cortan esas lineas y no aparecen pero es donde se declaran pos puertos digitales a usar y en modo LOW ademas del serrvo.attach(13) y el comienso del metodo loop()

  • walterleonardo:

    El problema del código puede ser tema del wordpress….

    pro el tema de mezclar servo y serial… es un problema del driver del servo esta mal hecho… ya se lo he comentado a Jean pero están ocupados en otros temas…
    Como no vivimos de esto no podemos dedicarle mucho tiempo.

    para poder mezclar servos y puerto serie.. .hay que usar la configuración tradicional de servo, creando los timers.
    aquí te paso un ejemplo que he publicado.. prueba hacerlo con eso que te funcionará yo tuve el mismo problema.
    http://pinguino.walii.es/?p=597

    saludos.

  • geragts_9:

    Ahora entiendo, ignoraba lo de la librería de echo ya habia visto la otra forma de usar los servos solo que se me hacia mas facil usando la libreria y pensaba que yo estaba haciendo algo mal, muchas gracias por tu ayuda me sirvió mucho ya lo hice funcionar de la forma tradicional, muy agradecido.

    Saludos

  • walterleonardo, un off-topic en contestación a lo que me decías de ipad/iphone… yo también estoy mariconeando con eso… he visto que en iglu empleaste el framework iui … yo hace tiempo también empleé ese y otro… te recomiendo que pruebes el jquery mobile…. lo bueno que la webapp que hagas valdrá para ios, para android, para blackberry 6…. a mi me ha gustado mucho por esa flexibilidad…

    salu2

  • walterleonardo:

    lo intentare… ahora estoy diseñando puro Objetive-C para poder crear las aplicaciones puras… luego diseñaré algo mas de WEBAPP… pero quiero hacer algo de dinero… actualmente estoy con problemas de trabajo, la cosa no marcha muy bien… y necesito fondos… 🙂

  • Yo he desarrollado en Objetive-C y un poco en Android (en Java)…. YO creo que la mejor es hacer las aplicaciones Web (html5, la lógica ponerla con JavaScript… y si necesitas contactar con el servidor hacerlo en Ajax…) después haces la aplicación mínima en Objetive-C que te lleve el navegador… De esta forma podrías incluso usar la “misma” aplicación web en los diferentes teléfonos.

    Razones para no hacerlo así, que necesites acceder a algo que no puedas desde Web… yo todavía no he encontrado que me obligase a hacerla en Objetive-C entera (si me he encontrado aplicación que necesitaba notificaciones de Apple push network, pero lo que hicimos fue hacer la aplicación web y hacer que cuando se cargaba la página, la interceptábamos y cambiamos la web que solicitaba añadiendo esos datos.

    La aplicación “web” puede ir luego en Internet (pudiendo crear un fichero manifest para que se cachee en el teléfono y así sin conexión también funcione y tengas fácil la actualización) o podría ir dentro de la propia aplicación.

    Si necesitas ayuda dime y si puedo te intento echar una mano. Mi mail supongo que lo tendrás.

  • DonWalo:

    Hola, soy estudiante y estoy realizando una investigaci{on, talvez puedas apoyarme en despejar una dudas:

    MI idea es implementar un control automatico para determinar la cantidad exacta a despachar de agua (m3) a los terminales de los clientes que previamente lo han solicitado ya sea con pago adelantado o a consignacion (pago posterior).

    Lo que he pensado es una aplicación que registre la cantidad de agua deseada por el cliente, y apartir de ahi las bombas de distrución empiezen a dejar fkuir el agua hasta el terminar del usuario en forma continbua (diaria) y deje de fluir al alcanzar el monto total consignado.

    Mi pregunta es es factible montar una demostracion de dicho sistema con pinguino, he visto algo similar en la web pero con una pic 16f88 (http://www.puntoflotante.net/SISTEMAAGUA.htm).

    De ser factible alguna idea o pauta que me pueda ayudar al respecto, o alguna otra sugerencia de tu parte.

    Saludos y muy agradecido por tu atenci{on.

  • walterleonardo:

    Hola buenos dias… gracias por pensar en pinguino para tu proyecto…
    lo veo muy interesante y muy facil de realizar, pero como muestra el proyecto que indicas, para proporcionar una cantidad x de agua, necesitarias tambien un medidor de caudal, y contar los litros con el PIC, cuando llegue al nivel deseado cortar… ademas de esto es considerable tener un reloj, y asi poder determinar la cantidad de agua por dia para cada usuario. Todo controlado segun una base de datos la cual puede consultar via serie el PINGUINO, para cada caso.

    Lo veo facil, y rapido de realizar, propón un programa y lo corregimos juntos…

    variables de EJEMPLO:
    FECHA
    MYSQL
    CORTE AGUA
    FLUJO DE AGUA

    Saludos.

  • DonWalo:

    Hola la verdad que estoy recontra novato en todo esto de pinguino y lo sistemas de control, pero necesito montar la implementacion del Proyecto. , que tiene un sistema muy parecido al de los grifos de venta de combustible.

    tal vez puedas apoyarme al respecto, es decir en su implementación y documentacion.

    Gustoso te invitaria unas cervezas…

    espero tu respuesta. a la brevedad del caso.

Leave a Reply

Facebook Like Add
Google PLUS ONE
De donde me visitan
Publicidad
Calendario de Posts
June 2018
M T W T F S S
« Nov    
 123
45678910
11121314151617
18192021222324
252627282930