Revolução 3D no Arduino

imagem

Até o último momento, os controladores (e o Arduino, em particular) trabalhavam sem uma interface ou com interfaces primitivas, relativamente falando, com um ou dois botões. Com o advento do Mega Server do Arduino, a situação mudou drasticamente e tornou-se possível fazer qualquer interface para seu projeto no Arduino.

Hoje iremos ainda mais longe e falaremos sobre como criar uma interface 3D interativa completa para o seu projeto no Arduino. Realizaremos todos os experimentos no novo microcontrolador Genuino 101 fabricado em conjunto pela Intel e Arduino e gentilmente fornecido pela Intel para portar o sistema Arduino Mega Server para ele.

Por que você precisa de 3D no Arduino?


Obviamente, você pode ficar sem uma interface e limitar-se ao simples controle de algo usando o controlador, mas quão mais conveniente é controlar o dispositivo a partir de uma bela interface da Web e quão mais agradável é observar dados não na forma de matrizes de números abstratos, mas na forma de belos modelos tridimensionais, com com o qual você pode interagir diretamente na tela do seu computador.

Aplicações 3D


Todo o espectro de aplicação das tecnologias 3D em microcontroladores pode ser dividido em três partes: visualização de dados, interfaces 3D e treinamento interativo. Vamos considerar mais detalhadamente cada um desses aspectos.

Visualização de dados


As tecnologias 3D podem ser usadas para visualizar visualmente processos complexos que ocorrem tanto dentro do sistema (estado das partes do sistema, trabalho das funções, estado das variáveis ​​etc.) quanto externamente (estado das matrizes de sensores, estado de um parâmetro ou objeto controlado, etc.) )

A beleza dos gráficos 3D é que, de relance, você pode avaliar o estado de um sistema complexo e, se necessário, executar as ações necessárias.

O mesmo modelo 3D é um elemento de controle universal, quando você pode dimensionar o modelo e alterar o estado de suas partes com um clique do mouse (afinal, é interativo). Isso não passa de um novo tipo de interface.

Mundos 3D


imagem

Sob mundos 3D, aqui queremos dizer modelos 3D interativos desenvolvidos que contêm conjuntos de elementos (objetos) e as regras para a interação desses objetos dentro do modelo (a "física" deste mundo).

Em relação aos controladores (com seus sensores, eles estão conectados ao mundo real), esse conceito se traduz na representação de objetos e processos reais em um mundo 3D virtual. E como o modelo virtual é interativo, o impacto nele no mundo virtual leva a uma mudança no estado dos objetos no mundo real (o controlador é conectado ao mundo real por muitos atuadores).

Como resultado, esse é um novo tipo de interface, e a base para os conjuntos de treinamento e a base para aplicativos de jogos de controladores, etc., etc., a variedade de aplicativos dessa tecnologia é muito ampla.

Aprendizagem online


Essa tecnologia (em conjunto com as tecnologias Arduino Mega Server e OHAS ) permite criar controladores que contêm tudo o que você precisa para interagir com o usuário (exemplos 3D interativos, documentação, manuais, manuais, etc.) e construir sistemas complexos é tão fácil quanto dobrar cubos de lego.

imagem

Isso pode ser usado para ensinar, visualizar processos complexos, jogos, enciclopédias interativas e cursos de treinamento (contidos no controlador!), Etc.

Questões tecnológicas


Em geral, a idéia de ensinar os controladores Arduino a trabalhar com gráficos 3D parece muito atraente, mas a incorporação dessa idéia se depara com uma barreira aos microcontroladores, tanto em termos de RAM quanto no poder de processamento do próprio controlador.

Se você tentar resolver esse problema sozinho, não terá êxito ou a solução levará muito tempo e esforço para implementá-lo. Nossa tarefa é bastante simplificada - podemos usar o mecanismo pronto para uso do sistema Arduino Mega Server, que enfrentará todas as dificuldades de trabalhar com arquivos e exibir páginas da web na tela do usuário.

Solução técnica


A beleza da solução reside no fato de que podemos usar qualquer biblioteca JavaScript pronta (juntamente com seus muitos exemplos) e desenvolver rapidamente quaisquer soluções 3D necessárias nesta base.

Nesses exemplos específicos, as bibliotecas padrão Processing.js e Three.js foram usadas. Mas, se você é fã de outra biblioteca, nada o impede de usar sua biblioteca favorita.

Tudo que você precisa fazer para começar a usar o 3D no seu projeto do Arduino é conectar a biblioteca 3D apropriada da maneira usual

<script src="process.js"></script>

ou

<script src="three.js"></script>

Em seguida, insira o código de exemplo 3D na página ou insira o link para o arquivo com o exemplo 3D

<canvas id="sketch" data-processing-sources="cube.pde"></canvas>

E isso, de fato, é tudo o que você precisa fazer para obter um exemplo em 3D na sua página do Arduino Mega Server. Tudo é feito exatamente da mesma maneira que em um site regular da Internet. E o Arduino Mega Server realiza todo o trabalho duro para garantir a disponibilidade do sistema.

Interatividade


Apenas rodar um modelo 3D no Arduino é certamente ótimo, mas não esqueça que o trabalho é feito no controlador, e este é um dispositivo conectado ao mundo real com muitos sensores na entrada e muitos atuadores na saída. E seria bom exibir alguns parâmetros de um sistema real em um modelo 3D.

imagem

Vamos, por exemplo, considerar a visualização das funções de rede do microcontrolador.

A operação da interface do Arduino Mega Server é garantida pela troca contínua do Ajax entre o controlador e o navegador do usuário. Como modelo 3D, usamos um hipercubo composto por seis objetos em cada um dos três eixos de coordenadas (um total de 216 objetos).

Cada objeto pode alterar seu tamanho, sua geometria, cor ou tipo de movimento, dependendo do estado do objeto real (função de rede, neste caso). Neste exemplo, é selecionada uma alteração na cor do brilho da esfera ao ativar uma função de rede.

Como resultado, a pulsação medida de duas esferas em um modelo 3D mostra a operação normal das funções Ajax do sistema e você tem outros 214 objetos para indicar outros parâmetros. E um número quase ilimitado de páginas da web para renderizar outros modelos 3D.

Interação do sistema e modelos 3D


Os valores são transferidos para o modelo 3D simplesmente alterando as variáveis ​​JavaScript; da mesma forma, ações de controle podem ser produzidas a partir do modelo 3D (clicando na esfera com o mouse - ligando ou desligando, por exemplo, alguma função ou sensor, etc.).

Uma variável é declarada no arquivo scripts.js

var dash_marker1 = 0;

E então os marcadores são colocados nos lugares certos do programa que alteram o estado da variável. Nesse caso, quando você "entra" e "sai" de uma função de rede.

dash_marker1 = parseFloat("1.0");

dash_marker1 = parseFloat("0.0");

Em um esboço sobre Processamento, as variáveis ​​são declaradas para "capturar" valores do JavaScript

float for_dash_marker1 = 0;

E o próprio momento de "pegar"

try {
  for_dash_marker1 = float(dash_marker1);
} catch (exception) {
  for_dash_marker1 = float("0.0");
}

E, em seguida, são descritas ações com um modelo 3D, dependendo do estado das variáveis

if (for_dash_marker1 < 1.0) {
...
}

Você pode assistir ao resultado desse código no vídeo e familiarizar-se com todo o pacote de distribuição (e executá-lo, se tiver um controlador Genuino 101) na página de Download do projeto Arduino Mega Server.

Vídeo


Vídeo mostrando o trabalho de gráficos 3D no Arduino

Conclusão


Agora, os gráficos 3D se tornaram mais acessíveis do que nunca para seus projetos no Arduino, e as perspectivas ainda mais emocionantes esperam por você: o Arduino Mega Server é portado para esp8266 e pode fazer tudo o que é descrito neste artigo enquanto trabalha sem fio através de Wi-Fi e está em um módulo de tamanho com uma moeda de dez centavos.

imagem

E em um futuro próximo, a distribuição da AMC para esp8266 aparecerá no site do projeto. Você está aguardando downloads de arquivos e piscando o controlador sem fio, um servidor FTP e muitos outros recursos que o Arduino Mega Server fornece. E essa é outra revolução no mercado de IoT.

Source: https://habr.com/ru/post/pt393019/


All Articles