Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Drohne zur Gedankenkontrolle

Komponenten und Verbrauchsmaterialien

Arduino MKR1000
× 1
Micro Racing Drone
× 1
Kondensator 100 µF
× 4
Widerstand 221 Ohm
× 4
Jumper (generisch)
× 12
Breadboard (generisch)
× 1
Mindwave Neurosky
× 1

Notwendige Werkzeuge und Maschinen

Lötkolben (generisch)
Digilent-Schraubendreher

Apps und Onlinedienste

Verarbeitung 3
Arduino-IDE

Über dieses Projekt

Hintergrund

Ich finde Drohnen faszinierend, diese kleinen Flugmaschinen, die alles können. Als ich die Gelegenheit bekam, ein Projekt mit cooler Technologie durchzuführen, beschloss ich, den Traum eines Jungen wahr werden zu lassen, eine Drohne mit deinem Verstand zu steuern.

Bei der Recherche, die ich für dieses Projekt durchgeführt habe, habe ich keine Tutorials gefunden, die sich mit dem einfachen Hacken eines Drohnencontrollers befassen. In den meisten verfügbaren Tutorials geht es darum, wie Sie mit einem Arduino Ihre eigene Drohne erstellen oder das Übertragungsprotokoll hacken.

Dieses Tutorial behandelt das grundlegendste Konzept zum Hacken einer Leiterplatte, um sie digital zu steuern. Das Ziel dieses Tutorials ist es, Ihnen die grundlegenden Konzepte zu vermitteln, die es Ihnen ermöglichen, selbst mit einer Drohne zu experimentieren und etwas Lustiges zu schaffen.

Hinweise

Sie können Ihre Drohne oder den Controller möglicherweise töten und unbrauchbar machen.

Dieses Projekt behandelt nicht, wie Sie Ihre Drohne nur beim Abheben und Landen steuern.

Sie benötigen nicht unbedingt einen MindWave / EEG-Sensor, Sie können jeden beliebigen Eingang verwenden. Aber eine Drohne mit deinem Verstand zu steuern, ist pure Großartigkeit!

Video-Tutorial

Fähigkeiten, die du brauchst

In diesem Tutorial wird davon ausgegangen, dass Sie Erfahrung mit Löten und Entlöten haben.

Stückliste

  • Drohne + Controller
  • Lötstation + Zubehör (Kupfergeflecht, Entlötpumpe, helfende Hand, Massivdrähte, Zinn)
  • Multimeter
  • MindWave-Sensor
  • Arduino MKR1000
  • Breadboard
  • 4x 100uF Kondensatoren
  • 4x 220Ω Widerstände
  • 12x Jumperdrähte
  • 6 Krokodilklemmendrähte (optional)

Außerdem werden 4 Widerstände mit noch unbekanntem Widerstandswert benötigt.

Phase 1:Drohnen-PCB

Sie können fast jede gewünschte Drohne verwenden. Die meisten Controller arbeiten mit zweiachsigen Joysticks. Diese Joysticks werden wir umgehen.

Öffnen Sie zunächst das Gehäuse Ihres Controllers. Dieser Controller verwendet zwei 1,5-V-Batterien, die ungefähr 3,3 V haben. Dieser Wert ist derselbe wie der Ausgang des Arduino MKR1000.

Es ist möglich, ein anderes Arduino Ihrer Wahl zu verwenden, aber seien Sie sich bewusst, dass Sie die Platine brechen können, wenn Sie ihr mehr Spannung geben, als die Platine verarbeiten kann. ( Ich spreche aus Erfahrung. )

Messen Sie mit einem Multimeter die mittlere, hohe und niedrige Spannung der Joysticks, sobald sie mit Strom versorgt werden. Schreiben Sie sie zur späteren Verwendung auf.

Entlöten Sie die Joystick-Komponenten von der Platine.

In Wirklichkeit sind diese Joystick-Komponenten nur Potentiometer. Ein Potentiometer ist ein analoger variabler Widerstand. Den maximalen Widerstand kannst du mit einem Multimeter messen. Schließen Sie das Multimeter an + und - an, um den Widerstand abzulesen.

Löten Sie (in diesem Fall 10Ω-Widerstände) 4 Widerstände auf die Löcher der + und - der Joysticks, um die Schaltung zu vervollständigen.

Löten Sie auch Massivkerndrähte an die Anschlüsse + (B+ auf dieser Platine) und - (B- auf dieser Platine) auf der Platine. Und löten Sie Vollkerndrähte an die Signalanschlüsse der Joysticks.

Jetzt hast du deinen Controller für den nächsten Schritt vorbereitet.

Phase 2:Digital zu Analog

Wenn Sie AnalogWrite mit Ihrem Arduino verwenden, ist die Ausgabe ein PWM-Signal (Pulsweitenmodulation). Der Gewinn wird seinen eigenen Wert HIGH und LOW in einer bestimmten Frequenz ändern.

Unser vorbereitetes PCB mag kein PWM, es erwartet eine konstante Spannung.

Um einen analogen Wert zu erzeugen, können wir eine Vielzahl von Digital-Analog-Wandlern wie einen DAC-Chip oder einen HF-Leiterfilter verwenden.

Aus diesem Grund möchte ich dieses Projekt so einfach wie möglich halten. Ich werde Ihnen lernen, wie man einen Tiefpassfilter verwendet, der uns die gewünschte Ausgabe liefert.

Um einen Tiefpassfilter zu erstellen, benötigen Sie einen Kondensator und einen Widerstand.

Eine der Eigenschaften eines Tiefpassfilters besteht darin, dass sich die Analogspannung allmählich ändert (es dauert einige Zeit). Diese Schaltung funktioniert für mich am besten, weil sie mir das gewünschte Ergebnis liefert und nur wenige Teile verwendet.

Phase 3:Die Arduino-Schaltung

Der Hauptteil unserer Schaltung ist der Tiefpassfilter, den wir kürzlich entwickelt haben. Machen Sie vier davon hintereinander und wir haben eine analoge Spannung für alle vier Controller-Eingänge.

Verbinden Sie die richtigen Ausgänge mit den richtigen Eingängen auf der Controller-Platine. Stellen Sie sicher, dass Sie es richtig verstanden haben, bevor Sie die Arduino-Skizze hochladen.

Das Standard-Drohnen-Layout sieht wie folgt aus:

  • Gas => oben / unten auf der linken Seite des Controllers
  • Yaw => links / rechts auf der linken Seite des Controllers
  • Pitch => oben / unten auf der rechten Seite des Controllers
  • Roll => links / rechts auf der rechten Seite des Controllers

Sobald alles verbunden ist, können Sie Ihre Skizze auf Ihren Arduino MKR1000 hochladen. Sie finden die Skizze am Ende dieses Tutorials.

Der Arduino ersetzt die Batterien und kann Signale (als Spannungen) an die umgangenen Joysticks senden. In diesem Moment können Sie Ihre eigenen Programme und Experimente erstellen, um die Drohne mit PWM zu steuern.

Ich zeige Ihnen jetzt, wie Sie Processing und einen MindWave-Sensor verwenden, um die Drohne abzuheben.

Phase 4:Gedankenkontrolle

Installieren Sie alle Treiber auf Ihrem Computer. Dieser MindWave-Sensor wird mit einer CD geliefert.

Koppeln Sie den MindWave-Sensor über Bluetooth mit Ihrem Computer. Halten Sie die Taste 3 Sekunden lang gedrückt und die blaue LED blinkt zweimal, sie ist jetzt erkennbar.

Sobald die Verbindung hergestellt ist, beginnen Sie mit der Verarbeitung.

Installieren Sie die von Jorge C. S. Cardoso erstellte MindSet-Bibliothek zur Verarbeitung von http://jorgecardoso.eu/processing/MindSetProcessing/#download

Entpacken Sie die Bibliothek in Ihrem Bibliotheksordner. Sie finden den Bibliotheken-Ordner in Ihrem Verarbeitungsordner.

Stellen Sie sicher, dass Ihre Com-Ports im Setup korrekt sind, oder Sie erhalten einen Fehler. Die Com-Ports findest du in deinem Gerätemanager.

Den Com-Port des Arduino finden Sie auch unter "Tools" in der Arduino IDE unter "Port"

Den Com-Port des MindWave-Sensors finden Sie auch in den ThinkGear Connector Preferences (dieses Programm erhalten Sie bei der Installation der Treiber) unter "Options"

Empfänger =neue Seriennummer (dies, "COM10", 115200); mindSet =neues MindSet (dies, "COM5"); 

Processing kommuniziert mit Ihrem Arduino über Serial. Sie können den Verarbeitungscode nach Ihren Wünschen ändern. Lesen Sie die Kommentare in der Skizze, um zu verstehen, was vor sich geht.

Führen Sie Ihre Processing-Skizze aus und konzentrieren Sie sich auf Ihre Drohne. Wenn Ihre Konzentration über 40% steigt, hebt die Drohne ab. Je stärker Sie sich konzentrieren, desto aggressiver wird die Drohne. Sie können die Drohne landen, indem Sie Ihre Gedanken abschweifen lassen und aufhören, sich zu konzentrieren.

Fazit

Ich hoffe, dieses Tutorial hat Ihnen einen Einblick gegeben, wie einfach es sein kann, einen Drohnen-Controller (oder ein beliebiges PCB) zu hacken und ihm einen weiteren Input zu geben. Sie können durch Experimentieren herausfinden, wie Sie andere Eingaben zur Steuerung erhalten und wie Sie neben Abheben und Landen andere Bewegungen ausführen.

Ich bin gespannt, was ihr für coole Sachen machen werdet!

Code

  • Verarbeitungsmaster
  • Drohnensteuerung
VerarbeitungsmeisterVerarbeitung
Verbindet sich über Bluetooth Serial mit dem MindWave-Sensor und sendet den Aufmerksamkeitswert als 8-Bit-Integer an den Controller Neurosky MindSet Mobile Headset * * Erstellt am 21. März 2018 * Von Wesley Hartogs * Kommunikations- und Multimediadesign * Avans University of Applied Sciences * * */// import Serial libaryimport processing.serial.*;// Definiere Receiver SerialSerial Receiver;// Import MindSet libaryimport pt.citar.diablu.processing.mindset.*;MindSet mindSet;// Setze Anfangswerteint Throttle =0;int yaw =127;int Pitch =127;int Roll =127;void setup() { size(150, 500); // Serielle Kommunikation am COM10-Empfänger einleiten =new Serial (dies, "COM10", 115200); // MindSet-Kommunikation initiieren // Das MindSet verwendet serielle Bluetooth-Kommunikation, // Überprüfen Sie den COM-Pot im ThinkGear Connector in Ihrem Geräte-Manager mindSet =new MindSet(this, "COM5"); // Anti-Aliasing aktivieren smooth(); // Stricheigenschaften setzen StrokeWeight(5); Schlaganfall (255); StrokeCap ​​(QUADRAT); // Linienfarbe setzen (255); } // setup ()void draw () { // Beginnen Sie mit einem schwarzen Hintergrund background (0); // Horizontale Linie bis 40% von unten zeichnen // Diese Linie zeigt die minimale (40%) Aufmerksamkeitslinie an (0, Höhe*0.60, Breite, Höhe*.60); // Zeichnen Sie eine Linie von der horizontalen Mitte nach oben // Diese Linie zeigt Ihre Aufmerksamkeit an // Die Höhe wird umgekehrt abgebildet, um einen Prozentsatz von oben zu erhalten // Beispiel:bei 40% (0,4) Aufmerksamkeit ist der Höhenwert ( 100 - 40) 60% (0,6) von der obersten Zeile( width*.5, height, width*.5, height*map( float( AttentionLevel ) / 100, 0, 1, 1, 0 ) ); // Aufmerksamkeitsstufe auf die Drosselvariable schieben // 40 =minimale Aufmerksamkeit, die erforderlich ist, um etwas zu tun // 100 =maximale Aufmerksamkeit // 30 =8-Bit-Mindestwert für Arduino // 255 =8-Bit-Maximalwert für Arduino-Drossel =int(map(Aufmerksamkeitslevel, 40, 100, 30, 255)); // Werte auf 8-Bit-Werte beschränken, um Fehler zu vermeiden Drossel =Beschränkung (Drossel, 0, 255); Tonhöhe =Beschränkung (Tonhöhe, 0, 255); roll =einschränken (roll, 0, 255); gieren =beschränken ( gieren, 0, 255); // Wenn eine Kommunikation möglich ist, senden Sie die Werte an den Arduino-Empfänger if (Receiver .available ()> 0) { println( "attentionLevel:"+attentionLevel+" Throttle:"+throttle+" yaw:"+yaw+" pitch:"+ Tonhöhe+" Roll:"+Roll ); Empfänger .write( "throttle:"+throttle+" yaw:"+yaw+" Pitch:"+pitch+" roll:"+roll ); } } // draw()// Killswitch, drücke K, um das Programm zurückzusetzen und zu schließen keyPressed() { if (key =='k' || key ==ESC) { if (Receiver .available()> 0) { Empfänger .write("Gas:"+0+" Gieren:"+127+" Pitch:"+127+" Roll:"+127); Ausfahrt(); } }}// MindSet-Variablen und -Funktionenint signalStrenght =0;int AttentionLevel =0;public void AttentionEvent( int AttentionLevel_val ) { AttentionLevel =AttentionLevel_val;}// Diese Funktion wird aktiviert, wenn die Verbindung mit dem MindSet nicht optimal istpublic void poorSignalEvent( int signalNoise ) { // MindSet passt sich an if ( signalNoise ==200 ) { println( "Mindset berührt deine Haut nicht!" ); } // Signalstärke einem Prozentsatz zuordnen signalStrenght =int( map( ( 200-signalNoise ), 200, 0, 100, 0 ) ); println( "Signalstärke:" + signalStrenght + "%" );}
DrohnensteuerungArduino
Dieser Sketch empfängt serielle Eingabewerte (von der Verarbeitung) und sendet diese Werte an den gehackten Controller.
/* * Drohnensteuerung * * Dieser Sketch empfängt serielle Eingabewerte (von der Verarbeitung) und sendet diese Werte an den gehackten Controller. * Verwenden Sie dieses Programm nur mit dem Arduino MKR1000 (oder einem anderen Arduino mit 3,3-Volt-Ausgang) * * Die Schaltung:* - 4 Tiefpassfilter mit 100-µF-Kondensatoren und 220Ω-Widerständen * - Gehackter Drohnen-Controller * * Erstellt am 21. März 2018 * Von Wesley Hartogs * Kommunikations- und Multimediadesign * Fachhochschule Avans * * Die Verwendung dieser Skizze erfolgt auf eigene Gefahr. * */// Anfangswerte setzenint Drossel =0;int Gier =255/2; // 3.3v / 2int Pitch =255/2; // 3.3v / 2int Rolle =255/2; // 3.3v / 2int DrosselPin =2; // PWMint yawPin =3; // PWMint PitchPin =4; // PWMint rollPin =5; // PWMvoid setup () { // Serielle Kommunikation mit 115200 Baud beginnen Serial.begin ( 115200 ); // setze pinModes pinMode (drosselPin, OUTPUT); pinMode ( yawPin, AUSGANG ); pinMode (PitchPin, AUSGANG); pinMode (rollPin, OUTPUT);}void loop () {// Wenn eine serielle Verbindung verfügbar ist, die Werte abrufen if ( Serial.available ()> 0 ) {drossel =Serial.parseInt (); // Speichern Sie den ersten ganzzahligen Wert aus dem seriellen Puffer yaw =Serial.parseInt (); // Speichern Sie den zweiten Ganzzahlwert aus dem seriellen Pufferabstand =Serial.parseInt (); // Speichern Sie den dritten ganzzahligen Wert aus der seriellen Pufferrolle =Serial.parseInt (); // Vierten Ganzzahlwert aus dem seriellen Puffer speichern} // Werte in den Drohnen-Controller schreiben // Verwenden Sie einen Tiefpassfilter oder DAC (Digital-Analog-Wandler), um PWM in eine analoge Spannung umzuwandeln analogWrite (drosselPin, Drossel); analogWrite( yawPin, yaw ); analogWrite (PitchPin, Pitch); analogWrite( rollPin, roll );}

Schaltpläne

PWM-Signal in analoge Spannung umwandeln Schaltung zum Verbinden des Arduino MK1000 mit dem gehackten Controller

Herstellungsprozess

  1. TinyML-Spracherkennung basierend auf Edge Impulse &Arduino
  2. Arduino-Gyroskop-Spiel mit MPU-6050
  3. Arduino Digital Dice
  4. DIY 37 LED-Roulette-Spiel
  5. ATtiny85 Mini Arcade:Schlange
  6. Tragbarer Reichweitendetektor
  7. Arduino-Befeuchtersteuerung
  8. Greifer-Bot mit Fernbedienung
  9. Galvanisieren mit Kupfer
  10. NeoMatrix Arduino Pong