Paso 1: FTDI o subir serial
FTDI es realmente una marca de patatas fritas. La empresa FTDI se especializa en virutas usadas para conectar vía USB. En tierra de Arduino, se utilizan chips USB to serial para un equipo que ejecuta el IDE de Arduino al procesador principal de tu Arduino para subir nuevos bocetos y para interactuar con sus dibujos a través de una ventana de monitor serie. Las interfaces de chip USB to serial con la interfaz UART del procesador ATMEL en su Arduino.
En orden para el Arduino aceptar un boceto de la interfaz serial, funciona un programa llamado un gestor de arranque, que acepta el dibujo y escribe en la memoria Flash. El gestor de arranque reside realmente en una pequeña porción de la memoria Flash en la gama superior de direcciones de memoria, que es reservada para el uso del gestor de arranque. Como el programa bootloader recibe el bosquejo, almacena en la parte inferior de la memoria Flash.
Esta programación serial utiliza un protocolo llamado TTL serie. Se basa en un antiguo protocolo de comunicación llamado RS-232. Comunicaciones RS-232 utilizan tensiones que cambian rápidamente de un voltaje positivo de 3 a 25 voltios, a una tensión negativa de -3 a-25 voltios. Computadoras personales por lo general no vienen con interfaces RS-232, pero ellos hace unos años. Un PC con una interfaz tan típicamente utiliza tensiones que oscilan entre 12 y-12 voltios para enviar una señal RS-232. El procesador de ATMEL en un Arduino utiliza señales en el rango de 0 a 5 voltios. La versión de este protocolo RS-232 que es compatible con los voltajes en el rango que puede manejar el procesador de Arduino se llama TTL serial, o a veces puede escuchar llamado TTL-232, o a serie.
Arduinos la mayoría tienen un integrado de chip adaptador USB a serial, para que pueda conectar el Arduino directamente al ordenador sin ninguna interfaz especial o programador. Algunos Arduinos, LilyPad, Mini y Mini Pro, no vienen con un adaptador de USB a serie y debe proporcionar su propio uno externo. Los adaptadores externos muy a menudo se llaman adaptadores FTDI, incluso si la marca de la viruta no es FTDI.
Hay varias conexiones o cables de comunicación serial. Los más importantes se llaman RX (corto para recibir) y TX (corto para transmitir).
Como su nombre indica, el cable RX o pin recibe de otro dispositivo. Escucha para la comunicación entrante. El cable TX o pin transmite datos a otro dispositivo. El cable TX desde el adaptador de USB a serial rápidamente cambia entre 0 y 5 voltios en un patrón, y está conectado al pin RX en el procesador de Arduino, que es escuchar a esos patrones.
La comunicación es bidireccional, por lo que procesador de Arduino puede enviar señales hacia el adaptador de USB a serie. Las aplicaciones de procesador es propio TX pin para enviar una señal al pin RX del adaptador USB a serie. El adaptador de USB a serial traduce las señales de ida y vuelta entre el Arduino y el ordenador mediante el cable USB.
El ordenador envía el dibujo a tu Arduino y recibe el sketch de Arduino para que el equipo puede verificar que el programa está bien cargado. La misma conexión serial puede utilizarse por su sketch en Arduino para comunicarnos con usted a través de la ventana del monitor serie. Es común utilizar este método para depurar tus bocetos, porque puede espolvorear Serial.print declaraciones en el código en lugares estratégicos para informar el valor de las variables o para contar lo que está haciendo el código en el momento. Y puede enviar datos a su computadora, como el sensor o lecturas de pin de entrada. También puede enviar datos desde el ordenador al dibujo en su Arduino usando al monitor serie.
¿Usted puede preguntarse cómo el Arduino sabe cuando comunicación serial es tratando de enviar un bosquejo para cargar, o simplemente comunicarse a través del monitor serial con el bosquejo que ya se está ejecutando en el Arduino? La respuesta es sencilla. El programa gestor de arranque que acepta bocetos y reprograma el Arduino sólo funciona en los dos primeros segundos después de que se reinicia el procesador del Arduino. Si el programa bootloader de Arduino no recibe una cierta secuencia de caracteres que indica un dibujo es intentar subir, sale corriendo y empieza el boceto que ha cargado previamente.
Cuando Arduinos fueron desarrollados en primer lugar, la persona cargando un sketch en Arduino tuvo que presione el botón de reset en el Arduino en el inicio del proceso de carga, tiempo correctamente y vuelva a intentarlo. Las versiones posteriores de Arduino hace uso de un cable adicional protocolo serial llamado DTR para restablecer automáticamente el Arduino. Puesto que la señal DTR va de 5V a 0 en el momento que se inicia una nueva conexión con Arduino, si usted envía esta señal a la línea de reset del procesador de Arduino, se pone a cero. Si la razón que se establece la nueva conexión serial es porque el IDE de Arduino envía un boceto para el gestor de arranque, el gestor de arranque sigue adelante y acepta el bosquejo y la almacena. Si razón que se establece la nueva conexión serial es porque estás abriendo al monitor serie del IDE de Arduino, luego la restablece de Arduino, el gestor de arranque ejecuta sólo lo suficiente para darse cuenta del que IDE no está tratando de enviar un boceto y el dibujo que previamente subido comienza a correr.
Es útil conocer estas señales como la señal DTR usado para reajuste automático, especialmente si usted quiere conectar correctamente un adaptador USB a serial a un Arduino que no tiene el adaptador construido en, como LilyPad, Mini o Mini Pro. O, si desea solucionar problemas con un Arduino, o programa de uno Arduino con otro. He mencionado en el párrafo anterior que la señal DTR va de 5V a 0 en el momento que se establece una conexión nueva. Bien, esta señal baja y permanece baja durante todo el tiempo que está conectado. Si esa señal se une directamente al pin de reset del procesador, el procesador se quedaría en un estado de reset y nunca empezar ejecutando el gestor de arranque o el boceto que has subido previamente.
Así que, aquí está el truco: DTR la señal es enviada a través de un pequeño condensador al pin de reset del procesador. El condensador convierte el voltaje de la señal DTR (que baja y se mantiene la baja) en un punto temporal que baja a 0V y sube hacia atrás a 5V. Esto restablece el Arduino y permite que se inicie el gestor de arranque, que más tarde comienza el bosquejo.
Un adaptador de USB a serial requiere un conductor para ser cargado en su computadora, para que su equipo entienda cómo comunicarse con él. Arduinos originales use específica y finita lista de modelos de adaptadores de USB a serie para que el IDE se puede empaquetar previamente con todos los drivers que necesites. Si está usando un clon, falso, derivado, hecho en casa o junta de desarrollo compatible de lo contrario no hecha por alguien distinto de arduino.cc o uno de sus socios fabricantes, está realmente bien ya que es software y hardware de código abierto. Cualquiera puede hacer uno. Pero la junta puede utilizar un adaptador de USB a serial que necesita un controlador para su equipo y que no está incluido en la descarga de software para el IDE de Arduino. Un ejemplo de esto es el chip de CH340G USB a puerto serie que es muy común en placas Arduino-compatible vendidos en eBay y Amazon. Es bueno tener conocimiento de esto por lo que preparar el ordenador con el driver adecuado.
Esta comunicación serial pasando con procesador de Arduino generalmente sucede a través de pernos especializados en el procesador en el que están específicamente diseñados para la comunicación serie TTL. El procesador tiene hardware especial llamado un UART, que se encarga de enviar los datos por el pin TX o recepción de datos en el pin RX. La lógica para el manejo de estas señales es incorporada en el procesador a un nivel muy fundamental. Si no utiliza los pines RX y TX en el procesador para comunicación serial con el UART, los pernos están disponibles para hacer otras cosas, como la activación de relés, transistores, LEDs, o recibe señales digitales de los sensores. Ellos simplemente pines digitales si no ocupaban con las señales de serie. Algunos chips de procesador tienen múltiples UARTs y por lo tanto varios conjuntos de pines RX y TX. Los pernos son pines digitales llano si no se utiliza por la parte de la UART del procesador para comunicación serial.
Un gestor de arranque puede ser diseñado para aceptar bocetos a través de cualquier protocolo usando casi cualquier pines del procesador. El procesador tiene una gran variedad de pernos que llano pines digitales pero esos pines se pueden utilizar opcionalmente para protocolos especializados. Por ejemplo, hay un grupo de pines que puede ser utilizado para el protocolo IIC o I2C, que es un protocolo de bus serie especial capaz de comunicarse con varios dispositivos. Y hay otro grupo de pines que puede ser utilizado para el protocolo SPI, que es sin embargo, otro protocolo de bus serie diferentes utilizado para comunicarse con dispositivos. El procesador posee hardware especial diseñado para implementar estos protocolos diferentes en los varios pernos dedicados, y la lógica para el manejo de estas señales es incorporada en el procesador a un nivel muy fundamental.
Twister #1: Estos diversos protocolos como TTL serial, I2C y SPI tienen la lógica de bajo nivel integrada en el procesador para el manejo de los protocolos si los pines específicos para el protocolo están conectados a otro dispositivo, pero los protocolos pueden ser implementados para trabajar en cualquiera de los pines digitales del procesador por escribir software que emula el comportamiento de los circuitos de lógica incorporado del procesador. Esto se denomina bit de autoagresión. Puede escribir un programa que impulsa los pernos en un patrón que cumpla con los requisitos o especificaciones del protocolo. Por ejemplo, puede escribirse un protocolo serial de software que utiliza pines UART no del procesador. El software entonces toma el lugar de los circuitos UART hardware. Esto es útil si los pasadores que se emplean habitualmente para un protocolo concreto se ocupan de lo contrario, y es necesario utilizar otros pins. O, si usted quiere tener más que la incorporada con una interface serie. Por ejemplo, el procesador ATmega328P tiene solamente una UART y utiliza los pines digitales 0 y 1. Normalmente sólo se comunica con un otro dispositivo serial a la vez. Si usted quiere conectar otro dispositivo serial en las patillas 2 y 3, puede hacerlo con un programa serial que bit-bangs el protocolo. El bootloader Optiboot puede compilarse para comunicarse a través de software serie en pines UART no.
Arduinos vienen comúnmente con un bootloader serial instalado, que utiliza el hardware UART a bordo el procesador ATMEL, y el IDE de Arduino ejecutándose en el equipo está diseñado para comunicarse con ese bootloader.
Twister #2: Usted no necesita un gestor de arranque! Lea a continuación sobre ISP.