martes, 15 de mayo de 2012

Programando para arduino

En esta ocacion les hablare un poco sobre los diferentes puertos que tiene el arduino en especial los puertos seriales que es el tx (pin 1) y rx (pin 0).


El "TX" que básicamente significa transmisión de datos, como su nombre nos indica nos sirve para resivir datos de dispositivos Seriales como las usb o desde un modulo de bluetooth que explicare mas adelante.

El otro puerto  rx es para enviar información desde el arduino asía algún puerto serial.

Es necesario configurar las velocidades de transmisión de datos de los bytes.

Para configurar el modulo de bluetooth desde linux es necesario instalar el "man bluetooth", ya que el que tiene como default no funciona mucho para este tipo de cosas, este paquete se puede instalar desde el synaptic o desde el centro de software de ubuntu. Ya instalado, es necesario que el modulo de bluetooth este en funcionamiento,esto lo podemos realizar con ayuda de nuestro arduino. conectamos el VCC del modulo con el pin de voltaje de 3.3 y con algun pin de tierra para su funcionamiento, ya realizando esto el man bluetooth lo detectara y podremos configurarlo sin ningun problema como serial y modificar los diferentes tiempos de transferencia.





Transferencia actualmente ocnfigurada: 115200

Ahora el programa de ejemplo en android :


En este ejemplo tenemos dos variables, una variable booleana que no guarda el String resivido por parte del serial, y una variable estado que controlara el funcionamiento de un led.

dentro del metodo inicial "setup" agregamos la linea sobre la tasa de trnasferencia de la informacion que tiene que ser la misma que el serial  y declarar el pin que se utilizara para salidas.

dentro de nuestro ciclo repetitivo tenemos  la instruccion "if (Serial.available() > 0) " esto quiere decir que si detencta que los puertos estan en funcionamiento o resiven algun dato lo dara como verdadero en caso que no sera 0 y no entrara en el cliclo.

la instruccion " incomingByte = Serial.read();" le los datos resividos por el puerto "RX" y posteriormente sigue una serie de condiciones para apagar o prender un led.


Algo de programación con Processing para bluetooth
Para poder conectarnos con los diferentes dispositivos de bluetooth en este caso con algun modulo de bluetooth, es necesario la creacion de diferentes sockets para la entrada de datos y salida de datos.


Para poder activar el dispositivo de bluetooth es necesario las siguientes lineas :


void onStart()
{
  super.onStart();
  println("onStart");
  adaptador = BluetoothAdapter.getDefaultAdapter();
  if (adaptador != null)
  {
    if (!adaptador.isEnabled())
    {
        Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
        startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
    }
    else
    {
    }
  }
}






En el celular nos mostrara o preguntara que si queremos activar el dispositivo de bluetooth. posteriormente si se activa el dispositivo de bluetooth se pueden hacer muchas cosas como conectarse con el dispositivo automáticamente o mostrar los dispositivos.

A Continuaciin unas variables importantes:


BluetoothAdapter adaptador; 
BluetoothDevice dispositivo;  // guardar el dispositivo a usar
BluetoothSocket socket;  // para enviar y resivir informacion
InputStream ins;  // para resivir informacion
OutputStream ons; // enviar informacion


Para poder conectarse al dispositivo es necesario realizar las conexiones con los sockets.

    dispositivo = (BluetoothDevice) dispositivos.get(elegido); //  aqui se conecta con el dispositivo elegido de una lista o manera automatica.

    socket = dispositivo.createRfcommSocketToServiceRecord(UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"));


   

    socket.connect();     
    ins = socket.getInputStream();     
    ons = socket.getOutputStream();  
Y ya para enviar datos solo se ase lo siguiente:


        ons.write(0);  // en algun metodo ya sea dentro de algun escuchador de algun boton




Referencia y tutoriales con android, process y arduino
http://webdelcire.com/wordpress/archives/1045
http://wiki.processing.org/w/Android
http://arduino.cc/en/Reference/serial

1 comentario: