Arduino Yun: сигнализация с SMS-уведомлением (HC-SR04 + Twilio + Temboo)
Компоненты и материалы
| Компонент | Количество |
|---|---|
| Arduino Yun (или Leonardo + WiFi Shield) | 1 |
| Ультразвуковой дальномер HC-SR04 | 1 |
| Батарея 9V с коробкой и выключателем | 1 |
| Перемычки (4 шт.) | 1 набор |
| Мини-макетная плата (по желанию) | 1 |
Сервисы (облако)
- Temboo — платформа для упрощения работы с API (здесь: отправка SMS через Twilio).
- Twilio — облачная платформа связи (SMS, голос). Нужен аккаунт, номер телефона отправителя, Account SID, Auth Token.
Принцип работы
- HC-SR04 постоянно измеряет расстояние до ближайшего объекта.
- Если расстояние меняется резко (объявленный "взлом" — объект появился/исчез в зоне 20–1100 дюймов), Arduino Yun через WiFi подключается к Temboo.
- Temboo вызывает Choreo
/Library/Twilio/SMSMessages/SendSMSс вашими учётными данными. - Twilio отправляет SMS на ваш номер: "Intruder Detected!!!!!!".
Пошаговая инструкция
Шаг 1: Подключение и тест датчика
Схема: VCC -> 5V, GND -> GND, Trig -> D2, Echo -> D4.
Загрузите тестовый скетч IntruderDectectorTEST (см. код ниже). Откройте Serial Monitor (9600 baud). Вы увидите расстояние в дюймах. При срабатывании — надпись "Intruder Detected!".
Шаг 2: Подключение Yun к WiFi
Инструкция: официальная страница Arduino Yun. Проверьте подключение сканированием сети (например, программой LanScan на Mac).
Шаг 3: Добавление SMS-функционала (Temboo + Twilio)
- Создайте аккаунты на Temboo и Twilio.
- В Twilio получите: Account SID, Auth Token (показать замком), номер отправителя (From).
- В Temboo: Applications → получите Account Name, App Key Name, App Key.
- В Arduino IDE: создайте вкладку
TembooAccount.hи вставьте туда данные Temboo (см. пример на сайте автора). - В основном скетче вставьте свои Twilio-данные в строки
SendSMSChoreo.addInput(...).
Шаг 4: Настройка порогов срабатывания
В условии if (inches < 20 || inches > 1100) подберите значения под вашу комнату. Тестируйте без отправки SMS (тестовым скетчем), чтобы не потратить бесплатные лимиты Temboo/Twilio.
Шаг 5: Запуск
Питание от 9V батареи. Serial Monitor покажет "Patrol Mode Initiated...". При срабатывании — отправка SMS (макс. 5 раз по умолчанию, затем нужен перезапуск).
Код (основные версии)
Тестовый скетч (без SMS)
#include <SoftwareSerial.h>
int trigPin = 2, echoPin = 4;
long duration, inches;
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
delay(5000);
Serial.println("Patrol Mode Initiated...");
}
void loop() {
digitalWrite(trigPin, LOW); delayMicroseconds(1);
digitalWrite(trigPin, HIGH); delayMicroseconds(2);
digitalWrite(trigPin, LOW);
pinMode(echoPin, INPUT);
duration = pulseIn(echoPin, HIGH);
inches = (duration / 2) / 74;
Serial.println(inches);
if (inches < 20 || inches > 1000) {
Serial.println("Intruder Detected!");
Serial.println("Sending text Notification...");
delay(5000);
Serial.println("Patrol Mode Initiated...");
}
}
Полный скетч с SMS (Temboo + Twilio)
#include <Bridge.h>
#include <Temboo.h>
#include "TembooAccount.h"
#include <SoftwareSerial.h>
int numRuns = 1, maxRuns = 5;
int trigPin = 2, echoPin = 4;
long duration, inches;
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
delay(5000);
Bridge.begin();
Serial.println("Patrol Mode Initiated...");
}
void loop() {
digitalWrite(trigPin, LOW); delayMicroseconds(1);
digitalWrite(trigPin, HIGH); delayMicroseconds(2);
digitalWrite(trigPin, LOW);
pinMode(echoPin, INPUT);
duration = pulseIn(echoPin, HIGH);
inches = (duration / 2) / 74;
Serial.println(inches);
if (inches < 20 || inches > 1100) {
Serial.println("Intruder Detected!");
Serial.println("Sending text Notification...");
if (numRuns <= maxRuns) {
Serial.println("Running SendSMS - Run #" + String(numRuns++));
TembooChoreo SendSMSChoreo;
SendSMSChoreo.begin();
SendSMSChoreo.setAccountName(TEMBOO_ACCOUNT);
SendSMSChoreo.setAppKeyName(TEMBOO_APP_KEY_NAME);
SendSMSChoreo.setAppKey(TEMBOO_APP_KEY);
SendSMSChoreo.addInput("AuthToken", "ВАШ_TWILIO_AUTH_TOKEN");
SendSMSChoreo.addInput("To", "+ВАШ_НОМЕР_ПОЛУЧАТЕЛЯ");
SendSMSChoreo.addInput("From", "+ВАШ_TWILIO_НОМЕР");
SendSMSChoreo.addInput("Body", "Intruder Detected!!!!!!");
SendSMSChoreo.addInput("AccountSID", "ВАШ_TWILIO_ACCOUNT_SID");
SendSMSChoreo.setChoreo("/Library/Twilio/SMSMessages/SendSMS");
SendSMSChoreo.run();
while(SendSMSChoreo.available()) {
char c = SendSMSChoreo.read();
Serial.print(c);
}
SendSMSChoreo.close();
}
Serial.println("Waiting...");
delay(10000);
Serial.println("Patrol Mode Initiated...");
}
}
Схема подключения
Файл: schematic.png (в разделе Schematics). HC-SR04: VCC-5V, GND-GND, Trig-D2, Echo-D4. Yun питается от 9V через Vin/GND или USB.
Важные примечания
- Бесплатные аккаунты Temboo и Twilio имеют лимиты вызовов/сообщений. Не тестируйте отправку SMS в цикле.
- Arduino Yun требует настройки Linux-части (OpenWrt) для WiFi. Leonardo + WiFi Shield — альтернатива.
- Для постоянной работы лучше использовать блок питания 5V/1A вместо батареи.
- Код можно адаптировать для других плат с WiFi (ESP8266, ESP32) и прямых HTTP-запросов к Twilio API без Temboo.
Производственный процесс
- Интеграция данных сенсоров в Raspberry Pi: практическое руководство
- Датчик слежения за линией на Raspberry Pi — простой детектор двери/линии KY‑033
- Построение надёжного Temperature & Sensor API на Raspberry Pi с модулем GY‑91
- Надёжный домашний мониторинг с Home Assistant на Raspberry Pi: движение, алермы и видеозахват
- Создание headless сигнализации утечки воды на Raspberry Pi 2 с Adafruit T‑Cobbler Plus
- Подключение ультразвукового датчика HC-SR04 к Raspberry Pi — практическое руководство
- Создайте автоматизированную аэропоническую систему с Raspberry Pi и датчиком влажности
- Мастерство GPIO Raspberry Pi: подключение PIR-датчика движения на B+/Model 2
- Интеграция импульсного радара Acconeer A111 с Raspberry Pi: практическое руководство
- Подключение, калибровка и программирование PIR-датчика HC‑SR501 с Raspberry Pi