Índice:

Ish Clock: 5 etapas (com imagens)
Ish Clock: 5 etapas (com imagens)

Vídeo: Ish Clock: 5 etapas (com imagens)

Vídeo: Ish Clock: 5 etapas (com imagens)
Vídeo: Deer Decomposition - Timelapse (4K) 2024, Julho
Anonim
Image
Image
Reunindo peças e trabalho de madeira
Reunindo peças e trabalho de madeira

Muitas vezes me pego comprando coisas que não tenho ideia do que vou fazer com elas. Este projeto é resultado da compra de um anel que possui 12 LEDs WS2812b acesos. Não tinha planos para ele, mas parecia legal online, então coloquei um no meu carrinho, brinquei com ele por um tempo quando ele chegou e depois esqueci completamente.

Um pouco depois eu estava pensando em fazer um relógio e lembrei que ele estava sentado lá sem fazer nada. Eu estava pensando em comprar um segundo anel com 60 LEDs acesos para compensar os minutos, mas então comecei a pensar em como nós / eu tendemos a olhar para o tempo e arredondá-lo para os 5 minutos mais próximos.

Com isso no meu, parti com meu anel de 12 LEDs para fazer o relógio ish. Exibe 1 LED por vez durante 1 segundo, para indicar a hora (LED azul) e depois os minutos (LED vermelho) arredondado para baixo

Etapa 1: reunindo peças e trabalho de madeira

Reunindo peças e trabalho de madeira
Reunindo peças e trabalho de madeira
Reunindo peças e trabalho de madeira
Reunindo peças e trabalho de madeira
Reunindo peças e trabalho de madeira
Reunindo peças e trabalho de madeira

Tive muita sorte de chegar ao trabalho um dia e localizar um palete. Esta palete chamou a minha atenção, pois não se parecia com o seu palete padrão. Era um carvalho limpo, tratado termicamente e extraordinariamente sólido.

Este projeto é feito a partir de uma das peças desse palete. (Perguntei ao chefe antes de levá-lo para casa)

Também usado:

  • Anel LED de 12 pixels ws2812b
  • Módulo de relógio em tempo real (RTC) (estou usando um DS3231 com I2C)
  • Compatível com Arduino Nano v3.0
  • Folha de acrílico (5 mm)
  • Fio Colorido

Ferramentas

  • Furadeira
  • Roteador
  • Broca de madeira plana ajustável
  • Lixadeira elétrica
  • Serra manual
  • Ferro de solda
  • Pistola de cola quente
  • Lixa
  • Óleo dinamarquês

Lixar

Comecei usando a lixadeira elétrica para endireitar e limpar o bloco de madeira até que todos os lados estivessem limpos e lisos. Deixei algumas imperfeições visíveis e não é perfeitamente reto ou quadrado como gosto de poder ver um pouco da história na madeira.

Marcando e cortando os furos

Depois de lixar, escolhi o lado que queria que fosse a face do relógio e marquei o centro desenhando linhas em cada canto. Eu coloquei o pedaço de madeira ajustável um pouco maior do que o anel de LED para que houvesse uma prateleira para o acrílico sentar e cortar cerca de 5 mm de profundidade, em seguida, ajustei o cortador um pouco mais do que o tamanho do anel de LED e corte outros 5 mm ou mais.

Roteamento e orifícios para cabos

Usando meu roteador com o bit de 12 mm, direcionei um recesso na parte inferior do bloco para ocultar o RTC e o Arduino. Tem cerca de 15 mm de profundidade e não menos do que 5 mm de qualquer borda. Eu marquei o centro (ish) de baixo e perfurei usando uma broca de 10 mm na metade para permitir os fios de LED. Em seguida, usando uma broca de 5 mm, perfurei do centro do recesso do LED para encontrar o orifício de 10 mm na parte inferior.

Mais um orifício de 4 mm na parte traseira para a entrada de energia e usando uma fresa menor para fazer um canal para os fios na parte de trás do anel de LED e o trabalho em madeira é feito.

Etapa 2: Círculos de acrílico

Círculos de Acrílico
Círculos de Acrílico
Círculos de Acrílico
Círculos de Acrílico
Círculos de Acrílico
Círculos de Acrílico

Para fazer o acrílico para a frente do relógio afirmei cortar uma peça quadrada que fosse um pouco maior que o buraco que tinha que preencher. Então, usando a lixadeira elétrica para começar, comecei a remover os cantos até que ficasse do tamanho e da forma corretos. Em seguida, mudei para o lixamento manual para não atirar demais e ter que começar de novo.

Foi um processo lento e tedioso de tentativa e erro até que se encaixou perfeitamente, mas acho que o resultado final valeu a pena. Terminei usando um papel de grão muito fino para dar à frente do acrílico uma aparência fosca.

Etapa 3: Solda

De solda
De solda
De solda
De solda
De solda
De solda
De solda
De solda

Gosto de usar um sistema de cores para meus fios nesta ocasião, eu escolho:

  • Vermelho para energia (5v)
  • Branco para chão
  • Amarelo para dados
  • Verde para Relógio

Comecei soldando os 3 fios necessários no anel de LED usando o sistema acima e empurrando os fios pelo orifício. Como não deve ser exposto a nenhuma força real, usei um pouquinho de cola quente para segurar o anel no lugar. (Talvez precise trocá-lo algum dia) e instale o acrílico com apenas um pouco de cola quente ao redor da borda.

Em seguida, soldei os 4 fios no RTC usando o sistema acima. Para manter as coisas um pouco mais organizadas, decidi obter energia para o RTC do Arduino. Em seguida, conectou tudo ao Arduino e soldou 1 fio para alimentação e outro para aterramento ao Arduino.

RTC

  • SCL (relógio) para pino analógico 5
  • SDA (dados) para pino analógico 4
  • VCC a 5V
  • GND para qualquer GND no Arduino

Anel LED

Din para pino digital 6

Eu tinha um cabo USB antigo pendurado, então decidi usá-lo para alimentar o relógio. Cortei a extremidade que normalmente se conectaria a algo e empurrei pelo orifício na parte de trás. Em seguida, descasque e aplique as pontas antes de soldar o VCC ao Arduino e o anel de LED ao lado positivo e o aterramento do Arduino e o LED ao aterramento. Eu encolhi um pouco de calor depois e estava parecendo bom, A pistola de cola quente voltou para manter e segurar tudo. Decidi deixar o Arduino com folga suficiente para poder acessar a porta USB para programá-lo no futuro, mas não tanto que possa cair.

Etapa 4: O Código

Agora você deve conseguir fazer upload desse código para o Arduino.

Se o RTC não estiver executando, esse código definirá a hora com base em quando o código foi compilado, portanto, clique no botão de upload e não verifique.

alternativamente, isso também funciona muito bem para definir a hora.

www.instructables.com/id/Setting-the-DS130…

Muito desse código eu peguei emprestado da biblioteca Adafruit NeoPixel e alguns de uma biblioteca RTC que encontrei e alguns que criei sozinho.

// inclua o código da biblioteca: #include

#incluir

#incluir

// define pinos

# define PIN 6

# define BRIGHTNESS 20 // define brilho máximo

#define r 5

#define g 5

#define b 5

RTC_DS3231 rtc; // Estabelecer objeto de relógio

Tira Adafruit_NeoPixel = Adafruit_NeoPixel (12, PIN, NEO_GRB + NEO_KHZ800); // tira o objeto

void setup () {

Wire.begin (); // Begin I2C

rtc.begin (); // começar o relógio

Serial.begin (9600);

// definir modos de pino

pinMode (PIN, OUTPUT);

if (rtc.lostPower ()) {

Serial.println ("RTC perdeu energia, vamos definir a hora!");

// a linha seguinte define o RTC para a data e hora em que este esboço foi compilado

rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_)));

// Esta linha define o RTC com uma data e hora explícitas, por exemplo, para definir

// 21 de janeiro de 2014 às 3h, você ligaria:

// rtc.adjust (DateTime (2014, 1, 21, 3, 0, 0));

}

strip.begin ();

strip.show (); // Inicializa todos os pixels para 'desligado'

DateTime theTime = rtc.now (); // leva em consideração o DST

byte secondval = theTime.second (); // obter segundos

byte minuteval = theTime.minute (); // obter minutos

int hourval = theTime.hour ();

ponto (strip. Color (0, g, 0), 50);

}

void loop () {

// consiga tempo

DateTime theTime = rtc.now (); // leva em consideração o DST

int minuteval = theTime.minute (); // obter minutos

int hourval = theTime.hour (); // obter horas

int secondval = theTime.second ();

if (minuteval 0) {

strip.setPixelColor (0, r, 0, 0);

strip.show ();}

else if (minuteval <= 9) {

strip.setPixelColor (1, r, 0, 0);

strip.show ();}

else if (minuteval <= 14) {

strip.setPixelColor (2, r, 0, 0);

strip.show ();}

else if (minuteval <= 19) {

strip.setPixelColor (3, r, 0, 0);

strip.show ();}

else if (minuteval <= 24) {

strip.setPixelColor (4, r, 0, 0);

strip.show ();}

else if (minuteval <= 29) {

strip.setPixelColor (5, r, 0, 0);

strip.show ();}

else if (minuteval <= 34) {

strip.setPixelColor (6, r, 0, 0);

strip.show ();}

else if (minuteval <= 39) {

strip.setPixelColor (7, r, 0, 0);

strip.show ();}

else if (minuteval <= 44) {

strip.setPixelColor (8, r, 0, 0);

strip.show ();}

else if (minuteval <= 49) {

strip.setPixelColor (9, r, 0, 0);

strip.show ();}

else if (minuteval <= 54) {

strip.setPixelColor (10, r, 0, 0);

strip.show ();}

else if (minuteval <= 59) {

strip.setPixelColor (11, r, 0, 0);

strip.show ();}

atraso (1000);

para (int i = 0; i <12; i ++) {

strip.setPixelColor (i, 0, 0, 0);

strip.show ();

}

if (hourval == 0) {

strip.setPixelColor (0, 0, 0, b);

strip.show ();}

else if (hourval == 1) {

strip.setPixelColor (1, 0, 0, b);

strip.show ();}

else if (hourval == 2) {

strip.setPixelColor (2, 0, 0, b);

strip.show ();}

else if (hourval == 3) {

strip.setPixelColor (3, 0, 0, b);

strip.show ();}

else if (hourval == 4) {

strip.setPixelColor (4, 0, 0, b);

strip.show ();}

else if (hourval == 5) {

strip.setPixelColor (5, 0, 0, b);

strip.show ();}

else if (hourval == 6) {

strip.setPixelColor (6, 0, 0, b);

strip.show ();}

else if (hourval == 7) {

strip.setPixelColor (7, 0, 0, b);

strip.show ();}

else if (hourval == 8) {

strip.setPixelColor (8, 0, 0, b);

strip.show ();}

else if (hourval == 9) {

strip.setPixelColor (9, 0, 0, b);

strip.show ();}

else if (hourval == 10) {

strip.setPixelColor (10, 0, 0, b);

strip.show ();}

else if (hourval == 11) {

strip.setPixelColor (11, 0, 0, b);

strip.show ();}

else if (hourval == 12) {

strip.setPixelColor (0, 0, 0, b);

strip.show ();}

else if (hourval == 13) {

strip.setPixelColor (1, 0, 0, b);

strip.show ();}

else if (hourval == 14) {

strip.setPixelColor (2, 0, 0, b);

strip.show ();}

else if (hourval == 15) {

strip.setPixelColor (3, 0, 0, b);

strip.show ();}

else if (hourval == 16) {

strip.setPixelColor (4, 0, 0, b);

strip.show ();}

else if (hourval == 17) {

strip.setPixelColor (5, 0, 0, b);

strip.show ();}

else if (hourval == 18) {

strip.setPixelColor (6, 0, 0, b);

strip.show ();}

else if (hourval == 19) {

strip.setPixelColor (7, 0, 0, b);

strip.show ();}

else if (hourval == 20) {

strip.setPixelColor (8, 0, 0, b);

strip.show ();}

else if (hourval == 21) {

strip.setPixelColor (9, 0, 0, b);

strip.show ();}

else if (hourval == 22) {

strip.setPixelColor (10, 0, 0, b);

strip.show ();}

else if (hourval == 23) {

strip.setPixelColor (11, 0, 0, b);

strip.show ();}

atraso (1000);

para (int i = 0; i <12; i ++) {

strip.setPixelColor (i, 0, 0, 0);

strip.show ();

}

// para depuração serial

Serial.print (valor da hora, DEC);

Serial.print (':');

Serial.print (minuteval, DEC);

Serial.print (':');

Serial.println (secondval, DEC);

}

void dot (uint32_t c, uint8_t wait) {

para (int j = 0; j <3; j ++) {

para (int i = 0; i <12; i ++) {

strip.setPixelColor (i, c);

strip.show ();

atrasar (esperar);

para (int i = 0; i <12; i ++) {

strip.setPixelColor (i, 0, 0, 0);

strip.show ();}

}

}

}

Etapa 5: óleo dinamarquês

Óleo dinamarquês
Óleo dinamarquês
Óleo dinamarquês
Óleo dinamarquês
Óleo dinamarquês
Óleo dinamarquês
Óleo dinamarquês
Óleo dinamarquês

A etapa final e opcional é aplicar um pouco de óleo dinamarquês na madeira. Eu realmente gosto de como ele realça o grão e também oferece alguma proteção contra manchas e umidade. Então, eu recomendo fortemente.

Você pode escovar ou eu apenas uso um pano velho para limpar.

Tudo o que resta agora é conectá-lo e aproveitar.

Recomendado: