¿Cómo conectar RFduino a internet?

7

Respaldé el proyecto RFduino en Kickstarter para usar En mi próximo proyecto. Básicamente es una pequeña placa compatible con Arduino con un Bluetooth LE integrado que admite protectores adicionales.

También tengo un Arduino Uno normal con un Ethernet Shield .

Lo que me gustaría construir

Estoy pensando en una red de sensores (humedad y temperatura) para uso en interiores con múltiples RFduinos con protector de batería de monedas que se encuentra en la casa. El Arduino Uno con el escudo Ethernet y un bluetooth conectado a un enrutador enviaría los datos a mi servidor, por lo que puedo monitorear las estadísticas de forma remota.

Pregunta

Me gustaría transmitir datos cada 10 minutos para mantener el consumo de energía bajo. ¿Cómo puedo activar los sensores y mi estación principal (el uno) al mismo tiempo, transmitir datos (desde los sensores a la estación principal y desde la estación principal a mi servidor) y volver a ponerlos en suspensión? ¿Existe algún riesgo por perder datos porque uno de los sensores podría estar despierto cuando la estación principal aún está durmiendo? ¿Puede el escudo Bluetooth Uno interferir con el escudo Ethernet?

No estoy pidiendo un código, pero ¿tiene sentido la idea? Los enlaces a proyectos relacionados ayudarían mucho. También pensé en usar xbee para la comunicación de datos, pero me pareció bastante complicado y ahora que Bluetooth LE necesita menos energía, no puedo ver ninguna ventaja de xbee sobre Bluetooth LE.

    
pregunta

3 respuestas

2

En cierto modo tiene sentido.

No hay mucho problema mantener el Uno en 24/7 (no consume mucha energía). En lugar de conectarlo a una batería, consiga una buena verruga de pared para ello. De esta manera, no tienes que preocuparte mucho por sincronizar los RFduinos también. Simplemente espere pacientemente a que un RFduino se conecte a él. Sin embargo, si do quiere mantenerlos sincronizados, simplemente use la biblioteca Time , de alguna manera, enciéndalos a todos al mismo tiempo (fácil si usas el pin de reinicio), y reza para que su fuente de energía sea ininterrumpida.

Acerca de los RFduinos: es probable que también pueda mantenerlos encendidos, en un bucle que se interrumpe cada 10 minutos para activar el bluetooth y enviar datos. Aún mejor, use una biblioteca como this que te brinda un modo de suspensión eficiente en el uso de la energía para trabajar.

Sin embargo, si no desea que los RFduinos se mantengan encendidos, un simple circuito con un temporizador 555 y un relé debería ser suficiente para encenderlo cada pocos minutos (puede apagarse a sí mismo a través del pin RESET del 555). ). Mientras el Uno esté encendido las 24 horas del día, los 7 días de la semana, no necesita usar ninguna sincronización especial y puede hacer que los RFduinos envíen valores a intervalos escalonados.

Aquí hay un esquema:

Conectelapartequedice"A Pin" a algún pin en el RFduino. Enviar una salida ALTA constante en él. Cuando desee apagar, envíe una señal BAJA.

Las partes "To Vin" y "To GND" van a los respectivos pines en el RFduino.

Si no puede encontrar una resistencia 866K, debería funcionar algo de un valor cercano. Básicamente, ln (2) * R2 * C2 debe ser de 600 segundos.

Tenga en cuenta que los 555s tienen diferentes comportamientos RESET. Queremos que el que se inicia en su ciclo BAJO cuando se reinicie.

    
respondido por el Manishearth
1

Como alternativa, podría desarrollar su programa para escuchar las solicitudes de conexión y recopilar y enviar datos de los sensores como valor de retorno. Esto evitaría la necesidad del circuito o bucle del temporizador, aunque sería necesario dejar encendido el Uno y los RFduinos constantemente. Dado el consumo de energía, la capacidad de cambiar la frecuencia de muestreo fácilmente podría ser una excelente ganancia para usted. Simplemente cambiaría la frecuencia con la que su computadora sondea el Uno, nada en el Uno o los sensores cambiarían.

    
respondido por el John
0

Algunas observaciones.
1) ¿Se colocará su uno para que pueda llegar a todos los sensores a través de Bluetooth?

2) ¿por qué no solo agregas bluetooth a tu servidor central y evitas la sincronización de la sincronización de tiempo por completo, ya que el servidor central estará encendido todo el tiempo?

3) el cálculo de cuentas fallidos con el temporizador eventualmente se desviará. Querrás que tengan la sincronización de la red de igual a igual en cada ciclo de activación y coordinar la próxima suspensión.

Los detalles del sueño arduino están aquí, (pero no estoy seguro de si el RFDUino funcionará de la misma manera):

enlace

probablemente estarías despertando con un temporizador de vigilancia, ya que no hay eventos específicos aparte del tiempo que activa tus lecturas.

Buena descripción de eso aquí: enlace

Creo que puedes eliminar el uno de tu arquitectura y conservar la vida útil de la batería con el apagado del hardware. Asegúrese de que su servidor central tenga bluetooth y pueda ver al menos una de las unidades. Me gustaría ver la solución para que todos los sensores agreguen la información de cada uno. De esa manera, mientras todos los RFDuino puedan ver al menos otro RFDuino, pueden pasar su información hacia adelante.

En ese diseño, un RFDuino se activaría y publicaría su lectura a todos y cada uno de los vecinos que ve, y luego leería a todos y cada uno de los vecinos para conocer los valores que el vecino ha recopilado hasta que todas las lecturas esperadas estén presentes (lo haría debe preconfigurar la red para que sepa cuántos pares puede esperar). Una vez que cada sensor haya recopilado toda la información de todos los demás, podría enviar una señal de sincronización y apagado. Eso evita que los sensores se apaguen si no tienen todas las lecturas de todos los demás, y la sincronización asegurará que, con suerte, los sensores no permanezcan encendidos demasiado tiempo. Entonces, si un sensor se despierta temprano, esperará hasta que todos los demás hayan enviado sus datos a la red antes de apagarse. Si se despierta tarde, los otros sensores lo estarán esperando. La señal de sincronización debe garantizar que el próximo ciclo de sueño comience relativamente cerca para todos, y que el sistema se corrija de alguna manera.

En este diseño, si uno de sus sensores desaparece debido a la duración / falla de la batería, todos los demás sensores permanecerán despiertos esperándolo. Por lo tanto, necesitaría un código de emergencia que se activa después de que un sensor se haya quedado esperando en un par en los datos faltantes del sensor durante más de dos intervalos normales. Luego elimine ese par de la lista de espera y continúe la operación.

Suena como un proyecto divertido, háganos saber cómo resulta.

    
respondido por el Tim

Lea otras preguntas en las etiquetas