Índice:

Relógio de parede com design TheSUN, Arduino: 6 etapas (com fotos)
Relógio de parede com design TheSUN, Arduino: 6 etapas (com fotos)

Vídeo: Relógio de parede com design TheSUN, Arduino: 6 etapas (com fotos)

Vídeo: Relógio de parede com design TheSUN, Arduino: 6 etapas (com fotos)
Vídeo: cabel0 2024, Julho
Anonim
TheSUN, relógio de parede com design Arduino
TheSUN, relógio de parede com design Arduino
Relógio de parede com design TheSUN, Arduino
Relógio de parede com design TheSUN, Arduino
Relógio de parede com design TheSUN, Arduino
Relógio de parede com design TheSUN, Arduino

Olá de novo, pessoal do Instructables!:-P

Por causa de problemas de envio não pude continuar meu Projeto ABTW, então decidi mostrar a vocês outra, minha mais nova criação.

Acho que muitos de nós, como eu, gostamos dessas lindas faixas de LED endereçáveis (também chamadas de LED NEOPIXEL). Você pode obtê-los na ADAFRUIT. Outros fornecedores também fornecerão produtos semelhantes. Há uma biblioteca disponível no ADAFRUITS - GitHub (clique em mim), incluindo alguns códigos de amostra. Portanto, a codificação deve ser direta …

Eu vi aqueles NEOPIXELS um pensamento, o que diabos eu posso fazer com essas coisinhas brilhantes.

  • Um display de matriz de LED? -> Muito complicado e não uso (no momento)
  • Iluminação X-Mas? -> Combina com a temporada, mas seria mais barato comprar um:-P
  • um relógio? -> Por que não! Mas deve ser elegante e não convencional

Então, vamos fazer um relógio de parede.

Se dermos uma olhada em nosso relógio de pulso (se você tiver um análogo como eu), notaremos que temos 12 horas e 60 minutos (espero). Isso significa que precisamos de 60 LEDs endereçáveis, phu! Se pegarmos uma faixa com 60 LEDs / metro, teremos um diâmetro de ~ 318mm (raio = escopo / (2 * Π)) isso é definitivamente muito grande.

A verdade é que, se você perguntar as horas a alguém, ninguém dirá que são três e dois minutos! Você receberá "É 5 passado 3" como uma resposta. Então, por que não deveríamos reduzir tudo para etapas de 5 minutos? Para isso, precisaremos de apenas 12 LEDs, o que significa que temos um diâmetro de 63,6 mm. Também somos capazes de diferenciar horas e minutos, dando-lhes uma cor separada. Também seremos capazes de fornecer as etapas de minuto único "ausentes" com uma faixa adicional de 4 LEDs (ou LED único endereçável.

ESSA É O PLANO! Vejamos como fiz tudo. Como sempre, irei fornecer uma lista / lista de materiais e instruções sobre como construí-lo.

Se você pensa, apenas suíços podem fazer relógios legais, vamos provar que você está errado (desculpe, Suíça:-P)

Etapa 1: Design e escolha de materiais

Design e escolha de materiais
Design e escolha de materiais
Design e escolha de materiais
Design e escolha de materiais

Projeto:

Se dermos uma olhada em nosso relógio / relógio analógico novamente, veremos que o círculo é dividido em 12 * 30 ° etapas que sabemos, que precisamos de 63,6 mm para a faixa de LED. Portanto, deve ser possível alinhar a tira em torno de um tubo de alguma forma. Decidi usar vidro acrílico, porque parece bom e é possível encapsular a luz LED nele e em cada falha no vidro ocorre alguma dispersão de luz. Então, digamos: mais impurezas vão levar a mais dispersão de luz! Isso é exatamente o que queremos. Portanto, sinta-se à vontade para pegar suas ferramentas de gravação e ser criativo:-)

Se você se referir à minha lista de BoM e ao nome que dei ao relógio, escolhi um design parecido com o sol. Comprei todas as peças de acrílico de um vendedor alemão no E-Bay (link fornecido no BoM). Para meu design você vai precisar de:

  • placa de acrílico polido, espessura transparente = 6 mm, diâmetro = 300 mm
  • placa intermediária de acrílico, espessura transparente = 3 mm, diâmetro = 150 mm
  • placa frontal de acrílico, cetim, espessura = 3 mm, diâmetro = 90 mm
  • tubo de acrílico, transparente, diâmetro externo = 64 mm (significa que temos que ajustar um pouco a faixa de LED)
  • haste acrílica, transparente, diâmetro = 5mm (esta será a nossa viga); Também há hastes de acrílico com bolhas dentro, recomendo, mas não as tenho por perto.
  • cola acrílica

Eletrônica (consulte os arquivos do Fritzing):

  • Arduino mini (ou similar)
  • 1 faixa de LED endereçável (12 LEDs para etapas de horas e 5 minutos)
  • 4 LEDs endereçáveis (minutos únicos)
  • 2 resistores 330Ohm
  • 1 capacitor 1000µF
  • 1 fonte de alimentação (5V / 500mA)
  • um RTC DS-1307 (opcional!)
  • Módulo Bluetooth (opcional! Sim, você pode definir a hora via BT e um smartphone Android)

Se você se pergunta por que tenho chips MAX485 no meu BoM. A resposta é que eu quero sincronizar o relógio com o sistema de automação residencial que estou prestes a fazer (nunca mais terei que acertar um relógio para o horário de verão de novo:-P). Descreverei isso no meu blog a seguir algumas semanas / mês.

Como você notou, também tentarei tirar o relógio da rede elétrica com alguns painéis solares e um LiPo, mas não falo sobre isso neste Instructable, sinta-se à vontade para tentar você mesmo.

Etapa 2: preparar as peças acrílicas

Prepare as peças acrílicas
Prepare as peças acrílicas
Prepare as peças acrílicas
Prepare as peças acrílicas
Prepare as peças acrílicas
Prepare as peças acrílicas

As ferramentas:

Em primeiro lugar, é realmente útil se você imprimir o plano DWG que adicionei na escala 1: 1. Isso o ajudará a alinhar todas as peças e servirá como um plano de perfuração. Mais adiante, você precisará:

  • canivete
  • medidor de mitra
  • serra
  • grampos
  • furadeira
  • pode perfurar, diâmetro 65 mm
  • um conjunto de brocas de metal
  • uma pequena lima de metal
  • cola acrílica

Vamos começar:

Pegue a placa de base e alinhe-a na planta, para que você possa obter o centro do círculo. Agora pegue sua furadeira manual com a furadeira montada nela e faça (muito devagar! Sem muita pressão!) Um orifício no centro da placa de aterramento, o círculo externo deve ter cerca de 2-3 mm de profundidade. Isso serve para afundar a faixa de LED na placa de aterramento (faixa de LED com cerca de 10 mm de largura, feixes de apenas 5 mm de diâmetro) e alinhá-los com os feixes (consulte a figura 1).

Agora precisamos da serra, do medidor de meia-esquadria e do tubo de acrílico. Apenas cortei em pedaços resolvi fazer a carcaça (tubo) com 40mm de comprimento (foto 2). Agora pegue a serra novamente e faça um pequeno rebordo em um lado do tubo, alise com a lima de metal. É daí que sairão os fios;-) (consulte a figura 3)

Hora de um pouco de cola… Pegue a placa do meio (d = 150mm) e a placa frontal (a satinada).alinhe-os novamente no plano, coloque um pouco de cola no centro da placa do meio, alinhe a placa frontal e espere até o a cola está ligeiramente endurecida. A cola que usei é de endurecimento leve e pode demorar até 2-3h, então, talvez você queira usar uma pinça … (figuras 3 e 4)

Faça o mesmo para colar o tubo na placa de aterramento, certifique-se de que o encaixe esteja voltado para a placa e alinhado onde você deseja que o primeiro LED (12 horas) fique.

Espere até que esteja endurecido!

Agora podemos alinhar as 2 peças (combinadas com o livro) no plano e fazer nossos 4 orifícios de um minuto (5 mm de diâmetro ou o diâmetro do LED que você escolheu; fure lentamente sem muita pressão). Perfure cerca de 8-9 mm de profundidade. Tenha cuidado, a placa satinada é muito frágil e pode quebrar se você perfurar profundamente. Agora você pode colá-los ou decidir, como eu, cortar uma ameaça na placa de aterramento e fixá-la com um parafuso.

Novamente, espere até que a cola tenha endurecido. Agora alinhe e cole as vigas na placa de aterramento. (foto 6) Adivinha… espere a cola endurecer:-) Vamos para a parte eletrônica…

Etapa 3: Eletrônica

Eletrônicos
Eletrônicos
Eletrônicos
Eletrônicos
Eletrônicos
Eletrônicos
Eletrônicos
Eletrônicos

As ferramentas:

  • ferro de solda
  • fio de solda
  • faca de passatempo
  • um pequeno pedaço de PCB de prototipagem
  • fio esmaltado ou qualquer outro fio de sua preferência
  • Cola quente

Estratei com os LEDs simples. Se usar fio esmaltado não se esqueça de raspar a laca antes de soldar. Você pode usar uma faca de passatempo para isso. Ligue-os, você pode consultar a imagem com a pinagem em flikto.de. Observe que DOUT vai para DIN no próximo LED! (veja a figura 2) Depois disso, você pode cortar a faixa de LED em 4 elementos, cada um com 3 LEDs. Lembre-se, temos uma tira de LED de 63,6 mm e um diâmetro externo de 64 mm do tubo, então precisamos de algum "comprimento extra para alinhá-lo precisamente às vigas. Faça a fiação com fio esmaltado como na figura 4. Fiz um pequeno proto PCB que servirá como um "chicote de energia" e conterá os componentes para as fitas de LED (os dois resistores de 330Ohm e o capacitor de 1000 µF, figura 7). Consulte a imagem Fritzing para isso.

Agora monte a tira ao redor do tubo, alinhe os LEDs aos feixes. O primeiro Pixel corresponde às 12 horas. Se você deu a volta por cima no seu alojamento, não se esqueça que está tudo espelhado. Prossiga no sentido anti-horário! Use um pouco de cola quente para fixá-lo ao tubo. Uma pequena gota para cada segmento bastará!

Você pode fazer o mesmo para os LEDs individuais (eventualmente espelhados), basta adicionar um pouco de cola quente e pressioná-los nos orifícios pré-perfurados.

Não ligue o Arduino ainda, usaremos o hardware-serial para a conexão BT, então primeiro verifique os próximos passos onde descrevo o software.

Etapa 4: Código

Código
Código
Código
Código

Agora você pode carregar o esboço no Arduino. Você também pode conectar as tiras de LED agora. Não conecte o Módulo BT !!! Primeiro, queremos dar uma olhada no código, você deve saber onde pode ajustar várias coisas …

Baixe o IDE Arduino e o IDE Librarys. Arduino, AdafruitNeoPixel, Time, DS1307RTC

Instale o IDE e coloque as bibliotecas na pasta library. Abra o arquivo INO anexado e carregue-o em seu arduino. O código descrito aqui é o mesmo, mas com comentários adicionais! Se você fez tudo certo, agora você pode ver a "bootanimation". É possível definir a hora no monitor serial. Basta digitar @ "hora" / "min" / "s", por exemplo. @ 10/33/00 (10:33).

Sinta-se à vontade para brincar com o código … Aqui, darei uma breve descrição do Código (Configuração sem RTC!)

DEFINIÇÕES:

#define PIN 6 // Hour LED Strip #define MINPIN 5 // Singelminute LED #define NUMPIXELS 12 // Número de Pixels por hora #define MINNUMPIXELS 4 // Número de Pixels por único minuto #define BAUDRATE 115200 // Baudrate, deve corresponder a taxa de transmissão do Módulo BT # define utch '@' // inicia o BYTE do TimeSync

conjunto de horas int = 0; // sinaliza para armazenar se o tempo foi definido após bootint delayval = 20; // atraso para animação de esmaecimento int clocktimer = 10000; // atualização do tempo int timebright = 250; // brilho da hora Faixa int mtimebright = 50; // brilho do singelminint initialize = 0; // sinaliza para chamar a função clearpixels após bootint ahour; int oldahour = 0; // loja anterior. hourint aminute; int oldamin = 0; // armazena o minuto anterior para refreshint asecond; int aday; int amonth; int ayear; int mmin; tmElements_t tm;

// Configuração para 2 matrizes de LED NeoPixel (NOME = TIPO (NÚMERO DE PIXELS, QUE PIN, FORMATO RGB OU GRB, FREQ); Consulte o guia Adafruit para obter mais informações. Adafruit_NeoPixel pixels = Adafruit_NeoPixel (NUMPIXELS, PINZ800, NEO_GRB +); Adafruit_NeoPixel minpixels = Adafruit_NeoPixel (MINNUMPIXELS, MINPIN, NEO_RGB + NEO_KHZ800);

CONFIGURAR:

void setup () {

Serial.begin (BAUDRATE); Wire.begin (); // Inicialize as tiras, todos OFFpixels.begin (); minpixels.begin (); pixels.show (); minpixels.show ();

// Faça um pequeno animationSerial.println ("SUNRISE"); nascer do sol(); atraso (1000); Serial.println ("SUNSET"); pôr do sol(); pixels.show (); Serial.println ("PRONTO"); }

CICLO:

void loop () {// verificar a sincronização do tempo enquanto (Serial.available ()> 0) {char c = Serial.read (); if (c == utch) // se houver um @ na linha, leia os próximos bytes / ints {readtime (); }} // inicializa os LEDs, limpa a animação de inicialização

if (inicializar == 0) {clearpixels (); inicializar = 1; }

ahour = hora ();

aminuto = minuto (); if (timeset == 1 || timeset == 0) // aqui você pode verificar se o tempo foi definido, você pode parar o programa aqui se Timeset = FALSE, apenas remova "|| timeset == 0"!

{

if (oldamin <aminute || oldahour definir tudo para OFF, exibe a nova hora {clearpixels (); ClockDisplay ();}}}

Exibir o relógio:

void ClockDisplay () {

oldahour = ahour;

oldamin = aminuto; int xhour, xmin;

if (ahour> = 12) {xhour = ahour-12; // temos apenas 12 LEDs para exibição de 24h} else {xhour = ahour; } // dimensioná-lo em etapas de 5min xmin = (aminuto / 5); if (oldamin <aminute) {oldamin = aminute; clearpixels (); } // pega o resto da divisão do LED singelmin mmin = (aminute% 5); // operador de módulo, por exemplo. 24% 5 = 4! muito útil: -Ppixels.setBrightness (timebright); pixels.setPixelColor (xmin, pixels. Color (5, 125, 255)); // você pode mudar as cores aqui! brincar! pixels.setPixelColor (xhour, pixels. Color (255, 50, 0)); pixels.show ();

// exibe o singel minsfor (int m = 0; m

minpixels.setBrightness (mtimebright); minpixels.setPixelColor (m, pixels. Color (255, 255, 0)); minpixels.show (); }} Ler e processar informações TIME do Serial

void readtime () // se já obtivemos o "@" principal, processa os dados futuros e armazena o tempo para TIME Lib {

ahour = Serial.parseInt (); aminuto = Serial.parseInt (); asecond = Serial.parseInt (); aday = Serial.parseInt (); amonth = Serial.parseInt (); aano = Serial.parseInt (); Serial.println ("TIMESET"); Serial.print (ahour); Serial.print (":"); Serial.println (aminuto); setTime (ahour, aminute, asecond, aday, amonth, ayear); }

Limpar tudo

void clearpixels () // definir cada PIXEL para desligado para atualizar a exibição {

pixels.begin (); minpixels.begin (); for (int i = 0; ipixels.setPixelColor (i, pixels. Color (0, 0, 0)); minpixels.setPixelColor (i, pixels. Color (0, 0, 0)); pixels.show (); minpixels.exposição(); } }

Etapa 5: o aplicativo Android e a conexão BT

O aplicativo Android e a conexão BT
O aplicativo Android e a conexão BT
O aplicativo Android e a conexão BT
O aplicativo Android e a conexão BT
O aplicativo Android e a conexão BT
O aplicativo Android e a conexão BT

Se você obteve êxito com as etapas anteriores, agora pode conectar seu módulo BT. (espero que você tenha certeza de que as taxas de transmissão coincidem). não se esqueça de cruzar as linhas TX e RX:-)

Baixe e instale o aplicativo, pareie com seu dongle BT, inicie o aplicativo, conecte-se ao dongle e sincronize a hora com seu celular. O APP basicamente faz o mesmo que antes. Basta enviar @ hh / mm / ss / dd / mm / AAAA gerado a partir de sua hora do sistema. Forneci também o Arquivo AIA do APPInventor e uma explicação na próxima etapa (para os interessados).

Etapa 6: APPInventor

APPInventor
APPInventor
APPInventor
APPInventor

O APP Inventor é muito fácil de usar e vale o esforço por um programa tão simples.

Se você fizer um novo projeto, vai se encontrar na tela do DESIGNER. (figura 1) É aqui que adicionamos tabelas, botões, sensores e outros elementos para uso posterior. No nosso caso, precisamos de:

  • uma mesa (para alinhar todos os elementos)
  • um seletor de lista (para seleção do dispositivo BT ao qual nos conectamos)
  • um botão (para disparar TIME por BT)
  • alguns rótulos (exibem a hora e data reais)
  • o sensor do relógio (atualize a hora)
  • o sensor do cliente bluetooth (conectividade)

Adicioná-los é tão fácil quanto arrastar e soltar! Na Figura 2 você pode ter uma visão geral do “APP” na tela BLOCOS. Bem, é basicamente aí que toda a "mágica" acontece. No topo, criei algumas variáveis para armazenar a hora e a data. O primeiro bloco no canto superior esquerdo inicializará o elemento listpicker com a lista de dispositivos BT emparelhados. segundo bloco, decidimos o que fazer com o elemento escolhido anteriormente. Bem, queremos nos conectar a ele.

Se você der uma olhada no próximo Bloco, verá que geramos, se o status BT "está conectado", a mensagem BT. É o mesmo que digitamos no SerialMonitor antes. O último bloco à esquerda nos fornecerá os zeros à esquerda para exibir a hora (por exemplo, 01:08). No lado direito você pode encontrar nosso último bloco, é onde usamos o elemento clock. Aqui nós atualizamos as variáveis e as mesclamos com o procedimento de dígitos, isso acontecerá a cada 1000ms (configuração padrão, altere no modo designer) e exiba os valores atualizados com o rótulo. Essa é apenas uma breve descrição, mas APPInventor é realmente tão fácil quanto isso:-) Talvez haja alguém na comunidade que queira escrever um software para iOS ou WindowsPhone. (seria ótimo)

Espero que tenham gostado do meu Instructable! Divirta-se com o seu novo relógio de parede! Talvez você queira presentear alguém que você ama (É temporada de Natal):-)

E se houver alguma dúvida, fique à vontade para me perguntar!

Atenciosamente e Merry X-Mas.

Recomendado: