domingo, 4 de octubre de 2015

Componentes (4): Programador para Arduino

En el artículo anterior hablábamos de dos modelos concretos de Arduino, el  Uno y el Pro Mini. Vimos igualmente que el segundo modelo no trae conexión directa por USB, lo cual es una ventaja (menos coste, tamaño y consumo) y un inconveniente (necesidad de interfaces externas).

Hoy vamos a ver brevemente cómo hacemos para programar el Arduino Pro Mini.
Adaptador CP2102
Arduino implementa un bus denominado UART (Universal Asynchronous Receiver Transmitter) que es una conexión serie que permite comunicarse con otros dispositivos. Utilizaremos este bus para conectarnos al PC y poder programarlo, pero existe un problema: en nuestro PC tenemos otros tipos de buses de comunicación en serie, como RS232 y USB. Por tanto, necesitamos un adaptador o interfaz que nos permita "traducir" la conversación entre ambos extremos. Este adaptador debe convertir además los voltajes, puesto que UART utiliza niveles lógicos TTL mientras que USB no.

Existen muchos fabricantes que venden este tipo de adaptadores, pero básicamente hablaremos de estos dos:
  • Silicon Labs CP2102.
    Este adaptador lo encontramos en este artículo que compré en Aliexpress. Viene un pack compuesto por un Arduino Pro Mini y el adaptador por un precio de 3,71€, o también podemos encontrarlo suelto por unos 1,36€. Como se puede ver es muy barato y tiene una gran ventaja: si lo enfrentamos al lado pequeño del Arduino por donde está accesible el bus UART, sus conexiones van perfectamente emparejadas, sobre todo la conexión entre RXD y TXD, que tienen que ir "cruzadas", esto es: de RX a TX y de TX a RX. Este circuito ya viene así preparado.

    Por otro lado, tiene un inconveniente que hay que tener en cuenta:
    USB proporciona 5V, y este dispositivo propaga esta alimentación al Arduino por el bus UART. Esto está muy bien si nuestro Arduino funciona a 5V, pero si tenemos el modelo que va a 3.3V, aunque por la alimentación no hay problema porque está en los límites admisibles, sí que podemos tener un problema si desde el Arduino estamos alimentando algún dispositivo que vaya a 3.3V, podríamos quemarlo.
    Hay que tener esto en cuenta ya que podemos tener nuestro montaje preparado con sus dispositivos conectados y a la hora de programarlo podemos quemar algo. Para evitar esto, podríamos desconectar el pin VCC del adaptador, para que la alimentación la coja Arduino de otra patilla.

    Por otro lado, su utilización es muy sencilla. En esta foto podemos ver un detalle de cómo lo podemos conectar al Arduino, gracias a que trae unas patillas que puedes soldar a modo de zócalo. Lo pinchas en el Arduino y a programar. Insisto, siempre que no tengas dispositivos sensibles que vayan a 3.3V.
    Por la parte del conector USB lo conectamos al PC y nos aparecerá un nuevo puerto serie que es el que tenemos que utilizar para mandar el programa desde nuestro IDE. Si por lo que sea, tu ordenador no te reconoce el dispositivo, en esta página tenéis los drivers:

    https://www.silabs.com/products/mcu/Pages/USBtoUARTBridgeVCPDrivers.aspx
  • FTDI FT232R.
    Este otro chip es de FTDI (Future Technology Devices Technology) y lo incorpora este otro artículo que también compré en Aliexpress, por uno 1,62€. Lo compré para evitar el problema que acabo de describir, porque la ventaja que tiene es que tú configuras mediante un puente a qué voltaje quieres trabajar: a 5V o a 3.3V.
    En otro orden de cosas, la conexión es igual de fácil que en el otro chip, con la diferencia de que tienes que ponerlo "boca abajo" con respecto al Arduino, y no "enfrentado" como era el otro. Hay que fijarse mucho en las conexiones. La clave está de nuevo en los pines RX/TX que debemos asegurarnos de que van del receptor al transmisor y viceversa.

    Con este además tuve problemas de detección inicialmente por parte de Windows, por lo que os pongo un enlace a los drivers oficiales por si os pasa lo mismo. Una vez instalado el driver, el ordenador lo detecta como un nuevo puerto COM.

    http://www.ftdichip.com/Drivers/VCP.htm
Y eso es todo por hoy.