LusoRobótica - Robótica em Português

Sistemas específicos => Arduino / AVR => Tópico iniciado por: tarquinio em 14 de Abril de 2014, 06:40

Título: Ardomotic 2.0 - Web Interface para Arduino
Enviado por: tarquinio em 14 de Abril de 2014, 06:40
Boas.

Abri este thread para divulgar a versão 2.0 do meu projecto. É uma web interface que permite criar projectos com o Arduino utilizando apenas o browser sem ser necessário programar. Todas as configurações são feitas no browser e com mensagens de ajuda incorporadas se necessário. É apenas necessário ter ligação à internet, não é necessário ter nenhum outro servidor a correr além do próprio Arduino.

Algumas das coisas que permite fazer são:
- Desenhar uma interface personalizada usando animações para representar os vários dispositivos ligados ao arduino.
- Ter feedback visual do sistema em tempo real, com vários utilizadores ligados ao mesmo tempo.
- Configurar utilizadores com diferentes niveis de acesso ao sistema.
- Ler dados de sensores, e programar o sistema para reagir aos valores lidos.
- Agendar acções para serem executadas baseadas no dia/hora.
- Criar pequenos programas dentro da própria interface para automatizar sequencias de acções mais complexas.
- Aprender sinais enviados por controlos remotos e reproduzi-los quando necessário.

O site do projecto é este:
http://ardomotic.com/ (http://ardomotic.com/)

Tenho lá vídeos do projecto a funcionar com vários exemplos diferentes. Apesar de isto ter comecado como uma brincadeira de domótica, dá para usar para muita coisa diferente.

Já está tudo quase acabado mas ainda está em versão beta, não está tudo ainda a 100%. Mas já está bom o suficiente para deixar a malta que quiser experimentar brincar um bocado. Se tiverem dúvidas ou comentários são bem-vindos. :)
Título: Re: Ardomotic 2.0 - Web Interface para Arduino
Enviado por: ivitro em 14 de Abril de 2014, 12:44
Tarquinio, está fixe a aplicação, já pensaste portar para android ou assim?

Fizeste a interface como?
Título: Re: Ardomotic 2.0 - Web Interface para Arduino
Enviado por: metRo_ em 14 de Abril de 2014, 12:53
Parabens, está bastante poderosa a ferramenta. O arduino é apenas usado como interface? isto é, no exemplo do semaforo, os waits etc são realizados no browser ou no Arduino?

Que ferramentas usaste?
Título: Re: Ardomotic 2.0 - Web Interface para Arduino
Enviado por: ivitro em 14 de Abril de 2014, 13:12
Eu pensoque ele tem uma BD e depois vai actualizando os valores de escrita e leitura no arduino.

Para mim o "K" está na interface e na flexibilidade que ela dá.
Título: Re: Ardomotic 2.0 - Web Interface para Arduino
Enviado por: tarquinio em 14 de Abril de 2014, 14:43
Tarquinio, está fixe a aplicação, já pensaste portar para android ou assim?
Fizeste a interface como?

Quando comecei a desenvolver o projecto cheguei a pensar fazer uma app para iphone (na altura tinha iphone mas já estava a pensar mudar para android). Mas como queria que aquilo funcionasse em todo o lado, inclusive no PC, optei por fazer em HTML5, assim funciona em todo o lado. Não está nos planos fazer uma versão app tão depressa, actualmente tenho um android e estou sempre a usar aquilo sem stress, já testei em iphone e tambem funciona.
Quanto à interface, são as coisas normais da web... HTML5, Javascript, css, Websockets that kind of stuff... N sei se estavas a perguntar alguma coisa mais específica :)

Parabens, está bastante poderosa a ferramenta. O arduino é apenas usado como interface? isto é, no exemplo do semaforo, os waits etc são realizados no browser ou no Arduino?
Que ferramentas usaste?
Não, é mais ao contrário... O browser é que é usado como interface para configurar o servidor, tudo o resto é decidido lá. Por exemplo tens o semáforo como está, podes configurar um botão (físico) para começar e outro para parar o semáforo, fechar o browser usar apenas os botões. Ou podes configurar o semáforo para começar a trabalhar às 3as, 5as e domingos das 9:00 às 11:00 da manhã e pimba... É tudo processado lá. Podes fazer coisas já bastante complexas misturando funcionalidades. Complicando o exemplo, podes ter os tais dois botoes fisicos, mas de modo a que só funcionem a certas horas, se estiver escuro (assumindo que tens ligado um sensor de luz).
Quanto às ferramentas, do lado do browser usei o que já referi acima ao ivitro, e do lado do arduino usei um webserver com websockets para tratar das comunicações e algumas outras libraries de arduino desenvolvidas por mim. Tentei fazer a coisa de modo a ter o mínimo possivel de coisas hard-coded e por tudo configurável na interface.

Eu penso que ele tem uma BD e depois vai actualizando os valores de escrita e leitura no arduino.
Para mim o "K" está na interface e na flexibilidade que ela dá.
Sim as coisas são todas configuradas no browser e depois a configuração é gravada no SD card do arduino. A interface é mesmo uma forte componente deste projecto, na altura que comecei a desenvolver já havia vários projectos do mesmo tipo mas a interface costumava ser uma lista de elementos que podias ligar e desligar e eventualmente agendar acções. O que eu queria ter era uma coisa em que se podesse configurar comportamentos mais complexos e alterar a interface fácilmente só com o rato, e em que cada pessoa pudesse adicionar as suas imagens e criar as suas animações. Como não havia... Tive de fazer um! :)
Título: Re: Ardomotic 2.0 - Web Interface para Arduino
Enviado por: jm_araujo em 14 de Abril de 2014, 15:27
MUITOS PARABENS!!!
Mas que grande projeto!!!
Uma solução completa de controlo de domótica enfiada num arduino não para menos do que ficar de boca aberta.  :o

O link para o rar está em baixo, mas pelo site está mesmo uma grande ideia com uma implementação original.
Fiquei cheio de vontade de comprar o HW necessário para brincar um bocado.

Já pensaste meter o código no Github? Quando o projeto se tornar popular (acho que é inevitável, mais tarde ou mais cedo cai num hackaday ou do género), dá muito jeito para que outros possam contribuir ao projeto.
 



Título: Re: Ardomotic 2.0 - Web Interface para Arduino
Enviado por: tarquinio em 14 de Abril de 2014, 15:55
Hehe obrigado pelo bold a vermelho! :)

O link já está bom. Obrigado pelo aviso, o ficheiro tava la mas tinha a 1a letra capitalizada, my bad.

Precisava mesmo era de ter mais tempo para fazer as coisas... Há várias coisas que gostaria de ter no gthub ou outro sítio do genero, mas infelizmente agora não ando com muito tempo.

Mesmo esquecendo o resto do projecto, acho que só o webserver que desenvolvi para o arduino que permite ter autenticação e múltiplos websockets abertos é um projecto bastante útil para fazer outras coisas, provávelmente colocarei esse no github antes do Ardomotic... Preciso é de tempo tempo tempo... :s
Título: Re: Ardomotic 2.0 - Web Interface para Arduino
Enviado por: senso em 14 de Abril de 2014, 16:24
Parabéns pelo trabalho.  ;)
Não leves a mal, mas tens meia duzia de erros ortográficos no texto, m's trocados com n's, apanhei um numa leitura muito diagonal, deves ter mais uns escondidos.
Título: Re: Ardomotic 2.0 - Web Interface para Arduino
Enviado por: tarquinio em 14 de Abril de 2014, 16:33
Hehe obrigado. É bem capaz, geralmente as partes de texto são escritas a altas horas da madrugada, o meu corrector ortográfico neuronal já não está a funcionar a 100%. Tenho de dar uma leitura no site todo com calma e 100% acordado. :)
Título: Re: Ardomotic 2.0 - Web Interface para Arduino
Enviado por: gadelhas em 14 de Abril de 2014, 16:54
Os meus Parabéns. Muito bom!  ;)
Título: Re: Ardomotic 2.0 - Web Interface para Arduino
Enviado por: metRo_ em 14 de Abril de 2014, 17:49
Como é a estrutura do controlo no arduino? De forma a adicionares e removeres acções dinamicamente?

Tens que arranjar um amigo designer para dar um ar mais moderno :)
Título: Re: Ardomotic 2.0 - Web Interface para Arduino
Enviado por: tarquinio em 14 de Abril de 2014, 18:30
Como é a estrutura do controlo no arduino? De forma a adicionares e removeres acções dinamicamente?
Explicando a coisa muito por alto... Aquilo tem uma lista eventos ordenada pelo tempo de execução. Sempre alguma coisa muda, seja atraves de um click na interface, dados lidos de um sensor ou da execução de um programa, é adicionado um evento e estou sempre a verificar se já é altura de executar o primeiro evento da lista. Podes por exemplo querer que uma luz se ligue 3 segundos depois de carregares num botão, nesse caso aquilo cria o evento de ligar a luz para o tempo now()+3 segundos. No caso dos programas, sempre que é executada uma linha do programa, ele cria um evento para ser executada a proxima linha no tempo now(), se a linha for um delay cria um evento para now()+ o valor do delay.

Não sei se isto responde ao que querias saber, o processo ao inicio era bastante mais simples quando a idéia era só clicar e acender ou desligar coisas, mas à medida que fui adicionando funcionalidades a coisa foi complicando.
Tens que arranjar um amigo designer para dar um ar mais moderno :)
Quanto à parte artistica pronto... Tenho feito o que posso sozinho, mas não é bem a minha área... :p Pode ser que eventualmente entre alguem mais artistico para o projecto. :) Não me tenho preocupado assim tanto com isso porque tenho focado mais em ter tudo o mais personalizável possivel, em vez de melhorar as partes que são mesmo estáticas. Mesmo assim  ainda tenho aí umas boas horas à frente com as coisas que gostaria de fazer. :)
Título: Re: Ardomotic 2.0 - Web Interface para Arduino
Enviado por: jm_araujo em 14 de Abril de 2014, 20:30
Tens planos para disponibilizar o código do servidor?
Título: Re: Ardomotic 2.0 - Web Interface para Arduino
Enviado por: tarquinio em 15 de Abril de 2014, 00:26
Tens planos para disponibilizar o código do servidor?

Sim ainda não fiz isso oficialmente porque tinha pessoas a pedirem-me para disponibolizar o código, e assim já ia obtendo algum feedback das pessoas que fossem utilizando. Mas acho que até vou colocar o codigo javascript original a ser utilizado no servidor (em vez da versão minificada) para a malta mais geek poder brincar com o debug nos browsers se quiserem.
Título: Re: Ardomotic 2.0 - Web Interface para Arduino
Enviado por: tarquinio em 15 de Abril de 2014, 01:49
Alias uma coisa que nem chego a mencionar no site é que o servidor (ardomotic.com) não faz praticamente nada, é so usado mesmo para servir ficheiros estáticos. Uma coisa que faz alguma confusão aos utilizadores é pensarem que o site se liga aos arduinos, mas isso não acontece. Se virem a source da página que e aberta, é algo deste tipo:
Citar
<!DOCTYPE html>
<html>
<head>
   <meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
   <meta name='title'content='Ardomotic Server'>
   <link rel='stylesheet' href='_ardomo.css' />
   <script src="/scripts/jquery-2.0.3.min.js"></script>
   <script src="/scripts/reconnecting-websocket.js"></script>
   <script src="/scripts/jquery.knob.1.2.0.js"></script>
   <script src="_ardomo.min.js"></script>
</head>
<!--<body onunload='closeWebSocket()' oncontextmenu='return false'>-->
<body onunload='closeWebSocket()'>
   <div id='full_page'></div>
   <script type='text/javascript'>
      $(document).ready( function()
      {
         enable_setup = true;
         SYSTEM_WEB_ADDRESS = "192.168.1.33";
         SYSTEM_NETWORK_PORT = 80;
         startupSystem();
      });      
   </script>
</body>
</html>

O que isto faz basicamente é criar uma pagina que vai ler os scripts do site, e depois liga-se ao endereco e porta que foram passadas por parametro, mas essa ligação é directa entre o browser e o servidor, nem sequer passa pela internet (assumindo que o browser e o servidor estão na mesma rede obviamente). Para a coisa correr e estar completamente independente do site nem é preciso um webserver, basta ter os scripts no disco nos sitios certos. É algo que eventualmente eu explicarei com mais detalhe no site, mas por agora quero é por o pessoal interessado a testar a coisa, acabar o que falta e corrigir eventuais bugs que vão aparecendo. :)
Título: Re: Ardomotic 2.0 - Web Interface para Arduino
Enviado por: KammutierSpule em 22 de Abril de 2014, 09:39
Viva, parabéns pelo trabalho!
Isto ultimamente, tem elevado bastante o nivel dos projectos aqui no LusoRobotica :P


Tens planos para fazer o dashboard online, em vez de ser no hardware?

A tendencia dos dias de hoje, é passar os dados de sensores e actuadores para a IoT (JSON, POST/GET), permitindo depois fazer um processamento completamente online. Isto tem vantagens/desvantagens. No teu caso esta tudo local, inclusive o dashboard. Qual a tua percepcao destes dois cenarios?

Apenas mostras dados tempo real e ultimo valor, tens planos para ter log / fazer graficos?

Tambem nao gosto muito do tema das cores, planos para implementar themas? =)

Como processas a linguagem?

Bom trabalho!
Título: Re: Ardomotic 2.0 - Web Interface para Arduino
Enviado por: tarquinio em 22 de Abril de 2014, 13:58
Boas. Obrigado pelos comentários. Vou tentar esclarecer as tuas questões todas. :)
A tendencia dos dias de hoje, é passar os dados de sensores e actuadores para a IoT (JSON, POST/GET), permitindo depois fazer um processamento completamente online. Isto tem vantagens/desvantagens. No teu caso esta tudo local, inclusive o dashboard. Qual a tua percepcao destes dois cenarios?
No meu caso usei Websockets para a coisa ser mais eficiente do lado do Arduino. Neste projecto o processamento será sempre feito no micro pois a idéia é ter uma coisa que possa ser completamente  independente. Podes sempre usar a interface para aceder ao sistema, mas depois de estar tudo configurado dá para ter um projecto que fica a funcionar sem nunca mais precisares lhe acederes.
Tens coisas que funcionam nos dois lados: Podes ter um botão puramente virtual na UI que ao clicares muda algo no sistema, ou outro botão que é uma representação de um botão físico que serve como fonte de dados para o arduino.
Poderei sempre fazer algum processamento adicional aos dados no browser no caso dos logs/gráficos, mas nunca terei processamento apenas online.

Apenas mostras dados tempo real e ultimo valor, tens planos para ter log / fazer graficos?
Sim isso é algo que está na lista mas ainda vai demorar. Queria ter opção de poder fazer gráficos com data de qualquer sensor, e tambem poder ter logs no SD card.

Tambem nao gosto muito do tema das cores, planos para implementar themas? =)
Essa parte é fácil, já está feito. :P Ou melhor, não tenho themes propriamente ditos, mas muitas cores e formas na UI são personalizáveis. Podes escolher gradientes com as cores que quiseres, escolher os tamanhos dos componentes, a curva dos cantos, sobreados, etc etc...

Como processas a linguagem?
Estás a falar do que exactamente aqui? Dos programas que dá para criar na UI?
Título: Re: Ardomotic 2.0 - Web Interface para Arduino
Enviado por: KammutierSpule em 22 de Abril de 2014, 16:00
Como processas a linguagem?
Estás a falar do que exactamente aqui? Dos programas que dá para criar na UI?

Sorry, deve-me ter parado o cerebro a escrever essa frase.
Falo da linguagem que usas para descrever os "mini-programas" (o qual das o exemplo do semaforo)
Como é parsed? no browser? e depois como é interpretada no hardware?

Título: Re: Ardomotic 2.0 - Web Interface para Arduino
Enviado por: tarquinio em 22 de Abril de 2014, 16:37
Não, é tudo processado totalmente no arduino.
A interface serve apenas para criar os programas (e ver a execução se quisermos). Os programas são gravados para o arduino e as instruções são interpretadas lá. Se quisermos ver o flow do programa, o arduino envia um sinal para o browser a dizer em que linha vai. Mas mesmo que não esteja ninguem a ver, as árvores continuam a cair na floresta e a fazer barulho ;)
Título: Re: Ardomotic 2.0 - Web Interface para Arduino
Enviado por: senso em 22 de Abril de 2014, 17:56
Acho que ele quer saber é como é que crias e interpretas o código, melhor dizendo, criaste uma linguagem interpretada ou é tipo máquina de estados?
Título: Re: Ardomotic 2.0 - Web Interface para Arduino
Enviado por: tarquinio em 22 de Abril de 2014, 18:57
É uma linguagem interpretada. As instrucções são meio à lá assembly, usando jumps. Isso é um bocado escondido na UI, que mostra as coisas mais bonitinhas com if's whiles repeats etc. O codigo é gerado na UI e convertido neste "assembly" interpretado no Arduino. FUnciona tudo completamente independente do browser.
Título: Re: Ardomotic 2.0 - Web Interface para Arduino
Enviado por: senso em 29 de Abril de 2014, 17:51
Já deves ter visto isto, mas acho que o teu projecto é diferente o suficiente para teres boas chances de ganhar alguma coisa:
http://hackaday.com/2014/04/28/the-hackaday-prize-you-build-open-hardware-we-send-you-to-space/ (http://hackaday.com/2014/04/28/the-hackaday-prize-you-build-open-hardware-we-send-you-to-space/)
Título: Re: Ardomotic 2.0 - Web Interface para Arduino
Enviado por: tarquinio em 29 de Abril de 2014, 19:01
Olha obrigado. :) Por acaso ainda não tinha visto, estas últimas semanas tenho andado bastante ocupado com outro projecto, mas vou tirar um bocado para ver melhor. Na pior das hipoteses faço mais um bocado de publicidade à coisa. ;)
Título: Re: Ardomotic 2.0 - Web Interface para Arduino
Enviado por: senso em 29 de Abril de 2014, 20:25
Isso é muito na onda do internet of things e afins, que vai de encontro ao tema aberto de connected desse concurso.
Título: Re: Ardomotic 2.0 - Web Interface para Arduino
Enviado por: tarquinio em 29 de Abril de 2014, 20:28
Sim é verdade já dei uma olhadela. :) Agora ando bastante ocupado mas dá para enviar submissões até Agosto, até lá já terei mais tempo e terei tempo para fazer uma submissão já comprindo os requesitos deles...

Brigado mais uma vez pela dica ;)