Recentemente, construí um rastreador IoT GPS / GSM totalmente funcional com um Pi Zero para um projeto de faculdade e agora que está concluído e concluído, gostaria de minimizar o consumo atual de todo o sistema, pois duas baterias de 2500mAh só podem alimentá-lo por um a dois dias no máximo. No entanto, ainda sou novo nesses dispositivos e gostaria de alguma ajuda com relação a alterações e técnicas de hardware.
Meu objetivo: um dispositivo capaz de executar scripts python com um fator de forma minimalista (especialmente altura) com o menor consumo de energia possível.
Minha configuração atual usa:
- Raspberry Pi Zero
- Adafruit Fona 808 GPS e GSM
- Acelerômetro e Magnetômetro Adafruit LSM303
Conheço os Arduinos e os MSP430 de baixo consumo de energia, mas não sei se é possível fazer o que preciso com esses microcontroladores.
Minhas perguntas são:
- Quão acentuada é a curva de aprendizado para passar do Raspberry Pi para mais pranchas?
- É possível que essas outras placas executem GSM / GPS / Acelerômetro simultaneamente?
- Existem outros módulos que fornecem a mesma funcionalidade, mas consomem menos energia? (Não consigo encontrar números de potência específicos para esses módulos)
- Meus módulos atuais funcionarão com um MSP430, por exemplo?
- Alguma recomendação / comentário?
fonte
Respostas:
Assumirei que os requisitos de processamento no dispositivo estão próximos de zero o suficiente. Parece que você está usando alguma entrada de aceleração para determinar com que frequência ativar o dispositivo GSM.
Idealmente, você deseja que um MCU que possa ser acionado a partir do acelerômetro saia do modo de suspensão e determine quando enviar um ping de localização. Qualquer dispositivo baseado em micro-python deve ser um bom ponto de partida.
Como exemplo do consumo de energia de uma placa pequena, o microbit da BBC parece usar alguns miliamperes quando a tela está desligada (funcionando a 16 MHz e com o acelerômetro / magentômetro a bordo).
O Micropython suporta 'suspensão', mas depende da plataforma de destino quanta energia isso economiza. Realisticamente, para esse tipo de aplicativo, um sistema operacional incorporado em C ++ não será mais difícil de codificar e permite mais flexibilidade para economizar um pouco mais de energia.
O primeiro estágio no cálculo do consumo de energia é identificar os diferentes modos e alocar um custo de energia para cada tarefa. Isso permite comparar o custo da mensagem GPS / GSM com a energia inativa diária da linha de base (sem trabalho). Você pode ver qual é a economia disponível em cada componente. Desde que seu módulo GSM esteja ativo apenas por alguns minutos por dia, seu consumo de energia pode ser bastante insignificante.
fonte
Na minha experiência, os módulos GSM e GPS consomem muito mais energia que o processador. Isso é de se esperar, pois ambos contêm muitos circuitos de RF e o módulo GSM precisa transmitir e receber.
A primeira etapa seria reconfigurar seu protótipo para que você possa monitorar a energia consumida por cada parte. Uma vez que você tenha caracterizado isso, provavelmente precisará implementar um circuito de controle de energia para ligar os módulos GPS e GSM somente quando necessário. Quanto mais tempo você puder mantê-los afastados, melhor será a duração da bateria.
Um dos problemas com os protocolos GSM e GPS é que, se a unidade estiver desligada por um período considerável de tempo, levará mais tempo para restabelecer as conexões e isso aumentará o tempo para a primeira correção da disponibilidade do circuito GPS e de dados para o GSM.
fonte
Usando o MicroPython, você pode alternar do Pi Zero consumidor para outra plataforma. O PyBoard oficial é um STM32F405RG que pode ser bom o suficiente, mas também há suporte para a série STM32L4 de baixa potência.
Atualmente, você está executando um Pi Zero a 1 GHz para usar um UART e um periférico I2C para fazer interface com o SIM808 e LSM303. O Pi consome cerca de 80 mA em modo inativo, sem falar de quando não é.
Se você pudesse diminuir a freqüência do clock da CPU, também poderia diminuir o consumo de energia. Para esta tarefa, alguns MHz seriam suficientes.
Portanto, você pode mudar para um PyBoard que consome apenas alguns mA abaixo de 10 MHz no modo de operação com todos os periféricos LIGADOS.
Muito menos 0,4 mA no modo de parada e 2,4 uA no modo de espera.
Possivelmente você teria que portar seus scripts para o MicroPython, mas isso seria mais fácil do que portá-los para C.
fonte