Arduino Wireless programación con XBee serie 1 o 2 (2 / 5 paso)

Paso 2: Circuito y código

Este es el circuito que handel la programación de Arduino Duemilanove. Divertido lo suficiente, su basado en un microcontrolador Arduino sí mismo. Os adjunto una foto del esquema en caso de que no se puede abrir el archivo de eagle.

Un fondo en el circuito:
Lo más singular de este circuito es probablemente el hecho de que utiliza una interrupción sobre el pin digital 2 que es conectado al pin RX del Arduino (Arduino que está destinado a programar) destino. Se trata de detectar el primer bit bajo de datos en serie, que serán el IDE de intentar restablecer el arduino para un bosquejo de la carga. Sin embargo, el IDE no puede restablecer el destino Arduino directamente, pero es por eso que incluí el Arduino intermediario (el Arduino que restablecerá el destino Arduino). Una vez que una interrupción se activa un temporizador, realmente una función de retardo, que desencadena un bajo a alto pulso en D8 comenzará. A su vez, D8 está conectado a la línea de reset de Arduino destino y hará que se reinicie.

He encontrado un buen momento para retrasar fue casi 500ms o 499500us para ser exactos. Llegué a esto por monitioring la comunicación serial y restablecer la línea de un Arduino que fue conectado por USB a mi portatil y he subido un programa, y ensayo y error. He publicado una foto de los resultados en este paso, es que con el programa de Matlab que operan como un osciloscopio. Esto puede ser un punto de mejora, porque según el cuadro puedo acortar el retraso a 100ms o 250ms del primer comando reset serie. Me quedé con 499500us porque funcionó y un medio segundo subir más corto no era digno de otra hora de depurar me. Se puede ver que 499500us no es un número muy general para llegar a. Tuve que probar 490ms, 495ms, 499ms, 500ms, 501ms, 505ms,... antes de llegar a 499500us.

Para evitar la interrupción de restablecer el destino Arduino en cada transmisión serial recibido durante la carga incluye un tiempo de espera de 60. Que parece ser cuánto tiempo tomaría para subir incluso un programa de ~ 30kb; el tamaño máximo posible. Sin embargo es el momento de subir un programa de 1.100 bytes se detectan aproximadamente 5s así que incluido otra interrupción que se detiene el tiempo de espera si un alto voltaje en el pin A0 del destino Arduino. Por lo tanto, si se incluyen unas pocas líneas de código que pulso un alto nivel en el pin A0 en la rutina de setup() de destino Arduino que acortará significativamente el tiempo entre ficheros para sus pequeños bocetos. Programé un LED azul de luz cuando el tiempo de espera está activo. Indica que está cargando, y nada puede transmitirse en el momento.

Una última nota para este paso. Recomiendo poner este circuito en un escudo y utiliza los conectores hembra para montar el XBee. Esto no sólo hacer su circuito mucho más robusto, una obra de arte, no permanentemente Comisión un XBee, pero también acelerar su prototipos que es probablemente lo que tu hacer cuando su carga de código bastante a benift de hacerlo de forma inalámbrica. Si eres listo no soldar, sin embargo, o no belive me lol, siempre puede protoboard el circuito y utilizar como eso. Que es lo que hice cuando era prototipos este circuito.

Por alguna razón que no puedo conectar mi código aquí, ¿sabes por qué? He probado Chrome y Explorer. Así que pegué más abajo.

/*
Este bosquejo está destinado a ser montado en un Arduino (utilicé un 5v UNO) que va a ser utilizado
para restablecer un Arduino Duemilanove que se pretende programar inalámbricamente. Cuenta con una
interrumpir en el pin 2 (atada a RX en destino Arduino para saber cuando una carga
se intenta y por lo tanto, restablecer el destino Arduino en el momento apropiado.
Existe otra interrupción sobre el pin 3 (empatado a A0 en destino Arduino) que se utiliza
como un pin de señalización por el Arduino programado a este Arduino que la
ha concluido el proceso de programación. Se muestra un ejemplo de tal una rutina y señalización
a continuación. Para la mejor práctica, incluirla como la primera línea en su rutina de setup() de su
programar Arduino.

pinMode (A0, salida);
digitalWrite (A0, LOW);
Delay(1);
digitalWrite (A0, alto);
Delay(1);
digitalWrite (A0, LOW);
pinMode (A0, entrada);

Sin embargo esto no es necesario, ya que este programa incluye un 60s tiempo de espera después de
que se puede otra vez programar este chip. El anteriormente mencionado Código simplemente se detiene la
tiempo de espera, lo que le permite subir código immeadelty después de la subida anterior. En cualquiera
caso que no se puede subir hasta que se apaga el LED azul en D4.
*/

volátil Inicio boolean = false;
volátil boolean = false;

resetpin static byte = 8;
blueledpin estática bytes = 4;
void setup()
{
pinMode(2,INPUT);
pinMode(3,INPUT);
pinMode(blueledpin,OUTPUT);
pinMode(resetpin,OUTPUT);
pinMode(13,OUTPUT);
digitalWrite(blueledpin,LOW);
digitalWrite(resetpin,HIGH);

attachInterrupt (0, resetter, LOW);      este pin es conectado a la línea de RX de otra Arduino
attachInterrupt (1, stopignore, HIGH);   este pin está conectado a A0 de otra Arduino
detachInterrupt(1);    Sin embargo esta interrupción es necesario solamente cuando el primero de ellos ha provocado

}

void loop()
{
if(startup)
{
detachInterrupt(0);  para no reiniciar otra vez en medio de la carga
digitalWrite(resetpin,LOW);

delayMicroseconds(499500); 499500us funcionado bien

digitalWrite(blueledpin,HIGH);
digitalWrite(resetpin,HIGH);  traer para parar resetear el Arduino
tal vez introducir una pequeña pausa aquí
attachInterrupt (1, stopignore, HIGH);
Inicio = false;

para (unsigned int i = 0; i < 60000; me = i + 50) //delay un total de 60 a menos que "hecho" es verdadera
{
digitalWrite(blueledpin,LOW);
Delay(25);
digitalWrite(blueledpin,HIGH);
Delay(25);
if(Done) //then dejar tiempo de espera ya ha terminado de subir
{
i = 60000;
rotura;
}
}

reajuste para la carga siguiente de código
attachInterrupt (0, resetter, LOW);
detachInterrupt(1);
= false;
digitalWrite(blueledpin,LOW);

}
}

void resetter() //triggered solamente en el inicio de una carga. Por ejemplo, primer byte bajo de una carga
{
Inicio = true;
digitalWrite(blueledpin,HIGH);
}

void stopignore()
{
= true;
}

Artículos Relacionados

Hacer su proyecto de Arduino wireless en minutos, con el escudo de inventores sin hilos

Hacer su proyecto de Arduino wireless en minutos, con el escudo de inventores sin hilos

el escudo de inventores utiliza un tubo sin hilos, que es un especial módulo de RF inalámbrico que le permite fácilmente y confiablemente, enviar y recibir datos inalámbrica libre de errores entre dos o más placas de Arduino.Es de largo alcance – dis
Captura de movimiento con un acelerómetro de Arduino con XBee comunicaciones

Captura de movimiento con un acelerómetro de Arduino con XBee comunicaciones

***************************************ACTUALIZADO 10 DE JUNIO DE 2014 ***Según lo prometido, este Instructable ha sido actualizado para incluir una sección sobre comunicación XBee. Además, un Instructable nuevas se publicarán pronto sobre el desarro
Arduino WiFi termómetro (con página web) - Arduino wireless

Arduino WiFi termómetro (con página web) - Arduino wireless

Lo que usted necesitaUna placa Arduino (cualquier placa compatible es aceptable).LM-35 (para utilizar con el archivo suministrado se puede utilizar DS18B20 pero tienes que convertir el código fuente respectivamente).Módulo de router WiFi HLK-RM04.Fue
Proyecto de Mecatrónica de la Universidad de Rowan. Inalámbrico de coche/Xbee serie 2 sección y Xbee múltiple potenciómetro Control

Proyecto de Mecatrónica de la Universidad de Rowan. Inalámbrico de coche/Xbee serie 2 sección y Xbee múltiple potenciómetro Control

Al elegir xbees, debe decidir entre el serie 1 y serie 2. Serie 1 xbees utilizan la comunicación punto a punto. Esto hace de programación les simple desde un xbee serie 1 sólo puede hablar a un otro xbee serie 1 y no más. El xbee serie 2 es una herra
Tutorial de Arduino Wireless SD Shield

Tutorial de Arduino Wireless SD Shield

como su nombre indica, el escudo de Arduino Wireless SD sirve dos funciones. Ante todo, este escudo permite que fácilmente la interfaz con los módulos de transceptor de Xbee para crear malla de redes y otros dispositivos inalámbricos. En segundo luga
Utilice xbees (serie 2) para controlar un motor

Utilice xbees (serie 2) para controlar un motor

usando dos xbees, un arduino xbee explorery un puente h, sin hilos controlan un motor DC girar en ambos sentidos (último video).Nota: utilicé el xbee vinculados, pero para una comunicación uno a uno, en lugar de una red de dispositivos inalámbricos x
Arduino: Control de servos con controlador de PS2 (programa con Visuino)

Arduino: Control de servos con controlador de PS2 (programa con Visuino)

En este Instructable aprenderá a programar el Arduino para controlar el motor Servo de un control de Play Station 2 con la ayuda de Visuino - un ambiente de desarrollo gráfico fácil de usar para Arduino.Tenga en cuenta que la anotación en algunas de
Arduino Bluetooth programación escudo (código de carga inalámbrica)

Arduino Bluetooth programación escudo (código de carga inalámbrica)

Este proyecto le mostrará cómo hacer un código de Arduino de carga inalámbrica de tu ordenador via Bluetooth.Paso 1: Paso #1: protoboard el circuito de instalación del módulo de Bluetooth. •El módulo de Bluetooth utilizado en este proyecto es el HC-0
Tripwire alarma con láser

Tripwire alarma con láser

Ningún sistema de seguridad está completa sin los lasers. Así en este proyecto que voy a mostrar cómo construir una alarma de tripwire láser desde un punto de láser, un par de espejos y unos pocos dólares de partes eléctricas. Con esto puede cubrir u
Wireless atado disparar con cualquier cámara réflex digital V2!

Wireless atado disparar con cualquier cámara réflex digital V2!

---Este tutorial es compatible con el TP-Link router mr3040 V1 y V2.x! Pero si tu router tiene la versión de hardware debe seguir aquí la versión mejorada de V2.x: ------Esta es una versión mejorada y mejor de mi primer tutorial llamado "wireless tet
Wireless atado disparar con cualquier cámara réflex digital V3!

Wireless atado disparar con cualquier cámara réflex digital V3!

---Esta es una versión mejorada y mejor de mi primer tutorial llamado "wireless tethered shooting con cualquier cámara réflex digital V2. Este tutorial no es compatible con la versión 1.0 de la TP-Link MR-3040! Necesita la versión 2.0 o superior para
Piñones cortados con láser y el control de servo de una válvula

Piñones cortados con láser y el control de servo de una válvula

En el proceso de construcción de un robot coctel, me encontré que necesitan una válvula servo controlada. Jugaba con un acoplamiento de brazo simple, pero la geometría no muy bien. Fue difícil conseguir el apalancamiento en ambos extremos de la carre
PWMSwizzling un Arduino Breakout de Edison con Grove Seeed protectores Motor

PWMSwizzling un Arduino Breakout de Edison con Grove Seeed protectores Motor

Este instructable explica los pasos necesarios para configurar el hardware y software de una board Intel Edison Arduino Breakout para que le comunicará con un escudo del Motor Grove Seeed. Se proporcionarán ejemplos de bocetos para el control de un p
Arduino Wireless Parking Sensor

Arduino Wireless Parking Sensor

Este proyecto describe la construcción de nuestros sensores de estacionamiento portátil.Datos de sensores de ultrasonidos, el sistema aparecerá la pantalla de LCD a través de bluetooth. Nuestro sistema proporcionará beneficios a través del tablero es