Interrupts y Arduino EthernetShield

1

Necesito una pequeña guía en un proyecto en el que estoy trabajando.

Básicamente, estaré usando dos arduinos:

El primero tendrá:

  • 1 RF Link Receiver (enlace aquí: enlace )
  • 1 Ethernet Shield

El segundo tendrá

  • 1 transmisor de enlace RF (enlace aquí: enlace )
  • 1 sensor de humedad y temperatura RHT03

Como probablemente pueda imaginar, lo que quiero hacer es leer algunos datos del sensor en el segundo arduino, transmitirlo por RF, recibirlo y enviarlo a un servidor en la web.

Tengo algunos problemas para decidir qué enfoque tomar para enviar a través de la Web y recibir los datos a través de RF. Tendré que escuchar constantemente el receptor, y si recibo un mensaje, envíelo. Pensé en codificar una lista vinculada y en "almacenar" los valores de los datos detectados, y luego enviar una solicitud http para cada objeto en la lista hasta que esté vacío. Pero, ¿qué sucede si recibo otra lectura del sensor mientras envío el mensaje? ¿Cuál sería la mejor manera de enviar los datos a través del Arduino Ethernet Shield y seguir recibiendo los mensajes del receptor de RF?

Pensé en las interrupciones, pero no tengo idea de cómo se comportaría al leer la respuesta de la solicitud HTML, ya que la mayoría de los ejemplos utilizan las funciones milis () y de retardo.

    
pregunta RainierMallol

1 respuesta

2

Las bibliotecas de valores no admiten las interrupciones en el escudo de Ethernet. (No creo que nadie lo haya hecho funcionar). Notando que el RF Link es un receptor y se conectará al RX del Serial. La biblioteca en serie de Arduino recopilará esto utilizando interrupciones (por byte) en el búfer en serie, que será leído por su aplicación. Por lo tanto, siempre que los datos de serie no excedan el búfer de rx entre lecturas, su bucle principal simplemente necesita atender ambos objetos ... inByte = Serial.read (); construyendo su cadena, luego, cuando así lo desee, envíe un cliente. Imprima lo que desea a su destino. Ninguna de estas lecturas o impresiones están bloqueando.

Mire el ejemplo .. \ library \ Ethernet \ examples \ TelnetClient \ TelnetClient.ino

Donde puede agregar el encuadre de los datos escuchados en serie y luego poner los resultados deseados en una computadora. como se hace en el ejemplo .. \raries \ Ethernet \ examples \ PachubeClientString \ PachubeClientString.ino

    
respondido por el mpflaga

Lea otras preguntas en las etiquetas