Управление контактами Raspberry Pi из приложения Telegram


Telegram является, пожалуй, оптимальным приложением для объединения возможностей платы Raspberry Pi и мобильного телефона (смартфона). Приложение Telegram также непрерывно и активно развивается, в него постоянно добавляются новые возможности, что делает его еще более привлекательным для использования в электронных проектах вместе с платой Raspberry Pi и другими аналогичными платами. В предыдущем проекте мы рассмотрели использование Telegram бота совместно с Raspberry Pi для передачи файлов и сообщений.

Внешний вид проекта управления контактами Raspberry Pi из приложения Telegram

В этой же статье мы рассмотрим вопросы управления контактами ввода/вывода (GPIO pins) платы Raspberry Pi с помощью приложения Telegram, точнее – бота данного приложения. Мы подключим к контактам платы Raspberry Pi светодиоды и будем управлять их состоянием (включать/выключать) с помощью обычных фраз (на человеческом языке) из приложения Telegram. Для лучшего понимания данного проекта рекомендуем ознакомиться со статьей про использование Telegram бота с платой Raspberry Pi.

Необходимые компоненты

  1. Плата Raspberry Pi (купить на AliExpress), подключенная к сети интернет.
  2. Запущенное на смартфоне приложение Telegram.
  3. Светодиод (любого цвета) – 4шт. (купить на AliExpress).
  4. Макетная плата.
  5. Соединительные провода.

Схема проекта

Схема для управления контактами Raspberry Pi из приложения Telegram представлена на следующем рисунке.

Схема для управления контактами Raspberry Pi из приложения TelegramКак видите все, что нужно сделать в схеме, это подключить 4 светодиода к контактам платы Raspberry Pi. Токоограничивающие резисторы в данном случае можно не использовать поскольку контакты платы Raspberry Pi работают на логике 3.3V TTL. В следующей таблице представлена схема подключения светодиодов к контактам платы Raspberry Pi.

Вывод светодиода Pin Number GPIO Number
Green Anode Pin 31 GPIO 6
Red Anode Pin 33 GPIO 13
Yellow Anode Pin 35 GPIO 19
White Anode Pin 37 GPIO 26
Катоды всех светодиодов Pin 39 Ground

После сборки проекта на макетной плате у вас должна получиться конструкция примерно следующего вида:

Собранная на макетной плате конструкция проекта

Объяснение программы для Raspberry Pi

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

В программе нам необходимо считывать данные, передаваемые ботом приложения Telegram и в соответствии с ним включать/выключать светодиоды в схеме. Чтобы сделать проект более "человеческим", мы в программе на Python будем непосредственно анализировать слова (фразы), получаемые от Telegram.

Основными в данном случае будут слова "on" или "off", которые будут обозначать включение или выключение светодиода соответственно. После того, как мы обнаружим одно из данных слов, нам необходимо будет смотреть еще такие слова как white, yellow, green и red. Мы будем переключать состояние соответствующего светодиода только если обнаружим одно из данных слов. Также мы будем обновлять строку из обнаруженных строк, чтобы передать ее обратно Telegram боту.

Чтобы наша программа заработала, нам необходимо скачать библиотеку teleport и импортировать ее в Raspberry Pi. Эти процессы мы подробно рассмотрели в предыдущей статье по данной тематике.

В нашей программе мы с помощью команд, поступающих от приложения Telegram, будем управлять состоянием светодиодов разных цветов: White (белый), Yellow (желтый), Red (красный) и Green (зеленый). Введем соответствующие обозначения в программе для контактов, к которым они подключены.

Далее в программе нам необходимо инициализировать эти контакты в качестве цифровых выходов и по умолчанию подать на них логический 0 (выключить светодиоды).

Также как и в предыдущей статье все необходимые действия для приема и анализа сообщений от Telegram бота будут производиться в функции action. В этой функции мы будем принимать сообщения со смартфона, сравнивать их с заранее определенными фразами (словами) и переключать состояние соответствующих светодиодов.

Для каждого сообщения, принимаемого со смартфона, мы будем назначать идентификатор (chat id) и сохранять текст сообщения. Идентификатор (chat id) будет необходим чтобы передавать ответ приложению.

То есть все сообщения, принимаемые со смартфона, будут сохраняться в соответствующих строковых переменных (строках). Далее нам необходимо будет проверить эти строки на наличие ключевых слов. В языке Python это делается весьма просто. К примеру, если мы хотим проверить строку на наличие в ней слова “on”, то это можно сделать с помощью следующей команды:

Аналогичным образом мы можем проверить строку на наличие и других необходимых нам слов. К примеру, если мы обнаружили в строке слово “on”, то нам необходимо проверить строку на наличие в ней указания цвета. Также мы производим обновление строки чтобы передать ее обратно смартфону.

Как показано в представленном фрагменте кода, мы анализируем строку на наличие в ней слов ‘green’, ‘white’, ‘red’, ‘yellow’ и ‘all’ и в ответное сообщение добавляем фразу ‘Turned on’, к которой мы потом добавляем цвет включенного светодиода. Сформированное таким образом сообщение мы передаем обратно на смартфон. Аналогичная последовательность действий применяется и при выключении светодиодов.

Тестирование работы проекта

Подключите светодиоды к плате Raspberry Pi как показано на ранее представленной схеме и запустите программу на python. Убедитесь в том, что в программе вы изменили код доступа/токена (Token address) бота на свой. После этого вы можете печатать команды в боте по своему желанию. К примеру, для того, чтобы включить светодиоды красного и желтого цветов, вы можете использовать одну из следующих команд:

1. Turn on Red and Yellow Light
2.Switch on Red and Yellow colour right
3.On red and yellow
4.Please put on the yellow and red light

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

Тестирование работы проекта

Команды, подаваемые с помощью Telegram бота

Таким образом, вы можете управлять контактами платы Raspberry Pi из любой точки земного шара, где есть доступ к сети интернет. Аналогичным образом вы можете подключить к контактам платы Raspberry Pi реле, с помощью вы можете управлять какими-нибудь домашними устройствами: кондиционер, водонагреватель, вентилятор и т.д., и, таким образом, реализовать проект автоматизации дома. В этом случае вы сможете управлять своими домашними устройствами с помощью приложения Telegram, установленного на вашем смартфоне.

Исходный код программы на Python

Видео, демонстрирующее работу проекта

Источник статьи

(Проголосуй первым!)
Загрузка...
621 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *