Удалённая кнопка SMS-уведомлений на Sigfox и Twilio
Компоненты и материалы
| Компонент | Количество |
|---|---|
| Arduino MKR Fox 1200 | 1 |
Приложения и сервисы
- Sigfox (глобальная сеть IoT)
- Twilio SMS Messaging API
О проекте
Введение
Все слышали про кнопку Трампа для заказа Diet Coke? Мы решили сделать улучшенную версию на сети Sigfox. Нужен: крупная кнопка, Arduino MKRFox1200, аккаунт Twilio для отправки SMS.
Что такое Sigfox? Глобальная, простая и энергоэффективная сеть для IoT. Доступна в 32 странах. Дополняет высокоскоростные сети, обеспечивая дешёвую двухстороннюю передачу малых объёмов данных на большие расстояния. Поддерживается сотнями партнёров.
1. Аппаратные требования
- Arduino MKRFox1200
- Крупная кнопка
- LiPo аккумулятор или 2×AA/AAA батареи
- Таковая кнопка (pushbutton)
- Наклейка thethings.io
- Маска Трампа (для атмосферы)
Кнопка подключена к пинам 7 и GND. В нормальном состоянии контакты замкнуты, при нажатии — размыкаются. Логику можно инвертировать в коде.
2. Код Arduino
Полный код на GitHub: github.com/aureleq/TrumpButton
Используется библиотека низкого потребления для глубокого сна. Прерывание пробуждает плату и отправляет сообщение в Sigfox:
const uint8_t SWITCH_PIN = 7;
const String payload = "COKE NOW!";
const uint8_t debug = false;
void setup() {
if (debug) { Serial.begin(9600); while (!Serial); }
if (!SigFox.begin()) { Serial.println("Shield error!"); return; }
SigFox.end(); // глубокий сон
pinMode(SWITCH_PIN, INPUT_PULLUP);
LowPower.attachInterruptWakeup(SWITCH_PIN, buttonPressed, RISING);
}
void loop() {
LowPower.sleep(); // спим до прерывания
Serial.println("Button pushed!");
delay(100);
sendString(payload);
}
void sendString(String str) {
SigFox.begin();
delay(100);
SigFox.status();
delay(1);
SigFox.beginPacket();
SigFox.print(str);
int ret = SigFox.endPacket();
if (ret > 0) Serial.println("No transmission");
else Serial.println("Transmission ok");
SigFox.end();
}
void buttonPressed() { } // обработчик прерывания
3. Настройка Twilio
- Зарегистрируйтесь бесплатно на twilio.com.
- Добавьте номер получателя в «Verified Caller IDs».
- Запишите: Phone Number, Account SID, Auth Token.
4. Настройка Callback в Sigfox Backend
- Войдите в backend.sigfox.com. Активируйте плату, если нужно: activate.
- Выберите Device Type вашего устройства.
- Создайте Custom Callback:
- Type:
DATA UPLINK - Channel:
URL - URL pattern:
https://[AccountSID]:[AuthToken]@api.twilio.com/2010-04-01/Accounts/[AccountSID]/Messages.json - HTTP Method:
POST - Content-Type:
application/x-www-form-urlencoded - Body:
From=[YourTwilioNumber]&To=[DestinationNumber]&Body=covfefe!
- Type:
Текст «covfefe!» будет приходить при каждом нажатии.
5. Проверка
Нажмите кнопку крепко и ждите, пока дворецкий принесёт напиток! 😄
Исходный код (GitHub)
/* @aureleq
* Отправка Sigfox-сообщения при нажатии кнопки.
* Кнопка между GND и пином 7. Прерывания для низкого потребления.
* Для загрузки нового скетча — двойной тап по Reset.
*/
#include <SigFox.h>
#include <ArduinoLowPower.h>
const uint8_t SWITCH_PIN = 7;
const String payload = "COKE NOW!";
const uint8_t debug = false;
void setup() {
if (debug) { Serial.begin(9600); while (!Serial); }
if (!SigFox.begin()) { Serial.println("Shield error or not present!"); return; }
Serial.println("Sigfox shield detected");
String ID = SigFox.ID();
Serial.println("ID = " + ID);
delay(100);
SigFox.end();
pinMode(SWITCH_PIN, INPUT_PULLUP);
LowPower.attachInterruptWakeup(SWITCH_PIN, buttonPressed, RISING);
}
void loop() {
LowPower.sleep();
Serial.println("Button pushed!");
delay(100);
sendString(payload);
}
void sendString(String str) {
SigFox.begin();
delay(100);
SigFox.status();
delay(1);
SigFox.beginPacket();
SigFox.print(str);
int ret = SigFox.endPacket();
if (ret > 0) Serial.println("No transmission");
else Serial.println("Transmission ok");
Serial.println(SigFox.status(SIGFOX));
Serial.println(SigFox.status(ATMEL));
SigFox.end();
}
void buttonPressed() { }
GitHub: https://github.com/aureleq/TrumpButton
Производственный процесс
- Пуговица: от древней застежки к современной инновации
- Sigfox запускает частную сеть (PAN), улучшает геолокацию и расширяет IoT-решения
- Управление яркостью LED с ШИМ через кнопку на Arduino Mega
- Высокоскоростная фотография капель воды на Arduino Nano — DIY-триггер для вспышки
- Giftduino: идеальный набор Arduino для подарков — проект для хоббистов и педагогов
- Создание настраиваемой «бьющейся» клавиши на Arduino: пошаговое руководство
- Измерение массы Земли с Arduino: пошаговое руководство по DIY
- Подключение датчика пульса MAX30100 к Arduino: Пошаговое руководство
- Создание приложения Fridgeye с дисплеем Nextion: пошаговое руководство
- Health Band: умный браслет для мониторинга пожилых людей на Arduino Nano и DPS310