Olá pessoal! Desde a infância, gosto do universo de Guerra nas Estrelas. Quando eu tinha 7 anos de idade, assisti aos episódios 4-6 tantas vezes que pude recontar o conteúdo em detalhes.
Sem dúvida, as impressões mais vívidas dos filmes são as batalhas de sabres de luz. Há dois anos, tropecei na Internet em um pequeno artigo sobre a escolha de um sabre de luz como presente, fiquei interessado e estudei esse tópico em detalhes.
No final do ano, sai o episódio 8, 4 de maio está chegando e, na véspera do dia internacional de Guerra nas Estrelas, decidi escrever este artigo.
Abaixo, vou compartilhar informações sobre fabricantes de sabres de luz e falar sobre como criar uma espada de orçamento com som baseado no Arduino.
Agora, na Internet, existem muitos fabricantes comerciais de sabres de luz, os mais notáveis na minha opinião:
● ● ● Genesis Custom Sabres - Alças personalizadas de alta qualidade, o preço de uma espada personalizada de elite com som varia entre 1500 e 3000 USD.
● ● ● O Sabre Forge é uma ótima opção, os preços são mais acessíveis, mas as espadas não são tão autênticas quanto no Genesis CS. O preço de uma espada com um som de cerca de 300 USD.
● ● ● Ultrasabers é uma das lojas mais humanas em termos de preço. Uma espada com um som de base custa cerca de 160 USD. Você pode solicitar componentes individuais para o seu projeto.
● ● ● The Custom Saber Shop - Um site com uma loja e um designer para construir sua espada.
Existem outros fabricantes de sabres de luz, por exemplo,
Makoto Tsai , que faz as espadas mais brilhantes com base em tiras de LED caseiras.
Mas e se você não quiser gastar muito dinheiro, mas realmente quer um sabre de luz? Só há uma saída: acumular 5.000 rublos e fazer uma espada para você.
Na época do início do meu projeto, eu praticamente não tinha experiência em programação, o conhecimento em eletrônica estava completamente ausente. Talvez eu tenha feito algo que não foi da melhor maneira, mas continuo estudando e ficarei feliz com o seu conselho.
Ao descrever o processo de criação de uma espada, tentarei descrever todas as principais dificuldades.
Então, vamos começar. Aqui está uma lista de tudo que eu usei:- Arduino Pro micro 5v ~ 250 rublos em Ali
- Módulo de som WT588D-U ~ 250 rublos em Ali
- Passo 3-5V ~ 100 rublos em Ali
- Alto-falante Ø28mm, 8ohm, 2W ~ 40 rublos em Ali
- Acelerômetro ADXL335 ~ 200 rublos em Ali
- N-MOSFET IRF530N x2 ~ 40 rublos em Amperka
- Rebelde LED Luxeon 3W ~ 70 rublos em Ali
- Lente para LED 8 ° ~ 50 rublos em Ali
- Bateria CR123A x2 3.7V ~ 400 rublos em Ali
- Bateria Krona 9v para alimentação do Arduino
- Suporte da bateria ~ 15 rublos em Ali
- Botão anti-vandalismo ~ 100 rublos em Ali
- Interruptor de alavanca ~ 50 rublos em Ali
- Tubo de policarbonato branco de 1 ”a 800 rublos em Moscou (há muitas lojas, elas estão no Google)
- Tubo de PVC para fabricação de alças
Você também precisará de fios, um parafuso para fixar o tubo de policarbonato na alça e uma tampa para o tubo de policarbonato com um refletor.
Encomendei um boné com um refletor na loja de sabres personalizados a partir de US $ 7, a entrega para itens pequenos custa US $ 14.
Você também precisará obter sons para a espada em algum lugar, geralmente um conjunto de sons liga / desliga, ruído de operação (hum), sons de oscilações (balanço), sons de colisões (choque).
Comprei um conjunto de sons no site do
Sabrefont por US $ 7, mas tenho certeza que você pode encontrar sons gratuitos.
O total de componentes sai cerca de 5.000 rublos se você comprar sons, se não, na região de 4.000.
Existem dois tipos principais de iluminação da “lâmina” - um poderoso LED na base do tubo de policarbonato, cuja luz é refletida por uma tampa no final do tubo e o segundo tipo é uma faixa de LED segmentada caseira. São necessários segmentos para girar suavemente a espada, como nos filmes.
Por exemplo, Makoto usa várias fitas segmentadas em suas espadas mais brilhantes.
Eu recomendo usar um LED poderoso para a primeira compilação, é muito mais simples e bastante brilhante.
Quero dizer imediatamente que as espadas no vídeo parecem mais brilhantes do que na vida, porque a matriz da câmera acumula luz, diferente dos nossos olhos. Não espere que sua espada brilhe como nos filmes.
Proponho iniciar a montagem do protótipo com as configurações de som.
A parte mais difícil do projeto foi lidar com o som, o módulo WT588D no meu caso acabou sendo uma opção ideal, pois Ele fornece reprodução contínua de arquivos de áudio, não requer uma unidade flash.
Antes de enviar arquivos para o WT, tive que editá-los um pouco, para isso você pode usar o programa gratuito
Audacity .
É necessário abrir cada arquivo por vez, selecionar a área com som (tive alguns segundos de silêncio no final de cada arquivo); no canto inferior esquerdo da tela, é necessário definir a frequência de 16000 a 22000 Khz. Se a frequência for maior que 22000, a WT não permitirá o download do arquivo. Próxima exportação selecionada - 16 bits.
Para baixar arquivos para o WT588D, você precisará de um
programa para baixar sons do fabricante do módulo - Waytronic (ele funciona apenas no Windows, eu o executei no MAC via BootCamp).
Você precisa executar o software e selecionar inglês nas configurações. Existem vários modos de operação no WT588D, eu escolhi o modo de uma linha, porque Requer um mínimo de solda, o módulo se comunica com o Arduino através de um pino.
O campo de trabalho é dividido em 3 partes, à esquerda há uma lista de arquivos carregados no módulo, no meio há uma lista de listas de reprodução, à direita há uma lista de arquivos em uma lista de reprodução.
Para baixar arquivos, clique com o botão direito do mouse na lista de arquivos baixados e selecione Carregar - encontre e selecione o arquivo de áudio processado no Audacity. Repita para todos os arquivos.
Em seguida, você precisa criar listas de reprodução, adicionando muitos sons repetidos do ruído do trabalho após o som da inclusão e os sons de oscilações / colisões. Isso é necessário para não escrever um código para mudar para ruído depois de ligar / deslizar.
Ligaremos para o número de listas de reprodução mais adiante em nosso esboço. Depois de baixar sons e preparar listas de reprodução, você precisa conectar a energia ao WT, conectar um alto-falante e conectar o pino de dados do WT ao Arduino. Conecte também um botão para ligar / desligar a luz / som e um LED através do MOSFET ao Arduino.
Aqui está o meu diagrama de conexão:

Alimento o WT a partir de uma bateria separada de 3,7V via MOSFET, usando intensificação de até 5v, nesse caso, obtenho o volume máximo de saída.
Primeiro, você precisa registrar tudo o que será usado no esboço:
#define WT588D_SDA 8 // WT588D // const int xpin = A0; const int ypin = A1; const int zpin = A2; int oldtime; int newtime; int ADXL = 3; int BUTTON_PIN = 7; // int LED_PIN = 9; //MOSFET int WT_MOSFET = 6; //MOSFET WT588D int i = 0; byte file_count = 1; bool saberon; bool swingsound; void setup() { Serial.begin(9600); pinMode(BUTTON_PIN, INPUT_PULLUP); pinMode(LED_PIN, OUTPUT); pinMode(ADXL, OUTPUT); pinMode(WT_MOSFET, OUTPUT); pinMode(WT588D_SDA, OUTPUT); digitalWrite(ADXL, LOW); digitalWrite(LED_PIN, LOW); digitalWrite(WT588D_SDA, HIGH); digitalWrite(WT_MOSFET, LOW); saberon = false; swingsound = false; oldtime = analogRead(xpin) + analogRead(ypin) + analogRead(zpin); // }
Para que o WT funcione, no esboço, você precisa declarar o comando WT_Send_Command (*); para isso, adicione o seguinte código ao final do esboço:
void WT588D_Send_Command(byte addr) { digitalWrite(WT588D_SDA, LOW); delay(100); for (int i = 0; i < 9; i++) { digitalWrite(WT588D_SDA, HIGH); if (bitRead(addr, i)) { delayMicroseconds(600); digitalWrite(WT588D_SDA, LOW); delayMicroseconds(200); } else { delayMicroseconds(200); digitalWrite(WT588D_SDA, LOW); delayMicroseconds(600); } } digitalWrite(WT588D_SDA, HIGH); delay(50); }
O próximo passo é escrever o código para que, quando o botão for pressionado, o LED acenda e a lista de reprodução seja reproduzida com o som ativado. Quando o botão foi pressionado novamente, o LED apagou e a lista de reprodução desligou.
Se você não possui experiência em programação, para entender melhor o código, recomendo que você leia os seguintes materiais:
•
Arduino Se tutorial•
Tutorial booleano do Arduino•
Tutorial do botão ArduinoAqui está o meu código para reconhecer o estado de um botão e ativar / desativar os efeitos:
if (digitalRead(BUTTON_PIN) == LOW) { if (saberon) { WT588D_Send_Command(* ); delay(700); saberon = false; { analogWrite(LED_PIN, LOW); digitalWrite(WT_MOSFET, LOW); delay(1); } } else { digitalWrite(WT_MOSFET, HIGH); delay(100); WT588D_Send_Command(* ); { analogWrite(LED_PIN, HIGH); delay(1); } saberon = true; } }
Se tudo for feito corretamente, ao pressionar o botão, você ouvirá o som de ligar e o ruído, o LED acenderá. Quando pressionado novamente, o som é desligado e o LED deve apagar.
A parte principal do esboço está pronta, agora vamos conectar o acelerômetro e fazer o WT tocar os sons das ondas.
O ADXL335 é bastante fácil de usar, não precisa conectar nenhuma biblioteca. Aqui está o diagrama de conexão:
Para o acelerômetro funcionar, faremos duas medições e, com base na comparação das leituras, reproduziremos o som de uma onda.
Eu recomendo colocar o acelerômetro o mais próximo possível de uma extremidade da alça.
newtime = analogRead(xpin) + analogRead(ypin) + analogRead(zpin); delay (100); if (newtime - oldtime >= 75 || newtime - oldtime <= -75) { if (swingsound) { swingsound = false; delay (50); } else { swingsound = true; WT588D_Send_Command(* ); delay (150); } } Serial.print(oldtime); Serial.print("\t"); Serial.print(newtime); Serial.print("\t"); Serial.print(newtime - oldtime); Serial.println(); oldtime = newtime;
Tudo, o protótipo está pronto. É hora de criar um identificador e colocar todo o material nele.
Fiz um cabo com tubos de PVC, uma pastilha para uma lâmina com um diâmetro de 28 mm.
Eu tive problemas com o identificador, como resultado, a primeira versão era muito pequena, agora estou fazendo uma nova.
Na fabricação de cabos de PVC, você é limitado apenas pela sua imaginação; só posso dar um conselho - antes de pintar, trate a superfície do tubo com uma lixa fina, caso contrário, a tinta não ficará bem.
Aqui está a primeira versão do meu cabo, na tampa, fiz os furos e coloquei um alto-falante, e a lâmina é fixada no tubo com quatro parafusos:
Não incluí o efeito de choque na minha espada, talvez eu consiga recuperar o atraso na próxima vez. Mas se você deseja ativar o confronto, precisará de um sensor de vibração ou uma configuração do acelerômetro para reconhecer acelerações curtas. Se alguém puder configurar o acelerômetro, não tenha muita preguiça de compartilhar o código, vou incluí-lo em um artigo mencionando você como autor.
Aqui está um pequeno teste de espada na rua à noite:
atualização:
Eu completei o identificador e trabalhei na sincronização de sons, adicionei um som de choque aqui está um vídeo atualizado:
Estou certo de que o Geektimes lê um grande número de pessoas muito talentosas e habilidosas, peço que compartilhe sua opinião, dê conselhos. É possível que, graças à colaboração, possamos simplificar / otimizar ainda mais o processo.
Não se esqueça de compartilhar seus resultados, é muito interessante ver o que você recebe!
Obrigado a todos pela atenção! E que a força esteja com você!