Wi-Fi-роботы заменят сиделок
В одном из американских домов для престарелых (местечко Оукмонт, штат Пенсильвания) проходят испытания самоуправляемого мобильного робота с искусственным интеллектом. Робот, названный женским именем Перл (Perl, жемчужина), специально создан для ухода за пожилыми людьми он напомнит своим подопечным о необходимости принять лекарства или лечебную процедуру, поможет им перебраться в другое помещение, а по пути поболтает с ними о погоде или о телепередачах.
Перл имеет невысокий рост 135 см и улыбчивое выражение «лица». Искусственный интеллект робота основан на базе 2 процессоров Intel Pentium 4. Робот работает от дифференциального привода. Модуль служит ему для связи во время движения, а стереокамеры и звуковые датчики позволяют избегать препятствий. Микрофоны помогают Перл улавливать и распознавать человеческую речь, а динамики позволяют роботу «говорить». Мимику имитирует головной модуль.
В рамках междисциплинарных исследований, посвященных робототехнологиям для престарелых, проект объединил ученых четырех университетов США. В финансировании проекта участвует ряд компаний, в том числе корпорация Intel. В магазинах электронная сиделка появится еще не скоро. Прежде всего, такие роботы очень дороги. Перл стоит около $100 тыс. Чтобы выпустить потребительскую версию робота, исследователи должны решить, помимо ценовой, множество других проблем обеспечение длительного времени автономной работы и расчет шагов.
Марта Поллак, профессор электротехники и теории вычислительных систем и один из разработчиков , несмотря на успешные испытания, полагает, что роботы никогда не заменят настоящих сиделок: «Мы не стремимся заменить настоящих специалистов по уходу. Более того, мы не считаем, что это вообще возможно. Наша цель обеспечить дополнительные ресурсы, поскольку по мере старения населения будет расти дефицит специалистов по уходу за престарелыми». Эрик Дишман, менеджер исследовательской лаборатории Proactive Health Research корпорации Intel, с Поллак согласен. По его словам, большинство стран мира вскоре столкнется с проблемами стареющего населения: «Уже в конце этого десятилетия в США на пенсию выйдет первая волна людей, родившихся в эпоху послевоенного бума рождаемости, и количество пожилых людей значительно вырастет. Государства просто обязаны найти способ повышения качества ухода за людьми старше 65 лет самой дорогостоящей в плане ухода демографической прослойкой, и сократить при этом расходы на здравоохранение». Дишман и другие исследователи считают, что только информационные технологии помогут решить эту демографическую проблему, однако перед исследователями, разрабатывающими домашние системы ухода за пожилыми людьми, стоит еще много нерешенных задач.
- будут напоминать пожилым пациентам о необходимости принять лекарства или лечебную процедуру, посетить врача и т.п.;
- будут связывать пациентов с медицинским персоналом через интернет. С помощью роботов специалисты по уходу за больными смогут поддерживать с пациентами виртуальный контакт, что сократит частоту посещений врача;
- будут постоянно следить за состоянием пациентов. Это позволит избежать таких чрезвычайных ситуаций, как сердечный приступ или повышение уровня сахара в крови.
- будут пользоваться домашними приборами, включая холодильники, стиральные машины и микроволновые печи. По данным исследователей, артрит лишает большинство пожилых людей возможности вести самостоятельный образ жизни;
- возьмут на себя ряд социальных функций. Многие пожилые люди одиноки. вернет таким людям утраченное было чувство человеческого общения.
Робот на Arduino Uno, управляемый по WiFi
Роботы являются одними из самых популярных устройств, конструируемыми энтузиастами в микроконтроллерной технике. Мы на нашем сайте уже рассматривали проекты различных роботов на основе платы Arduino Uno:
А в этой статье мы рассмотрим создание робота на основе Arduino Uno, управляемого по WiFi со смартфона с помощью приложения Blynk App. Для демонстрации работы этого робота мы используем мобильное приложение для Android под названием “Blynk”. Blynk – это совместимое приложение с Arduino, удобное для создания различных проектов для интернета вещей (IoT based project). Это приложение можно скачать из Google Play Store, его легко установить и настроить.
Шаги для настройки приложения Blynk
1. Сначала скачайте его из Google Play Store и установите его на свой мобильный телефон с Android.
2. После этого необходимо создать аккаунт если у вас его нет. Также вы можете использовать Gmail аккаунт (если он у вас есть).
3. Теперь выберите Arduino Board и задайте имя для своего проекта.
4. Запишите код авторизации токена (Auth Token Code) или просто перешлите его на свой Email аккаунт и затем скопируйте и вставьте его в свою программу (скетч) для Arduino.
5. Запишите свой Auth Token Code в программе (скетче) для Arduino.
// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = «caa17a11c0124d4083d0eaa995f45917»;
6. Затем кликните на «создать кнопку» (create button) в приложении Blynk.
7. Теперь выберите Joystick Widget, Click on Joystick, Configure the Joystick (более подробно смотрите в видео в конце статьи) и нажмите кнопку возвращения назад back button.
8. После этого нажмите кнопку Play в верхнем правом углу экрана.
Более подробно процессы настройки приложения Blynk показаны в видео в конце статьи.
Необходимые компоненты
- Плата Arduino Uno (купить на AliExpress).
- Wi-Fi модуль ESP8266 (купить на AliExpress).
- Драйвер двигателей L293D (купить на AliExpress).
- Электродвигатели постоянного тока.
- USB кабель.
- Источник питания.
- Соединительные провода.
- Батарейки.
- Потенциометр 10 кОм (опционально).
- Шасси робота с колесами.
- Мобильный телефон с Android.
- Приложение Blynk.
Работа схемы
Схема устройства представлена на следующем рисунке.
Основными элементами в ней являются плата Arduino Uno и Wi-Fi модуль ESP8266. Контакты Vcc и GND модуля ESP8266 непосредственно подключены к контактам 3.3V и GND платы Arduino, контакт CH_PD также подсоединен к контакту 3.3V. Контакты Tx и Rx модуля ESP8266 подключены к контактам 2 и 3 платы Arduino. Software Serial Library (библиотека последовательной связи) используется для осуществления последовательной связи на контактах 2 и 3 платы Arduino. В статье про передачу Email с использованием Arduino мы достаточно подробно останавливались на подключении WiFi модуля ESP8266 к плате Arduino, поэтому здесь эти вопросы рассматривать не будем.
Микросхема драйвера двигателей L293D используется для управления двигателями постоянного тока. Входные контакты микросхемы драйвера мотора непосредственно подключены к контактам 8, 9, 10 и 11 платы Arduino. Электродвигатели постоянного тока подключены к выходным контактам микросхемы L293D. Для питания схемы и двигателей постоянного тока мы использовали батарейку на 9 Вольт.
Структурная схема работы устройства показана на следующем рисунке.
Работа схемы достаточно проста – нам в приложении Blynk на смартфоне необходимо просто перемещать джойстик в том направлении, в котором мы хотим чтобы двигался робот. Если мы отпустим кнопку джойстика в приложении, то его рычаг переместится в центр и робот остановится.
Приложение Blynk передает значения двух осей джойстика плате Arduino при помощи Wi-Fi соединения. Плата Arduino принимает эти значения, сравнивает их с заранее определенными значениями и по результатам сравнения выдает команды на движения робота.
Исходный код программы
Код программы практически полностью готов в среде Arduino IDE. Нам необходимо просто скачать Blynk Library для Arduino. И после внесения ряда изменений мы получим программу для управления роботом по Wi-Fi.
В программе мы первым делом должны подключить все необходимые библиотеки, затем мы должны войти в строку авторизации (auth string) в токене авторизации (Auth Token) от приложения Blynk. Далее мы подсоединяем последовательный контакт модуля Wi-Fi к Arduino с помощью библиотеки последовательной связи. RX подсоединяем к контакту 2, а TX – к контакту 3.
#define BLYNK_PRINT Serial // поместите это в комментарий чтобы отключить печать и сэкономить пространство
#include
#include
// Set ESP8266 Serial object
#include
SoftwareSerial EspSerial(2, 3); // RX, TX
ESP8266 wifi(EspSerial);
// You should get Auth Token in the Blynk App (вы должны получить Auth Token в приложении Blynk)
// Go to the Project Settings (nut icon). (зайдите в настройки проекта)
char auth[] = «caa17a11c0124d4083d0eaa995f45917»;
Затем мы должны сконфигурировать контакты 8,9,10,11 в режим работы на вывод данных чтобы через них передавать инструкции роботу куда ему двигаться, а также запрограммировать функции для движения робота в заданных направлениях: void forward(), void backward(),void right() and void left() .
После этого в функции setup мы должны инициализировать все необходимые устройства, задать направление работы контактов, инициализировать последовательную связь, ввести имя пользователя и пароль для Wi-Fi соединения.
void setup()
<
// установить бодовую скорость передачи
Serial.begin(9600);
delay(10);
// установка бодовой скорости для ESP8266
// 9600 рекомендовано для библиотеки Software Serial
EspSerial.begin(9600);
delay(10);
Blynk.begin(auth, wifi, «username», «password»); // имя пользователя и пароль для wifi
pinMode(m11, OUTPUT);
pinMode(m12, OUTPUT);
pinMode(m21, OUTPUT);
pinMode(m22, OUTPUT);
>
После этого мы в программе должны проверить ряд условий для управления роботом. Здесь мы выбрали виртуальный контакт 1 (V1) чтобы получать информацию о требуемом направлении движения от приложения Blynk. Поскольку мы выбрали соответствующую опцию в приложении, то мы можем получать значения осей x и y на этом же самом контакте.
BLYNK_WRITE(V1)
<
int x = param[0].asInt();
int y = param[1].asInt();
if(y>220)
forward();
else if(y <35)
backward();
else if(x>220)
right();
else if(x <35)
left();
else
Stop();
>
Далее мы просто должны использовать функцию blynk в цикле loop.
Далее приведен полный текст программы.