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

Используйте силу ... Или свои мозговые волны?

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

Arduino UNO
Используется для робота.
× 1
Arduino Mega 2560
Это мозг проекта ...
× 1
Ардуино Леонардо
Контроллер мыши
× 1
Фотон с частицами
Регистратор данных веб-сервера
× 1
Кошачьи уши Necomimi Brainwave
Датчик ЭЭГ
× 1
Драйверы двигателя SparkFun Dual H-Bridge L298
Купите это, если не хотите создавать собственный драйвер двигателя.
× 1
Модуль реле
Купите этот модуль, если не хотите паять схемы.
× 1
Модуль Bluetooth HC-05
× 1
LED (общий)
× 3
Резистор 330 Ом
× 3
NPN-транзистор общего назначения
× 3
Провода перемычки "папа / мама"
× 1
Перемычки (общие)
× 1
половинный размер макетной платы без пайки
× 1

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

Паяльник (общий)

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

Визуализатор мозга
Это нужно только для экспериментов.

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

В детстве я всегда хотел иметь особые способности, такие как перемещение объектов с помощью мыслей или полет. Я пытался перемещать объекты «силой своего разума», конечно, безуспешно. Ну да, я был и я Я большой поклонник «Звездных войн», но мне также нравится электроника и программирование, так почему бы не объединить эти две вещи для создания невероятного проекта?

Вы можете найти все части, коды и библиотеки со ссылками в разделе «Оборудование и программное обеспечение».

основная концепция заключается в том, что с помощью различных мозговых волн пользователь сможет управлять роботом, курсором на своем ПК или включать / выключать свет в своем доме, в то время как микроконтроллер (Particle Photon) создает онлайн-анализ мозговых волн пользователя. Это идеальный метод для выявления болезней, стресса и сонливости. Это также можно использовать, чтобы помочь людям жить лучше, научиться контролировать свои эмоции и научиться быть всегда счастливыми. Человеческий мозг нуждается в балансе, чтобы быть здоровым, мы должны спать, думать, двигаться ... Используя Particle Photon и веб-сервер, созданный основателями Particle, мы можем помочь людям найти их естественный мозговой баланс. К этому проекту меня привела детская мечта, и я очень рад, что у меня получилось.

Но если мы ненадолго отложим «Звездные войны и Силу», это устройство предназначено не только для ленивых людей или фанатов, оно создано для того, чтобы вернуть способность людям, которые каждый день борются со своей инвалидностью. Созданный мной робот работает так же, как кресло-коляска, система домашней автоматизации поможет пользователю управлять освещением или телевизором, даже если он / она не может двигаться. Режим контроллера ПК может пригодиться даже тем, кто совершенно здоров. Думаю, все мы хотим играть в компьютерные игры или просто бродить по Интернету, используя только мысли.

Посмотрите это короткое вводное видео об истории проекта:

Хотите создать свой собственный? Здесь я объясню все, что вам нужно знать для этого проекта. Я делюсь кодами, схемами и этой подробной инструкцией, так что прогрейте свой паяльник…

Наука, лежащая в основе проекта

Электроэнцефалография (ЭЭГ) - это метод электрофизиологического мониторинга для регистрации электрической активности мозга. Как правило, это неинвазивный метод, при котором электроды располагаются вдоль кожи головы, хотя иногда в определенных случаях используются инвазивные электроды. ЭЭГ измеряет колебания напряжения в результате ионного тока в нейронах головного мозга. Диагностические приложения обычно фокусируются на спектральном содержании ЭЭГ, то есть на типе нервных колебаний (обычно называемых «мозговыми волнами»), которые можно наблюдать в сигналах ЭЭГ. (спасибо, Википедия) Но мы собираемся использовать два очень точных значения

  • Альфа - это частотный диапазон от 7 Гц до 14 Гц. Он возникает при закрытии глаз и при расслаблении и ослабевает при открытии глаз или умственном напряжении.
  • Бета - это диапазон частот от 15 Гц до примерно 30 Гц. Низкоамплитудный бета-коэффициент с множеством различных частот часто ассоциируется с активным, занятым или тревожным мышлением и активной концентрацией.

Как это работает?

Я использовал четыре микроконтроллера, чтобы воплотить этот проект в жизнь:Arduino Mega, ArduinoLeonardo, UNO и Particle Photon. Mega - это мозг проекта, который получает сигналы от гарнитуры, анализирует их и пересылает команды на другие устройства. Передает все данные в Photon, который создает веб-сервер. Leonardo управляет мышью на ПК, а Uno используется для приема ИК (инфракрасных сигналов) и управления роботом. Как я уже сказал, устройство может управлять тремя разными вещами (или даже больше, если вы хотите программировать что-нибудь еще). Теперь я назову эти три разных канала. Устройство переключается между этими каналами, если закрыть глаза:

  • Закройте глаза на 1-2 секунды:переключение на режим домашней автоматизации
  • Закройте глаза на 2–4 секунды:переключитесь в режим контроллера робота
  • Закройте глаза на 1–6 секунд:переключение в режим контроллера мыши

Я использовал реле, чтобы сделать домашнюю автоматику, к которой вы можете подключить все, что угодно:телевизор, лампочки, розетки, все, что угодно

Беспроводная гарнитура:

Мне нравятся игрушки для взлома, поэтому я купил игрушку Necomimi, чувствительную к мозговым волнам, которая может двигать ушами в зависимости от ваших мозговых волн (внимание, медитация). Это самая бесполезная игрушка, которую я когда-либо видел, но внутри есть небольшой чип, который считывает мозговые волны, фильтрует шум и дает очень хороший сигнал. Работает с интерфейсом UART (последовательный), поэтому после некоторого взлома мы можем использовать Arduinos для чтения мозговых волн. Роль этой гарнитуры заключается в беспроводной передаче мозговых волн на центральный сервер. Никому не нужны кабели на голове, поэтому я создал эту удобную и удобную гарнитуру.

Спуститесь вниз, чтобы узнать, как разобрать и сделать из нее беспроводную Bluetooth-гарнитуру .

Как им пользоваться?

У нас есть два измеримых значения eSense (значения NeuroSky):медитация от 0 до 100 и внимание от 0 до 100. Чем больше вы сосредоточены, тем выше становится значение внимания. Чем больше вы расслаблены, тем выше становится уровень медитации.

Система работает с мыслями, больше ничего не нужно, только научитесь сосредотачиваться или расслабляться. После недели экспериментов я смог очень точно контролировать свое значение «внимания». Я могу сознательно установить уровень своего внимания примерно на 15 или 39, 65 и 90. Вы должны узнать, как контролировать свои ценности, мы все разные. Это очень хорошо сработало с эмоциями. Размышления о любви, дружбе, гневе или страхе дают очень хороший контраст между ценностями.

Чтобы включить систему, подключите micro USB кабель в Arduino Leonardo. Это также будет управлять вашей мышью (если хотите) и обеспечивает 5 вольт и 500 мА для системы.

Управление системой домашней автоматизации

Если вы перешли в режим домашней автоматизации, увеличьте свой уровень внимания выше 70, чтобы включить первое реле , увеличьте уровень медитации выше 70, чтобы включить второе реле , и увеличьте оба значения выше 70, чтобы включить третье реле . Это немного сложно, но невозможно после некоторой тренировки ума. Если он уже включен, используйте ту же команду, чтобы выключить его (так, если он включен, снова наберите 70, чтобы выключить). Когда система готова, вы можете подключить к модулю реле любое высоковольтное устройство (свет, телевизор, компьютер, вентилятор, все, что угодно).

Управление мышью

Курсор управляется эмоциями. Если уровень внимания меньше 25 ходов осталось , если от 25 до 50 ходов вправо , если между 50 и 75 ходами вверх а если между 75 и 100 - движется вниз . Вы можете щелкнуть, увеличив уровень медитации. Как я уже сказал, уровень внимания можно легко контролировать с помощью эмоций (для меня).

Управление роботом

У робота есть всего три разных утверждения:стоп, поворот налево и движение вперед. Почему всего два варианта движения? Потому что этих двух направлений достаточно, чтобы переместить робота куда угодно. Используйте свой уровень медитации, чтобы вращаться с роботом, и когда вы достигнете направления, в котором хотите двигаться, остановите робота, затем двигайтесь вперед с уровнем внимания . Это лучший способ управлять роботом, и даже новички, которые не могут так хорошо контролировать свое внимание / медитацию, могут поиграть с этим роботом.

Мой план

Это старая фотография моего плана, но она удалась, поэтому я очень доволен результатами. Гарнитура передает сигналы BT (Bluetooth) к Arduino Mega, который анализирует входящие байты и, в зависимости от мысли пользователя, управляет различными функциями. Было очень сложно найти лучшие способы передачи такого количества данных, но я выбрал Bluetooth вместо WiFi. Сначала я хотел использовать Particle Photon в качестве передатчика данных, но этот маленький парень получил лучшую роль в создании веб-сервера. Это была самая большая модификация во всем проекте. (На картинке вы можете увидеть фактический план). Я использовал самодельные модули Arduino , потому что я люблю разрабатывать свои собственные схемы. Вы можете купить эти модули в Интернете, если хотите, или собрать сами вместе со мной.

Полгода обучения и экспериментов

Я много работал над этим проектом, и да, я начал почти полгода назад, но с Photon дела пошли быстрее. Пользоваться их панелью управления было очень легко. Кстати, в Интернете есть много руководств по взлому ЭЭГ-игрушек, которые мне немного помогли, но лишних функций в них не было. Поэтому я решил, что взломаю эту игрушку Necomimi и, проявив свой творческий потенциал, создал это устройство, которое имеет гораздо больше возможностей, чем мигание светодиода. Надеюсь, вам понравится!

Приступим!

Взлом игрушки Некомими

Мы хотим модифицировать эту игрушку для ЭЭГ для передачи данных через Bluetooth, поэтому сначала разберем корпус. Винты находятся под наклейкой. Удалите наклейку . и обратно устройства, и вы найдете внутри небольшой схемы. Тот, что находится под основной схемой, - это микросхема Neurosky TGAM. Он соединен четырьмя контактами заголовка с основной платой микроконтроллера, поэтому возьмите паяльник и удалите эту схему . внимательно. Теперь припаяйте три провода к контакту GND, контакту VCC и контакту T. T-pin - это вывод передатчика со скоростью 57600 бод, он отправляет пакеты данных на наш микроконтроллер, но Icon подключил его напрямую к slaveBT-модулю HC-06 . HC-06 настроен на скорость 9600 бод, но не волнуйтесь, мы исправим эту проблему. Если вы припаяли три провода к разъему, вы можете встроить собственный перезаряжаемый источник питания. Я использовал литий-ионный аккумулятор емкостью 500 мАч, схему зарядного устройства USB, схему повышающего напряжения 5 В и два резистора (100 Ом и 200 Ом), чтобы обеспечить идеальное питание 3,4 В для микросхемы и модуля Bluetooth. Следуйте схеме, чтобы построить модуль. схема, которая нужна в гарнитуре. Если схема готова, настройте модуль Bluetooth.

О микросхеме:

Neurosky ThinkGear AM предназначен для фильтрации, усиления и отправки данных через последовательный интерфейс. Подробнее здесь.

Схема / Электроника

Следуйте инструкциям и изображениям ниже и создайте свою собственную беспроводную гарнитуру для ЭЭГ.

Вам понадобится литий-ионный аккумулятор емкостью 500 мАч, модуль повышения напряжения на 5 В для создания стабильного напряжения, а затем резистор 100 Ом и 200 Ом для понижения напряжения до стабильных 3,3 В. Я припаял женские штыри для подключения питания и передачи данных на модуль bluetooth.

Самая важная часть - соединить вывод «T» с «RX» на модуле Bluetooth. Это воплощает наш проект в жизнь.

Настройка модулей Bluetooth

HC-06:сначала загрузите скетч с названием «HC_06_Bluetooth» . к Arduino UNO, затем подключите модуль Bluetooth, как показано на схеме. Я нашел эту схему на сайте команды Artronix, и она показалась мне полезной.


  void setup () {// Запускаем аппаратный serial.Serial.begin (9600); // по умолчанию HC-06 скорость передачи данныхdelay (1000); Serial.print ("AT"); delay (1000); Serial.print ("AT + VERSION"); delay (1000); Serial.print ("AT + PIN "); // удалить passworddelay (1000); Serial.print ("AT + BAUD7"); // Установите скорость 576000 - например, Necomimi dafaultdelay (1000); Serial.begin (57600); // задержка (1000);} void loop () {}  

Откройте Serial Monitor в среде Arduino IDE и дождитесь, пока Arduino настроит модуль BT. Теперь ваш модуль Bluetooth настроен на скорость 57600 бод . . Вы можете опробовать множество приложений BCI (Brain Computer Interface), потому что эта взломанная Bluetooth игрушка Necomimi будет совместима со всеми приложениями Neurosky.


Вы можете использовать эти приложения, чтобы научиться контролировать свои мозговые волны и ценности, например внимание или медитацию. Вы можете попробовать много классных игр, но я рекомендую эти приложения (они совместимы с ПК, iOS и Android):

http://store.neurosky.com/products/brainwave-visualizer-android

http://store.neurosky.com/products/eeg-analyzer

http://store.neurosky.com/collections/android/products/blink-camera-android


Затем используйте «HC_05_Bluetooth» и загрузите в Arduino так же, как и раньше. Подключите контакт «EN» HC-05 к 3v3 Arduino. Вы должны написать адрес вашего модуля HC-06 в коде. Проверить адрес модуля BT на Android-смартфоне, как и у меня. Замените в коде ":" (двойные точки) запятыми ",".

И вам следует изменить адрес в коде:

20:15:09:15:17:82 ==> 2015,09,151782 Таким образом, модуль HC-05 может распознать адрес. Так что просто оставьте несколько ":", потому что они не нужны.

  // HC-05 configurationvoid setup () {// Запускаем аппаратный последовательный порт. Serial.begin (9600); // Задержка скорости передачи по умолчанию HC-05 (1000); Serial.print («AT»); задержка (1000); Serial.print («АТ + ВЕРСИЯ»); задержка (1000); Serial.println ("AT + ROLE =1"); // установить HC-05 в главный режим delay (1000); Serial.println ("AT + LINK =" скопируйте сюда ваш адрес "); // теперь модуль должен подключиться автоматически delay (1000); Serial.print (" AT + UART =57600,1,0 "); // Установить скорость передачи до 576000 Serial.begin (57600); // задержка (1000);} void loop () {}  

Наконец, два модуля должны соединиться друг с другом. Если у вас возникли проблемы, нажмите на эту ссылку, чтобы узнать больше.

Робот с дистанционным управлением

Чтобы сделать этого недорогого робота, я использовал ИК-технологию 38 кГц . , который используется в пультах дистанционного управления телевизора. Я купил на Amazon шасси для своего робота. ИК-приемник восстановлен от старого телевизора, и Arduino тоже с Amazon. Добавил ссылки на детали (см. Внизу в разделе Аппаратное обеспечение).

Схема драйвера двигателя

Вам понадобятся эти детали:

  • 2 винтовых зажима
  • Микросхема L293D
  • 3 закрепления заголовка
  • 9 штифт заголовка (90 градусов)
  • Резистор 1 кОм
  • Красный светодиод
  • Провода
  • Печатная плата

Я использовал несколько медных проводов и, следуя схеме, подключил контакты IC к контактам заголовка. Неважно, какой контакт к какому контакту заголовка, просто помните, как вы их подключили. Светодиод подключен последовательно с резистором и параллельно с напряжением 5 В VCC.

Соберите корпус

Этот шаг был очень легким, я использовал отвертку и некоторые ремесленные навыки, и я построил каркас за пять минут. После того, как это станет более сложной частью, мы должны построить схему драйвера двигателя. Для управления моими двигателями я выбираю микросхему L293D, которая может управлять двумя двигателями. Посмотрите на схему, чтобы построить электрическую цепь.

Подключите детали к Arduino

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

Вывод Arduino ==> Драйвер двигателя

4 ==> 15

5 ==> 10

6 ==> 7

7 ==> 2

VIN ==> 8

5v ==> 1, 9, 16

GND ==> 4, 5, 13, 12

Итак, посмотрите на схему модуля L293D, затем подключите его контакты к Arduino UNO, как я писал здесь. Вывод на 5 В Arduino должен быть подключен к 1, 9, 16 контактам для включения функции драйвера двигателя IC. Затем, наконец, используйте винтовые клеммы для включения двигателей.

Написание кодов…

Используя библиотеку IRremote, я создал код, который считывает инфракрасные сигналы 38 кГц, декодирует их, а затем перемещает робота. (Загрузите библиотеку в разделе «Код»).

Я добавил пояснения в код, но суть состоит в том, что декодирует ИК-сигналы, поступающие от основного сервера, а затем, в зависимости от того, что хочет пользователь, перемещает двигатели, а затем робот перемещается вперед или поворачивает влево. Загрузите код: "Robot_Code" . Загрузите это в свой Arduino, и ваш робот завершит работу.



Главный сервер (Arduino Mega, Leonardo, Photon)

Сервер считывает входящие пакеты данных с беспроводной гарнитуры. Мы будем использовать настроенный модуль BT, чтобы обеспечить соединение между гарнитурой и сервером. Arduino Mega - это мозг схемы, к этому микроконтроллеру подключено все:Bluetooth, светодиод инфракрасного передатчика, веб-сервер и контроллер мыши. Код немного сложен, но я добавил пояснения, чтобы понять его.

Дело

Это просто, но выглядит великолепно. Я вырезал две пластины 18х15 см и зачистил края наждачной бумагой. С помощью нескольких шурупов я соединил их друг с другом.

Цепь реле

Вам понадобятся эти детали:

  • Транзистор 2н2222 (3 шт.)
  • германиевые диоды (3 шт.)
  • Резисторы 330 Ом (3 шт.)
  • Резисторы 1 кОм (3 шт.)
  • реле 5В (3 шт.)
  • соединительные провода
  • контакты заголовка
  • Печатная плата

Картинка стоит более тысячи слов, поэтому вместо того, чтобы пытаться написать, как вы должны соединять части на печатной плате, посмотрите на схему. Если на вывод «Signal» поступает сигнал от Arduino, реле включается. Транзистор усиливает сигнал, чтобы обеспечить достаточную мощность для реле. Мы будем использовать контакты 37-38-39 для управления ВЫСОКИМ-НИЗКИМ уровнями каждого реле.

Установите детали в корпус

Чтобы установить детали на корпус из оргстекла, я использовал двусторонний белый скотч. Это надежно фиксирует и удерживает цепи на корпусе.

Схема сервера

Этот сервер основан на программном обеспечении, поэтому сделать схему не так уж сложно. (См. Схематический спусковой механизм). Вам просто нужно включить микроконтроллеры и установить соединение между ними. ИК-светодиод подключен к контакту D3, а реле - к 37-38-39. D16 Arduino Mega переходит к RX Photon, а D18 - к RX Leonardo.

Связь с роботом


The IR Leds are connected to the digital pin D3 and with the IRremote library we send codes to the robot. It's pretty simple. The IR codes must be the same in the robot's code. If you think you're done you can test it with your camera. The infrared light looks purple on a photo, cameras can detect the IR light. This trick always works.

The Code

Use the "Arduino_Mega_Server" code in the Software part.

I suffered a lot while wrote the codes. I should program three different microcontrollers, so it was a big challenge. I used IRremote, Brain, SofwareSerial and Mouse libraries. (see download links at the Software part). But now the code is done and works so you just should upload to your microcontrollers. Download the .ino file or copy/paste the code in your IDE and use it. The code to the Particle Photon should be uploaded via the browser IDE. To make this register to the Particle Build. And connect your laptop to your microcontroller. I was really surprised that this happened almost automatically, I just added my Device ID number.

Before loading up the codes be sure nothing is connected to the RX/TX pins. So disconnect your BLuetooth module from the Mega, and disconnect the Mega from the Leonardo and the Photon.

The Mouse Controller 

The Webserver

I wanted to add an IoT (Internet of Things) function in my project, so I made an online data logger using the Particle Photon. Depending on what you make with the device the Photon creates a personal server, and writes the data in the Cloud.

This may seem scary at first time, but imagine that you can detect if you are stressful (attention level increases and decreases quickly ) or if you should sleep (meditation level is always higher than 80) . This webserver may help you to live healthlier.

The Particle also has an online dashboard where you can publish any kind of data with the "Particle.publish();" syntax. We should have to say a big "thank you" for the developers of the dashboard. They saved a lot of time for us.

Writing codes in a browser?

It was intresting to write codes on a web page, but worked the same way like the normal IDE. The code was uploaded wirelessly. This microcontroller would be a very useful tool in everyone's toolbox.


The dashboard looks somehow like this if you worked fine. Shows Attention and Meditation, and you can check them anytime, at your dashboard URL. For more info about the dashboards click here.

A quick upgrade for those who want to control only a robot with mindwaves:

You don't want to build the build the whole project, only a mindwave controlled robot? Don't worry if you're a beginner I thought even on you. I made a code with explanations that needs an Arduino Mini Pro and an IR LED and of course the headset to control the robot. I know that many of my readers wants to make a simple and fun weekend project so here's the description and the code for you.

Use the "RobotControlllerHeadset" code inthe Software section. Connect an IR LED to the D3 pin on the Mini Pro (Or Arduino UNO) and connect the T pin of the NeuroSky chip to the RX pin of the Arduino. Power up with 3.3 or 5 volts and you're done. So build the robot, then use this code in your headset: 

#include #include #include IRsend irsend;Brain brain(Serial);const int ledPin =3; long interval =500; long previousMillis =0;int ledState =LOW; int medValue;void setup() { // Set up the LED pin. pinMode(ledPin, OUTPUT); // Start the hardware serial. Serial.begin(57600);}void loop() { // Expect packets about once per second. if (brain.update()) { Serial.println(brain.readCSV()); // Attention runs from 0 to 100. medValue =brain.readMeditation(); } // Make sure we have a signal. if(brain.readSignalQuality() ==0) { // Send a signal to the LED. if (medValue> 65) {irsend.sendNEC(0xFF10EF, 32); задержка (40); } if (brain.readAttention()> 65) {irsend.sendNEC(0xFF18E7, 32); задержка (40); }}}  

Becoming an IoT Jedi (Testing)

After making everything that I explained here, only one thing is left: try it out . Use the power of your mind, use the Force of the neurons in your brain, move your little robot, control your home, control everything with thoughts...

Now you become a real IoT Jedi!

The device has many features and it's very fun to play with. But as I said before it isn't only a toy , featuring biology and electronics we created a device that may help for people, who fight each day with their disabilities, to get back their natural capabilities.

The robot can be controlled easily, the relays aren't big challange too. You only should learn how to control your attention levels to control the mouse. On the picture I'm trying to exit an app with my brainwaves. More practice guarantees better experience.

Thank you for watching!

I really hope that you liked my project and please write your opinion in comments. I wanted to make a video about the device, but coding was hard so I haven't enough time to make a short movie, but I'll publish it very soon on my Youtube channel and I'll update this project presentation too.

May the Force be with you, always!

Код

  • Particle Photon Code
  • Robot Controller Code
  • HC_05_Bluetooth.ino
  • Mouse Controller Code
  • Arduino_Mega_Server
  • RobotControllerHeadset.ino
Particle Photon CodeArduino
Copy this in your browser IDE then upload to the Particle Photon. Open the dashboard to see the results in real time.
//this is the code for the webserver for a "Use the Force... Or your Brainwaves?" project//creates a statistics for the user about his/her brainwaves meditation and attention level//thanked to the fully functioning dashboard of the Particle the code is very simpleint att;int med;int function;void setup() { Serial.begin(9600); }void loop() { // Publish data Spark.publish("Attention", (att) + "%"); задержка (2000); Spark.publish("Meditation", (med) + "%"); задержка (2000); Spark.publish("Last Function", (function) + ""); задержка (2000); if (Serial.available> 0) { char c =Serial.read(); } delay(10); switch(c) { case'a':att =10; ломать; case'b':att =20; ломать; case'c':att =30; ломать; case'd':att =40; ломать; case'e':att =50; ломать; case'f':att =60; ломать; case'g':att =70; ломать; case'h':att =80; ломать; case'i':att =90; ломать; case'j':att =100; ломать; case'k':med =10; ломать; case'l':med =20; ломать; case'm':med =30; ломать; case'n':med =40; ломать; case'o':med =50; ломать; case'p':med =60; ломать; case'q':med =70; ломать; case'r':med =80; ломать; case's':med =90; ломать; case't':med =100; ломать; case'x':function ="Home Automation" break; case'y':function ="Robot Controller Mode" break; case'z':function ="Mouse Controller" break; }} 
Robot Controller CodeArduino
This code controls the robot. Upload this to the Arduino UNO. You can change the IR codes if you want.
//Used for "Use the Force or your Brainwaves?" project#include int IRpin =3;IRrecv irrecv(IRpin);decode_results results;int motor_pin1 =4;int motor_pin2 =5;int motor_pin3 =6;int motor_pin4 =7;void setup (){ irrecv.enableIRIn(); pinMode(motor_pin1,OUTPUT); pinMode(motor_pin2,OUTPUT); pinMode(motor_pin3,OUTPUT); pinMode(motor_pin4,OUTPUT); Serial.begin(9600);}void loop() { if (irrecv.decode(&results)) { irrecv.resume(); // Receive the next value } if (results.value ==0xFF18E7) //if gets this code goes forward { digitalWrite(motor_pin1,LOW); digitalWrite(motor_pin2,HIGH); digitalWrite(motor_pin3,LOW); digitalWrite(motor_pin4,HIGH); { Serial.println("Go Forward!"); } } if (irrecv.decode(&results)){ irrecv.resume(); // Receive the next value } if (results.value ==0xFF4AB5) //if gets this code goes backward { digitalWrite(motor_pin1,HIGH); digitalWrite(motor_pin2,LOW); digitalWrite(motor_pin3,HIGH); digitalWrite(motor_pin4,LOW); { Serial.println("Go Backward!"); } }if (irrecv.decode(&results)){ irrecv.resume(); // Receive the next value } if (results.value ==0xFF10EF) //if gets this code turns left { digitalWrite(motor_pin1,HIGH); digitalWrite(motor_pin2,LOW); digitalWrite(motor_pin3,LOW); digitalWrite(motor_pin4,HIGH); { Serial.println("Turn Left!"); } }if (irrecv.decode(&results)){ irrecv.resume(); // Receive the next value } if (results.value ==0xFF5AA5) //if gets this code turns right { digitalWrite(motor_pin1,LOW); digitalWrite(motor_pin2,HIGH); digitalWrite(motor_pin3,HIGH); digitalWrite(motor_pin4,LOW); { Serial.println("Turn Right!"); } }if (irrecv.decode(&results)){ irrecv.resume(); // Receive the next value } if (results.value ==0xFF38C7) //if gets this code stops { digitalWrite(motor_pin1,LOW); digitalWrite(motor_pin2,LOW); digitalWrite(motor_pin3,LOW); digitalWrite(motor_pin4,LOW); { Serial.println("Stop!"); }}} 
HC_05_Bluetooth.inoArduino
Configures HC-05 module.
// HC-05 configurationvoid setup() { // Start the hardware serial. Serial.begin (9600); // default HC-05 baud rate delay(1000); Serial.print("AT"); задержка (1000); Serial.print("AT+VERSION"); задержка (1000); Serial.println("AT+ROLE=1"); //set the HC-05 to master mode delay(1000); Serial.println(" AT+PAIR=copy here your adress,9"); //now the module should connnect automatically delay(1000); Serial.print("AT+BAUD7"); // Set baudrate to 576000 - eg Necomimi dafault Serial.begin(57600); // delay(1000);}void loop() {}
Mouse Controller CodeArduino
Upload this to the Arduino Leonardo. Controls the cursor on your computer, depending on the signal that gets from the Arduino Mega.
//Code by Imets Tamas for the Use the Force... Or your Brainwaves? project//Moves the mouse cursor through serial signals#include void setup() { Serial.begin(9600); // initialize mouse control:Mouse.begin();}void loop() { // use serial input to control the mouse:if (Serial.available()> 0) { char inByte =Serial.read(); switch (inByte) { case 'u':// move mouse up Mouse.move(0, -8); ломать; case 'd':// move mouse down Mouse.move(0, 8); ломать; case 'l':// move mouse left Mouse.move(-8, 0); ломать; case 'r':// move mouse right Mouse.move(8, 0); ломать; case 'c':// perform mouse left click Mouse.click(MOUSE_LEFT); ломать; }}} 
Arduino_Mega_ServerArduino
Analzyzing brainwaves, controls everything...
/* Arduino Mega Code for "A Tool for the Mind" project by Imets Tams, 2nd of February, 2016 This code analyzes and organizes then sends forward incoming bluetooth serial signals from the brainwave sensor Feel free to edit, but don't forget to credit, For the variable values I used the characters of family's name, you can change them if you want:I. M. E. T. S. See more details at http://www.instructables.com/member/Imetomi/ or https://www.hackster.io/Imetomi */#include  // include the library #include  // include the library #include  // include the library #include  // include the library #include int led =13;int medled =50; //the LED to shows the meditation levelint attled =51; //the LED to shows the attention levelint blinkled =52;char robot;IRsend irsend; //IR led to pin 3SoftwareSerial mouse(18, 19); //RX, TX this goes to the Leaonardo BoardSoftwareSerial webserver(16, 15); //goes to the Particle Photon to create a web serverLiquidCrystal lcd(12, 11, 5, 4, 3, 2); // initialize the library with the numbers of the interface pinsBrain brain(Serial); //the Brainwaves are read with the help of the bluetooth module through hardware serialint closedeye =(brain.readLowAlpha()); //to detect blinkint attention =(brain.readAttention()); //to read attentionint brainsignal =(brain.readSignalQuality()); //to read signal qualityint meditation =(brain.readMeditation()); //to detect meditationint alpha =(brain.readHighAlpha()); //to detect closed eyeint lightatt;int lightmed;int blinklength;int prevsignal =0;void setup() { //here we're going to set the main settings:mouse.begin(9600); //set the baud rate webserver.begin(9600); //set the baud rate Serial.begin(57600); //set the baud rate (57600 is the Necomimi's bit/seconds rate) lcd.begin(16, 2); //start the LCD screen pinMode(led, OUTPUT); //set pinmodes for the leds and relays pinMode(attled, OUTPUT); //set pinmodes for the leds and relays pinMode(medled, OUTPUT); //set pinmodes for the leds and relays pinMode(blinkled, OUTPUT); //set pinmodes for the leds and relays pinMode(37, OUTPUT); //set pinmodes for the leds and relays pinMode(38, OUTPUT); //set pinmodes for the leds and relays pinMode(39, OUTPUT); //set pinmodes for the leds and relays lightatt =map(attention, 0, 100, 0, 255); //map the attention level for analogWrite the LED lightmed =map(meditation, 0, 100, 0, 255); //map the attention level for analogWrite the LED}void robotmode() { if (brain.update()) { if ((blinklength> 0) &&(blinklength <2000)) { //if you close eyour eyes for 2 seconds loop(); //you'll exit the robot controller mode } if (attention> 70) { irsend.sendNEC(0xFF18E7, 32); //go forward webserver.println("g"); задержка (40); } if (meditation> 70) { irsend.sendNEC(0xFF10EF, 32); //spin webserver.println("q"); задержка (40); } }}void loop() { if (brain.update()){ analogWrite(attled, lightatt); //analog write the attention led to show the actual attention level //the more focused you are, the stronger thee LED lights analogWrite(medled, lightmed); //analog write the attention led to show the actual attention level //the higher meditation level will light up the LED if ((closedeye> 30000) &&(alpha> 30000)) { //we use 2 values to be sure the user's eye is closed digitalWrite(blinkled, HIGH); //in english:if eyes are closed the LED will light up blinklength =millis(); // count milliseconds if eye closed } else if ((closedeye <30000) &&(alpha <30000)) { digitalWrite(blinkled, LOW); //in english:if eyes are opened the LED will turn off blinklength =0; } if ((blinklength> 0) &&(blinklength <2000)) { //if you close eyour eyes for 2 seconds webserver.println("a"); задержка (40); robotmode(); //you'll be able to control the robots } if ((blinklength> 2001) &&(blinklength <4000)) { //if you close eyour eyes for 3-4 seconds webserver.println("a"); задержка (40); relay(); //you'll be able to control the the home automation system } if ((blinklength> 4001) &&(blinklength <6000)) { //if you close eyour eyes for 4-6 seconds webserver.println("a"); задержка (40); mousecontrol(); //you'll be able to control the mouse } Serial.println(brain.readCSV()); //print the data on serial monitor, not necessary, it's only for testing }}void relay() { webserver.println(""); if (brain.update()) { if ((blinklength> 0) &&(blinklength <2000)) { //if you close eyour eyes for 2 seconds loop(); //you'll exit the relay controller mode } if(attention> 70) { //turn on relay1 digitalWrite(37, HIGH); webserver.println("g"); prevsignal =1; } if(meditation> 70) { //turn on relay2 digitalWrite(37, HIGH); webserver.println("q"); prevsignal =1; } if(1000> blinklength> 0) { //turn on relay3 digitalWrite(37, HIGH); webserver.println("qj"); prevsignal =1; } if((attention> 70) &&(prevsignal ==1)) { digitalWrite(37, LOW); webserver.println("q"); prevsignal =1; //check if is already turned on, then turn off } if((meditation> 70) &&(prevsignal ==1)) { digitalWrite(37, LOW); webserver.println("qj"); prevsignal =1; //check if is already turned on, then turn off } if((1000> blinklength> 0) &&(prevsignal ==1)) { digitalWrite(37, LOW); webserver.println("a"); prevsignal =1; //check if is already turned on, then turn off } }}void mousecontrol() { //you'll need a few hours of practice to control the cursor perfectly webserver.println("z"); //forward data to the webserver if(brain.update()) { if (0  70) { mouse.println('c'); //click webserver.println("t"); }}} 
RobotControllerHeadset.inoArduino
For those who want to build an IR robot.
#include #include #include IRsend irsend;Brain brain(Serial);const int ledPin =3; long interval =500; long previousMillis =0;int ledState =LOW; int medValue;void setup() { // Set up the LED pin. pinMode(ledPin, OUTPUT); // Start the hardware serial. Serial.begin(57600);}void loop() { // Expect packets about once per second. if (brain.update()) { Serial.println(brain.readCSV()); // Attention runs from 0 to 100. medValue =brain.readMeditation(); } // Make sure we have a signal. if(brain.readSignalQuality() ==0) { // Send a signal to the LED. if (medValue> 65) {irsend.sendNEC(0xFF10EF, 32); задержка (40); } if (brain.readAttention()> 65) {irsend.sendNEC(0xFF18E7, 32); задержка (40); } } }
Brain Library
Used to measure attention and meditation level.https://github.com/kitschpatrol/Brain
SoftwareSerial Library
Used to ensure multiple communication pins.https://github.com/arduino/Arduino/tree/master/hardware/arduino/avr/libraries/SoftwareSerial
IRremote Library
Decoding and sending IR signals.https://github.com/z3t0/Arduino-IRremote

Схема

Use this schematic to make the main server. Schematic for the DIY IR robot Schematic for the DIY 3 channel relay module. Used Arduino pins:D37, D38, D39. Schematic for the motor driver. Connect the pins to the Arduino. Schematic for the main server's electronics. Schematic for the Arduino UNO robot Schematic for the IR robot Use this schematic to make the main server. Schematic for the headset's electronics

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

  1. Создание сети беспроводных датчиков в вашем доме
  2. Лучшие аксессуары для Raspberry Pi
  3. Как использовать клей-карандаш на платформе для печати Mark One
  4. Захват капель воды с помощью Arduino
  5. Робот с сервомотором избегает препятствий
  6. Робот-последователь линии
  7. Узнавайте температуру своего дома откуда угодно с помощью Arduino Cloud!
  8. Насколько легко использовать термистор ?!
  9. 4 основных признака того, что срок службы вашего двигателя подходит к концу
  10. Двигатель постоянного тока и переменного тока:в чем разница?