Boa tarde pessoal.

Inicialmente, desculpe a falta de acentuaçao (meu teclado e ingles).

Estou iniciando um projeto de irrigaçao. A parte do arduino e sensores nao vejo como problema.

Minha duvida e como liga-lo para apresentar graficos.

Vou me expressar melhor.

O arduino ficara ligado, e sempre tera um PC ou tablet por perto. A duvida e qual programa usar para fazer o software no pc (ou android) para apresentar os dados que o arduino enviara.

Estive olhando alguns:

Android Studio - Ele facilitou bastante a parte grafica, porem o foco sao botoes, link pra agenda, e outros detalhes comumente usado no celular.

Processing - IDE bem simples, muito semelhante a IDE do arduino, porem toda a parte grafica tem que ser escrita pixel por pixel no codigo. E pra fazer medidor em meia lua, nem tenho noçao de como começar.

A ideia e que na tela apresente barras (uma pra cada sensor, talvez uns 10) que mostre o nivel de humidade.

Alguem usa algum que seja mais abrangente?

Obrigado

Exibições: 3959

Responder esta

Respostas a este tópico

Opa , eai !

A parte de interface gráfica ainda gera muita dúvida e bastante discussão nesse meio , isso tudo devido ao gosto do "cliente". Falando particularmente do meu gosto e das ferramentas que já trabalhei/trabalho:

PLX-DAQ : Muito boa na parte de aquisição de dados e plotagem de gráficos diretamente do Excel. No meu ponto de vista é uma ferramenta útil para analisar dados (sinais de sensores , p.ex) ao longo do tempo , essas coisas. Fica devendo se você quer realmente criar um programinha mais completo.

Link:https://www.parallax.com/downloads/plx-daq

Python: Talvez a ferramenta mais completa e utilizada no meio acadêmico para diversas aplicações. É relativamente simples adquirir dados e manipula-los com facilidade no Python. Aqui já dar pra criar uma interface gráfica mais completa e com poucas linhas de código, o bom é que a sintaxe é muito parecida com a escrita humana.

links: - https://www.python.org/downloads/ 

         - https://github.com/pyserial/pyserial ( para comunicar com o arduino )

         - https://www.youtube.com/watch?v=95w4sx_zoB8 ( olha uma das aplicações)

LabWiew: Software da National Instruments que aos poucos esta cedendo pro arduino e outros micro-controladores. Das ferramentas que utilizei essa aqui é a melhor de todas quando o assunto é interface gráfica e até mesmo programação. Tudo é feito em blocos e linhas , em duas telas simultaneamente ( programação e ambiente gráfico). Talvez seja pouco divulgado por que da um pouquinho de trabalho instalar o software ,drivers e toolkit para o arduino , mas depois disso é uma maravilha. Com ela sim da pra se criar programas completos e bonitos por sinal.

links: https://www.labviewmakerhub.com/ ( aqui tem quase tudo )

         https://www.labviewmakerhub.com/doku.php?id=libraries:linx:start 

Appinventor2 : Com este ambiente de desenvolvimento online do MIT você consegue criar aplicativos para android facilmente. A lógica de construção utiliza bloquinhos encaixáveis rsrsrs. Funciona bem com comunicação bluetooth :).

link: http://ai2.appinventor.mit.edu/

Fora os outros dois que você já citou.

Bom , acho que é isso.

O legal mesmo ( se você tiver tempo ) é ir testando e ver qual se adapta melhor ao seu projeto.

Abraços !

Lucas, o PLX-DAQ só serve para microcontroladores da Parallax ?

O LABView é pago ?

No caso do Appinventor2 o seu código fica exposto para o público, não ?

Obrigado pelas explicações. 

Olá José !

Você pode usar o PLX-DAQ com Arduino(ATmega) ou com microcontroladores que utilizam a mesma biblioteca , por exemplo o Teensy (MK20DX256)

O LABView é pago sim mas existem versões para estudantes além das vias ilegais é claro rsrsrs.

Quanto ao MIT Appinventor 2 a aplicação é em código aberto mas pelo que eu li não fica exposto ao público não, vou procurar mais fontes.

Abraços !

Obrigado pelos esclarecimentos.

Abraços.

Eu costumo enviar os dados coletados para um banco de dados mysql.

E a partir do momento que os dados estiverem no banco de dados, há inúmeras ferramentas para gerar gráficos.

Particularmente eu gosto muito do jpgraph  ( http://jpgraph.net/ ) e do dygraph ( http://dygraphs.com/ )

Marcelo,
eu gosto do Processing, para linhas retas e formas simples é relativamente fácil.

Outra coisa que está aparecendo bastante, é o BLYNK, pode ser que ele tenha alguma opção gráfica que possa lhe ser util.

Olá Marcelo,

Primeiro quero te parabenizar pela descrição do seu post que foi bem claro e organizado.

Eu também só uso telado inglês mas configuro como US Internacional e os acentos funcionam na boa.

Para todos os iniciantes, sempre sugiro seguir um degrau de cada vez. Para conseguir ter sucesso no seu objetivo, além de ler muito sobre cada componente ou biblioteca que irá utilizar, você deverá dividir o seu projeto em pequenos passos até alcançar o seu objetivo final. Inicie por fazer um LED piscar, daí, segue para acionar um rele (pois você já terá a placa pronta), .....

A opção que eu mais gosto é pela rede Ethernet ou WiFi em vez da serial pois uso notebook e meu "servidor" fica num rack num canto isolado.

O mais fácil e imediato é o uso do Google Forms onde é criado um formulário no Google Docs que irá preencher uma planilha automaticamente e portanto você poderá criar o seu gráfico a partir das informações acumuladas. Porém poderá acontecer do Google alterar a forma de funcionamento e seu aplicativo parar um dia.

Outra forma muito interessante é utilizando um dos muitos "serviços ponte" disponíveis na internet, como o www.pushingbox.com ou o zapier.com, redirecionando as informações do Arduino para uma planilha do Google.

As opções sugeridas pelos colegas por mais que pareça fácil, exige conhecimento de programação e configuração dos ambientes. Caso já seja desenvolvedor, são opções melhores do que os que estou sugerindo.

O PLX-DAQ não funciona com as versões do Excel mais recentes que 2003. Existem tutoriais explicando o uso da API do windows com VBA mas cairá na mesma restrição do PLX-DAQ.

Boa sorte,

  'Eiju

Esse artigo ainda está em edição mas já tem código fonte e vídeo. Utiliza o Python com Matplotlib.

Criar sua aplicação lhe permite maior poder e flexibilidade. O Matplotlib pode ser configurado para os mais diversos tipo de gráficos inclusive de barra.

Ref:

Exibir dados do Arduino graficamente em tempo real

https://fazerlab.wordpress.com/2016/04/18/exibir-dados-do-arduino-g...

http://matplotlib.org/gallery.html

Acho que me expressei mal usando a palavra "grafico".

Na verdade, nao quero postar graficos (linha curva que mostra relacoes entre dois itens) e sim, mostrar em desenho os dados que recebera de forma numerica do arduino.

Fiz um desenho no Paint, que mostra praticamente o que quero mostrar na tela.

O sistema sera composto de 4 setores, cada um com 4 sensores de umidade e um de vazao de agua.

No processing, consegui fazer, mais parei na parte desses marcadores circulares. Acredito que terei que relembrar a minha epoca de segundo grau, e encontrar uma equaçao de uma parabola, assim conseguiria saber as coordenadas onde o ponteiro teria que estar.

Sera que e assim mesmo? Nao teria forma mais pratica?

Ja a comunicacao, internet esta totalmente fora de questao, ou melhor, passa a muitos quilometros de distancia. Vou colcoar na fazenda.

Minha ideia era no arduino fazer um array de variaveis. EX:

int ValSensores [20];

 Assim o arduino vai trabalhando e gravando os parametros lidos nessa array..
 Depois bombardearia na serial da seguinte forma:

int inicio = 2000;

int fim = 3000;

int cont=0;

Serial.print(inicio);

while (cont >=20)

 {

  Serial.print(ValSensores[cont]);

  cont++;

 }

Serial.print(fim);

Ja no programa, faria o mesmo de forma inversa. Primeiro detectando o valor estipulado como indice para a array (no caso desse exemplo, seria 2000), apos detecta-lo, começaria a preencher um array com os valores recebidos.

Quando ele detectar o final (no caso os 3000) pararia a gravacao na array, e faria uma conferencia para ver se perdeu dados.

Caso tenha perco, elimina toda a array e começa novamente, ate ter uma array completa, e so assim atualizar os dados na tela.

Usei os valores 2000 e 3000 como exemplo, pois o arduino enviara somente valores de 0 a 1024.

Dessa forma sera que funciona?

Olá Marcelo, foi importante vc desenhar o que pretende realmente. Agora fica mais fácil indicar de forma certeira o que vc precisará fazer.

Vc tem duas opções, ou vc faz dessa maneira aí que relatou (faz cálculos matemáticos para obter as coordenadas corretas para desenhar as imagens), ou vc já usa alguma coisa pronta e adapta ao seu projeto. Como quase tudo na vida, as chances de vc encontrar alguma coisa já pronta é grande.

Isso aí que vc precisa alguns chamam de GAUGE. Eu aqui uso "javascript gauges". Dê uma googlada usando esse termo e perceba que existem vários javascripts free e escolha aquele que mais te agrada ou que se adeque melhor ao seu projeto.

De qualquer forma, vou dizer o que faço aqui quando preciso usar os tais javascripts gauges:

* eu envio os dados coletados pelo arduino através de ethernet shield destinado ao meu servidor, que roda linux+apache+php+mysql (esse servidor poderá ficar localmente ou na internet, vc quem decide)

* tudo que é gerado de dados fica armazenado em banco de dados mysql

* a página php com códigos html e com o javascript gauge fica hospedado no servidor, acessível portanto via navegador

* daí, basta inserir um trecho de código em ajax para que o gauge seja atualizado de tempos em tempos (tipo a cada 1/2 segundo, ou 1 segundo, ou 10 segundos, vc quem decide). Com o ajax, vc evita que a tela do navegador pisque a cada atualização, isto é, o gauge se atualiza de forma natural conforme dados diferentes vão sendo inseridos no banco de dados.

O mais difícil é desenhar aquela meia lua com ponteiro indicador, parecido com velocímetro analógico de painel de carro. Para aquilo ali, os javascripts gauges resolverão sua necessidade.

Já para aquelas barras verticais que vão sendo preenchidas de baixo pra cima, parecendo altura de água numa caixa d'água, códigos html com css resolverão facilmente sua necessidade. Basta usar o PHP para fazer o cálculo (exemplo: valor 32 num máximo de 80 significa 40% da barra que deverá ser preenchida). Faça um retângulo com cor de preenchimento transparente com tamanho de 100% e sobreponha um retângulo com cor de preenchimento azul com tamanho de 40%.

A idéia é essa, agora é sentar na cadeira e codificar tudo

So algo que tinha esquecido de comentar no post anterior: Pesquisei sobre cada uma das linguagens postadas nesse topico. Agradeço muito pela atençao dessa dessa comunidade.

As barras, plano de fundo e um monte de detalhes, consegui aprender pela "Reference" no site do processing e "inventando" outras maneiras. Alguma coisa o outra ainda apanho, mais so estudar que estou me virando bem.

Agora esses gauges que estou na duvida.

Encontrei 3 exemplos legais:

http://www.fusioncharts.com/charts/angular_5/

http://jsfiddle.net/OnaBai/sThK3/1/

http://www.vancharts.com/demo/gauge3.html

So que todos pareceram ser Javacript (mesmo fazendo a busca por "java gauges").

A questao, e que sei pouco de java, e menos ainda de javascript.

Pelo que andei pesquisando e testando, o processing aceita codigo java e roda nele proprio.

Coloquei um complemento para ele aceitar o Javascript, e pecebi que fica refem do navegador para rodar os programas.

Minha ideia e fazer um programa independente para futuramente converter para aplicativo android sem ter que refazer todo o programa.

Acho que vou batalhar no processing. Acredito ser a forma mais sensata (nao a pratica), pois se eu ficar doido pra aprender tudo que e linguagem vou ficar meses estudando pra um projeto pequeno.

Uma ultima duvida. Tem como adaptar algum exemplo Java no processing?

entender mesmo, a fundo de linguagem? talvez não seja necessário. Basta tentar entender o que foi feito e adaptar. Eu também não entendo de javascript, mas basta ver um treco desses (gauge) funcionando e vou tentando (na tentativa e erro mesmo) mudar as coisas até ficar do jeito que quero. Não é difícil, nem precisa de livros. Precisa ser paciente e determinado. 

Agora quanto ao uso de javascript te obrigar a usar navegador, isso é verdade, afinal de contas essa é a idéia do javascript, isto é, processar tudo no navegador (client-side) e não no servidor (server-side). Mas se vc quiser usar android ou ios, dá também, pois ambos usam navegadores capazes de interpretar javascript. Já se sua intenção é criar um app dedicado, aí já não sei te falar sobre o assunto, e também não sei te falar de processing, nunca me aventurei com ele.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço