Estou planejando medir o nível da água em um poço, com cerca de 10 m de profundidade e nível máximo de água de até 5 m. Meu plano é usar o sensor ultrassônico HC SR04 para medir a profundidade, transmiti-lo via ZigBee para um Raspberry Pi dentro de minha casa.
Conforme discutido na minha pergunta anterior , preciso selecionar um microcontrolador para conectar o sensor de ultrassom e o módulo ZigBee.
Os parâmetros para seleção são:
Baixo consumo de energia: estou planejando executar isso com bateria, portanto, o baixo consumo de energia é uma prioridade. No momento, não tenho nenhum objetivo de uso de energia ou dias entre as trocas de bateria ou mesmo qual bateria usar. Como esse é mais um projeto de aprendizado e está em minha casa, sou flexível, mas menor uso de energia é melhor.
Baixo custo: este é um projeto de aprendizado para mim, e não quero gastar uma quantia exorbitante de dinheiro com isso, portanto, um custo mais baixo é melhor.
Trabalhando dentro de um poço: Todo o projeto estará funcionando de dentro de um poço e será exposto à forte luz solar e chuva. Eu estarei fornecendo um bom caso e proteção.
Fácil de programar.
Eu escolhi o ZigBee, pois é simples, atende ao meu caso de uso e baixa potência. Mas meu requisito é transportar os dados do sensor e estou aberto a outros transportes. A distância do meu poço ao Raspberry Pi é de cerca de 6 metros com uma parede no meio. Estou planejando medir a profundidade da água a cada 10 minutos e duas vezes por minuto quando a bomba de água estiver funcionando (aproximadamente 20 minutos por dia).
Respostas:
Um processo geral de seleção de microcontroladores.
Resuma seus requisitos em relação ao microcontrolador. Por exemplo, neste caso:
Você pode se dar bem com um controlador de 8 pinos para isso, o que também pode exigir o uso dos pinos do programador para fins gerais.
Decida o desempenho da CPU e os requisitos de memória necessários . É suficiente usar um MCU de 8 bits ou você precisa de um de 32 bits? Quais velocidades de clock da CPU são aceitáveis, dezenas de MHz ou 1 MHz é suficiente? Quanta memória de programa, RAM e ROM são necessárias?
Dada a aplicação descrita, você não precisa de alto desempenho computacional. Provavelmente, um controlador de 8 bits será suficiente (embora não seja muito mais barato que um de 32 bits, para que você possa decidir aqui pelo preço, talvez).
Baixa potência . Quando isso não é crucial, você provavelmente pode se dar bem com quase qualquer tipo de controlador usando o modo de baixa energia com a menor tensão de alimentação e a freqüência do relógio do sistema. Se for mais importante, você pode começar a restringir sua lista de pesquisa iniciando com núcleos de MCU de baixa potência dedicados, como (núcleos de CPU ARM® Cortex®-M0 ou M0 +). Geralmente, as planilhas de dados contêm tabelas para a maioria dos modos de baixa potência / frequência VCC / SysClk ; os melhores listarão também o consumo de cada periférico.
Ferramentas de desenvolvedor . Eu considero isso um aspecto muito importante. As ferramentas de programadores de hardware dedicadas podem custar fortunas, por isso, geralmente, atendo às MCUs para as quais já tenho programadores. Quando você muda para outra família ou marca, é bom investir em uma placa de desenvolvimento que possua um programador integrado que possa ser usado posteriormente para programar suas placas personalizadas. Em geral, sempre verifique primeiro se quanto custa ser capaz de baixar programas para um microcontrolador.
Como o @Sean apontou nos comentários, uma solução possível e econômica seria procurar esses módulos de RF que vêm com um MCU de aplicativo programável e integrado, que pode executar seu firmware enquanto manipula também a parte de comunicação de RF. Esses módulos existem para BLE, WiFi e ZigBee e, possivelmente, para muitas outras tecnologias.
Além disso, sobre como qualquer MCU sobreviverá no poço. Tudo ficará no gabinete que você fornecerá para o dispositivo. Por exemplo, não importa muito qual MCU você escolher se o gabinete não for 100% resistente à água.
TL; DR; Aí vem a peça específica do produto.
Você pode escolher o ATtiny25, que custa 0,87 $ / 1 peça na Farnell. 8 bits e 8 pinos, portanto, não precisará de muito espaço. No modo de desligamento, consome 0,2 μA com o watchdog desativado, a 3 V. 2-4 μA se o watchdog estiver ativado. É compatível com Arduino, portanto, a programação não custa muito (o programador USBasp ou AVRdude custa cerca de 2 dólares no eBay). ( Observe que : você deve usar a biblioteca Arduino Software Serial para fazer interface com um módulo de comunicação de RF, pois este MCU possui apenas SPI por hardware.) No geral, é pequeno, barato, com consumo de energia relativamente baixo, mas o UART de baixa potência pode complica embora. Possui 2 kB de memória de programa, o que deve ser suficiente para você.
Ou use um ARM Cortex M0, que consome 2 μA no modo de espera e 5 μA no modo de parada. Esse MCU é, por exemplo, STM32F030F4, que custa 1,09 $ / 1 peça . É um controlador de 32 bits mais poderoso com uma frequência de clock do sistema de 48 MHz no máximo, mas como você pode ver apenas por + 0,2 $. Ele vem com 16 kB de memória de programa, longe o suficiente para esta tarefa simples. Possui SPI, UART, I2C e muitos outros periféricos. A programação custa mais, o programador dedicado custa 20 $ na Farnell. Na minha opinião, não vale a pena. Em vez disso, você pode investir em uma placa de desenvolvimento para a família F0, que possui um programador integrado (ST-LINK) . Placa STM32F0Discovery custa ~ 10 $. Você pode iniciar a criação de protótipos com esta placa e usá-la como programador posteriormente.
fonte
Considerando a facilidade de programação e o baixo custo, eu provavelmente começaria com algum tipo de módulo Arduino (ou clone de baixo custo). O código para o seu sensor ultrassônico já existe, assim como o código de exemplo para o ZigBee, por exemplo, usando os módulos Digi XBee. Neste último, você conecta o XBee a uma porta serial e, depois de fazer a conexão com a antiga interface de comando "AT", você tem um canal ponto a ponto que pode enviar qualquer texto (para o seu Raspberry Pi ) O ZigBee não é o tipo mais barato de comunicação de curto alcance, mas os módulos XBee caíram de preço em termos reais nos últimos 5 anos.
Eu sei que algumas pessoas têm um problema com a linguagem baseada em C / C ++ usada no Arduino, mas nesse caso você estaria fundindo amplamente scripts já existentes de outros usuários.
Se você pesquisar no "modo de suspensão do Arduino", encontrará exemplos de como colocar o Arduino no modo de baixa energia e acordar esporadicamente para fazer uma leitura, comunicá-la e entrar novamente no modo de suspensão.
fonte