Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Drone de controle mental

Componentes e suprimentos

Arduino MKR1000
× 1
Micro Racing Drone
× 1
Capacitor 100 µF
× 4
Resistor 221 ohm
× 4
Fios de jumpers (genérico)
× 12
Breadboard (genérico)
× 1
Mindwave Neurosky
× 1

Ferramentas e máquinas necessárias

Ferro de soldar (genérico)
Chave de fenda Digilent

Aplicativos e serviços online

Processamento 3
Arduino IDE

Sobre este projeto





Antecedentes


Acho os drones fascinantes, aquelas pequenas máquinas voadoras que podem fazer qualquer coisa. Quando tive a oportunidade de fazer um projeto com uma tecnologia bacana resolvi realizar o sonho de um garoto, controlando um drone com a mente.

Na pesquisa que fiz para este projeto, não encontrei nenhum tutorial que cubra como você pode hackear um controlador de drone facilmente. A maioria dos tutoriais disponíveis é sobre como você pode criar seu próprio drone usando um Arduino ou como hackear o protocolo de transmissão.

Este tutorial cobre o conceito mais básico de hackear um PCB para controlá-lo digitalmente. O objetivo deste tutorial é aprender os conceitos básicos que permitirão que você experimente por conta própria um drone e crie algo divertido.





Avisos


Você pode potencialmente matar seu drone ou o controlador e torná-lo inutilizável.

Este projeto não cobrirá como conduzir seu drone apenas na decolagem e aterrissagem.

Você não precisa necessariamente de um sensor MindWave / EEG, você pode usar qualquer entrada que desejar. Mas controlar um drone com sua mente é simplesmente incrível!





Tutorial em vídeo





Habilidades de que você precisa


Este tutorial presume que você tenha algum tipo de experiência com soldagem e dessoldagem.





Lista de peças

  • Drone + controlador
  • Estação de solda + acessórios (fio de cobre trançado, bomba dessoldadora, auxiliar, fios de núcleo sólido, estanho)
  • multímetro
  • sensor MindWave
  • Arduino MKR1000
  • Placa de ensaio
  • 4 condensadores 100uF
  • 4x resistores de 220Ω
  • 12x fios de ligação
  • 6 fios de grampo de crocodilo (opcional)

Você também precisa de 4 resistores com um valor de resistência ainda desconhecido.





Fase 1:Drone PCB


Você pode usar quase qualquer drone que desejar. A maioria dos controladores funciona com joysticks de dois eixos. Iremos ignorar esses joysticks.

Primeiro, abra a caixa do seu controlador. Este controlador usa duas baterias de 1,5 V que são aproximadamente 3,3 V. Este valor é o mesmo que a saída do Arduino MKR1000.

É possível usar outro Arduino de seu gosto, mas esteja ciente de que você pode quebrar a placa de circuito se der a ela mais tensão do que a placa de circuito impresso pode suportar. (Falo por experiência própria.)

Meça com um multímetro quais são as tensões média, alta e baixa dos joysticks uma vez ligados. Escreva-os para uso posterior.

Desolder os componentes do joystick do PCB.



Na realidade, esses componentes do joystick são apenas potenciômetros. Um potenciômetro é um resistor variável analógico. Você pode medir a resistência máxima com um multímetro. Conecte o multímetro ao + e - para ler a resistência.

Solde (neste caso resistores de 10Ω) 4 resistores nos orifícios dos + e - dos joysticks para completar o circuito.

Além disso, solde os fios de núcleo sólido nas portas + (B + nesta placa) e - (B- nesta placa) na PCB. E solde fios de núcleo sólido às portas de sinal dos joysticks.

Agora você preparou seu controlador para a próxima etapa.





Fase 2:digital para analógico


Quando você usa AnalogWrite com seu Arduino, a saída será um sinal PWM (Modulação por Largura de Pulso). A vitória terá seu próprio valor ALTO e BAIXO em uma determinada frequência.

Nosso PCB preparado não gosta de PWM, ele está esperando uma tensão constante.

Para criar um valor analógico, podemos usar uma variedade de conversores digital para analógico como um chip DAC ou um filtro RF Ladder.

Por isso quero manter este projeto o mais simples possível, vou aprender a usar um filtro passa-baixas, que nos dará a saída desejada.

Para criar um filtro passa-baixa, você precisa de um capacitor e um resistor.

Uma das características de um filtro passa-baixo é que a tensão analógica mudará gradualmente (leva algum tempo). Este circuito funciona melhor para mim porque me dá o resultado desejado e usa pouca quantidade de peças.





Fase 3:o circuito Arduino


A parte principal do nosso circuito é o filtro passa-baixo que criamos recentemente. Faça quatro em uma linha e teremos uma tensão analógica para todas as quatro entradas do controlador.



Conecte as saídas corretas às entradas corretas na placa de circuito impresso do controlador. Certifique-se de tê-lo entendido corretamente antes de fazer o upload do Arduino Sketch.

O layout padrão do drone é o seguinte:
  • Throttle => para cima / para baixo no lado esquerdo do controlador
  • Yaw => esquerda / direita no lado esquerdo do controlador
  • Pitch => cima / baixo no lado direito do controlador
  • Role => esquerda / direita do lado direito do controlador

Depois que tudo estiver conectado, você pode enviar seu esboço para o Arduino MKR1000. Você pode encontrar o esboço na parte inferior deste tutorial.

O Arduino substituirá as baterias e pode enviar sinais (como voltagens) para os joysticks ignorados. Neste momento você pode construir seus próprios programas e experimentos para controlar o drone com PWM.

Agora vou mostrar como usar o Processing e um sensor MindWave para decolar o drone.





Fase 4:controle da mente


Instale todos os drivers em seu computador. Este sensor MindWave vem com um CD.

Emparelhe o sensor MindWave com o seu computador com Bluetooth. Mantenha o botão pressionado por 3 segundos e o led azul piscará duas vezes, agora é detectável.

Uma vez conectado, você inicia o processamento.

Instale a biblioteca MindSet criada por Jorge C. S Cardoso para processamento em http://jorgecardoso.eu/processing/MindSetProcessing/#download

Descompacte a biblioteca em sua pasta de bibliotecas. Você pode encontrar a pasta de bibliotecas em sua pasta de processamento.

Certifique-se de que suas portas de comunicação estejam corretas na configuração, ou você acabará com um erro. Você pode encontrar as portas de comunicação em seu gerenciador de dispositivos.

Você também pode encontrar a porta de comunicação do Arduino em "Ferramentas" no IDE do Arduino em "Porta"

Você também pode encontrar a porta de comunicação do sensor MindWave nas Preferências do conector ThinkGear (você obtém este programa quando instala os drivers) em "Opções"
  receptor =novo Serial (este, "COM10", 115200); mindSet =novo MindSet (este, "COM5");  

O processamento se comunica com seu Arduino via serial. Você pode alterar o código de processamento ao seu gosto, leia os comentários no esboço para entender o que está acontecendo.

Execute o esboço do Processing e concentre-se no drone. Quando seu nível de concentração estiver acima de 40%, o drone irá decolar. Quanto mais você se concentrar, mais agressivo será o drone. Você pode pousar o drone deixando sua mente vagar e parar de se concentrar.





Conclusão


Espero que este tutorial tenha dado a você alguma idéia de como pode ser simples hackear um controlador de drone (ou qualquer PCB) e dar a ele outra entrada. Você pode descobrir com a experimentação como obter outras entradas para controlar e como fazer outros movimentos, além de decolar e pousar.

Estou animado para ver as coisas legais que vocês farão!

Código

  • Processamento mestre
  • Controle de drones
Processamento mestre Processamento
Conecta-se ao sensor MindWave via Bluetooth Serial e envia o valor de atenção como um número inteiro de 8 bits para o controlador
 / * * Drone mind control * * Este esboço envia valores Serial para um receptor receptor * * A entrada é gerada por meio de um Neurosky MindSet Mobile headset * * Criado em 21 de março de 2018 * Por Wesley Hartogs * Comunicação e Design Multimídia * Avans University of Applied Sciences * * * /// import Serial libaryimport processing.serial. *; // Define receiver SerialSerial receiver; // Importar MindSet libaryimport pt.citar.diablu.processing.mindset. *; MindSet mindSet; // Define os valores iniciaisint throttle =0; int yaw =127; int pitch =127; int roll =127; void setup () {size (150, 500); // Inicia a comunicação serial no receptor COM10 =novo Serial (this, "COM10", 115200); // Inicie a comunicação MindSet // O MindSet usa comunicação serial Bluetooth, // Verifique o potenciômetro COM no conector ThinkGear em seu Gerenciador de dispositivos mindSet =new MindSet (this, "COM5"); // Habilita anti-aliassing smooth (); // Definir as propriedades do traço strokeWeight (5); curso (255); strokeCap ​​(SQUARE); // Definir o preenchimento da cor da linha (255); } // setup () void draw () {// Comece com um fundo preto background (0); // Desenhe uma linha horizontal a 40% da parte inferior // Esta linha indica a linha de atenção mínima (40%) necessária (0, altura * 0,60, largura, altura * 0,60); // Desenhe uma linha do centro horizontal para cima // Esta linha dá uma indicação da sua atenção // A altura é mapeada ao contrário para obter uma porcentagem do topo // Exemplo:em 40% (0,4) atenção o valor da altura é ( 100 - 40) 60% (0,6) da linha superior (largura * .5, altura, largura * .5, altura * mapa (flutuante (nível de atenção) / 100, 0, 1, 1, 0)); // Empurre o nível de atenção para a variável de aceleração // 40 =atenção mínima necessária para fazer algo // 100 =atenção máxima // 30 =valor mínimo de 8 bits para Arduino // 255 =valor máximo de 8 bits para aceleração de Arduino =int (mapa (nível de atenção, 40, 100, 30, 255)); // Limita os valores a valores de 8 bits para evitar erros throttle =constrain (throttle, 0, 255); pitch =restrição (pitch, 0, 255); rolar =restringir (rolar, 0, 255); guinada =restrição (guinada, 0, 255); // Quando houver comunicação possível, envie os valores para o receptor Arduino if (receiver .available ()> 0) {println ("entionLevel:"+ atençãoLevel +" throttle:"+ throttle +" yaw:"+ yaw +" pitch:"+ pitch + "roll:" + roll); receptor .write ("throttle:" + throttle + "yaw:" + yaw + "pitch:" + pitch + "roll:" + roll); }} // draw () // Killswitch, pressione K para redefinir e fechar o programa evite keyPressed () {if (key =='k' || key ==ESC) {if (receiver .available ()> 0) { receptor .write ("throttle:" +0+ "yaw:" +127+ "pitch:" +127+ "roll:" +127); saída(); }}} // Variáveis ​​e funções do MindSetint signalStrenght =0; int atençãoLevel =0; público void atençãoEvent (int atençãoLevel_val) {atençãoLevel =atençãoLevel_val;} // Esta função é ativada quando a conexão com o MindSet não é ideal público void poorSignalEvent (int signalNoise) {// MindSet está se ajustando if (signalNoise ==200) {println ("Mindset não está tocando sua pele!"); } // Mapeie a intensidade do sinal para uma porcentagem signalStrenght =int (map ((200-signalNoise), 200, 0, 100, 0)); println ("Força do sinal:" + signalStrenght + "%");} 
Controle do drone Arduino
seu esboço recebe valores de entrada serial (do processamento) e envia esses valores para o controlador hackeado.
 / * * Controle do drone * * Este esboço recebe valores de entrada serial (do processamento) e envia esses valores para o controlador hackeado. * Use este programa apenas com o Arduino MKR1000 (ou outro Arduino baseado em saída de 3,3 volts) * * O circuito:* - 4 filtros passa-baixas com capacitores de 100 µF e resistores de 220Ω * - Controlador de drone hackeado * * Criado em 21 de março de 2018 * por Wesley Hartogs * Design de comunicação e multimídia * Avans University of Applied Sciences * * Use este esboço por sua própria conta e risco. * * /// Definir os valores iniciaisint throttle =0; int yaw =255/2; // pitch 3.3v / 2int =255/2; // 3,3v / 2int roll =255/2; // 3.3v / 2int throttlePin =2; // PWMint yawPin =3; // PWMint pitchPin =4; // PWMint rollPin =5; // PWMvoid setup () {// Começa a comunicação serial em 115200 baud Serial.begin (115200); // Definir pinModes pinMode (throttlePin, OUTPUT); pinMode (yawPin, OUTPUT); pinMode (pitchPin, OUTPUT); pinMode (rollPin, OUTPUT);} void loop () {// Quando houver uma conexão serial disponível, obtenha os valores if (Serial.available ()> 0) {throttle =Serial.parseInt (); // Armazena o primeiro valor interno do buffer Serial yaw =Serial.parseInt (); // Armazena o segundo valor interno do buffer Serial pitch =Serial.parseInt (); // Armazena o terceiro valor interno do buffer Serial roll =Serial.parseInt (); // Armazena o quarto valor interno do buffer serial} // Grava valores no controlador do drone // Use um filtro passa-baixo ou DAC (conversor digital para analógico) para converter PWM em uma tensão analógica analogWrite (throttlePin, throttle); analogWrite (yawPin, yaw); analogWrite (pitchPin, pitch); analogWrite (rollPin, roll);} 

Esquemas

Converta o sinal PWM em tensão analógica Circuito para conectar o Arduino MK1000 ao controlador hackeado

Processo de manufatura

  1. Detector de linguagem TinyML baseado em Edge Impulse e Arduino
  2. Jogo Arduino Gyroscope com MPU-6050
  3. Dados digitais Arduino
  4. DIY 37 LED Roulette Game
  5. ATtiny85 Mini Arcade:Snake
  6. Detector de alcance portátil
  7. Controle do umidificador Arduino
  8. Controle Remoto Gripper Bot
  9. Galvanoplastia com cobre
  10. NeoMatrix Arduino Pong