Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Дрон для управления разумом

Компоненты и расходные материалы

Arduino MKR1000
× 1
Дрон для гонок Micro Racing
× 1
Конденсатор 100 мкФ
× 4
Резистор 221 Ом
× 4
Перемычки (общие)
× 12
Макет (общий)
× 1
Mindwave Neurosky
× 1

Необходимые инструменты и машины

Паяльник (общий)
Цифровая отвертка

Приложения и онлайн-сервисы

Обработка 3
IDE Arduino

Об этом проекте

Фон

Мне нравятся дроны, эти маленькие летательные аппараты, которые могут делать все что угодно. Когда у меня появилась возможность сделать проект с использованием крутых технологий, я решил осуществить мечту мальчика, управляя дроном своим умом.

В исследовании, которое я провел для этого проекта, я не нашел никаких руководств, в которых рассказывалось бы, как легко взломать контроллер дрона. Большинство доступных руководств посвящены тому, как создать собственный дрон с помощью Arduino или как взломать протокол передачи.

В этом руководстве описывается самая базовая концепция взлома печатной платы для управления ею в цифровом виде. Цель этого руководства - познакомить вас с основными концепциями, которые позволят вам поэкспериментировать с дроном и создать что-нибудь забавное.

Уведомления

Вы потенциально можете убить свой дрон или контроллер и сделать его непригодным для использования.

В этом проекте не будет рассказано, как управлять вашим дроном только при взлете и посадке.

Вам не обязательно нужен датчик MindWave / EEG, вы можете использовать любой вход, который хотите. Но управлять дроном мысленно - это круто!

Видеоурок

Необходимые навыки

В этом руководстве предполагается, что у вас есть некоторый опыт пайки и демонтажа.

Список запчастей

  • Дрон + контроллер
  • Паяльная станция + аксессуары (медная оплетка, насос для удаления припоя, рука помощи, сплошные провода, олово).
  • Мультиметр
  • Датчик MindWave
  • Arduino MKR1000
  • Макет
  • 4 конденсатора по 100 мкФ.
  • 4 резистора 220 Ом.
  • 12 перемычек
  • 6 проводов с зажимом типа "крокодил" (необязательно)

Также вам понадобятся 4 резистора с неизвестным значением сопротивления.

Этап 1. Плата для дрона

Вы можете использовать практически любой дрон, какой захотите. Большинство контроллеров работают с двухкоординатными джойстиками. Эти джойстики мы собираемся обойти.

Сначала откройте корпус вашего контроллера. В этом контроллере используются две батареи 1,5 В, которые приблизительно равны 3,3 В. Это значение совпадает с выводом Arduino MKR1000.

Можно использовать другой Arduino по своему вкусу, но имейте в виду, что вы можете сломать печатную плату, если подадите на нее большее напряжение, с которым может справиться печатная плата. (Я говорю по собственному опыту.)

Определите с помощью мультиметра, какое среднее, высокое и низкое напряжение на джойстиках после включения. Запишите их для дальнейшего использования.

Извлеките компоненты джойстика из печатной платы.

На самом деле эти компоненты джойстика - всего лишь потенциометры. Потенциометр - это аналоговый переменный резистор. Вы можете измерить максимальное сопротивление с помощью мультиметра. Подключите мультиметр к + и -, чтобы определить сопротивление.

Припаяйте (в данном случае резисторы 10 Ом) 4 резистора к отверстиям + и - джойстиков, чтобы замкнуть цепь.

Кроме того, припаяйте одножильные провода к портам + (B + на этой плате) и - (B- на этой плате) на печатной плате. И припаяйте одножильные провода к сигнальным портам джойстиков.

Теперь вы подготовили свой контроллер к следующему шагу.

Этап 2. Цифра в аналоговый

Когда вы используете AnalogWrite с вашим Arduino, на выходе будет сигнал PWM (широтно-импульсная модуляция). Выигрыш будет превращать свое собственное значение в ВЫСОКОЕ и НИЗКОЕ с определенной частотой.

Наша подготовленная печатная плата не любит ШИМ, она ожидает стабильного напряжения.

Чтобы создать аналоговое значение, мы можем использовать различные цифро-аналоговые преобразователи, такие как микросхема ЦАП или лестничный фильтр RF.

По этой причине я хочу, чтобы этот проект был настолько простым, насколько это возможно. Я научу вас использовать фильтр нижних частот, который даст нам желаемый результат.

Чтобы создать фильтр нижних частот, вам понадобится конденсатор и резистор.

Одной из характеристик фильтра нижних частот является то, что аналоговое напряжение будет постепенно изменяться (это занимает некоторое время). Эта схема подходит мне лучше всего, потому что она дает желаемый результат и использует небольшое количество деталей.

Фаза 3:Схема Arduino

Основная часть нашей схемы - это фильтр нижних частот, который мы создали недавно. Сделайте четыре из них в ряд, и у нас будет аналоговое напряжение для всех четырех входов контроллера.

Подключите правильные выходы к правильным входам на плате контроллера. Перед загрузкой скетча Arduino убедитесь, что все правильно поняли.

Стандартная компоновка дрона следующая:

  • Throttle => вверх / вниз на левой стороне контроллера
  • Yaw => влево / вправо с левой стороны контроллера.
  • Pitch => вверх / вниз с правой стороны контроллера.
  • Roll => влево / вправо с правой стороны контроллера

Как только все будет подключено, вы можете загрузить свой скетч в Arduino MKR1000. Вы можете найти эскиз внизу этого урока.

Arduino заменит батареи и может посылать сигналы (в виде напряжения) на обойденные джойстики. На данный момент вы можете создавать свои собственные программы и эксперименты по управлению дроном с помощью ШИМ.

Теперь я покажу вам, как использовать Обработку и датчик MindWave для запуска дрона.

Этап 4:контроль над разумом

Установите все драйверы на свой компьютер. Этот датчик MindWave поставляется с компакт-диском.

Подключите датчик MindWave к компьютеру с помощью Bluetooth. Удерживайте кнопку вверх в течение 3 секунд, синий светодиод мигнет дважды, теперь его можно обнаружить.

После подключения вы начинаете обработку.

Установите библиотеку MindSet, созданную Хорхе С. С. Кардосо, для обработки с http://jorgecardoso.eu/processing/MindSetProcessing/#download

Разархивируйте библиотеку в папку с библиотеками. Вы можете найти папку с библиотеками в папке обработки.

Убедитесь, что ваши com-порты указаны правильно, иначе вы получите ошибку. Вы можете найти com-порты в диспетчере устройств.

Вы также можете найти com-порт Arduino в разделе «Инструменты» в среде разработки Arduino в разделе «Порт»

Вы также можете найти com-порт датчика MindWave в настройках ThinkGear Connector (вы получите эту программу при установке драйверов) в разделе «Параметры»

  Receiver =new Serial (this, "COM10", 115200); mindSet =new MindSet (это, «COM5»);  

Обработка связывается с вашим Arduino через последовательный порт. Вы можете изменить код обработки по своему вкусу, прочтите комментарии в скетче, чтобы понять, что происходит.

Запустите свой скетч обработки и сконцентрируйтесь на своем дроне. Когда ваш уровень концентрации поднимется выше 40%, дрон взлетит. Чем сложнее вы сконцентрируетесь, тем агрессивнее будет дрон. Вы можете посадить дрон, позволив своему разуму отвлечься и перестать концентрироваться.

Заключение

Я надеюсь, что этот урок дал вам некоторое представление о том, насколько просто можно взломать контроллер дрона (или любую печатную плату) и дать ему еще один ввод. Экспериментируя, вы можете выяснить, как управлять другими входами и как выполнять другие движения, помимо отталкивания и приземления.

Я очень рад видеть, какие крутые штуки вы сделаете!

Код

  • Мастер обработки
  • Управление дроном
Мастер обработки Обработка
Подключается к датчику MindWave через последовательный интерфейс Bluetooth и отправляет значение внимания в виде 8-битного целого числа на контроллер
 / * * Drone mind control * * Этот скетч отправляет серийные значения на приемник-приемник * * Входные данные генерируются через Мобильная гарнитура Neurosky MindSet * * Создано 21 марта 2018 г. * Автор:Уэсли Хартогс * Коммуникационный и мультимедийный дизайн * Университет прикладных наук Аванса * * * /// import Serial libaryimport processing.serial. *; // Определить приемник SerialSerial Receiver; // Импорт MindSet libaryimport pt.citar.diablu.processing.mindset. *; MindSet mindSet; // Устанавливаем начальные значения int throttle =0; int yaw =127; int pitch =127; int roll =127; void setup () {size (150, 500); // Инициируем последовательную связь на приемнике COM10 =новый последовательный порт (this, "COM10", 115200); // Инициируйте связь MindSet // MindSet использует последовательную связь Bluetooth, // Проверьте COM-порт в ThinkGear Connector в диспетчере устройств mindSet =new MindSet (this, «COM5»); // Включить сглаживание smooth (); // Устанавливаем свойства обводки strokeWeight (5); ход (255); strokeCap ​​(КВАДРАТ); // Устанавливаем цвет линии fill (255); } // setup () void draw () {// Начинаем с черным фоном background (0); // Рисуем горизонтальную линию до 40% снизу // Эта линия указывает минимальную (40%) линию, необходимую для внимания (0, высота * 0,60, ширина, высота * .60); // Нарисуйте линию от центра по горизонтали вверх // Эта линия указывает на ваше внимание // Высота отображается в обратном порядке, чтобы получить процент от вершины // Пример:при 40% (0,4) внимании значение высоты равно ( 100-40) 60% (0,6) от верхней линии (ширина * .5, высота, ширина * .5, высота * map (float (ВниманиеLevel) / 100, 0, 1, 1, 0)); // Перемещение уровня внимания на переменную газа // 40 =минимальное внимание, необходимое для выполнения каких-либо действий // 100 =максимальное внимание // 30 =8-битное минимальное значение для Arduino // 255 =8-битное максимальное значение для Arduino throttle =int (карта (уровень внимания, 40, 100, 30, 255)); // Ограничьте значения 8-битными значениями, чтобы предотвратить ошибки throttle =constrain (throttle, 0, 255); высота тона =ограничение (высота звука, 0, 255); roll =ограничение (roll, 0, 255); рыскание =ограничение (рыскание, 0, 255); // Когда возможна связь, отправляем значения в приемник Arduino if (Receiver .available ()> 0) {println ("ВниманиеLevel:" + ВниманиеLevel + "throttle:" + throttle + "yaw:" + yaw + "pitch:" + шаг + «крен:» + крен); приемник .write ("throttle:" + throttle + "yaw:" + yaw + "pitch:" + pitch + "roll:" + roll); }} // draw () // Killswitch, нажмите K для сброса и закрытия программы .void keyPressed () {if (key =='k' || key ==ESC) {if (Receiver .available ()> 0) { приемник .write ("throttle:" +0+ "yaw:" +127+ "pitch:" +127+ "roll:" +127); выход(); }}} // Переменные и функции MindSet int signalStrenght =0; int ВниманиеLevel =0; public void ВниманиеEvent (int ВниманиеLevel_val) {ВниманиеLevel =ВниманиеLevel_val;} // Эта функция активируется, когда соединение с MindSet не оптимальноpublic void badSignalEvent (int signalNoise) {// MindSet настраивается if (signalNoise ==200) {println («MindSet не касается вашей кожи!»); } // Сопоставляем мощность сигнала с процентом signalStrenght =int (map ((200-signalNoise), 200, 0, 100, 0)); println ("Уровень сигнала:" + signalStrenght + "%");} 
Управление дроном Arduino
его скетч получает последовательные входные значения (от обработки) и отправляет эти значения на взломанный контроллер.
 / * * Drone control * * Этот скетч получает последовательные входные значения (от обработки) и отправляет эти значения на взломанный контроллер. * Используйте эту программу только с Arduino MKR1000 (или с другим выходом 3,3 В на базе Arduino) * * Схема:* - 4 фильтра нижних частот с конденсаторами 100 мкФ и резисторами 220 Ом * - Взломанный контроллер дрона * * Создано 21 марта 2018 г. * Автор:Wesley Хартогс * Коммуникация и мультимедийный дизайн * Университет прикладных наук Аванс * * Используйте этот эскиз на свой страх и риск. * * /// Устанавливаем начальные значения int throttle =0; int yaw =255/2; // 3.3v / 2int pitch =255/2; // 3.3v / 2int roll =255/2; // 3.3v / 2int throttlePin =2; // PWMint yawPin =3; // PWMint pitchPin =4; // PWMint rollPin =5; // PWMvoid setup () {// Начинаем последовательную связь со скоростью 115200 бод Serial.begin (115200); // Устанавливаем pinModes pinMode (throttlePin, OUTPUT); pinMode (yawPin, ВЫХОД); pinMode (pitchPin, ВЫХОД); 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, рыскание); analogWrite (pitchPin, pitch); analogWrite (rollPin, roll);} 

Схема

Преобразование сигнала ШИМ в аналоговое напряжение Схема для подключения Arduino MK1000 к взломанному контроллеру

Производственный процесс

  1. Детектор языка TinyML на основе Edge Impulse и Arduino
  2. Игра с гироскопом Arduino с MPU-6050
  3. Цифровые игральные кости Arduino
  4. Рулетка DIY 37 LED
  5. Мини-аркада ATtiny85:Змейка
  6. Переносимый детектор дальности
  7. Управление увлажнителем Arduino
  8. Бот для захвата удаленного управления
  9. Гальваника медью
  10. NeoMatrix Arduino Pong