Управление устройством силой мысли (сгибаем вилку) - Своими руками
Своими руками

Управление устройством силой мысли (сгибаем вилку)

>

В этой статье мастер-самодельщик со стажем расскажет нам, как можно управлять устройством силой мысли. В данном случае силой мысли он будет сгибать вилку, но в принципе можно использовать и для других целей. Принцип работы устройства основан на использовании датчика NeuroSky. Гарнитура NeuroSky распознает мозговые волны и передает их на микроконтроллер Arduino через Bluetooth. Arduino управляет серводвигателем, который тянет нить, соединенную с вилкой.
Инструменты и материалы:-Гарнитура NeuroSky MindWave Mobile 2;
-Батарейка AAA;
-Компьютер;
-Arduino Uno;-Модуль Bluetooth HC-05;-Серводвигатель;-Макетная плата;-Макетные провода;-Зеленый светодиод и желтый светодиод;-2 резистора по 330 Ом;-2 резистора по 1 кОм;-2 резистора по 2 кОм;-Держатель АА на три батареи;
-Небольшая коробка;
-Пластиковая вилка;
-Крепеж;
-Кабельная стяжка;
-Шуруповерт;
-Напильник;
-Клей;
-Отвертка;
Шаг первый: подключение HC-05 Ардуино
Установите HC-05 на макетную плату и подключите его к Arduino, как описано ниже и показано на фотографии.
RXD HC-05 к контакту 11 через делитель напряжения из 2 резисторов,
TXD к контакту 10,
GND к GND,
EN к выводу 9 через делитель напряжения из 2 резисторов.
Пока не подключайте VCC HC-05.

Причина использования делителей напряжения заключается в том, что RXD и EN HC-05 имеют тенденцию к выходу из строя после получения 5 вольт в течение некоторого времени, и напряжение должно быть уменьшено до 3,3 вольт. Делитель напряжения состоит из резистора на 1 кОм, один конец которого подключен к 5 вольтам Arduino, а второй конец – к резистору 2 кОм. В свою очередь другой конец этого резистора подключен к заземлению. Требуются два делителя напряжения: один для RXD, а другой для EN.
Управление устройством силой мысли (сгибаем вилку)Управление устройством силой мысли (сгибаем вилку)Управление устройством силой мысли (сгибаем вилку)Шаг второй: код для HC-05
Найдите наклейку на MindWave с адресом Bluetooth. Если на вашем MindWave нет наклейки перейдите на этот сайт. проект Под заголовком «Определение MAC-адреса вашего MindWave Mobile» ознакомьтесь с инструкцией.

Далее:
1. Запустите приложение Arduino на компьютере.
2. Подключите USB-кабель Arduino к компьютеру. На Arduino должен гореть зеленый свет.
3. Загрузите файл .ino скетча, расположенный в конце этого шага, или скопируйте следующий код, который передает данные между Serial Monitor Arduino и модулем Bluetooth, и вставьте его в новый скетч Arduino.
Управление устройством силой мысли (сгибаем вилку) Показать / Скрыть текст#include<SoftwareSerial.h>
SoftwareSerial BT(10,11);
void setup()
{
pinMode(9,OUTPUT);
digitalWrite(9,HIGH);
Serial.begin(38400);
BT.begin(38400);
Serial.println("Bluetooth AT command mode");
}
void loop()
{
if(BT.available())
Serial.write(BT.read());
if(Serial.available())
BT.write(Serial.read());
}
4. Загрузите эскиз.
5. Удерживая нажатой маленькую кнопку над контактом EN на HC-05, подключите VCC HC-05 к + 5 В Arduino и удерживайте кнопку нажатой в течение нескольких секунд, пока красный свет на HC-05 не начнет мигать в течение 2 секунд.
6. Откройте монитор последовательного порта Arduino (правый верхний угол окна приложения Arduino) на компьютере и установите для параметров в правом нижнем углу значения “Both NL & CR” и скорость передачи данных “38400”.
7. Откройте внутри строки ввода окна Serial Monitor. Введите AT на клавиатуре компьютера и нажмите Return. Если ответ «ОК», продолжайте. Если не «ОК», попробуйте еще раз. Иногда с первого раза не получается.
8. Включите MindWave. Индикатор рядом с переключателем MindWave Mobile 2 должен гореть постоянно синим.
9. Введите AT-команды, как прописано ниже. Ответ должен быть «ОК» после каждой команды.
AT + UART = 57600,0,0 Определяет скорость передачи, используемую MindWave.
AT + ROLE = 1 Устанавливает HC-05 в качестве ведущего устройства, а не ведомого.
AT + PSWD = 0000 Устанавливает пароль, используемый MindWave.
AT + CMODE = 0 Для подключения HC-05 к определенному устройству.
AT + CLASS = 0 Определяет класс устройства.
AT + INQM = 1,9,48 Устанавливает параметры для сопряжения.
AT + INQ, команда чтобы узнать, распознает ли HC-05 MindWave. Поиск MindWave может занять 15-20 секунд. Одно из отображаемых устройств должно иметь тот же адрес, что и на наклейке MindWave, в формате xxxx: xx: xxxxxx. Этот адрес используется в следующих 3 командах (показаны как addr), за исключением того, что двоеточия должны быть заменены запятыми.
AT + PAIR = addr, 30 (здесь не было ответа «ОК».)
AT + BIND = addr (красный свет на HC-05 мигает каждые 2 секунды)
AT + LINK = addr
10. Красный индикатор HC-05 должен мигать 2 раза каждые 3-4 секунды. В первый раз, когда мастер прописал команды частота моргания не изменилась. Поэтому он дважды проверил, правильно ли установлены контакты проводов на Arduino и макетной плате, вытащил провод + 5В из HC-05, выполнил снова шаг 5 и набрал команды PAIR, BIND и LINK. На этот раз красный индикатор изменился на 2 быстрых мигания каждые 3-4 секунды. Это значит, что устройства сопряжены. В следующий раз, при пользовании устройствами, они автоматически подключатся к ним в течение нескольких секунд.
11. Отсоедините провод TXD HC-05 от вывода 10 Arduino и подключите его к RX (вывод 0) Arduino. Отсоедините провода HC-05 от делителей напряжения и снимите их, а также снимите резисторы, используемые в качестве делителей напряжения. Теперь проводка должна быть такой, как показано на фото.
12. Закройте Serial Monitor.
13. Отключите MindWave.
14. Отсоедините USB-кабель от Arduino или компьютера.
15. Закройте приложение Arduino.
Bluetooth_Serial_AT_Command_mode.ino
Управление устройством силой мысли (сгибаем вилку)Управление устройством силой мысли (сгибаем вилку)Шаг третий: управляемый механизм
Первым делом нужно найти подходящую коробку или футляр. Затем подпилите ручку ложки или вилки, чтобы она стала гибкой.
Конструкция механизма проста, как показано на фото.
Управление устройством силой мысли (сгибаем вилку)Управление устройством силой мысли (сгибаем вилку)Шаг четвертый: подключение Arduino
Подключается Ардуино (начиная с пункта 11 предыдущего шага) следующим образом:
Один контакт резистора 330 Ом к контакту 2, а другой провод к длинной ножки зеленого светодиода. Короткая ножка зеленого светодиода идет к GND на макетной плате.
Один контакт резистора 330 Ом к контакту 4, а другой контакт к длинной ножке желтого светодиода. Короткая ножка желтого светодиода идет к GND на макетной плате.
Контакт 9 идет к сигнальному (желтому) проводу сервопривода.
Оранжевый провод сервопривода идет к плюсовому разъему отдельного источника питания.
Коричневый провод сервопривода идет к GND на макетной плате.

Минус отдельного источника питания идет на GND на макетной плате.
Для проверки, следующие части должны быть подключены к GND макетной платы: оба светодиода, сервопривод, GND Arduino и HC-05. Следующие компоненты должны быть подключены к плюсовому источнику питания макетной платы: GND Arduino и HC-05.

Шаг пятый: загрузка кода
1. Запустите приложение Arduino на компьютере.
2. Подключите USB-кабель Arduino к компьютеру. Светодиод HC-05 должен быстро мигать.
3. Подключите провода питания сервопривода к отдельному источнику питания и подключите минус этого источника питания к земле Arduino или макета.
4. Загрузите файл .ino скетча (находится в самом конце этого шага) или скопируйте следующий код и вставьте его в новый скетч Arduino.
Управление устройством силой мысли (сгибаем вилку) Показать / Скрыть текст//
// LEDs on and servo moving when Attention is high
// December 1, 2020
// Arduino with HC-05 Bluetooth and NeuroSky MindWave Mobile 2
// Yellow LED on when Attn more than 50
// Green LED on when Attn more than 70
// Servo moves 90 degrees when Attn is more than 50

#include<Servo.h>
#define BAUDRATE 57600
#define YLED 4
#define GLED 2

////////// Variables

Servo myservo;
byte payloadData[32] = {0};
byte Attention[5]={0};
byte checksum=0;
byte generatedchecksum=0;
int Plength,Temp;
int Att_Avg=0;
int k=0;
signed int j=0;

////////// Arduino setup

void setup()
{
Serial.begin(BAUDRATE);
pinMode(YLED, OUTPUT);
pinMode(GLED, OUTPUT);
Serial.println("Average Attention Values");
myservo.attach(9);
myservo.write(0);
delay(15);
}

////////// Read data

byte ReadOneByte()
{
int ByteRead;
while(!Serial.available());
ByteRead = Serial.read();
return ByteRead;
}

////////// Main program

void loop()
{

////// Look for sync bytes and read data

while (1)
{
if(ReadOneByte() == 170)
{
if(ReadOneByte() == 170)
{
Plength = ReadOneByte();
if(Plength == 32)

{

generatedchecksum = 0;
for(int i = 0; i < Plength; i++)

{

payloadData[i] = ReadOneByte();
generatedchecksum += payloadData[i] ;

}

generatedchecksum = 255 – generatedchecksum;
checksum = ReadOneByte();

////// Obtain Attention data and calculate an average

if(checksum == generatedchecksum)
{
if (payloadData[28]==4)
{
if (j<4)
{
Attention [k] = payloadData[29];
Temp += Attention [k];
j++;
}
else
{
Att_Avg = Temp/4;

////// Display average Attention in Serial Monitor, move servo, and light LEDs

Serial.println(Att_Avg, DEC);

// The next 2 statements would move the servo based on average Attention level.
// Attention level is between 0 and 100, moving servo between 0 and 100 degrees.
// But they are now comments because I decided to move the servo 90 degrees
// when average Attention is higher than 50.
// myservo.write(Att_Avg);
// delay(15);

if (Att_Avg>50)
{
digitalWrite(YLED, HIGH);
myservo.write(90);
delay(15);
}

else

{
digitalWrite(YLED, LOW);
myservo.write(0);
delay(15); }
if(Att_Avg>70)

{

digitalWrite(GLED, HIGH);
}

else

{

digitalWrite(GLED, LOW);

}

j=0;

Temp=0;

}}}}}}}}
5. Отсоедините провод TXD HC-05 от RX (контакт 0) Arduino, загрузите эскиз и снова подключите этот провод RX.
6. Откройте Serial Monitor. Убедитесь, что скорость передачи составляет 57600.
7. Включите MindWave. Через несколько секунд светодиод HC-05 должен сделать 2 быстрых мигания каждые 3-4 секунды, показывая, что устройства сопряжены.
8. Оденьте MindWave на голову. Теперь устройство должно отправлять данные в Arduino. Последовательный монитор должен показывать уровень внимания каждые несколько секунд, желтый светодиод должен включаться, а вилка сгибаться, когда внимание больше 50, а зеленый светодиод загораться, когда внимание больше 70.
9. По окончании закройте Serial Monitor.
10. Отключите MindWave.
11. Отсоедините USB-кабель от Arduino или компьютера.
12. Закройте приложение Arduino.
13. Отсоедините провода питания сервопривода от отдельного источника питания.
LEDs_servo_when_Attn_high.ino

Шаг шестой: использование устройства
Чтобы управлять устройством нужно сконцентрировать внимание. Мастер советует следующие упражнения:
Сосредоточьтесь на чтении списка ингредиентов какого ни будь продукта.
Считайте в обратном порядке.
Проделайте арифметические операции в уме.
Послушайте рэп-песню и постарайтесь понять слова. -)))
Прочтите что-нибудь на языке, которым вы не владеете.

Важные заметки.
Если прошивка HC-05 имеет версию 2 или 3, команда AT + INIT необходима перед командой AT + INQ. Чтобы проверить версию HC-05, введите эту команду: AT + VERSION

Если вы нажмете кнопку сброса Arduino, это вернет настройки HC-05 к заводским значениям по умолчанию. Все шаги по сопряжению придется повторить.

Если TXD HC-05 не отключен от RX Arduino перед загрузкой скетча, в нижней части окна приложения Arduino на экране компьютера появится сообщение об ошибке.

Если используется сервопривод, ему нужен отдельный источник питания, например, 3 батареи по 1,5 В. GND Arduino необходимо подключить к минусу внешнего источника питания. Без внешнего источника питания, недостаточно энергии от источника USB, и модуль HC-05 теряет сопряжение. Он соединяется через несколько секунд, а затем отключается при следующем срабатывании сервопривода.

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

SitesReady

Только те, кто предпринимают абсурдные попытки, смогут достичь невозможного. - Альберт Эйнштейн

Follow us

Don't be shy, get in touch. We love meeting interesting people and making new friends.