Смарт-очки на Raspberry Pi
В этой статье мастер-самодельщик расскажет нам, как сделать свои собственные умные очки с помощью RaspberryPi. Идея сделать такой проекта пришла к нему после просмотра «Человека-паука».
До того, как он взялся за этот проект, самое продвинутое, что он мог делать, — это мигать светодиодом с помощью Arduino UNO или печатать «Hello World» на Python. Можно себе представить, насколько сложным был для него проект. У него нет профессионального образования в области электротехники, несмотря на это, он закончил проект и благодаря нему узнал очень много об электронике.
Особенности этих умных очков следующие:
Отображение времени / даты
Отображение температуры
Воспроизведение музыки
Фотосъемка / видео
Отправка / Получение SMS
Загрузка фото / видео в Dropbox
Запросы в интернет
Расчет математических задач
Шаг второй: комплектующие
Raspberry Pi Zero
Мастер выбрал Raspberry Pi Zero как мозг для этого устройства. Raspberry Pi Zero легко подключается к Интернету, поддерживает Bluetooth для беспроводных наушников, Python предустановлен и имеет простой в использовании интерфейс камеры. У него значительно больше оперативной памяти, в частности, Raspberry Pi Zero имеет 520 МБ оперативной памяти, в отличие от 512 КБ ESP32.
Прозрачный OLED
Прозрачный OLED-экран от Sparkfun — это определяющая характеристика умных очков, которая дает пользователям обратную связь. Им можно управлять по протоколу I2C или SPI (в этом проекте будет использоваться I2C). Дисплей имеет минимальное рабочее напряжение 1,65 В и максимальное рабочее напряжение 3,3 В, поэтому нежелательно запитывать его от контактов 5 В напрямую. Если вы когда-нибудь собираетесь использовать этот дисплей в другом проекте, драйвер поставляется с несколькими разъемами QWIIC, которые могут подключаться к другим совместимым платам Sparkfun.
Плата зарядки
Для этого устройства нужна схема зарядки, которая также могла бы повысить напряжение с 3,3 до 5 В. Плата, используемая в проекте очень, легко подключается.
Li-Po батарея
Изучив рекомендуемые требования к источнику питания для RaspberryPi, мастер нашел эту диаграмму на официальном сайте RaspberryPi. Она говорит, что рекомендуемая мощность блока питания должна составлять 1200 мАч или 1,2 А. Учитывая, что прозрачный OLED-дисплей потребляет всего 400 мАч, а камера 250 мАч, этого должно быть более чем достаточно.
Шаг третий: необходимые приложения и API
*Приложения, которые понадобятся:
PuTTY
PuTTY — это программное обеспечение, которое будет использоваться для ssh (сетевой протокол прикладного уровня, позволяющий производить удалённое управление операционной системой) в RaspberryPI перед доступом к рабочему столу графического интерфейса. Чтобы скачать его, щелкните ссылку и нажмите «here». Далее вы перейдете на новую страницу, где можно установить 32-битную или 64-битную версию.
BalenaEtcher
Для прошивки ОС Raspbian на SD-карту понадобится BalenaEtcher. Щелкните ссылку, чтобы перейти на их веб-сайт, где можно выбрать свою операционную систему и 32-битную или 64-битную версию.
Классический удаленный рабочий стол Microsoft
Классический удаленный рабочий стол — это то, что нужно для доступа к графическому интерфейсу RaspberryPI. Классический удаленный рабочий стол доступен для загрузки в магазине Microsoft. Если вы не используете Mac, возможной альтернативой является Удаленный рабочий стол Chrome .
Angry IP Scanner
После подключения RaspberryPI к Интернету нужно будет получить к нему доступ через его IP-адрес. Angry IP Scanner сканирует все устройства в беспроводной сети пользователя. Чтобы установить его, перейдите по ссылке и нажмите «free download», затем «32/64-bit Installer». Этот установщик автоматически определит, какая у вас 32-битная или 64-битная система.
Cura
Cura — это программное обеспечение для кодировки, необходимое для преобразования файлов stl в файлы gcode, которые затем будут загружены на3D-принтер. При посещении их веб-сайта нужно нажать кнопку «download» и выбрать свою операционную систему. Cura доступна только в 64-битных системах, но есть альтернативы, такие как Slic3r .
API (интерфейс прикладного программирования) которые понадобятся для работы:
Dropbox
Dropbox — это сервер, используемый для хранения любой информации, по сути облачное хранилище. Оно будет использоваться для хранения изображений и видео, снятых умными очками, чтобы можно было получить к ним доступ с любого устройства. Чтобы загрузить Dropbox, перейдите по указанной выше ссылке и зарегистрируйтесь или войдите в систему. Когда вы закончите, нажмите «app console’ -> ‘create app’ -> ‘scoped access’ -> ‘app folder», затем, выберите название для своего приложения и нажмите «finish». После того, как вы закончите все это, вы должны увидеть панель управления для своего приложения. Оставьте эту вкладку мы вернемся к ней позже.
Twillio
Одной из многих функций умных очков является отправка SMS или текстовых сообщений. Для выполнения этой задачи мастер будет использовать Twillio, который является «бесплатным» для использования API, способного отправлять или получать SMS или звонки. Причина, по которой «бесплатно» в скобках, заключается в том, что эта услуга предоставляется бесплатно только до тех пор, пока не исчерпается предоставленный пробный баланс в размере 15 долларов США. Отправка SMS стоит немногим более одного цента за сообщение. Это примерно пятьсот сообщений.
Процесс настройки прост. Зайдите на сайт и зарегистрируйтесь для получения бесплатной пробной учетной записи. После подтверждения вашего номера телефона Twilio задаст несколько вопросов. Первые два вопроса пролистываем «далее», затем выберите «with code», затем «Python» и, наконец, «No, I want to use my own hosting service». Теперь вы находитесь в своей консоли, которая будет отображать все и вся о вашей учетной записи и ваших приложениях. Нажмите «Get a trial number». Это ваш номер телефона, который Twilio будет использовать для отправки SMS. Для пробной учетной записи нужно подтвердить номера, на которые мы хотели бы отправлять SMS. Для этого перейдите на консоль и справа вы увидите ссылку «Verified Numbers», ваш номер уже будет там записан, но если вы захотите написать кому-нибудь еще, вам нужно будет добавить сюда его номер телефона. Пока не закрываем консоль.
Wolfram Alpha
И последнее, но не менее важное — это Wolfram Alpha, вычислительная поисковая машина. Wolfram Alpha станет мозгом умных очков. Wolfram Alpha позволяет нам получить ответы на любой вопрос, который мы можем задать, или математическую задачу, которую мы предлагаем. Зарегистрироваться очень просто, просто перейдите по ссылке и зарегистрируйтесь для учетной записи, затем щелкните свой профиль в правом верхнем углу и выберите «My Apps (API)». Теперь нажмите «Get AppID», где он попросит вас дать некоторое описание вашего приложения, а затем, наконец, он предоставит вам ваш идентификатор приложения. Не закрывайте этот экран, мы вернемся к нему позже в коде.
*Некоторые функции, возможно, не будут работать в России.
Шаг четвертый: настройка RaspberryPI
Прошивка операционной системы
Сначала установите Raspbian OS с официального сайта . Мастер использует BalenaEtcher для прошивки ОС на карту micro-SD. Подключите карту micro-SD к компьютеру через адаптер, затем откройте BalenaEtcher. Выберите папку .zip, содержащую ОС, затем выберите подходящую SD-карту и нажмите flash, это займет примерно 20 минут. Когда загрузка закончится, отсоедините SD-карту.
Подключение RaspberryPI к вашему Wi-Fi
Теперь, когда образ ОС записан на SD-карту, нужно добавить пару файлов, которые позволят получить Wi-Fi доступ к RaspberryPI. Вставьте SD-карту обратно в компьютер и перейдите в соответствующий каталог в проводнике или Finder. Создайте пустой текстовый файл с именем ssh, но удалите расширение имени файла, чтобы получить файл с именем ssh. Если вы не видите .txt в конце, возможно, вам придется включить расширения имен файлов. Для этого откройте проводник, затем нажмите «Просмотр» в верхней части окна, а затем установите флажок «Расширения имени файла» в правом верхнем углу.
Следующий файл будет использоваться RaspberryPi, чтобы узнать, какая сеть принадлежит пользователю и как к ней подключиться. Создайте новый текстовый файл в каталоге SD-карты с именем wpa_supplicant.txt. Вставьте следующие строки текста в этот файл и замените «WIFI_SSID» своим сетевым именем, а «WIFI_PASSWORD» своим сетевым паролем, затем сохраните его. Теперь замените расширение файла txt на conf.
Шаг пятый: SSH в RaspberryPI
Доступ по SSH
Теперь, когда RaspberryPI готов к подключению к сети, включите его, подключив порт micro-usb с надписью «PWR» к ноутбуку. Обратите внимание, что RaspberryPI — это устройство работающее на частоте 2,4 ГГц. Эо значит, что если у вас есть сеть только с частотой 5 ГГц, вы не сможете подключиться к RaspberryPI по беспроводной сети. Впрочем, большинство сетей имеют диапазон 2,4 ГГц и 5 ГГц. Затем нужно будет выяснить IP-адрес Raspberry PI, просканировав все устройства в сети. Откройте Angry IP Scanner и просканируйте свою сеть, нажав кнопку запуска в правом верхнем углу. У вашего RaspberryPI должно быть имя хоста raspberrypi, поэтому найдите это устройство в списке и запишите IP-адрес. Теперь, когда у вас есть IP-адрес, откройте PuTTY.
Обновление RaspberryPI
Дальше появится окно с надписью «log-in». Имя пользователя по умолчанию — «pi», а пароль — «raspberry».
Как и в случае с любым новым RaspberryPI, нужно сначала сделать некоторые обновления. По очереди введите эти команды в терминал.
Включение графического интерфейса
Прежде чем включить графический интерфейс, нужно изменить имя хоста. Введите sudo raspi-config, после чего откроется новое окно. Используя клавиши со стрелками, перейдите ко второму варианту и нажмите Enter, затем введите новое имя хоста. Не выходя из этого окна, также нужно включить SSH-сервер, поэтому перейдите в «Interfacing options», затем прокрутите вниз до места, где написано SSH, нажмите Enter. Нажмите «finish» и перезагрузитесь. Теперь SSH включен и готов к использованию.
Просмотр графического интерфейса
Теперь можно получить доступ к графическому интерфейсу. Закройте этот сеанс Putty и перейдите на удаленный рабочий стол. Нажмите «add» в правом верхнем углу, затем «Desktop» и введите IP-адрес RaspberryPI. Пока RaspberryPI включен, щелкните вкладку с IP-адресом, и устройство получит беспроводной доступ к рабочему столу графического интерфейса.
Шаг шестой: загрузка пакетов и музыки
Несмотря на то, что Python предустановлен на RaspberryPI, все же нужно установить некоторые библиотеки, необходимые для очков. Ниже приведены команды для установки всех пакетов, не включенных в первоначальную установку Python. Введите их один за другим в редактор оболочки.
Теперь нужно загрузить несколько музыкальных файлов на RaspberryPI. Сначала загрузите эту песню и конвертируйте ее в формат wav с помощью онлайн — конвертера . Теперь переименуйте его в «Imagine.mp3» и скопируйте на рабочий стол RaspberryPi. Хотя вы можете скачать любую понравившуюся песню, просто убедитесь, что вы сохранили ее на рабочем столе в формате wav и изменили имя в коде так, чтобы оно совпадало с именем файла.
Шаг седьмой: подключение беспроводных наушников
Чтобы получить данные от пользователя и обеспечить обратную связь, необходимо подключить беспроводные наушники к RaspberryPI. Есть несколько способов сделать это и мастер расскажет о двух. Если первый метод не сработает, всегда можно попробовать второй вариант.
Первый метод
Этот метод, безусловно, самый простой. Сначала убедитесь, что ваши bluetooth-наушники находятся в режиме сопряжения. Далее щелкните значок Bluetooth в правом верхнем углу экрана и выберите вкладку с надписью GS. Если устройства соединились, вы должны увидеть зеленую галочку в этом меню, а светодиодный индикатор должен перестать мигать.
Второй метод
Сначала нужно инициализировать агент Bluetooth. По очереди введите эти команды в редактор оболочки.
[/spoiler]
Переведите наушники в режим сопряжения, удерживая кнопку питания. Теперь введите эту команду.
Во время сканирования вы должны увидеть MAC-адрес вашей гарнитуры. Если вы не знаете, какой у вашего устройства MAC-адрес, мастер рекомендует подключить ее сначала к телефону, где он должен отображаться в настройках беспроводного устройства. После того, как вы увидите свой MAC-адрес, введите команду ниже.
Дальше введите команды ниже в редактор, заменив звездочку на MAC-адрес вашего устройства.
Шаг восьмой: текст-речь
Умные очки будут передавать информацию в основном через чат-бота. Чат-бот будет работать с так называемой библиотекой преобразования текста в речь, которая просто принимает обычную строку ввода или текст и преобразует их в файл MP3. Изначально мастер хотел использовать библиотеку pyttsx3 для управления чат-ботом, но она не сработала. После небольшого исследования он обнаружил другой речевой движок, Espeak.
Чтобы загрузить его, откройте редактор и введите следующую команду.
Чтобы протестировать Espeak, нужно ввести некоторый текст.
Введите следующую строку в редактор оболочки, и вы должны услышать речь.
Примечание: везде, где вы видите «XX: XX: XX: XX: XX: XX», замените его MAC-адресом вашей беспроводной гарнитуры.
Сам по себе Espeak имеет довольно роботизированный звук, но имеет ряд настроек тон, пол, скорость и многое другое. Ниже приведены несколько модификаций, которые вы можете внести, но если вы хотите получить полный список, перейдите по этой ссылке .
-ven
Задает язык. Измените en на аббревиатуру того языка, который вам нужен.
-f
озвучивает текстовый файл
-a
Установить амплитуду, диапазон 0-200.
-s
Изменяет скорость. Нижний предел 80.
-g
Увеличивает паузу между словами на 10 мс.
-f3
Устанавливает третий женский голос. Есть десять вариантов, пять мужских и пять женских. (например, m1, f2 . )
Шаг девятый: фото\видео
Еще одна из замечательных функций умных очков — это съемка видео и фотографий. Фотографировать с помощью RaspberryPI очень просто. Все, что вам нужно сделать, это подключить камеру к разъему ленточного кабеля. Чтобы сделать снимок, нужно включить камеру. Щелкните значок RaspberryPI в верхнем левом углу и прокрутите вниз до preferences->Raspberry PI Configuration->Interfaces. В меню есть флажок подключения камеры. Дальше нужно ввести команду sudo reboot и перезагрузиться.
Дальше откройте редактор оболочки и введите следующую команду:
После нажатия кнопки ввода светодиодный индикатор камеры должен загореться на несколько секунд, после чего изображение с именем Image.jpg будет сохранено в каталоге / home / pi.
Шаг десятый: экран
Наконец, мы добрались до одной из самых крутых частей умных очков — прозрачного OLED экрана. На нем будет отображаться информацию для пользователя, такая как время, температура и просто общая информация. Как говорилось ранее, этот дисплей будет работать через I2C и библиотеку python luma.core . По умолчанию I2C не включен, поэтому нужно его включить. Перейдите в то же место, где вы включили модуль камеры, включите I2C и перезагрузитесь.
Теперь нужно припаять провода от дисплея к RaspberryPi. Мастер рекомендует температуру пайки 725 ° F / 385 ° C. Не забудьте выключить RaspberryPi и отсоединить все периферийные устройства.
OLED — RaspberryPI
GND-GND
3v3-3v3
SDA-GPIO_2 (SDA)
SCL-GPIO3_ (SCL)
Шаг одиннадцатый: загрузка кода
Теперь, когда RaspberryPI, прозрачный дисплей и камера настроены и работают, можно приступить к коду. Ниже приведена аннотация и сам код.
# 1 Импорт библиотек
Это библиотеки, которые мы установили ранее в этом руководстве, поэтому все, что вам нужно сделать, это скопировать код.
# 2 AppID и токены авторизации
Здесь все наши App_ID и токены учетных записей, а также некоторые другие переменные. Замените контактные номера и имена людьми, которым вы хотите отправить SMS. Поместите все ваши идентификаторы приложений и токены аутентификации, полученные на третьем шаге, в указанные места.
# 3 Функции
В этом разделе мы определяем множество задач для отображения, которые было бы довольно утомительно печатать каждый раз. Здесь также определяется и инициируется последовательность запуска.
# 4 Операторы while и if
Это циклическая часть кода, которая бесконечно повторяется, пока вы не будет отдана команда «exit program». Более детально изучив этот раздел, мы увидим, что очки могут сообщать вам новости, отправлять SMS, определять время, делать снимки, снимать видео и воспроизводить музыку на основе триггерных слов внутри условия if-statement.
# 5 Поиск
Если вы не произнесли ни одного триггерного слова, программа будет искать все, что вы сказали, в Wolfram, но если это не удастся, она выполнит поиск в Википедии и даст краткое изложение.
Прежде чем пытаться выполнить код, убедитесь, что ваши беспроводные наушники подключены. Если все пойдет хорошо, дисплей должен включиться, и чат-бот спросит, что вы от него хотите. Он будет слушать ваш ответ всякий раз, когда присутствуют три точки в нижней части экрана. Ниже приведен полный список команд. Когда вы закончите, просто скажите «exit program (Выйти из программы)» и нажмите выключатель питания.
Команды
news — чат-бот сообщит вам три главных заголовка из Новостей Google.
exit program — остановит скрипт, а затем все, что вам нужно сделать, это щелкнуть переключателем.
SMS — любое сообщение будет отправлено тому, кому вы скажете.
Time — время.
Picture — сделает снимок и загрузит его в вашу учетную запись Dropbox.
Play my music — будет воспроизводиться первая песня в списке, а по окончании вас спросят, не хотите ли вы воспроизвести следующую.
Video — запишет 30 секунд видео, а затем преобразует его из формата h264 в формат MP4.
Шаг четырнадцатый: тест
Теперь нужно протестировать умные очки. Сначала включите RaspberryPi, щелкнув выключателем питания. Вы должны увидеть тусклый зеленый и красный свет внутри правого наушника. Дальше включите беспроводные наушники, которые должны подключиться автоматически. Наконец, откройте редактор оболочки и введите команду:
Эта команда запустит скрипт. После короткой задержки запуска включится прозрачный OLED дисплей, и чат-бот начнет говорить. Не стесняйтесь задать ему несколько тестовых вопросов, например, какие новости, сколько времени, отправить SMS или включить мою музыку!
Шаг пятнадцатый: устранение неполадок
Проблемы с установкой xrdp
Эта проблема может возникнуть, если вы уже пытались установить ее раньше. Чтобы исправить, откройте редактор оболочки и введите:
Проблемы с фотографией
Если вы не смогли сделать снимки с помощью команды «raspistill», возможно не внесены изменения в raspi-config. Проверьте это кликнув RaspberryPI в верхнем левом углу и перейдите к preferences->Raspberry PI Configuration->Interfaces. Убедитесь, что флажок рядом с камерой с надписью «включить» установлен. После этого перейдите в редактор оболочки и введите sudo reboot.
Источник