Velocímetro de bicicleta com ESP-12

A ideia é fazer um hodômetro de bicicleta com ESP-12, chip que permitiria criar um aplicativo para verificar a velocidade da bicicleta. Pretendo medir a velocidade da bicicleta em km/h (quilômetros por hora) usando um sensor reed switch e um ímã na roda.

É assim como qualquer outro hodômetro de bicicleta funciona basicamente. O diferencial do meu projeto será o display (não haverá display adequado): mostrarei a velocidade em seis LEDs em incrementos de 5km/h. Portanto, o LED 1 é >5km/h, o LED 2 é >10km/h e o LED 6 é >30km/h. Isto significa que não consigo medir com precisão nada acima dos 30 km/h, o que para uma bicicleta de lazer de fim de semana é aceitável na minha opinião.

Como afirmado anteriormente, usarei um ESP8266 ESP-12 como cérebro do projeto, só porque tenho vários deles por aí. As conexões para programação e reinicialização serão bastante semelhantes às encontradas aqui.

Estado atual do projeto

O projeto está finalizado, testado e pronto para você usar (e comprar de mim se quiser. Basta me enviar uma mensagem no final da página). Compartilhei um monte de atualizações do projeto: confira todas elas aqui.

Diagrama esquemático e layout da PCI

Falando em conexões, aqui está o diagrama esquemático e o layout da placa de circuito impresso do projeto. Está tudo disponível no meu Github, aqui.

Diagrama esquemático do odômetro de bicicleta
Diagrama esquemático do odômetro de bicicleta
Layout da PCI do odômetro de bicicleta
Layout da PCI do odômetro de bicicleta
Vista 3D frontal da PCI do odômetro
Vista 3D frontal da PCI do odômetro
Vista 3D traseira da PCI do odômetro
Vista 3D traseira da PCI do odômetro

Algumas coisas para notar: os seis LEDs serão charlieplexados, usando apenas três pinos do ESP-12. Há um jumper de 2,54 mm para entrar no modo de programação do ESP-12. A entrada do interruptor reed passa por um circuito RC para filtragem passa-baixa.

Após testar e validar o design, alterei C2 de 1uF para 100nF. Há um conector de três pinos para o regulador de tensão, cuja discussão seguirá.

O regulador de tensão

Inicialmente, considerei usar o regulador de tensão AMS1117-3.3 LDO (saída de baixa queda), mas de acordo com sua folha de dados, ele tem uma queda de tensão de 1,1 V. Quero usar baterias de lítio de 3,7 V neste projeto, então uma queda de 1,1 V em 3,7 V seria de 2,6 V, o que não é suficiente para o ESP-12 funcionar.

Existem outros LDOs comumente disponíveis, mas todos têm 0,6 V ou mais de queda de tensão. Não é o suficiente. Então, considerei usar conversores buck, reduzindo a tensão de 3,7 V. Isso também tem problemas, pois uma baixa tensão de bateria (digamos 3,5 V ou menos) tornaria inviável para o buck gerar os 3,3 V necessários.

Acabei optando por um circuito buck-boost (na verdade, uma bomba de carga) chamado HX4002 da Aliexpress, o suficiente para o que preciso. Ela vai até 150 mA com tensões entre 2,7 V e 5,5 V.

Charge pump HX4002 (buck-boost)
Charge pump HX4002 (buck-boost)

O projeto em alguns tópicos

  • Controlador de chip WiFi ESP-12.
  • Sensor de velocidade Reed switch (o mesmo de qualquer outro odômetro de bicicleta).
  • Regulador Buck-boost (bomba de carga) de 3,3 V para alimentação de bateria de lítio de 3,7 V, com TP4056 para carregamento.
  • A “exibição” de velocidade será de seis LEDs verdes de 5 mm.
  • Há um botão de reinicialização e um jumper de programação para o ESP-12. Não o montei no protótipo.
  • Planejo adicionar recursos de WiFi no futuro, talvez para um APP ou página da web para poder ler as velocidades.

A montagem

Fui atrás do sensor de palheta e do ímã para o projeto. Descobri que eles custariam mais se comprados especificamente para isso (como peças de reposição) do que se eu comprasse um kit de odômetro completo. Então, comprei um kit de odômetro de bicicleta barato de US$ 7 só para salvar peças.

Odômetro de bicicleta Chinês barato
Odômetro de bicicleta Chinês barato

Aqui estão fotos da placa de circuito impresso montada.

PCI do odômetro montada
PCI do odômetro montada

Este é o “lado de trás” onde tudo ficará, exceto os seis LEDs que ficarão virados para fora da caixa. Observe também os três fios soldados ao ESP8266MOD: eles são o RX, TX e GND para programação. Esqueci de adicionar um conector a ele.

Caixa e PCI do odômetro
Caixa e PCI do odômetro

Na imagem acima há alguns detalhes. Observe a tampa da caixa com seis furos para os LEDs, também a caixa do carregador de bateria TP4056 acoplada a ela. Aqui você pode ver o “lado frontal” do PCB com os seis LEDs e alguns resistores. Há também a caixa cuja parte traseira é colada na parte traseira de um odômetro comercial, para fixá-la na bicicleta.

Kit do odômetro: PCI, caixa, bateria, conversor USB-serial
Kit do odômetro: PCI, caixa, bateria, conversor USB-serial

O produto final

Depois de algumas horas programando e montando, é hora de testar o odômetro. Você pode vê-lo abaixo preso à minha bicicleta; observe o conector verde destacável para o sensor do interruptor reed. Ele me permite remover a caixa e carregá-la comigo.

Odômetro montado na bicicleta
Odômetro montado na bicicleta

Há dois fios saindo da caixa. Essas são as conexões (+) da bateria, para que eu possa remover a energia do odômetro. Eu deveria ter comprado um interruptor adequado (talvez no futuro). Abaixo está um vídeo do sistema funcionando, eu andando de bicicleta. Você provavelmente não verá nenhum LED aceso, mas garanto que eles estavam.

Trabalhos futuros

Conforme visto nas atualizações do projeto vinculadas acima, o consumo de energia do chip no estado “bicicleta parada” é de cerca de 70 mA. É muito alto para a bateria LiPo de 400 mAh que estou usando, você não pode deixá-la ociosa por muito tempo. Originalmente, pretendia fazer o GPIO16 (o mesmo usado para a leitura do sensor reed) para “acordar” o ESP8266MOD quando a bicicleta começa a se mover.

Depois, li mais sobre isso e percebi que o GPIO16 atua como uma saída neste caso, redefinindo o pino de redefinição do ESP. Portanto, não usei o GPIO16 para acordá-lo para mim. Outra opção que estou pensando agora é colocar o chip em hibernação profunda, mas realmente não vejo como acordá-lo quando necessário.

Para finalizar e deixar você pensando sobre este projeto, lembre-se de que todos os arquivos do projeto (Kicad, imagens) estão no meu Github.