sábado, 23 de dezembro de 2017

Variometro Arduino com Oled e BMP280

Depois de um longo tempo apanhando e ainda apanhando resolvi postar esse projeto.

Cansei de ver esses variometros caros e convenhamos e esta merda so serve pra apitar, então resolvi montar o meu e da forma mais barata possível, e mesmo assim conseguindo um ótimo resultado.

O variometro esta super simples, apita nas ascendentes selecionável entre 0.3 0.5 e 0.8 metros por segundo, alem disso mostra altitude, tempo de voo, temperatura, variação em metros por segundo e nível de bateria.

Falta algumas coisas que gostaria de fazer, mas estou um pouco limitado nos meu conhecimentos de códigos e tal (to estudando...).

Falta fazer um menu com:
Calibragem de altitude,
Calibragem mais flexível dos parâmetros do vario (subida e descida)
Gravação dos dados dos vôos... (esse ta foda de fazer mas está funcioando relativamente bem!!!)...
Versão teste com gravação de altitude (17/01/2018): https://drive.google.com/open?id=1yeK8Qs6BWDzXmW_XFt4lJd17DFAaLhEq
(as bibliotecas estão no arquivo zip completo)

clique rapido no botão muda a semsibilidade;
manter segurando por 3 segundos entra no menu de voos;
manter segurando por 9 segundos ele vai alternar entre as telas e depois resetar todas as gravações de voos.


Acabei fazendo uma placa simples com oled I2C, mas descobri que se fosse com o outro modelo com mais pinos ficaria mais rapido e preciso (tem que alterar a quantidade minima de samples para 40 para funcionar com outro oled).



Esse variometro é baseado em arduino com o microcontrolador Atmega 328.
Então pode ser montado com os arduinos Uno, Nano, Pro Mini, Lilipad...

A pinagem você pode encontrar na imagem.



I2C que seria o SDA no pino 4 e SCK(ou scl) no pino 5. (oled e sensor bmp280 em paralelo).
Botão digital 4 e GND.
Buzzer no pino digital 8 e GND.

Material nessessário:
- Arduino Nano, Pro Mini ou Uno;
- Sensor Bmp280;
- Oled i2C 96" 128x64;
- 1 push button;
- 1 Buzzer;
- 1 botão de liga / desliga;
- TP4056 (carregador de Lipo opcional);
- 1 Bateria de Lipo 1s (opcional)
- fios para conexões.

Você também pode usar uma bateria 9 volts, mas não esqueca de sempre conectar no pino VIN. Pois se conectado em outro pino pode queimar o arduino.

E como tenho tido muitas reclamações do volume baixo do variometro, você pode conectar um mini amplificador de 3w no lugar do buzzer. Ai você pode usar o buzzer ou um alto-falante pequeno.

Seque ligação abaixo.
Preste atenção nas voltagens:

Oled e Sensor BMP 280 3.3V;
Amplificador 5V;
Bateria 9V no pino VIN.


ou para ter o controle do volume, você pode colocar esse amplificador abaixo.



Se for fazer o variometro a partir da placa, segue algumas dicas.
Componentes, encontrei todos na Aliexpress, demora um pouco mas sai mais barato, mas pode comprar também na mouser ou digikey.

Bom, vou começar com o link para o código e bibliotecas necessárias:

Neste link o código mais atual com gravação do vôo: https://drive.google.com/open?id=1yeK8Qs6BWDzXmW_XFt4lJd17DFAaLhEq

Se for montar com as placas arduino isso ja é o suficiente. Agora se for fazer o projeto completo... vamos lá... que a Treta começa agora.

Vamos começar com a placa em si.


Esse é o esquema de ligação dos componentes e não o fiz aleatoriamente. Estudei bastante os datasheets, e mesmo assim acabei fazendo varias cagadas.... Mas é fazendo merda que se aduba o projeto....



Umas observação que ja faço de cara, é que ser for usar um Oscilador modelo CSTCE16M0v53-R0
não existe necessidade de colocar os capacitores C1 e C2, se fizer da pau... mas pode usar cristal e ai sim precisa dos capacitores.

Se for soldar com pasta de solda, facilita muito pq os componentes são minúsculos e precisa de perícia e muita paciência.




É possível fazer a placa em casa? Acho bem difícil, principalmente por ser tão pequena e dual layer.
Aonde mandar fabricar a placa? 
Eu estou mandando para o site: https://www.oshpark.com/

Sai super barato, 20 reais por 3 exemplares da placa.
OBS: pra ficar mais legal, selecione a opção de espessura da placa "thickness" 2oz Copper with
0.8mm FR4. (pra ficar mais fininha)


É só entrar no site e mandar este arquivo ZIP:

Placa com os capacitores do cristal:

Placa Atualizada sem os capacitores para oscilador:

Ok mandamos fazer a placa, agora vem os componentes....
Tenho esse arquivo em excel com fotos e modelos específicos q usei: https://drive.google.com/open?id=1qcnOACQIfdjCWjjp5f5rbHVth1vR-NFs

Essa parte é bem trabalhosa e chatinha... encontrar tudo essas pecinhas e o pior de tudo, esperar chegar. Mas chega! (pelo menos todas as minhas vieram direitinho).
Ahhh!! prestar a atenção ao comprar o oled na ordem dos conectores GND VCC SCL SDA.

A bateria estou usando de Lipo uma célula. A de 100mah dura 4 horas... a carga se quiser colocar mais fica a escolha de vocês... so lembrando que a placa tem um ci responsável por carregar a bateria e esta configurado "por intermédio de um resistor R5" em 100mah por hora (resistor 10k). Possível alterar pra até 500mah por hora (limite do ci) (se não me engano resistor de 2.2k). 

Se tudo der certo até aqui e tivermos em mãos alguma coisa parecida com isso.



Os componentes são realmente muito pequenos, comece a soldar pelo sensor se for fazer com ferro de solda.



comparando a placa com uma moeda... 27mm por 27mm...


Se você observar soldei os capacitores C1 e C2... mas não deveria pois estou usando o oscilador q ja possui imbutido... Tive que retirar...




Acabou ficando assim:


Sem os capacitores C1 e C2

Usei esse mapa tosco pra montar e anotei a ordem pra facilitar a solda com ferro:


Mas da pra usar a imagem da Placa junto com  esquema eletrico ou lista de materiais que tem todas as descrições:





Bom se chegou até aqui já foi uma luta kkkk.... Mas os problemas ainda não acabaram...

É preciso programar a bagaça!!! e pra isso deixei preparado uma porta icsp embaixo da placa.

Mas você vai precisar comprar um gravador ARV modelo USBASP. (serve os ching-ling mesmo).

Você pode baixar os drives aqui: http://www.fischl.de/usbasp/
mas se estiver usando Mac não precisa, reconhece automatico.
e no programador do arduino use a opção carregar usando o programador (usbasp).




Adaptador com os pogopin. A ideia é fazer algo desse tipo pra facilitar:


E acabou ficando assim pogo pin de 0.68mm:



E Finalmente:













Além disso fiz um case na impressora 3d! Uma versão tosquinha e outra com o botão que ainda não finalizei, mas a ideia é que o botão fica no proprio case evitando peças soltas:

Esse abaixo é o que imprimi e testei, mas precisa de alguns ajustes:https://drive.google.com/open?id=1mYSW6wT-5I9HbR46S_FaDg_HidtICWGu





Quem puder compartilhar e me ajudar a finalizar esse projetinho, Seja bem vindo, quem não quiser seja bem vindo também!







Valew!!!

#variometer #variometro #vario #arduino #makers #DIY #paraglider #parapente #thiagogo

14 comentários:

  1. Parabéns Thiago pela tua disponibilidade. Já fiz o meu baseado no teu código e está funcionando muito bem. Simples e confiável....Forte Abraço parceiro.

    ResponderExcluir
  2. Boa tarde Thiago cara gostei muito do seu projeto, estava querendo fazer um que comunicasse via bluetooth com o xcsoar consegui fazer o xc ler o bluetooth mas não estou consequindo enviar os dados do BMP280, de repente vc pode me dar uma ideia obrigado e parabens pelo projeto não deixe de postar o finalmente, abraços.

    ResponderExcluir
    Respostas
    1. Opa tudo bom?! Então, chutando eu acho que o xcsoar recebe a informação do Bluetooth através do serial monitor... aí teria que colocar as variáveis das informações naquele serialprint... acho q é isso...

      Excluir
  3. super my friend ... i want connect greater oled ...

    ResponderExcluir
  4. Thiago blz uma curiosidade vc utilizou um arduino 5v e esta alimentando o mesmo com 3,7v,não teria uma tendencia a funcionamento meio deficitario? Podendo sofrer atrasos? abraços !

    ResponderExcluir
  5. Com certeza com a voltagem mais baixa ele ficaria mais lento, mas a diferença é imperceptível pois a lipo carregada fica com 4,2volts... o que deixaria mais rápido seria a conexão do oled e sensor em SPI ou invés de I2C

    ResponderExcluir
  6. Este comentário foi removido pelo autor.

    ResponderExcluir
  7. Bom dia Thiago blz, confeccionei 2 modelos de vario um so o apto e outro com o oled cara ficou bom demais agora notei uma coisa, ele le e grava o ganho de altitude em cima do pouso, nao seria enteressante em cima da decolagem abracos.

    ResponderExcluir
  8. Opa tudo bom?!
    Minha ideia era pegar a altura e excluir a altura do pouso( pensando sempre q o pouso fosse mais baixo), mas pode ser q tenha me com fundido é feito alguma bobagem na programação.... obrigado pelo toque, vou verificar....

    ResponderExcluir
  9. Hola, Thiago, agradezco enormemente que gente como tu comparata este tipo proyectos que llevan tanto trabajo sin fines de lucro. Gracias hice un variometro para volar que de otra forma me costaria demasiado dinero y posiblemente nisiquiera tendria uno. Un abrazo desde URUGUAY.

    ResponderExcluir
  10. hello;
    I applied progy.I like it and very beautiful and very sensitive.I have a problem.The sound is too low.I have a small box my variometer so voice is too low.I am using small buzzer.
    I want to raise the voice.How can ı do it?
    p.s. I dont want to use big buzzer.
    Iam waiting your answer.Thank you

    ResponderExcluir
    Respostas
    1. Use a 3w amplifier module and a speaker in place of the buzzer will greatly improve the sound.

      Excluir
  11. Obrigado Thiagogo...
    Eu vou mantê-lo atualizado sobre a operação!!

    ResponderExcluir