Relógio eletrônico Qlocktwo-style

Olá da equipe do uMove ! Uma vez vi na Internet a imagem de um relógio. O tempo atual nelas é definido pelas palavras: três e cinco minutos, quinze a uma hora, quatro e meia e similares em incrementos de 5 minutos.



Recentemente fizemos isso!

Como foi


Primeiro, fizemos um modelo 3D. A base de suporte foi escolhida como compensado de madeira compensada de 4 mm de espessura, que estava disponível em excesso; foi colocada uma fita de diodo de três cores, sendo cada diodo controlado separadamente pela SPI. Por exemplo, a cor do décimo diodo é definida da seguinte forma: "Olá, primeiro, diga o décimo para que acenda agora em tal e qual cor". A primeira é transferida para a segunda, a segunda para a terceira e assim por diante.

A escolha do fator de forma de todo o dispositivo foi escolhida com base na etapa existente dos diodos. Nesse caso, a fita possui 60 chips por metro de comprimento. A dimensão geral final do lado do dispositivo quadrado era 264,4 mm.



A segunda camada, organizamos os separadores entre as letras. Isso foi necessário para impedir que as letras ativas fossem destacadas inativas. Na segunda camada, um orifício foi colocado para a saída do cabo de alimentação.



Toda a matriz de diodos é uma matriz unidimensional localizada por uma cobra em um substrato.
A função de conversão do sistema de coordenadas cartesianas para a "cobra":

int getStripPosition(int row, int col)
{
    if(col % 2 == 1)
    {
        return col * ROWS + row;
    }else{
        return (1 + col) * ROWS - (1 + row);
    }
}

Pedaços de fita são conectados em 3 fios em série: Energia, Terra e Sinal. Rações de rotina começaram. Eis o que aconteceu:



verificar as juntas soldadas não me decepcionou, tudo funcionou da primeira vez, mesmo que de maneira incomum.

Aparência


Depois de esboçar uma mesa com letras, brincamos com o tamanho e o tipo da fonte, projetamos um desenho para a máquina a laser e começamos a estudar o material e a cor. A escolha caiu no plástico preto brilhante. O resultado é um caso muito elegante. O idioma escolhido foi o alemão ... não sabemos o porquê.



Minuto alemão:


Eletrônicos


A base do relógio é o nosso Spark favorito . Este é um microcontrolador STM32 familiar, com acesso à Internet via Wi-Fi. Essa coisa em si saberá a hora atual, não há um único botão no relógio! O novo login e senha de rede podem ser definidos no telefone.



Fizemos e montamos todos os detalhes na Academia CMIT.

Mas isso não é tudo


Vamos ver o que aconteceu:
  1. nós temos uma matriz de 10x11 pixels
  2. nós temos acesso à internet
  3. nós temos uma nuvem com uma API personalizada

Lembra do jogo de tijolos ?

Arkanoid


Provavelmente o jogo mais fácil de escrever.
O acesso ao relógio é muito simples. O firmware do chip possui uma função que pode ser acessada através da nuvem. Exemplo do site:

int brewCoffee(String command);
void setup()
{
  Particle.function("brew", brewCoffee);
}
void loop()
{
  // this loops forever
}
// this function automagically gets called upon a matching POST request
int brewCoffee(String command)
{
  if(command == "coffee")
  {
    // some example functions you might have
    return 1;
  }
  else return -1;
}

Para acessá-lo, é necessário executar uma solicitação POST para a nuvem, por exemplo, na linha de comando:
curl https://api.particle.io/v1/devices/{DEVICE_ID}/{FUNCTION_NAME} -d access_token={TOKEN} -d "args={ARGUMENTS}"

Você pode controlar o controle deslizante através do aplicativo. Escrevemos em HTML + JS usando Apache Cordova
<body style="margin: 0; padding: 0;">
<script language="javascript">
  function go(action) {
    var xhr = new XMLHttpRequest();
    var body = 'access_token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx&args='+action;
    xhr.open("POST", 'https://api.particle.io/v1/devices/53ff6e12345678900987654321/shift', true)
    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
    xhr.send(body);
  };
    </script>
    <button class="button" style="width: 40%;" onclick="go('left')"><</button>
    <button class="button" style="width: 20%; left: 40%" onclick="go('play')">!</button>
    <button class="button" style="width: 40%; left: 60%" onclick="go('right')">></button>
</body>

A aplicação no telefone parece incrível:



Demonstração




Esperamos ter inspirado você com novas idéias para projetos legais!

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


All Articles