Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Dron Controlado por la Mente: Usando EEG para Volar un Micro Drone de Carreras

Componentes y Suministros

Arduino MKR10001
Micro Drone de Carreras1
Condensador 100 µF4
Resistencia 221 ohm4
Cables Dupont (genéricos)12
Protoboard (genérica)1
Mindwave Neurosky1

Herramientas Necesarias

Aplicaciones y Servicios Online

Sobre el Proyecto

Antecedentes

Me fascinan los drones, esas pequeñas máquinas voladoras que pueden hacer casi cualquier cosa. Cuando tuve la oportunidad de hacer un proyecto con tecnología genial, decidí hacer realidad el sueño de un niño: controlar un dron con la mente.

En mi investigación para este proyecto no encontré tutoriales que cubrieran cómo hackear un controlador de dron fácilmente. La mayoría tratan sobre cómo crear tu propio dron con Arduino o cómo hackear el protocolo de transmisión.

Este tutorial cubre el concepto más básico de hackear una PCB para controlarla digitalmente. El objetivo es enseñarte los conceptos básicos que te permitirán experimentar por tu cuenta con un dron y crear algo divertido.

Avisos

Habilidades Necesarias

Este tutorial asume que tienes alguna experiencia con soldadura y desoldadura.

Lista de Piezas

También necesitas 4 resistencias con un valor de resistencia aún desconocido.

Fase 1: PCB del Dron

Puedes usar casi cualquier dron. La mayoría de los controladores usan joysticks de dos ejes. Esos joysticks es lo que vamos a saltar (bypass).

Primero, abre la carcasa del controlador. Este usa dos pilas de 1.5V que suman aprox. 3.3V. Este valor es el mismo que la salida del Arduino MKR1000.

Es posible usar otro Arduino, pero ten cuidado: puedes romper la placa si le das más voltaje del que la PCB puede manejar (hablo por experiencia).

Dron Controlado por la Mente: Usando EEG para Volar un Micro Drone de Carreras

Mide con un multímetro los voltajes medio, alto y bajo de los joysticks una vez alimentados. Anótalos para después.

Dron Controlado por la Mente: Usando EEG para Volar un Micro Drone de Carreras

Desolda los componentes del joystick de la PCB.

Dron Controlado por la Mente: Usando EEG para Volar un Micro Drone de Carreras
Dron Controlado por la Mente: Usando EEG para Volar un Micro Drone de Carreras

En realidad, estos componentes de joystick son solo potenciómetros. Un potenciómetro es una resistencia variable analógica. Puedes medir la resistencia máxima con un multímetro. Conecta el multímetro a + y - para leer la resistencia.

Dron Controlado por la Mente: Usando EEG para Volar un Micro Drone de Carreras

Suolda 4 resistencias (en este caso 10Ω) en los agujeros de + y - de los joysticks para completar el circuito.

Dron Controlado por la Mente: Usando EEG para Volar un Micro Drone de Carreras

También suelda cables de núcleo sólido a los puertos + (B+ en esta placa) y - (B- en esta placa) en la PCB. Y suelda cables de núcleo sólido a los puertos de señal de los joysticks.

Ahora tienes tu controlador preparado para el siguiente paso.

Dron Controlado por la Mente: Usando EEG para Volar un Micro Drone de Carreras

Fase 2: Digital a Analógico

Cuando usas AnalogWrite en tu Arduino, la salida será una señal PWM (Modulación por Ancho de Pulso). El pin pondrá su valor HIGH y LOW a una frecuencia determinada.

Nuestra PCB preparada no admite PWM, espera un voltaje estable.

Dron Controlado por la Mente: Usando EEG para Volar un Micro Drone de Carreras

Para crear un valor analógico podemos usar varios convertidores digital-analógico como un chip DAC o un filtro escalera R-2R.

Como quiero mantener este proyecto lo más simple posible, te enseñaré cómo usar un Filtro Pasa-Bajos, que nos dará la salida deseada.

Para crear un filtro pasa-bajos necesitas un condensador y una resistencia.

Dron Controlado por la Mente: Usando EEG para Volar un Micro Drone de Carreras

Una de las características de un filtro pasa-bajos es que el voltaje analógico cambiará gradualmente (tarda un tiempo). Este circuito funciona mejor para mí porque da el resultado deseado y usa pocos componentes.

Dron Controlado por la Mente: Usando EEG para Volar un Micro Drone de Carreras

Fase 3: El Circuito Arduino

La parte principal de nuestro circuito es el filtro pasa-bajos que creamos recientemente. Haz cuatro en fila y tendremos un voltaje analógico para las cuatro entradas del controlador.

Dron Controlado por la Mente: Usando EEG para Volar un Micro Drone de Carreras
Dron Controlado por la Mente: Usando EEG para Volar un Micro Drone de Carreras

Conecta las salidas correctas a las entradas correctas en la PCB del controlador. Asegúrate de tenerlo correcto antes de subir el sketch al Arduino.

Dron Controlado por la Mente: Usando EEG para Volar un Micro Drone de Carreras

La disposición estándar del dron es la siguiente:

Una vez todo conectado, puedes subir tu sketch al Arduino MKR1000. Puedes encontrar el sketch al final de este tutorial.

El Arduino reemplazará las pilas y enviará señales (como voltajes) a los joysticks bypassados. En este momento puedes crear tus propios programas y experimentos para controlar el dron con PWM.

Dron Controlado por la Mente: Usando EEG para Volar un Micro Drone de Carreras

Ahora te mostraré cómo usar Processing y un sensor MindWave para hacer despegar el dron.

Fase 4: Control Mental

Instala todos los drivers en tu computadora. Este sensor MindWave viene con un CD.

Dron Controlado por la Mente: Usando EEG para Volar un Micro Drone de Carreras

Empareja el sensor MindWave a tu computadora por Bluetooth. Mantén el botón pulsado 3 segundos y el LED azul parpadeará dos veces; ahora es detectable.

Dron Controlado por la Mente: Usando EEG para Volar un Micro Drone de Carreras

Una vez conectado, inicia Processing.

Instala la librería MindSet creada por Jorge C. S Cardoso para Processing desde https://jorgecardoso.eu/processing/MindSetProcessing/#download

Descomprime la librería en tu carpeta libraries (la encontrarás en tu carpeta de Processing).

Asegúrate de que los puertos COM sean correctos en el setup, o terminarás con un error. Puedes encontrar los puertos COM en el Administrador de Dispositivos.

También puedes encontrar el puerto COM del Arduino en "Herramientas" en el Arduino IDE en "Puerto".

Y el puerto COM del sensor MindWave en las Preferencias de ThinkGear Connector (obtienes este programa al instalar los drivers) en "Opciones".

receiver = new Serial(this, "COM10", 115200); 
mindSet = new MindSet(this, "COM5");

Processing se comunica con tu Arduino vía Serial. Puedes alterar el código de Processing a tu gusto; lee los comentarios en el sketch para entender qué ocurre.

Ejecuta tu sketch de Processing y concéntrate en tu dron. Cuando tu nivel de concentración supere el 40%, el dron despegará. Cuanto más te concentres, más agresivo será el dron. Puedes aterrizar el dron dejando divagar tu mente y dejando de concentrarte.

Dron Controlado por la Mente: Usando EEG para Volar un Micro Drone de Carreras

Conclusión

Espero que este tutorial te dé una idea de lo simple que puede ser hackear un controlador de dron (o cualquier PCB) y darle otra entrada. Puedes descubrir con experimentación cómo obtener otras entradas para controlar y cómo hacer otros movimientos además de despegar y aterrizar.

¡Estoy emocionado de ver qué cosas geniales haréis!

Código

Processing Master (Processing)

/* 
 * Drone mind control 
 * This sketch sends Serial values to a receiver 
 * The input is generated via a Neurosky MindSet Mobile headset 
 * Created 21 March 2018 
 * By Wesley Hartogs 
 * Communication and Multimedia Design 
 * Avans University of Applied Sciences 
 */ 
import processing.serial.*; 
Serial receiver; 
import pt.citar.diablu.processing.mindset.*; 
MindSet mindSet; 
int throttle = 0; 
int yaw = 127; 
int pitch = 127; 
int roll = 127; 
void setup() { 
  size(150, 500); 
  receiver = new Serial(this, "COM10", 115200); 
  mindSet = new MindSet(this, "COM5"); 
  smooth(); 
  strokeWeight(5); 
  stroke(255); 
  strokeCap(SQUARE); 
  fill(255); 
} 
void draw() { 
  background(0); 
  line(0, height*0.60, width, height*.60); 
  line(width*.5, height, width*.5, height*map(float(attentionLevel)/100, 0, 1, 1, 0)); 
  throttle = int(map(attentionLevel, 40, 100, 30, 255)); 
  throttle = constrain(throttle, 0, 255); 
  pitch = constrain(pitch, 0, 255); 
  roll = constrain(roll, 0, 255); 
  yaw = constrain(yaw, 0, 255); 
  if (receiver.available() > 0) { 
    println("attentionLevel: "+attentionLevel+" throttle: "+throttle+" yaw: "+yaw+" pitch: "+pitch+" roll: "+roll); 
    receiver.write("throttle: "+throttle+" yaw: "+yaw+" pitch: "+pitch+" roll: "+roll); 
  } 
} 
void keyPressed() { 
  if (key == 'k' || key == ESC) { 
    if (receiver.available() > 0) { 
      receiver.write("throttle: "+0+" yaw: "+127+" pitch: "+127+" roll: "+127); 
      exit(); 
    } 
  } 
} 
int signalStrenght = 0; 
int attentionLevel = 0; 
public void attentionEvent(int attentionLevel_val) { attentionLevel = attentionLevel_val; } 
public void poorSignalEvent(int signalNoise) { 
  if (signalNoise == 200) { println("Mindset is not touching your skin!"); } 
  signalStrenght = int(map((200-signalNoise), 200, 0, 100, 0)); 
  println("Signal strength: " + signalStrenght + "%"); 
}

Drone Control (Arduino)

/* 
 * Drone control 
 * This sketch receives Serial input values (from processing) and sends these values to the hacked controller. 
 * Use this program only with the Arduino MKR1000 (or another 3.3 volt output based Arduino) 
 * The circuit: 
 * - 4 Low Pass filters with 100 µF capacitors and 220Ω resistors 
 * - Hacked drone controller 
 * Created 21 March 2018 
 * By Wesley Hartogs 
 * Use this sketch at your own risk. 
 */ 
int throttle = 0; 
int yaw = 255/2; 
int pitch = 255/2; 
int roll = 255/2; 
int throttlePin = 2; 
int yawPin = 3; 
int pitchPin = 4; 
int rollPin = 5; 
void setup() { 
  Serial.begin(115200); 
  pinMode(throttlePin, OUTPUT); 
  pinMode(yawPin, OUTPUT); 
  pinMode(pitchPin, OUTPUT); 
  pinMode(rollPin, OUTPUT); 
} 
void loop() { 
  if (Serial.available() > 0) { 
    throttle = Serial.parseInt(); 
    yaw = Serial.parseInt(); 
    pitch = Serial.parseInt(); 
    roll = Serial.parseInt(); 
  } 
  analogWrite(throttlePin, throttle); 
  analogWrite(yawPin, yaw); 
  analogWrite(pitchPin, pitch); 
  analogWrite(rollPin, roll); 
}

Esquemáticos

Convertir señal PWM a voltaje analógico

Dron Controlado por la Mente: Usando EEG para Volar un Micro Drone de Carreras

Circuito para conectar Arduino MKR1000 al controlador hackeado

Dron Controlado por la Mente: Usando EEG para Volar un Micro Drone de Carreras

Proceso de manufactura

  1. Detector de idiomas TinyML con Edge Impulse en Arduino Nano 33 BLE Sense
  2. Construye un Juego Giroscópico en Tiempo Real con Arduino Nano y Sensor MPU-6050
  3. Proyecto Dados Digitales Arduino: Construye tu Propio Generador de Números Aleatorios con LCD
  4. Construye tu Propio Juego de Ruleta de 37 LEDs con Arduino Nano
  5. ATtiny85 Mini Arcade: Snake – Construye una Consola Portátil OLED
  6. Detector de Rango Portátil – Kit DIY Arduino Nano con HC-SR04, Batería 18650 y Carcasa Impresa en 3D
  7. Controlador de Humidificador DIY con Arduino y Relé: Configuración Segura de Alto Voltaje
  8. Robot pinza controlado remotamente para manipulación de precisión
  9. Proyecto de electroplacado de cobre: Construye un sistema inteligente con Arduino UNO
  10. Pong Neón en Matriz NeoPixel con Arduino Nano
  11. Crea Secuencias de Luz Impactantes con Arduino y Registro de Desplazamiento