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

Drone de control mental

Componentes y suministros

Arduino MKR1000
× 1
Micro Racing Drone
× 1
Condensador 100 µF
× 4
Resistencia 221 ohm
× 4
Cables de puente (genéricos)
× 12
Breadboard (genérico)
× 1
Mindwave Neurosky
× 1

Herramientas y máquinas necesarias

Soldador (genérico)
Destornillador Digilent

Aplicaciones y servicios en línea

Procesamiento 3
Arduino IDE

Acerca de este proyecto

Antecedentes

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

En la investigación que hice para este proyecto, no encontré ningún tutorial que cubra cómo se puede piratear un controlador de drones fácilmente. La mayoría de los tutoriales disponibles tratan sobre cómo puedes crear tu propio dron usando un Arduino o cómo hackear el protocolo de transmisión.

Este tutorial cubre el concepto más básico de piratear una PCB para controlarla digitalmente. El objetivo de este tutorial es aprender los conceptos básicos que le permitirán experimentar por su cuenta con un dron y crear algo divertido.

Avisos

Potencialmente, puede matar su dron o el controlador e inutilizarlo.

Este proyecto no cubrirá cómo dirigir su dron solo para despegar y aterrizar.

No necesita necesariamente un sensor MindWave / EEG, puede utilizar cualquier entrada que desee. ¡Pero controlar un dron con tu mente es genial!

Video tutorial

Habilidades que necesita

Este tutorial asume que tienes algún tipo de experiencia en soldar y desoldar.

Lista de piezas

  • Drone + controlador
  • Estación de soldadura + accesorios (alambre de cobre trenzado, bomba desoldadora, mano amiga, alambres de núcleo sólido, estaño)
  • Multímetro
  • Sensor MindWave
  • Arduino MKR1000
  • Protoboard
  • 4 condensadores de 100 uF
  • 4 resistencias de 220 Ω
  • 12 cables de puente
  • 6 cables de pinza de cocodrilo (opcional)

También necesita 4 resistencias con un valor de resistencia aún no conocido.

Fase 1:PCB para drones

Puedes usar casi cualquier dron que quieras. La mayoría de los controladores funcionan con joysticks de dos ejes. Esos joysticks los vamos a pasar por alto.

Primero, abra la caja de su controlador. Este controlador usa dos baterías de 1.5v que son aproximadamente 3.3v. Este valor es el mismo que la salida del Arduino MKR1000.

Es posible usar otro Arduino de su agrado, pero tenga en cuenta que puede romper la placa de circuito si le da más voltaje que el PCB. (Hablo por experiencia.)

Mide con un multímetro cuáles son los voltajes medio, alto y bajo de los joysticks una vez activados. Escríbalos para su uso posterior.

Desoldar los componentes del joystick de la PCB.

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

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

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

Ahora ha preparado su controlador para el siguiente paso.

Fase 2:digital a analógico

Cuando use AnalogWrite con su Arduino, la salida será una señal PWM (Modulación de ancho de pulso). La ganancia convertirá su propio valor en ALTO y BAJO en una frecuencia determinada.

A nuestra PCB preparada no le gusta PWM, espera un voltaje constante.

Para crear un valor analógico, podemos usar una variedad de convertidores de digital a analógico, como un chip DAC o un filtro RF Ladder.

Por eso, quiero que este proyecto sea lo más simple posible. Aprenderé a usar un filtro de paso bajo, que nos dará el resultado deseado.

Para crear un filtro de paso bajo, necesita un condensador y una resistencia.

Una de las características de un filtro de paso bajo es que el voltaje analógico cambiará gradualmente (lleva algún tiempo). Este circuito funciona mejor para mí porque me da el resultado deseado y usa una pequeña cantidad de partes.

Fase 3:El circuito Arduino

La parte principal de nuestro circuito es el filtro de paso bajo que creamos recientemente. Haga cuatro de ellos seguidos y tendremos un voltaje analógico para las cuatro entradas del controlador.

Conecte las salidas correctas a las entradas correctas en el PCB controlador. Asegúrese de obtenerlo correctamente antes de cargar Arduino Sketch.

El diseño estándar de los drones es el siguiente:

  • Acelerador => arriba / abajo en el lado izquierdo del controlador
  • Guiñada => izquierda / derecha en el lado izquierdo del controlador
  • Pitch => arriba / abajo en el lado derecho del controlador
  • Roll => izquierda / derecha en el lado derecho del controlador

Una vez que todo esté conectado, puede cargar su boceto en su Arduino MKR1000. Puede encontrar el boceto al final de este tutorial.

El Arduino reemplazará las baterías y puede enviar señales (como voltajes) a los joysticks omitidos. En este momento puedes construir tus propios programas y experimentos para controlar el dron con PWM.

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

Fase 4:Control mental

Instale todos los controladores en su computadora. Este sensor MindWave viene con un CD.

Empareje el sensor MindWave a su computadora con Bluetooth. Mantenga presionado el botón hacia arriba durante 3 segundos y el LED azul parpadeará dos veces, ahora es detectable.

Una vez conectado empiezas a procesar.

Instale la biblioteca MindSet creada por Jorge C. S Cardoso para procesarla desde http://jorgecardoso.eu/processing/MindSetProcessing/#download

Descomprima la biblioteca en su carpeta de bibliotecas. Puede encontrar la carpeta de bibliotecas en su carpeta de procesamiento.

Asegúrese de que sus puertos de comunicación sean correctos en la configuración, o terminará con un error. Puede encontrar los puertos COM en su administrador de dispositivos.

También puede encontrar el puerto de comunicación de Arduino en "Herramientas" en el IDE de Arduino en "Puerto"

También puede encontrar el puerto de comunicación del sensor MindWave en las Preferencias del conector ThinkGear (obtiene este programa cuando instala los controladores) en "Opciones"

  receptor =nuevo Serial (este, "COM10", 115200); mindSet =new MindSet (esto, "COM5");  

El procesamiento se comunica con su Arduino a través de serie. Puede modificar el código de procesamiento a su gusto, lea los comentarios en el boceto para comprender lo que está sucediendo.

Ejecute su boceto de procesamiento y concéntrese en su dron. Cuando su nivel de concentración supere el 40%, el dron despegará. Cuanto más te concentres, más agresivo será el dron. Puede aterrizar el dron dejando que su mente divague y deje de concentrarse.

Conclusión

Espero que este tutorial te haya dado una idea de lo simple que puede ser piratear un controlador de drones (o cualquier PCB) y darle otra entrada. Con la experimentación, puede descubrir cómo controlar otras entradas y cómo realizar otros movimientos además del despegue y el aterrizaje.

¡Estoy emocionado de ver qué cosas geniales harán!

Código

  • Maestro de procesamiento
  • Control de drones
Procesamiento maestro Procesamiento
Se conecta al sensor MindWave a través de Bluetooth Serial y envía el valor de atención como un número entero de 8 bits al controlador
 / * * Control mental de drones * * Este boceto envía valores en serie a un receptor receptor * * La entrada se genera a través de un Auriculares Neurosky MindSet Mobile * * Creado el 21 de marzo de 2018 * Por Wesley Hartogs * Diseño de comunicación y multimedia * Avans University of Applied Sciences * * * /// import Serial libaryimport processing.serial. *; // Definir receptor SerialSerial receptor; // Importar MindSet libaryimport pt.citar.diablu.processing.mindset. *; MindSet mindSet; // Establece los valores inicialesint throttle =0; int yaw =127; int pitch =127; int roll =127; void setup () {size (150, 500); // Iniciar la comunicación serial en el receptor COM10 =nuevo serial (este, "COM10", 115200); // Iniciar la comunicación MindSet // El MindSet usa comunicación serial Bluetooth, // Verificar el COM-pot en el Conector ThinkGear en su Administrador de Dispositivos mindSet =new MindSet (esto, "COM5"); // Habilitar suavizado suavizado (); // Establecer las propiedades del trazo strokeWeight (5); carrera (255); strokeCap ​​(CUADRADO); // Establecer relleno de color de línea (255); } // setup () void draw () {// Comienza con un fondo negro background (0); // Dibuja una línea horizontal al 40% desde la parte inferior // Esta línea indica la línea mínima (40%) que se necesita atención (0, altura * 0.60, ancho, alto * .60); // Dibuja una línea desde el centro horizontal hacia arriba // Esta línea da una indicación de tu atención // La altura se mapea al revés para obtener un porcentaje desde arriba // Ejemplo:por 40% (0.4) atención, el valor de la altura es ( 100 - 40) 60% (0.6) desde la línea superior (ancho * .5, alto, ancho * .5, alto * mapa (flotador (nivel de atención) / 100, 0, 1, 1, 0)); // Empuje el nivel de atención a la variable del acelerador // 40 =atención mínima necesaria para hacer algo // 100 =atención máxima // 30 =valor mínimo de 8 bits para Arduino // 255 =valor máximo de 8 bits para el acelerador Arduino =int (mapa (nivel de atención, 40, 100, 30, 255)); // Restringe los valores a valores de 8 bits para evitar errores throttle =constrain (throttle, 0, 255); tono =restringir (tono, 0, 255); rodar =restringir (rodar, 0, 255); guiñada =restringir (guiñada, 0, 255); // Cuando haya comunicación posible, envíe los valores al receptor Arduino si (receptor. Disponible ()> 0) {println ("nivel de atención:" + nivel de atención + "acelerador:" + acelerador + "guiñada:" + guiñada + "paso:" + tono + "rodar:" + rodar); receptor .write ("acelerador:" + acelerador + "guiñada:" + guiñada + "cabeceo:" + cabeceo + "balanceo:" + balanceo); }} // draw () // Killswitch, presione K para reiniciar y cerrar el programavoid keyPressed () {if (key =='k' || key ==ESC) {if (receiver .available ()> 0) { receptor .write ("acelerador:" +0+ "guiñada:" +127+ "paso:" +127+ "rollo:" +127); Salida(); }}} // Variables y funciones de MindSetint signalStrenght =0; int nivel de atención =0; public void evento de atención (int valor de nivel de atención) {nivel de atención =valor de nivel de atención;} // Esta función se activa cuando la conexión con el MindSet no es óptimapublic void poorSignalEvent (int signalNoise) {// MindSet está ajustando if (signalNoise ==200) {println ("¡Mindset no está tocando tu piel!"); } // Asigna la intensidad de la señal a un porcentaje de SignalStrenght =int (map ((200-signalNoise), 200, 0, 100, 0)); println ("Intensidad de la señal:" + signalStrenght + "%");} 
Control de drones Arduino
Este boceto recibe valores de entrada en serie (del procesamiento) y envía estos valores al controlador pirateado.
 / * * Control de drones * * Este boceto recibe valores de entrada en serie (del procesamiento) y envía estos valores al controlador pirateado. * Use este programa solo con el Arduino MKR1000 (u otro Arduino basado en salida de 3.3 voltios) * * El circuito:* - 4 filtros de paso bajo con capacitores de 100 µF y resistencias de 220 Ω * - Controlador de drones pirateados * * Creado el 21 de marzo de 2018 * Por Wesley Hartogs * Comunicación y Diseño Multimedia * Avans University of Applied Sciences * * Utilice este boceto bajo su propio riesgo. * * /// Establecer valores inicialesint throttle =0; int yaw =255/2; // 3.3v / 2int paso =255/2; // 3.3v / 2int rollo =255/2; // 3.3v / 2int throttlePin =2; // PWMint yawPin =3; // PWMint pitchPin =4; // PWMint rollPin =5; // PWMvoid setup () {// Comienza la comunicación serial a 115200 baudios Serial.begin (115200); // Establecer pinModes pinMode (throttlePin, OUTPUT); pinMode (yawPin, SALIDA); pinMode (pitchPin, SALIDA); pinMode (rollPin, OUTPUT);} void loop () {// Cuando hay una conexión serial disponible, obtenga los valores if (Serial.available ()> 0) {throttle =Serial.parseInt (); // Almacenar el primer valor entero del búfer serial yaw =Serial.parseInt (); // Almacenar el segundo valor entero del búfer serial pitch =Serial.parseInt (); // Almacenar el tercer valor de número entero desde el búfer serial roll =Serial.parseInt (); // Almacenar el cuarto valor entero del búfer serial} // Escribir valores en el controlador del dron // Usar un filtro de paso bajo o DAC (convertidor digital a analógico) para convertir PWM en un voltaje analógico analogWrite (throttlePin, throttle); analogWrite (yawPin, yaw); analogWrite (pitchPin, tono); analogWrite (rollPin, roll);} 

Esquemas

Convierta la señal PWM en voltaje analógico Circuito para conectar Arduino MK1000 al controlador pirateado

Proceso de manufactura

  1. TinyML-Language Detector basado en Edge Impulse y Arduino
  2. Juego de giroscopio Arduino con MPU-6050
  3. Dados digitales Arduino
  4. Juego de ruleta DIY 37 LED
  5. ATtiny85 Mini Arcade:Serpiente
  6. Detector de alcance portátil
  7. Control del humidificador Arduino
  8. Bot de agarre de control remoto
  9. Galvanoplastia con cobre
  10. NeoMatrix Arduino Pong
  11. Creador de secuencias de luz