Índice:

LEDs Rgb controlados por acelerômetro sem fio: 4 etapas
LEDs Rgb controlados por acelerômetro sem fio: 4 etapas

Vídeo: LEDs Rgb controlados por acelerômetro sem fio: 4 etapas

Vídeo: LEDs Rgb controlados por acelerômetro sem fio: 4 etapas
Vídeo: FITAS LED RGB WIFI ALEXA E GOOGLE - 5050, 3528 E OUTRAS - COMANDE AS RGBs DO SEU PC POR VOZ - #12 2024, Julho
Anonim
LEDs Rgb controlados por acelerômetro sem fio
LEDs Rgb controlados por acelerômetro sem fio
LEDs Rgb controlados por acelerômetro sem fio
LEDs Rgb controlados por acelerômetro sem fio

MEMS (Micro-Electro-Mechanical Systems) Os acelerômetros são amplamente usados como sensores de inclinação em telefones celulares e câmeras. Acelerômetros simples estão disponíveis como chips de ic e placas de desenvolvimento de pcb baratas.

Os chips sem fio também são acessíveis e estão disponíveis em circuitos montados, com rede de antena combinada e tampas de desacoplamento a bordo. Conecte a placa wireless e o acelerômetro a um microcontrolador via interface serial e você terá um controlador wireless com funções nintendo-wii. Em seguida, construa um receptor com o mesmo tipo de chip sem fio e rgb-LEDs controlados por pwm, voila, você tem iluminação colorida sem fio com controle de inclinação. Mantenha o nível da placa do transmissor com a placa de ensaio voltada para cima e o LED está azul frio, apenas o LED azul está ativo. Em seguida, incline o transmissor em uma direção e misture em vermelho ou verde, dependendo da direção em que o inclinar. Incline totalmente para 90 graus, e você vai através de todas as misturas de vermelho e azul ou verde e azul até que apenas vermelho ou verde esteja ativo na inclinação de 90 graus. Incline um pouco nas direções xey e você obterá uma mistura de todas as cores. Em 45 graus em todas as direções, a luz é uma mistura igual de vermelho, verde e azul, em outras palavras, luz branca. As peças usadas estão disponíveis em lojas de eletrônicos de passatempo na Internet. Deve ser identificável a partir de algumas das fotos.

Etapa 1: Transmissor com acelerômetro

Transmissor com acelerômetro
Transmissor com acelerômetro
Transmissor com acelerômetro
Transmissor com acelerômetro
Transmissor com acelerômetro
Transmissor com acelerômetro
Transmissor com acelerômetro
Transmissor com acelerômetro

O transmissor é baseado no microcontrolador Atmel avr168. A conveniente placa vermelha com o 168 é uma placa arduino com regulador de tensão e circuito de reinicialização. O acelerômetro é conectado ao avr com barramento i2c bit-banged, e a placa wireless é conectada ao hardware SPI, (Serial Peripheral Interface).

A placa de ensaio é totalmente sem fio com a bateria de 4, 8 V amarrada embaixo. A placa wireless e o arduino wee aceitam até 9 V e têm regulador de tensão linear integrado, mas o acelerômetro precisa de 3,3 V do trilho regulado no wee.

Etapa 2: Receptor com RGB-LED

Receptor com RGB-LED
Receptor com RGB-LED
Receptor com RGB-LED
Receptor com RGB-LED
Receptor com RGB-LED
Receptor com RGB-LED

O receptor é baseado no demoboard atmel avr169 chamado butterfly. A placa tem muitos recursos não usados neste projeto. O tranceiver sem fio está conectado ao PortB e o led controlado por pwm está conectado ao PortD. A energia é fornecida no cabeçalho do ISP, 4,5 V é o suficiente. A placa sem fio pode tolerar 5 V nos pinos de i / o, mas precisa de alimentação de 3,3 V que é fornecida pelo regulador da placa.

O cabo de cabeçalho modificado para o tranceiver rf é realmente conveniente e conecta a placa wireless com o controlador de energia e hardware spi na borboleta. O shiftbright é um controlador de modulação de largura de pulso com led rgb que aceita um comando de 4 bytes que é travado e, em seguida, travado nos pinos de saída. Muito fácil de conectar em série. Basta deslocar muitas palavras de comando e o primeiro deslocado terminará no último LED conectado na cadeia.

Etapa 3: programação C

O código é escrito em C porque não me importei em aprender a linguagem de processamento "mais fácil" na qual o arduino é baseado. Eu mesmo escrevi a interface SPI e rf tranceiver para a experiência de aprendizado, mas peguei emprestado o código assembler i2c do avrfreaks.net. A interface shiftbright é modificada em código C. Um problema que encontrei foram pequenas variações irrádicas na saída do acelerômetro, o que fez o led piscar muito. Resolvi isso com um filtro passa-baixa de software. Uma média ponderada móvel nos valores do acelerômetro. O rf-tranceiver suporta hardware crc e ack com auto-retransmissão, mas para este projeto, a atualização suave e em tempo real dos leds foi mais importante. Todo pacote com valores de acelerômetro não precisa chegar intacto ao receptor, desde que os pacotes corrompidos sejam descartados. Não tive problemas com pacotes de RF perdidos em uma linha de visão de 20 metros. Mas, mais longe, o link tornou-se instável e os leds não foram atualizados continuamente. O loop principal do transmissor em pseudocódigo: initialize (); while (true) {Values = abs (get x, y, z acelerometer values ()); RF_send (valores); delay (20ms);} O loop principal do receptor em pseudo-código: initialize (); while (true) {newValues = blocking_receiveRF ()); rgbValues = rgbValues + 0,2 * (newValues-rgbValues); escreva rgbValues para shiftbrigth;}

Etapa 4: o resultado

O resultado
O resultado
O resultado
O resultado
O resultado
O resultado
O resultado
O resultado

Fiquei surpreso ao ver como o controle era suave e preciso. Você realmente tem o controle de precisão da cor na ponta dos dedos. O controlador pwm-LED tem resolução de 10 bits para cada cor, o que possibilita milhões de cores. Infelizmente, o acelerômetro tem resolução de apenas 8 bits, o que reduz o número de cores teóricas para milhares. Mas ainda não é possível perceber qualquer passo na mudança de cor. Coloquei o receptor em uma lâmpada IKEA e tirei uma foto de cores diferentes abaixo. Há também um vídeo (de qualidade horrível)

Recomendado: