Превращаем дисковый телефон в цифрового помощника с использованием Google Assistant и Raspberry Pi


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

    Речь идет о преобразовании телефона в цифрового секретаря, который всегда готов прийти на помощь. Для реализации проекта нужна плата Raspberry Pi Zero и подключение к Google Assistant. Ну а теперь — подробнее о проекте.

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


    Чуть подробнее о необходимых компонентах


    Нам понадобится:
    • Raspberry Pi Zero с запаянными пинами, карта памяти с Raspberry Pi OS и адаптер питания.
    • Старый дисковый телефон с работающей трубкой (микрофоном и динамиком) и работающим рычажным переключателем, который придется кастомизировать.
    • Разного рода кабели, паяльник, отвертки и прочие мелочи.
    • 1 USB audio адаптер, совместимый с Linux.
    • 1 male-male 3.5 мм аудио кабель.
    • 1 Raspberry Pi Zero micro USB to USB A адаптер.

    Как установить Google Assistant на старый телефон


    Здесь несколько этапов работы:
    • Регистрация в Google (самое простое).
    • Аутентификация с Google (тоже несложно).
    • Кастомизация телефона.
    • Настройка помощника Google.

    Регистрация в Google


    Речь, конечно же, не о простой регистрации аккаунта в сервисах компании, а о регистрации с raspberry pi. Этот этап может быть немного сложным для тех, кто никогда не работал с Google Cloud Platform, так что лучше прочитать этот пункт, дабы не терять время. Если вы все знаете — его можно и пропустить.

    Клонируем репозиторий на «малинку».

    cd ~/
    git clone https://github.com/rydercalmdown/google_assistant_telephone


    Открываем console.actions.google.com в браузере. Здесь расположен центр управления Google Assistant Actions.

    Выбираем «новый проект» и заполняем появлющиеся поля.


    В новой вкладке подтверждаем имя проекта и выбираем «Enable» для включения API.


    Далее на первой вкладке пролистываем страничку до конца и выбираем “Are you looking for device registration? Click here”


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


    Выбираем «Download OAuth 2.0 credentials» для того, чтобы загрузить соответствующий файл, который «малинка» будет использовать для формирования запросов.


    Переименовываем загруженный файл в oauth_config_credentials.json и передаем его на Raspberry Pi. Разместить его нужно в папку скопированного репозитория, загруженного в самом начале.

    # Rename your downloaded file
    cd ~/Downloads
    mv your_unique_secret_file_name.json oauth_config_credentials.json
    # Move the file into your repository
    scp oauth_config_credentials.json pi@your_pis_ip_address:/home/pi/google_assistant_telephone


    Возвращаемся к браузеру. После загрузки и переименования нажимаем «Next» и выбираем “Save Traits”, не изменяя настроек.


    Аутентификация с Google


    После того, как регистрация закончена, самое время аутенифицировать девайс для возможности доступа к аккаунту Google и персонализации помощника.

    Открываем ссылку console.cloud.google.com/apis/credentials/consent и проверяем, чтобы имя проекта, заданное выше, совпадало с отображаемым по ссылке.

    Выбираем “External” и нажимаем “Create”


    Заполняем поле с названием, выбираем из выпадающего списка почту и добавляем этот e-mail в поле “Developer contact information” и сохраняем все.


    На следующей странице выбираем «Add or Remove Scopes» и ищем в поисковой строке “Google Assistant API”. Выбираем /auth/assistant-sdk-prototype scope, обновляем путем нажатия на «upfate» и сохраняем все.


    Затем выбираем “OAuth Consent Screen” и “Add User”, добавляя свою почту.


    Теперь переходим в папку загруженного репозитория на Raspberry Pi и запускаем команду:

    cd ~/google_assistant_telephone
    make authenticate


    Она завершает процесс аутентификации, после чего нужно скопировать полученный код в консоль. Если все хорошо, то появится сообщение “credentials saved:”

    Эти данные требуются для перехода в текущую аудиторию.

    # credentials saved: /Users/test/Library/Application Support/google-oauthlib-tool/credentials.json
    mv /Users/test/Library/Application\ Support/google-oauthlib-tool/credentials.json /home/pi/google/assistant/telephone/credentials.json


    Кастомизируем телефон


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

    В любом случае телефон сначала нужно разобрать.


    Далее находим провода, которые идут к рычажковому переключателю. Их нужно будет подключить к пинам «малинки», чтобы плата могла определять, снята трубка или нет.


    Провода нужно припаять к 18 пину и к «земле».

    Далее подключаем USB аудио адаптер к raspberry pi zero, после чего припаиваем к проводам трубки два разных 3,5мм провода. Они будут передавать сигнал от Raspberri Pi к трубке и обратно. Возможно, придется повозиться, определяя, где какой провод, но в целом здесь нет ничего сложного.


    Заканчиваем кастомизацию телефона, подключая 3,5мм провода к адаптеру.


    Остается лишь закрыть корпус телефона, не забыв вывести кабель питания «малинки».


    Настройка помощника


    Осталось совсем немного — настраиваем помощника и все. Здесь тоже несколько шагов.

    Запускаем установочный скрипт. Это займет не один час, если вы используете Raspberry Pi Zero. Лучше всего запустить все вечером и оставить на ночь.

    cd google_assistant_telephone
    make install


    Настраиваем USB-аудио. Для этого нужна всего одна команда.

    make configure-audio

    Теперь тестируем аудиоадаптер.

    # Run, speak something into the microphone, and listen
    make test

    # Set volumes
    alsamixer


    Экспортируем ID проекта. Можно просто зайти вот по этой ссылке и выбрать
    “Project Settings”

    export PROJECT_ID=your-project-id

    Экспортируем ID

    export DEVICE_MODEL_ID=your-model-id-from-the-earlier-steps

    Теперь выполняем команду

    make run

    После чего тестируем телефон. Это просто — поднимаем трубку и задаем любой вопрос помощнику. Если все ок, консоль покажет определенное действие, а помощник ответит.

    Наконец, выполняем команду ниже для запуска помощника.

    make configure-on-boot

    Больше подробностей — на страничке самого проекта.

    Selectel
    IT-инфраструктура для бизнеса

    Комментарии 7

      +1
      У меня для похожей поделки лежит красный без дисковый, как тут image
      Но хочется в 1 очередь SIP звонилку по именам, чисто понты :)
        0
        Эм, а чем оно лучше обычной колонки с голосовым помощником типа Яндекс станции? Ладно бы по этому телефону позвонить можно было, а так бесполезная штука, на мой взгляд, если у пожилого человека такая степень деменции, что он не может пользоваться колонкой, а только таким аппаратом — ему нужно в специализированное учреждение, одного его оставлять нельзя.
          +2
          Да никто и не говорит, что оно лучше (возможно, и хуже, поскольку телефону с опущенной трубкой не прикажешь включить музыку или выключить свет). Просто интересный гиковский проект.
          +1
          Ну вот, возвращаемся в первую половину 20 века, когда телефоны обслуживали телефонистки: «Алло, девушка, будьте добры Смольный. Жду.» История ходит кругами.
            +4
            Т.е. номеронабиратель остался незадействованным? Это печально — это же самая интересная часть. А для проекта чисто с «голосом» лучше тогда использовать совсем старые телефоны без диска, но с «генератором»:
            image
              +1
              Курочить музейные экспонаты, чтобы вкрячить туда raspberry…
              +1
              Ребят, вы делаете перевод-компиляцию статьи и выдаёте как авторский материал. Тем самым снижая интерес читателей к хабру. Вы не производите свой контент, не делаете официальный перевод, а просто осуществляете рерайт чужих статей, набивая себе рейтинг. Это как-то не спортивно что ли.
              Если вы делаете перевод: ставьте пожалуйста, что это перевод!

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

              Самое читаемое