Tabla de contenido:
Video: TinyLiDAR para IoT: 3 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:44
Si miras a tu alrededor, notarás que se están utilizando muchos pequeños dispositivos inteligentes en la vida cotidiana. Por lo general, funcionan con baterías y generalmente están conectados a Internet (también conocido como la 'nube') de alguna manera. Todos estos son lo que llamamos dispositivos 'IoT' y se están convirtiendo rápidamente en un lugar común en el mundo de hoy.
Para los ingenieros de sistemas de IoT, se dedica mucho esfuerzo de diseño a optimizar el consumo de energía. La razón de esto se debe, por supuesto, a la capacidad limitada disponible en las baterías. Cambiar las baterías en grandes cantidades en áreas remotas puede ser una propuesta muy costosa.
Así que este instructivo se trata de optimizar el poder en tinyLiDAR.
TL; resumen de DR
Tenemos un nuevo modo de medición "Real Time" (a partir del firmware 1.4.0) para ayudar a maximizar el tiempo de ejecución de la batería en los dispositivos IoT.
Exprimir más jugo de las baterías
De manera intuitiva, podemos aumentar el tiempo de ejecución simplemente reduciendo el consumo de energía de los dispositivos IoT. ¡Bien, eso es obvio! Pero, ¿cómo puede hacer esto de manera efectiva y calcular correctamente el tiempo de ejecución esperado? Vamos a averiguar…
Paso 1: Energía pura
Hay muchas formas de hacer esto, pero preferimos dividirlo en lo básico y convertir todo en energía. La energía eléctrica se mide en julios (símbolo J) y por definición:
Un Joule es la energía disipada como calor cuando una corriente eléctrica de un amperio pasa a través de una resistencia de un ohmio durante un período de un segundo.
Dado que la energía (E) también es voltaje (V) x carga (Q), tenemos:
E = V x Q
Q es actual (I) x tiempo (T):
Q = yo x T
Entonces, la energía en julios se puede expresar como:
E = V x yo x T
donde V es el voltaje, I es la corriente en amperios y T es el tiempo en segundos.
Supongamos que tenemos un paquete de baterías compuesto por cuatro baterías alcalinas AA (LR6) conectadas en serie. Esto nos dará un voltaje de arranque total de 4 * 1.5v = 6v. El final de la vida útil de una batería AA alcalina es de aproximadamente 1,0 voltios, por lo que el voltaje promedio sería de aproximadamente 1,25 voltios. Según la hoja de datos del fabricante, "la capacidad suministrada depende de la carga aplicada, la temperatura de funcionamiento y el voltaje de corte". Por lo tanto, podemos suponer aproximadamente 2000mAhr o mejor para una aplicación de bajo consumo, como un dispositivo IoT.
Por lo tanto, podemos calcular que tenemos 4 celdas x 1.25V por celda x 2000mAhr * 3600sec = 36000 J de energía disponible de este paquete de baterías antes de que tenga que ser reemplazado.
En aras de cálculos más simples, también podemos asumir que la eficiencia de conversión es del 100% para nuestro regulador de sistema e ignorar el consumo de energía del controlador host.
Unas palabras sobre el ciclismo
¡No, no del tipo en el que viajas! Hay un par de conceptos técnicos conocidos como "Power Cycling" y "Sleep Cycling". Ambos se pueden utilizar para reducir el consumo de energía, pero hay una diferencia entre los dos. El primero implica apagar el dispositivo hasta que sea necesario y luego encenderlo solo por un corto tiempo para realizar una medición, etc. cantidad de tiempo no trivial para reiniciar y quemar energía mientras lo hace.
El segundo concepto implica simplemente mantener el dispositivo en modo de suspensión con la esperanza de que se despierte más rápido, pero quemará una cantidad finita de corriente mientras está durmiendo. Entonces, ¿cuál es el mejor para usar?
Depende de la frecuencia con la que necesite despertarse.
Paso 2: ¡Ejecute los números
Queremos encontrar la energía total (E) normalizada a 1 segundo para cada escenario enumerado a continuación.
Caso A: Tc = 1 segundo; tomar una medición de distancia cada segundo Caso B: Tc = 60seg; tome una medición de distancia cada minuto. Caso C: Tc = 3600 segundos; tome una medición de distancia cada hora.
Para hacer esto, podemos decir que Tc es el tiempo de ciclo para nuestras mediciones, ton el tiempo activo y toff el tiempo inactivo y reorganizar nuestras fórmulas de energía como se muestra aquí:
Para tinyLiDAR, el tiempo de inicio es de aproximadamente 300 ms o menos y durante este tiempo tomará un promedio de 12,25 mA mientras funciona con un suministro regulado de 2,8 voltios. Por lo tanto, consumirá aproximadamente 10,3 mJ de energía para cada inicio.
La corriente de reposo / reposo para tinyLiDAR es de 3uA ultrabaja. Esto es mucho más bajo que la tasa de autodescarga mensual del 0.3% de un paquete de baterías alcalinas, por lo que investigaremos usando solo el método de "ciclos de sueño" aquí.
¿Por qué no prescindir del micro y pasar directamente al sensor VL53?
La respuesta a esto no es tan obvia. En los primeros días del desarrollo de teléfonos inteligentes, aprendimos que mantener vivo el procesador de alta velocidad hambriento de energía para reproducir mp3 era un método infalible para reducir la duración de la batería. Incluso en ese entonces hicimos todos los esfuerzos posibles para utilizar "procesadores de aplicaciones" de menor potencia para tareas periféricas como reproducir música. Hoy en día no es muy diferente y, de hecho, se podría decir que es aún más importante a medida que miniaturizamos todos estos dispositivos de IoT con cada disminución de la capacidad de la batería. Por lo tanto, el uso de un procesador de aplicaciones de energía ultrabaja para la única tarea de controlar el sensor VL53 y proporcionar datos listos para su procesamiento posterior es un activo definitivo para cualquier aplicación alimentada por batería.
Modos de medición tinyLiDAR
Puede que no esté claro en el manual de usuario en este momento [pero lo estará en algún momento, ya que siempre estamos actualizando nuestro manual de usuario:)]. En realidad, hay 3 modos de medición diferentes en tinyLiDAR.
Modo MC
Desde el inicio de tinyLiDAR, estábamos obsesionados con intentar obtener mediciones más rápidas del sensor VL53 ToF. Así que optimizamos nuestro firmware para obtener los datos de transmisión más rápidos y consistentes. Esto implicó la introducción del almacenamiento en búfer. Un poco de almacenamiento en búfer es algo bueno, ya que permite al controlador del host (es decir, Arduino) obtener sus datos de medición en un instante y pasar a cosas más importantes. Por lo tanto, el almacenamiento en búfer es absolutamente necesario y, debido a esto, podemos lograr velocidades de transmisión superiores a 900Hz incluso en el Arduino UNO relativamente lento. Por lo tanto, el tiempo de respuesta más rápido será al usar el modo "continuo" o MC de tinyLiDAR.
Por cierto, si alguna vez tienes la oportunidad, debes conectar un cable serial al pin de salida TTY en tinyLiDAR y verás lo que hace este modo MC. Literalmente toma una medición lo más rápido posible y, al hacerlo, llena su búfer I2C con los últimos datos absolutos. Desafortunadamente, dado que está funcionando a toda velocidad, también está quemando la máxima cantidad de energía. Consulte a continuación el gráfico actual frente al tiempo de este modo MC.
Modo SS
El siguiente modo es lo que llamamos "SS" para el modo de "paso único". Este es básicamente el mismo modo de alto rendimiento anterior, pero en un solo bucle de pasos. Por lo tanto, puede obtener respuestas rápidas de tinyLiDAR, pero los datos serán de la muestra anterior, por lo que tendrá que tomar dos medidas para obtener los datos más recientes. Consulte a continuación el gráfico actual frente al tiempo de este modo SS.
Los dos modos anteriores se han adaptado perfectamente a la mayoría de los usuarios, ya que eran rápidos y fáciles de usar: simplemente emita un comando "D" y lea los resultados. Sin embargo …
Avanzando hacia el mundo de IoT donde cada mili-Joule cuenta, tenemos un nuevo paradigma.
¡Y es exactamente lo contrario a lo que hemos codificado en tinyLiDAR! Para el mundo de IoT, necesitamos mediciones únicas a intervalos poco frecuentes para ahorrar energía y extender el tiempo de ejecución.
Modo RT
Felizmente, ahora podemos decir que tenemos una solución para este escenario a partir del firmware 1.4.0. Se llama modo "RT" para mediciones en "tiempo real". Y básicamente implementa un método de activación, espera y lectura. Para usarlo, aún puede emitir el comando "D" para iniciar la medición, pero para este modo RT debe esperar una cantidad de tiempo adecuada para que finalice la medición y luego leer los resultados. tinyLiDAR pasa automáticamente a su estado inactivo más bajo de muestras intermedias sub 3uA. En realidad, sigue siendo fácil de usar y ahora es incluso más eficiente energéticamente, ya que solo tiene que tomar una medición en lugar de dos para obtener los datos más recientes, es decir, cero almacenamiento en búfer.
Vea a continuación el gráfico actual frente al tiempo de este nuevo modo RT.
Paso 3: Medidas reales
El uso del modo continuo MC para mediciones de IoT poco frecuentes tiene poco sentido, ya que solo necesitamos mediciones únicas. Por lo tanto, podemos centrar nuestra atención en los modos SS y RT en su lugar. Operar tinyLiDAR desde un suministro regulado de + 2.8v nos proporciona la disipación de energía más baja. Entonces, al usar los ajustes preestablecidos de alta precisión (200 ms), medimos el siguiente consumo de energía en tinyLiDAR:
Modo SS / de un solo paso: 31,2 mJ promediado en 2 mediciones
Modo RT / en tiempo real: 15,5 mJ promediado en 1 medición
Conectando estos valores anteriores en nuestra fórmula de energía y normalizándonos a un segundo, podemos encontrar las expectativas de tiempo de ejecución asumiendo que la energía de nuestro paquete de baterías es de 36000 J.
Caso A: lectura cada segundo (tome 2 lecturas para obtener los datos más recientes) Tc = 1secTon = 210ms por lectura x 2 lecturas Toff = Tc - Ton = 580msIon (avg) = 26.5mA por lectura Ioff (avg) = 3uA corriente de reposo Vcc = Voltaje de suministro de 2.8V La energía activa consumida por la carga en julios es Eon = Vcc x Ion x Ton = 2.8V x 26.5mA * 420ms = 31.164mJ La energía inactiva consumida por la carga en julios es Eoff = Vcc x Ioff x Toff = 2.8V x 3uA x 580ms = 4.872uJ Normalizando a TcE = (Eon + Eoff) / Tc = (31.164mJ + 4.872uJ) / 1 = 31.169mJ o 31.2mJ por segundo El tiempo de ejecución en segundos es, por lo tanto, la energía total de la fuente / energía consumida, que es 36000J / 31,2 mJ = 1155000 segundos = 320 horas = 13,3 días
Repitiendo estos cálculos, podemos encontrar los tiempos de ejecución para los otros escenarios:
Modo SS
Caso A: 2 lecturas por segundo. La energía normalizada es 31,2 mJ. Por lo tanto, el tiempo de ejecución es de 13,3 días.
Caso B: 2 lecturas por minuto. La energía normalizada es 528uJ. Por lo tanto, el tiempo de ejecución es de 2,1 años.
Caso C: 2 lecturas por hora. La energía normalizada es 17uJ. El tiempo de ejecución se calcula en >> 10 años, por lo que la carga debida a tinyLiDAR es insignificante. Por lo tanto, el paquete de baterías estará limitado solo por su vida útil (es decir, aproximadamente 5 años)
Modo RT
Caso A: 1 lectura por segundo. La energía normalizada es de 15,5 mJ. Por lo tanto, el tiempo de ejecución es de 26,8 días.
Caso B: 1 lectura por minuto. La energía normalizada es 267uJ. Por lo tanto, el tiempo de ejecución es de 4,3 años.
Caso C: 1 lectura por hora. La energía normalizada es de 12,7 uJ. El tiempo de ejecución se calcula en >> 10 años, por lo que la carga debida a tinyLiDAR es insignificante. Por lo tanto, el paquete de baterías estará limitado solo por su vida útil (es decir, aproximadamente 5 años)
Por lo tanto, el nuevo modo de tiempo real que usa el ciclo de sueño es un beneficio aquí para extender el tiempo de ejecución más allá de los 4 años si se toma una medición cada minuto como se muestra en el caso B.
Tenga en cuenta que el consumo de energía del controlador del host no se tuvo en cuenta para este análisis y las especificaciones del paquete de baterías fueron conservadoras. Puede encontrar baterías mucho más potentes según desee para satisfacer sus necesidades.
Gracias por leer y estad atentos, ya que proporcionaremos un ejemplo funcional de IoT utilizando tinyLiDAR para nuestro próximo instructable. ¡Salud!
Recomendado:
CircuitPython y TinyLiDAR: Ejemplo simple: 3 pasos
CircuitPython y TinyLiDAR: Ejemplo simple: El diseño microelectrónico tinyLiDAR es un módulo de rango de tiempo de vuelo (ToF) basado en ST VL53L0X con una conexión de bus i2c. Las placas del microcontrolador Adafruit se conectan fácilmente a este sensor, ya que pueden hablar el protocolo i2c a través de su pin de datos
¡TinyLiDAR en tu garaje!: 10 pasos
¡TinyLiDAR en tu garaje !: Proyecto de apertura de puerta de garaje DIY WiFi El mundo de IoT está comenzando a explotar: todas las empresas de tecnología de todo el mundo están tratando de descubrir cómo encajarán en este nuevo mundo. ¡Es una gran oportunidad! Entonces, para este instructable, yo
¿Puedo usar TinyLiDAR en Scratch ?: 3 pasos
¿Puedo usar TinyLiDAR en … Scratch?: Recibimos solicitudes de vez en cuando para preguntar si tinyLiDAR funcionará en su plataforma informática en particular. Aunque tinyLiDAR fue diseñado como un sensor LiDAR fácil de usar para Arduino UNO, no hay nada que impida que se use en otras plataformas
¿TinyLiDAR en un Pi ?: 9 pasos (con imágenes)
¿TinyLiDAR en un Pi ?: ¡Hola de nuevo! Bueno, ahora que has pasado un buen rato con tinyLiDAR y tu Arduino, tu Raspberry Pi tal vez se sienta un poco solo;) El pi tiene un puerto I2C, ¿verdad? Entonces, ¿por qué no conectarlo y probarlo allí? Buen plan, pero si ya has probado
Puerta para mascotas para exteriores de IoT: 6 pasos (con imágenes)
Puerta para mascotas IoT Outdoor: Me inspiré en este instructable para crear una puerta automática para gallinero. No solo quería que la puerta del gallinero tuviera un temporizador, sino que también quería conectar la puerta a Internet para poder controlarla con mi teléfono o mi computadora. Este d