Hola a todos! Desde pequeño, me gusta el universo de Star Wars. Cuando tenía 7 años, vi los episodios 4-6 tantas veces que pude volver a contar sus contenidos con gran detalle.
Sin duda, las impresiones más vívidas de las películas son las batallas con sables de luz. Hace dos años, me topé en Internet con un breve artículo sobre cómo elegir un sable de luz como regalo, me interesé y estudié este tema en detalle.
Al final del año, se lanzan 8 episodios, el 4 de mayo está a la vuelta de la esquina y en la víspera del Día Internacional de la Guerra de las Galaxias, decidí escribir este artículo.
Debajo del corte, compartiré información sobre los fabricantes de sables de luz y hablaré sobre la creación de una espada económica con sonido basada en Arduino.
Ahora en Internet hay muchos fabricantes comerciales de sables de luz, el más notable en mi opinión:
● ● ● Genesis Custom Sabres : manijas personalizadas de muy alta calidad, el precio de una espada personalizada de élite con sonido varía alrededor de 1500-3000 USD.
● ● ● Sabre Forge es una gran opción, los precios son más asequibles, pero las espadas no son tan auténticas como en Genesis CS. El precio de una espada con un sonido de unos 300 USD.
● ● ● Ultrasabers es una de las tiendas más humanas en términos de precio. Una espada con un sonido base cuesta alrededor de 160 USD. Puede pedir componentes individuales para su proyecto.
● ● ● The Custom Sabre Shop : un sitio con una tienda y un diseñador para construir tu espada.
Hay otros fabricantes de sables de luz, por ejemplo,
● ● ● Makoto Tsai , que fabrica las espadas más brillantes basadas en tiras LED hechas en casa.
Pero, ¿qué pasa si no quieres gastar mucho dinero, pero realmente quieres un sable de luz? Solo hay una salida: ahorrar 5,000 rublos y hacer una espada para ti.
En el momento del inicio de mi proyecto, prácticamente no tenía experiencia en programación, el conocimiento en electrónica estaba completamente ausente. Tal vez hice algo que no fue de la mejor manera, pero sigo estudiando y estaré encantado de su consejo.
Al describir el proceso de creación de una espada, trataré de describir todas las dificultades principales.
Entonces comencemos. Aquí hay una lista de todo lo que usé:- Arduino Pro micro 5v ~ 250 rublos en Ali
- Módulo de sonido WT588D-U ~ 250 rublos en Ali
- Step-up 3-5V ~ 100 rublos en Ali
- Altavoz Ø28mm, 8ohm, 2W ~ 40 rublos en Ali
- Acelerómetro ADXL335 ~ 200 rublos en Ali
- N-MOSFET IRF530N x2 ~ 40 rublos en Amperka
- LED Luxeon rebel 3W ~ 70 rublos en Ali
- Lente para LED 8 ° ~ 50 rublos en Ali
- Batería CR123A x2 3.7V ~ 400 rublos en Ali
- Batería Krona 9v para Arduino power
- Soporte de batería ~ 15 rublos en Ali
- Botón antivandálico ~ 100 rublos en Ali
- Interruptor de palanca ~ 50 rublos en Ali
- Tubo de policarbonato blanco de 1 ”~ 800 rublos en Moscú (hay muchas tiendas, están en Google)
- Tubo de PVC para manufactura
También necesitará cables, un tornillo para fijar la tubería de policarbonato en el mango y una tapa para la tubería de policarbonato con un reflector.
Pedí una gorra con un reflector en la tienda de sable Custom desde $ 7 allí, la entrega de artículos pequeños cuesta $ 14.
También necesitará obtener sonidos para la espada en algún lugar, generalmente un conjunto de sonidos de encendido / apagado, ruido de operación (zumbido), sonidos de columpios (columpio), sonidos de colisiones (choque).
Compré un conjunto de sonidos en el
sitio web de
Saberfont por $ 7, pero estoy seguro de que puedes encontrar sonidos gratis.
Los componentes totales salen alrededor de 5,000 rublos si compra sonidos, si no, entonces en la región de 4,000.
Hay dos tipos principales de iluminación de la "cuchilla": un potente LED en la base del tubo de policarbonato, cuya luz se refleja en una tapa al final del tubo y el segundo tipo es una tira de LED segmentada hecha en casa. Se necesitan segmentos para encender suavemente la espada, como en las películas.
Por ejemplo, Makoto usa varias cintas segmentadas en sus espadas más brillantes.
Recomiendo usar un LED potente para la primera compilación, es mucho más simple y bastante brillante.
Quiero decir de inmediato que las espadas en el video se ven más brillantes que en la vida, porque la matriz de la cámara acumula luz, a diferencia de nuestros ojos. No esperes que tu espada brille como en las películas.
Propongo comenzar el ensamblaje del prototipo con la configuración de sonido.
La parte más difícil del proyecto fue lidiar con el sonido, el módulo WT588D en mi caso resultó ser una opción ideal, ya que Proporciona reproducción continua de archivos de audio, no requiere una unidad flash.
Antes de subir archivos a WT, tuve que editarlos un poco, para esto puedes usar el programa gratuito
Audacity .
Es necesario abrir cada archivo por turnos, seleccionar el área con sonido (tuve unos segundos de silencio al final de cada archivo), en la esquina inferior izquierda de la pantalla necesita establecer la frecuencia de 16000 a 22000 Khz. Si la frecuencia es superior a 22000, WT no permitirá descargar el archivo. Siguiente exportación seleccionada: 16 bits.
Para descargar archivos al WT588D, necesitará un
programa para descargar sonidos del fabricante del módulo: Waytronic (solo funciona en Windows, lo ejecuté en MAC a través de BootCamp).
Debe ejecutar el software y seleccionar Inglés en la configuración. Hay varios modos de funcionamiento en el WT588D, elegí el modo de una línea, porque Requiere un mínimo de soldadura, el módulo se comunica con el Arduino a través de un pin.
El campo de trabajo se divide en 3 partes, a la izquierda hay una lista de archivos cargados en el módulo, en el medio hay una lista de listas de reproducción, a la derecha hay una lista de archivos en una lista de reproducción.
Para descargar archivos, haga clic con el botón derecho en la lista de archivos descargados y seleccione Cargar: busque y seleccione el archivo de audio procesado en Audacity. Repita para todos los archivos.
Luego, debe hacer listas de reproducción, agregando muchos sonidos repetitivos del ruido del trabajo después del sonido de inclusión y los sonidos de columpios / colisiones. Esto es necesario para no escribir código para cambiar a ruido después de encender / deslizar.
Llamaremos a los números de listas de reproducción más adelante en nuestro boceto. Después de descargar sonidos y preparar listas de reproducción, debe conectar la alimentación al WT, conectar un altavoz y conectar el pin de datos del WT a Arduino. También conecte un botón para encender / apagar la luz / sonido y un LED a través del MOSFET al Arduino.
Aquí está mi diagrama de conexión:

Alimento WT desde una batería separada de 3.7V a través de MOSFET, usando incrementos de hasta 5v, en cuyo caso obtengo el volumen máximo de salida.
Primero debe registrar todo lo que se utilizará en el boceto:
#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 WT funcione, en el boceto debe declarar el comando WT_Send_Command (*), para esto, agregue el siguiente código al final del boceto:
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); }
El siguiente paso es escribir el código para que cuando se presione el botón, el LED se encienda y la lista de reproducción se reproduzca con el sonido encendido. Cuando se volvió a presionar el botón, el LED se apagó y la lista de reproducción se apagó.
Si no tiene experiencia en programación, para una mejor comprensión del código, le recomiendo que lea los siguientes materiales:
•
Arduino If tutorial•
Tutorial arduino booleano•
Tutorial del botón ArduinoAquí está mi código para reconocer el estado de un botón y activar / desactivar los efectos:
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; } }
Si todo se hace correctamente, debe, cuando presiona el botón, escuchar el sonido de encendido y ruido, el LED debe encenderse. Cuando se presiona nuevamente, el sonido se apaga y el LED debe apagarse.
La parte principal del boceto está lista, ahora conectaremos el acelerómetro y haremos que WT reproduzca los sonidos de las olas.
ADXL335 es bastante fácil de usar, no necesita conectar ninguna biblioteca. Aquí está el diagrama de conexión:
Para que el acelerómetro funcione, tomaremos dos medidas y, en base a una comparación de las lecturas, reproduciremos el sonido de una onda.
Recomiendo colocar el acelerómetro lo más cerca posible de un extremo del mango.
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;
Todo, el prototipo está listo. Es hora de crear un asa y poner todo el relleno en ella.
Hice un mango con tubos de PVC, un inserto para una cuchilla con un diámetro de 28 mm.
Tuve problemas con el mango, como resultado, la primera versión era demasiado pequeña, ahora estoy haciendo una nueva.
En la fabricación de mangos de PVC, solo está limitado por su imaginación, solo puedo dar un consejo: antes de pintar, trate la superficie de la tubería con papel de lija fino, de lo contrario, la pintura no se mantendrá bien.
Aquí está la primera versión de mi mango, en la cubierta taladré agujeros y coloqué un altavoz, y la cuchilla se fija en la tubería con cuatro tornillos:
No incluí el efecto de choque en mi espada, tal vez me pondré al día la próxima vez. Pero si desea habilitar el choque, necesitará un sensor de vibración o una configuración de acelerómetro para reconocer aceleraciones cortas. Si alguien puede configurar el acelerómetro, no sea demasiado vago para compartir el código, lo incluiré en un artículo que lo menciona como autor.
Aquí hay una pequeña prueba de espada en la calle por la noche:
actualización:
Completé el manejo y trabajé en la sincronización de sonidos, agregué un sonido de choque aquí hay un video actualizado:
Estoy seguro de que Geektimes lee a un gran número de personas muy talentosas y hábiles, le pido que comparta su opinión, que brinde consejos. Es posible que gracias a la colaboración podamos simplificar / optimizar aún más el proceso.
Asegúrese de compartir sus resultados, ¡es muy interesante ver lo que obtiene!
¡Gracias a todos por su atención! ¡Y que la fuerza te acompañe!