Прием телефонных вызовов на Arduino UNO через Twilio и Yaler
Компоненты и материалы
- Arduino UNO — 1 шт.
- Ethernet Shield для Arduino — 1 шт.
- Аналоговый датчик температуры (например, TMP36) — 1 шт.
- Провода, макетная плата, USB-кабель, Ethernet-кабель
О проекте
Проект демонстрирует, как заставить Arduino принимать телефонные вызовы и сообщать данные датчика (температуру) голосом. Используются два облачных сервиса:
- Twilio — облачная телефония (REST API). При звонке на номер Twilio запрашивает у Arduino XML-документ (TwiML) с текстом для озвучки.
- Yaler.net — релейный сервис, предоставляющий публичный HTTP-доступ к устройству за NAT/фаерволом/мобильным роутером. Twilio обращается к Arduino через Yaler.
В качестве примера используется датчик температуры, но можно подключить любой другой. Реальный кейс — дистанционная проверка состояния датчиков (например, детектор дыма Canary/Birdi).
Шаг 1: Подключение датчика
Установите Ethernet Shield на Arduino. Подключите TMP36: питание 5V, земля, сигнал на аналоговый вход A0. (Подробнее: Adafruit TMP36 guide). Учтите, что Ethernet Shield занимает некоторые пины.
Шаг 2: Установка библиотеки Yaler
Следуйте инструкции на yaler.net/arduino (три шага). Зарегистрируйтесь на yaler.net для бесплатного тестового аккаунта, запишите relay domain (секретный ключ не нужен).
Шаг 3: Программирование Arduino
Скачайте исходник TwilioYalerWebService.ino с Bitbucket:
https://bitbucket.org/tamberg/iotworkshop/raw/default/Arduino/TwilioYalerWebService/TwilioYalerWebService.ino?at=default
Откройте в Arduino IDE. Программа реализует простой веб-сервер, отвечающий XML-документом на любой HTTP-запрос (путь / или /voice.xml).
- MAC-адрес: сделайте его уникальным (например, возьмите MAC компьютера и увеличьте последнюю цифру на 1).
- Relay domain: замените
RELAY_DOMAINв строке:YalerEthernetServer server("try.yaler.net", 80, "RELAY_DOMAIN");Например:YalerEthernetServer server("try.yaler.net", 80, "gsiot-ffmq-ttd5"); - Сохраните, загрузите в Arduino. Держите USB подключенным, откройте Serial Monitor для отладки.
Шаг 4: Доступ к Arduino из интернета
Arduino становится доступен по адресу https://ВАШ_RELAY_DOMAIN.try.yaler.net/ (или /voice.xml). Откройте в браузере — должно отдаваться XML с температурой. Нагрейте датчик, обновите страницу (F5) — значение изменится.
При проблемах проверьте Ethernet-кабель и yaler.net/browser для диагностики.
Шаг 5: Настройка номера Twilio
- Зарегистрируйтесь на twilio.com.
- Купите номер с поддержкой голосовых вызовов (Voice) в разделе Numbers → Manage Numbers → Buy a number.
- В настройках купленного номера (Manage Numbers → клик по номеру) установите Response URL =
https://ВАШ_RELAY_DOMAIN.try.yaler.net/voice.xml, метод POST.
Шаг 6: Тестовый звонок
Всё готово! Звоните на купленный номер с любого телефона — Arduino ответит голосом Алисы (TTS Twilio) с текущей температурой.
Проект показывает, как модульные облачные сервисы (HTTP, Webhooks) позволяют строить простые и надежные IoT-решения. Спасибо за внимание! @tamberg
Схема
Производственный процесс
- Антиперспиранты/дезодоранты-стики: наука, история и производственные инсайты
- Открыватель гаражных ворот на Raspberry Pi с живой видео-трансляцией — пошаговое руководство
- Высокое разрешение 3D визуализация карандашоподобных GaN/(In,Ga)N ядро-оболочечных нанонитей электронной томогра…
- Сборка Bluetooth-робота-шпиона на Arduino с управлением с телефона
- FlickMote: жестовое IR-пульт для умного дома на Arduino 101 и ультразвуковом датчике
- DIY Arduino TV-B-Gone: универсальный пульт для выключения любого телевизора
- Прием телефонных вызовов на Arduino UNO через Twilio и Yaler
- Создание пользовательских LED-часов с будильником — видно с 12 метров
- Find Me: Умный поисковик вещей на Arduino и Bluetooth
- Создание сильного бизнес-кейса для CMMS: повышение эффективности ТО и ROI