jueves, 14 de mayo de 2009

Mejoras

Hay que encender manualmente la Roomba. Pero se puede encender dando una señal en el pin 6 DD del SCI (En el manual: "Device Detect input (active low) – used to wake up Roomba from sleep"). Se puede aprovechar unos pines que tiene el módulo Bluetooth BlueSM1RF para propósito general (PIO 6 y PIO 7) que mediante un comando AT activa esa patilla (pero no lo encuentro en los nuevos módulos con chip de Rovin Networks)

De este mismo modo se podría usar el módulo bluetooth, sin Arduino ni nada, para activar cualquier cosa con el móvil (Y con el proyecto anterior activar algo de 220v, como ya sugerí)

Descargas

En http://sites.google.com/site/cacharreoelectronico/Home/ podeis encontrar los ficheros necesarios para este proyecto

miércoles, 13 de mayo de 2009

Fotos

Mi aspiradora robot Roomba:



El conector SCI (Serial Command Interface) por donde conectaremos el módulo Bluetooth:

El circuito que regula la tensión de 16v de la batería de la Roomba a los 5v que necesita el módulo Bluetooth, y el conector miniDIN 8:

Más cerca. Notese el papelito pegado al condensador de 100nF para que no se toque con la resistencia. Lo he puesto todo tan apretadito...

Debido a un error de previsión tuve que doblar un poco la regleta donde se conecta el módulo Bluetooth para que entrara:

El conector miniDIN 8:

La parte de abajo:

Otra vista:

El regulador de tensión LM317:

El módulo Bluetooth BlueSM1RF. Usa un chip WML-C40AH (http://www.blueradios.com/hardware.htm). Ahora los que venden en http://www.sparkfun.com/ usan otro chip.

El invento con el módulo conectado:


Visto del otro lado:
El módulo BlueSM1RF por detrás:

El invento conectado a la Roomba:

Este es el programa para Symbian que la controla:

Busca los dispositivos Bluetooth que ofrezcan una conexión serie:

Y nos da a elegir entre ellos:

Pide permiso...

Y ya está! Podemos mover la Roomba usando el joystick del teléfono:

Esquema

Por si se perdiera aquí pongo el esquema (recogido de http://blog.makezine.com/archive/2006/02/how_to_roomba_bluetooth_interf.html):



Aunque yo he usado otro regulador de voltaje, el LM317, y sin el LED:


Con R1=220 y R2=660 (2 de 330 en serie)

Controlar una aspiradora robot Roomba con el bluetooth del móvil o el PC

Hace tiempo que hice este proyecto y ahora lo voy a documentar.

Consiste en controlar una aspiradora robot Roomba de iRobot mediante bluetooth.

Se necesita:

Como hacerlo: http://blog.makezine.com/archive/2006/02/how_to_roomba_bluetooth_interf.html

Para conectar la Roomba directamente con un cable: http://blog.makezine.com/archive/2006/02/how_to_make_a_roomba_serial_in.html

El único problema que tengo que comentar es que hay que configurar primero el módulo bluetooth para que trabaje a 57600 baudios. Eso lo podemos hacer directamente estableciendo una conexión con el Hyperterminal al puerto serie Bluetooth que hayamos enlazado con el BlueSM1RF, con la orden ATSW20,236,0,0,1 (ver documentación del módulo)

Roomba
Baud: 57600 or 19200 (see below)
Data bits: 8
Parity: None
Stop bits: 1
Flow control: None

miércoles, 6 de mayo de 2009

Controlar 220v con Arduino



Para controlar con un Arduino bombillas sirve un relé cualquiera (uno de 1A puede con 220W), pero para controlar cargas superiores se necesitan relés más capaces. Este que presento es de 30A, lo que nos permite controlar hasta 6600W (P=I^2*R=I*(I*R)=I*V). Con esto podemos encender y apagar un microondas, un calentador, un aire acondicionado o una regleta con varios equipos.

http://www.sparkfun.com/commerce/tutorial_info.php?tutorials_id=119

Todos los componentes de este circuito y la placa PCB sobre la que montarlos los puedes encontar en http://www.sparkfun.com/commerce/product_info.php?products_id=9096:

Yo lo he montado y funciona correctamente:




Por aquello de trabajar con tensiones peligrosas tomad las debidas precauciones. Asimismo no me responsabilizo de ningún daño que pueda causar.
Ahora lo suyo es conectarlo a un Arduino+modem, o Arduino+Shield Ethernet, o Arduino+Móvil, o Arduino+Bluetooth, o a un módulo de Bluetooth directamente, y controlar lo que sea a distancia.

lunes, 4 de mayo de 2009

Coste

 0€ - Teléfono Siemens S55 reciclado
 4,95€ - Tarjeta SIM SIMYO
 0€ - Relé reciclado
 0€ - en componentes reciclados
 2€ - como mucho, en componentes que no tenía
23€ - Arduino Diecimilia

Total: 30€

Mejoras

Si usara un Arduino pro o un Arduino pro mini de los que van a 3.3v me ahorraría el divisor de tensión, de manera que conectaría directamente el Arduino al móvil sin adaptar tensiones, y podría fácilmente conectar la patilla de RX del Arduino a la TX del móvil, con lo que vería las respuestas del móvil y podría realizar tareas más sofisticadas, como interpretar mensajes SMS.
Y además podría alimentarlo con la batería del móvil. Eso me serviría para tenerlo activo y comprobar cuando se va la luz. Entonces podría hacer otra llamada para avisar de que se ha apagado. Según mi amigo Bruno esto es muy útil si te vas de vacaciones, se te apaga el frigorífico y cuando vuelves te encuentras con toda la comida podrida después de 15 días. Que lo ha sufrido en sus cannes.
Eso sí, habría que recalcular los componentes del relé.
Si queremos usar un Arduino de 5v con dispositivos de 3.3v podemos usar este conversor de niveles: http://www.sparkfun.com/commerce/product_info.php?products_id=8745

Esquema

El esquema escaneado, por si al imprimirlo queda mejor:




Herramientas útiles para los Siemens

SIMOCO (SIemens MObile COntrol):
http://www.unlockeasy.com/modules.php?name=Downloads&d_op=viewdownload&cid=41

Freia (para liberarlos, aunque hay más)
http://www.unlockeasy.com/modules.php?name=Downloads&d_op=viewdownload&cid=20
Para liberarlos solo una cosa: aunque en las instrucciones dice que hay que darle "toquecitos al botón de encendido", en realidad hay que encender el móvil justo en ese momento. El cable que he usado es el de datos con el de corriente conectado a las patillas 1 y 2, que se hace muy facilmente pinchando en las patillas sin tener que soldar ni nada. Ah, y hay que instalar un programa java en el móvil (para "educarlo" dicen).

Hay uno que le quita lo del mensaje del avión, pero no encuentro cual era.

domingo, 3 de mayo de 2009

El esquema

Como mucho cambiaré la foto por una escaneada (¿os gusta el tapete de flores?). Espero no haber cometido ningún error.


Parece mentira que en la época que estamos me siga resultando más sencillo usar un lápiz y un papel. A ver si se imponen y abaratan los tabletPC.

viernes, 1 de mayo de 2009

Fotos

Se podría llamar la alarma Pielnoble; ya le he encontrado patrocinador ;-)


El cutre-adaptador de corriente es el del móvil, que se había estropeado y lo tuve que reparar. Notese el cuidado y el celo con que lo he hecho.


La caja de Pandora abierta de par en par. Me ha cabido todo justito justito:


Un poquito más de cerca:


Desde otro ángulo


Detalle del circuito que adapta la corriente del Arduino al relé. El pegote de estaño es porque la resitencia es reciclada:


Vista general del Arduino. La placa verde de atrás es el relé, que en vez de desoldarlo lo he recortado con una segueta.


Detalle de la soldadura del botón del S55. Son dos circulos concentricos de cobre que he conectado al relé:


La tarjeta SIM que he usado. Es de SIMYO porque me ha costado solo 4,95€ (1€ + 3,95€ en gastos de envío), me han regalado 10€ en llamadas a mi, otros 10€ a mi madre (que es la que me ha invitado a la promoción), solo me cobran lo que gaste y no tiene permanencia (y tienen una fórmula de cobro de las conexiones a internet muy interesante, os lo recomiendo. Ya tengo otro patrocinador ;-))


Con este cable blanco conecto el relé al circuito que adapta la tensión y que a su vez está conectado a la patilla 12 del Arduino:


De las salidas de tensión del Arduino saco 5v para los circuitos y Vin (la tensión que directamente da el cargador, que debe ser un poco más) para el móvil (pin 1), porque vi que con 5v no se ponía en carga.


El cable negro está conectado a tierra y el azul a la patilla 12. Este cable azul es el que controla el relé:


El relé al fondo, con su placa recortada. Junto a él un cable verde, el TX del puerto serie del Arduino (pin 1). Esta salida se pasa por un divisor de tensión para obtener 3,3v (que es lo que quiere el móvil) a partir de los 5v que da el Arduino.


Este es el relé, reciclado de una placa de un rack de teléfonica que tenía por ahí guardada para cuando me hiciera falta:


La pantalla inicial del móvil cuando se le ha desactivado a la SIM la petición de PIN. Por eso tenemos que enviarle la tecla soft (o programable) de la izquierda. Esta pregunta se puede desactivar con programas para los Siemens, pero ahora no recuerdo cual (Siemens service algo, no se, o alguno de los que sirven para liberarlos...)


La cutre-red de resistencias. No se me asusten los ortodoxos ni los principiantes. Al principio solo eran dos resistencias por lo que decidí no soldarlas a ningún trozo de placa. Luego se convirtió en esto. Cuando cuelgue el esquema se verá que no es nada. Lo que veis no es más que el divisor de tensión en la patilla de TX del Arduino a la patilla de RX del móvil y tres resistencias de 15KOhm para llevar a tierra las patillas CTS, RTS y DCD del móvil. Pero como no tenía de esos valores tuve que unir resistencias en serie. En resumen, que funciona, y que el prototipo se va a quedar así. Cuando lo fabrique en serie lo haré mejor.


Para que se vea más claro el cutrerio con papel de celo:


Lo siguiente un esquema de todas las conexiones y circuitos

Código

Este es el código para el Arduino. Lo más importante son las pausas. Tardé en dare cuenta de que si no espero lo suficiente el siguiente comando AT no entra. Debe ser porque no uso el pin de RX y hay que esperar a algún timeout.


void setup()
{
// El pin 13 en Arduino tiene un LED que nos servirá para darnos alguna pista de por donde va el programa
pinMode(13, OUTPUT);
// El pin 12 es el que activa el relé
pinMode(12, OUTPUT);
Serial.begin(9600);
}

void loop()
{
// El LED de la patilla 13 parpadea 3 veces para indicar que empezamos
digitalWrite(13, HIGH);
delay(500);
digitalWrite(13, LOW);
delay(500);
digitalWrite(13, HIGH);
delay(500);
digitalWrite(13, LOW);
delay(500);
digitalWrite(13, HIGH);
delay(500);
digitalWrite(13, LOW);
// Se activa el relé durante un segundo. Esto enciende el móvil.
digitalWrite(12, HIGH);
delay(1000);
digitalWrite(12, LOW);
// Esperamos 15 segundos a que termine de encenderse
delay(15000);

// Este comando permite que controlemos el teclado del móvil por el puerto serie
Serial.println("AT+CMEC=2");
delay(1000); // Esperamos un segundo porque si no no acepta el siguiente comando
// Hace que se pulse la tecla soft izquierda. Es para que diga OK al mensaje de conexión.
// Es un mensaje de protección de avión. Sale porque hemos desactivado la petición de PIN de la SIM
Serial.println("AT+CKPD=[");
delay(10000); // 10 segundos para que conecte a algún servicio GSM

// Usa el listín telefónico de la SIM
Serial.println("AT+CPBS=SM");
delay(5000); // 5 segundos para que lo trague
// Y hace una llamada al número de teléfono de la primera entrada del listín
Serial.println("ATD>1;");
// Serial.println("ATDT123456789;"); // Así sería si marcaramos un número concreto
delay(60000UL); // Un minuto para que llame
// Cuelga todas las llamadas
Serial.println("AT+CHUP");
delay(5000);
// Apaga el móvil
Serial.println("AT^SMSO");
// Arduino ya no tiene más que hacer. Como no se hacerle un halt lo meto en un bucle infinito
for(;;);
}

Recopilación de enlaces

Voy a apuntar aquí enlaces a páginas que me han sido útiles. Luego ya veré como lo voy poniendo en orden.

Página principal de Arduino:
Hay que saber moverse por ella, pero tienes toda la información necesaria allí. Ejemplos prácticos en http://www.arduino.cc/playground/. En un cierto momento vi este libro gratis, pero ahora es de pago: http://oreilly.com/catalog/9780596155513/ . Está muy simpático, te enseña lo básico del Arduino con dibujos como de niño chico. Otro libro: http://books.google.es/books?id=K0nLbhWrTukC&pg=PA207&lpg=PA207&dq=bgb203+command+set&source=bl&ots=tPTmuy4PTI&sig=S8drHGyWVeABewUQPGsFeukFYJ0&hl=es&ei=3GcPSoWjKcyYtgfDwN2GCA&sa=X&oi=book_result&ct=result&resnum=3#PPA100,M1. Y tengo más enlaces, ya los reuniré en una entrada dedicada al Arduino.

Para comprar material:
Esta es la página que me ha dado vidilla en todo este mundillo. Aquí compré el arduino y muchas más cosas. Aprovechando la diferencia entre el dolar y el euro algo me he ahorrado.

Para saber como se conecta el relé:
No vi otro sitio donde te lo explicasen mejor y con más detalle.


Como conectar el Siemens al Arduino:

Patillaje del conector del Siemens (y en esa página de casi cualquier cosa):

El manual de los comandos AT para un Siemens S45:
Aunque le falta una orden fundamental para que funcione en un S55 (AT+CMEC=2).

El manual de los comandos AT para un Siemens L55:
Aquí sí viene el AT+CMEC=2

Una alarma con Siemens más completa:
Este tio hasta responde a SMS y hace una foto con el móvil. Lo que pasa es que usa PICs y resulta más dificil para un pedestre electrónico amateur. Por este documento decidí llevar RTS CTS y DCD a tierra con una resistencia de 15 KOhm (que si no no funcionaaaa)

Otro invento que dió pistas sobre lo de conectar a tierra DCD y CTS y lo de la conversion de niveles:

Otra alarma con Siemens:

El chisme de Sparkfun que hace la conversión de niveles y que me he ahorrado:

Alarma para un piso de vacaciones con teléfono Siemens y Arduino

El primer cacharro que pienso documentar es una alarma que he construido para un piso en alquiler en la playa. El piso está inscrito en una agencia de alquiler a la que se le ha entragado una copia de las llaves. La necesidad que se plantea es la de saber si alguien entra en el piso sin nuestro conocimiento.

Dispongo de varios teléfonos Siemens (un S55, un S65 y un C60) y últimamente he estado experimentando con Arduino, una placa de circuito con un microcontrolador.

El invento ha sido este: he cogido un Arduino Diecimilia, le he puesto un relé que he sacado de una placa de un rack de telefónica que he conectado al botón de encendido del Siemens S55 (total, se le habían caido ya otras teclas) y los he conectado por sus puertos serie (en realidad solo al de RX del teléfono).

Cada vez que el arduino recibe corriente enciende el móvil, hace una llamada a un número, cuelga y apaga el móvil.

Y ya está. No necesito más. Dejo el aparato enchufado a cualquier enchufe y si alguien entra en el piso y enciende los diferenciales de la luz recibo una llamada en mi teléfono (que no contesto y por tanto no me cuesta nada).

Si seguis las entradas del blog, mediante el enlace "Entrada más reciente" vereis los esquemas, los enlaces y las fotos. Lo tengo instalado y funcionando a la perfección.

Inauguración

Queda inaugurado este BLOG o Bitácora Electrónica.

En él presentaré los inventos o cacharreos que vaya realizando. Mi intención es que me sirvan de autodocumentación, y de paso quizás ayude a alguién, no se, a no tropezar con lo que yo ya he resuelto, a que se anime en este mundillo de la electrónica que a mi me abre tanto la curiosidad, y a contribuir con alguna mejora, nueva idea o propuesta.