Recientemente construí un rastreador GPS / GSM IoT completamente funcional con un Pi Zero para un proyecto universitario y ahora que está terminado y terminado, me gustaría minimizar el consumo actual de todo el sistema, ya que dos baterías de 2500 mAh solo pueden alimentarlo por uno o dos días como máximo. Sin embargo, todavía soy nuevo en estos dispositivos y me encantaría recibir ayuda con respecto a los cambios de hardware y las técnicas.
Mi objetivo: un dispositivo capaz de ejecutar scripts de Python que tenga un factor de forma minimalista (especialmente altura) con el menor consumo de energía posible.
Mi configuración actual usa:
- Raspberry Pi Zero
- Adafruit Fona 808 GPS y GSM
- Adafruit LSM303 Acelerómetro y magnetómetro
Sé sobre el consumo de Arduinos y MSP430, pero no sé si es posible hacer lo que necesito hacer con estos microcontroladores.
Mis preguntas son:
- ¿Qué tan empinada curva de aprendizaje hay para pasar de Raspberry Pi a más tablas básicas?
- ¿Es posible que estas otras placas ejecuten GSM / GPS / Acelerómetro al mismo tiempo?
- ¿Hay otros módulos que brinden la misma funcionalidad pero consuman menos energía? (No puedo encontrar números de potencia específicos para estos módulos)
- ¿Mis módulos actuales funcionarán con un MSP430 por ejemplo?
- ¿Alguna recomendación / comentario?
fuente
Respuestas:
Asumiré que los requisitos de procesamiento en el dispositivo están cerca de cero. Parece que está utilizando alguna entrada de aceleración para determinar con qué frecuencia reactivar el dispositivo GSM.
Idealmente, desea una MCU que pueda activarse desde el acelerómetro para despertarse del sueño y luego determinar cuándo enviar un ping de ubicación. Cualquier dispositivo basado en micro-pitón debería ser un buen punto de partida.
Como ejemplo del consumo de energía de una placa pequeña, el microbit de la BBC parece usar un par de miliamperios cuando la pantalla está apagada (funcionando a 16 MHz y con el acelerómetro / magentómetro incorporado activado).
Micropython admite 'suspensión', pero dependerá de la plataforma de destino cuánta energía le ahorre. Siendo realistas, para este tipo de aplicación, un sistema operativo integrado C ++ no será más difícil de codificar y permite una mayor flexibilidad para ahorrar un poco más de energía.
La primera etapa en el cálculo de su consumo de energía es identificar los diferentes modos y asignar un costo de energía a cada tarea. Esto le permite comparar el costo del mensaje GPS / GSM con la potencia inactiva diaria de referencia (sin trabajo). Luego puede ver cuál es el ahorro disponible en cada componente. Siempre que su módulo GSM solo esté activo durante unos minutos al día, su consumo de energía puede ser bastante insignificante.
fuente
En mi experiencia, los módulos GSM y GPS consumen mucha más energía que el procesador. Esto es de esperar ya que ambos contienen muchos circuitos de RF y el módulo GSM necesita transmitir y recibir.
El primer paso sería reconfigurar su prototipo para que pueda monitorear la energía consumida por cada parte. Una vez que lo haya caracterizado, probablemente necesitará implementar circuitos de control de potencia para que solo encienda los módulos GPS y GSM cuando sea necesario. Cuanto más tiempo pueda permitirse mantenerlos apagados, mejor será la duración de la batería.
Uno de los problemas con los protocolos GSM y GPS es que si la unidad está apagada por un período de tiempo considerable, entonces lleva más tiempo restablecer las conexiones y esto aumentará el tiempo para reparar primero el GPS y la disponibilidad del circuito de datos para El GSM.
fuente
Usando MicroPython , posiblemente podría cambiar del consumidor Pi Zero a otra plataforma. El PyBoard oficial es un STM32F405RG que podría ser lo suficientemente bueno, pero también es compatible con la serie STM32L4 de baja potencia.
Actualmente está ejecutando un Pi Zero a 1 GHz para usar un UART y un periférico I2C para conectar su SIM808 y LSM303. El Pi consume alrededor de 80 mA en inactivo, sin hablar de cuándo no lo está.
Si pudiera reducir la frecuencia de reloj de su CPU, también podría reducir su consumo de energía. Para esta tarea bastaría un par de MHz.
Por lo tanto, puede cambiar a un PyBoard que consume solo un par de mA por debajo de 10 MHz en modo de ejecución con todos los periféricos encendidos.
Mucho menos 0.4 mA en parada y 2.4 uA en modo de espera.
Posiblemente tendría que portar sus scripts a MicroPython, pero eso sería más fácil que portarlos a C.
fuente