Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

IoT-подушка «Любовь»: удаленные объятия с Arduino MKR и Telegram

Компоненты и материалы

Компонент Описание Кол-во
Arduino MKR IoT Bundle Включает MKR1000, датчики, провода, фольгу, резисторы, макетку 1

Приложения и сервисы

О проекте

Примечание: урок может быть устаревшим, актуальная версия здесь.

Расставание с любимым человеком тяжело. А что, если можно отправлять любовь через интернет, просто обнимая подушку?

Настоящие объятия передать нельзя, но можно отправить милый эмодзи в Telegram, сжав подушку. При объятии звучит сердечный биение (buzzer). Длительность объятия определяет, какой эмодзи отправит бот в выбранный чат.

Оставайтесь на связи с этим обнимательным устройством!

В двух словах

Создадим DIY емкостной датчик из фольги для обнаружения объятий.

Нужно:

IoT-подушка «Любовь»: удаленные объятия с Arduino MKR и Telegram
IoT-подушка «Любовь»: удаленные объятия с Arduino MKR и Telegram

Цели обучения

Pro Tips — полезные, но не обязательные шаги, добавляющие сложность.

Хотите узнать больше?

Серия экспериментов с MKR1000 и IoT (все компоненты в MKR IoT Bundle):

Telegram-боты: введение

Telegram — популярный мессенджер с поддержкой ботов. Бот — это контакт, за которым стоит код, а не человек. Библиотека TelegramBot для Arduino упрощает логику.

Создание бота

  1. Напишите @BotFather в Telegram.
  2. Команда /newbot, задайте имя и username (на _bot).
  3. Получите API токен — сохраните его.
  4. Опционально: настройте аватар, описание, команды.
IoT-подушка «Любовь»: удаленные объятия с Arduino MKR и Telegram
IoT-подушка «Любовь»: удаленные объятия с Arduino MKR и Telegram
IoT-подушка «Любовь»: удаленные объятия с Arduino MKR и Telegram
IoT-подушка «Любовь»: удаленные объятия с Arduino MKR и Telegram
IoT-подушка «Любовь»: удаленные объятия с Arduino MKR и Telegram

Настройка платы

Библиотеки: WiFi101, TelegramBot, ArduinoJson, CapacitiveSensor. Установка через Library Manager.

Для работы с Telegram API нужно загрузить сертификаты на MKR1000 (актуально для большинства онлайн-сервисов). В примере FirmwareUpdater (WiFi101) добавьте домен api.telegram.org. В Arduino Web Editor пока недоступно — используйте Desktop IDE.

IoT-подушка «Любовь»: удаленные объятия с Arduino MKR и Telegram
IoT-подушка «Любовь»: удаленные объятия с Arduino MKR и Telegram
IoT-подушка «Любовь»: удаленные объятия с Arduino MKR и Telegram

Откройте пример EchoBot (TelegramBot), введите WiFi-crediantials и токен, залейте. Бот эхо-отвечает на сообщения.

EchoBot и эмодзи

Эмодзи везде! Бот получает их в одном формате, а отправлять нужно в UNICODE. Сердце: \U00002764. Полный список: Unicode Emoji.

Пример бота, отвечающего сердцем на сердце:

void loop() {
  message m = bot.getUpdates();
  if (m.chat_id != 0) {
    Serial.println(m.text);
    if(m.text == "\u2764\ufe0f") {
      bot.sendMessage(m.chat_id, "\U00002764");
    }
  }
}
IoT-подушка «Любовь»: удаленные объятия с Arduino MKR и Telegram

Емкостной датчик

Библиотека CapacitiveSensor превращает два пина в датчик емкости тела. Нужен резистор (среднее/высокое значение) и фольга. На максимальной чувствительности срабатывает на расстоянии дюймов через материалы. Спрячем в подушку!

Пример теста:

#include <CapacitiveSensor.h>
CapacitiveSensor foil = CapacitiveSensor(5,4); // 10М между 5 и 4, пин 4 - сенсор
void setup() {
  foil.set_CS_AutocaL_Millis(0xFFFFFFFF);
  Serial.begin(9600);
}
void loop() {
  long start = millis();
  long sensor_value = foil.capacitiveSensor(30);
  Serial.print(millis() - start); Serial.print("\t");
  Serial.print(sensor_value); Serial.println("\t");
  delay(500);
}
IoT-подушка «Любовь»: удаленные объятия с Arduino MKR и Telegram
IoT-подушка «Любовь»: удаленные объятия с Arduino MKR и Telegram

Значение sensor_value используем как порог обнаружения объятия.

Сердцебиение

Чем дольше обнимаешь — больше ударов сердца, больше любви (и разных эмодзи).

int Buzzer = 8;
void setup() {}
void loop() { HeartBeat(); delay(1000); }
void HeartBeat() {
  tone(Buzzer, 31, 200); delay(200);
  tone(Buzzer, 31, 400); delay(200);
  noTone(Buzzer); delay(1000);
}

Для сложных мелодий: Examples → Digital → ToneMelody.

#ProTip: Chat ID и групповые чаты

Боту нужен chat_id для отправки. Уникален для пары пользователь-бот. Чтобы бот писал конкретному человеку — тот должен первым написать боту, сохранить его chat_id. В проекте бот отвечает последнему написавшему.

Боты публичны — может написать любой. Для группового чата: отключите Privacy Mode в @BotFather (иначе бот видит только команды /).

IoT-подушка «Любовь»: удаленные объятия с Arduino MKR и Telegram
IoT-подушка «Любовь»: удаленные объятия с Arduino MKR и Telegram
IoT-подушка «Любовь»: удаленные объятия с Arduino MKR и Telegram

#ProTip: WiFi Best Practices

WiFi может отваливаться. Онлайн-сервисы могут не отвечать. Для стабильности добавьте watchdog (сторожевой таймер) — перезагружает плату, если цикл завис.

Библиотеки: Adafruit_SleepyDog, Adafruit_ASF_Core (ручная установка с GitHub).

Пример с watchdog:

#include <WiFi101.h> #include <SPI.h> #include <TelegramBot.h> #include <Adafruit_SleepyDog.h>
char ssid[] = "xxxx"; char pass[] = "yyyy";
const char BotToken[] = "xxxx";
WiFiSSLClient client; TelegramBot bot(BotToken, client);
void setup() {
  Serial.begin(115200); while(!Serial) {} delay(3000);
  Serial.print("Connecting Wifi: "); Serial.println(ssid);
  while (WiFi.begin(ssid, pass) != WL_CONNECTED) { Serial.print("."); delay(500); }
  Serial.println(""); Serial.println("WiFi connected");
  bot.begin(); Watchdog.enable(10000);
}
void loop() {
  Watchdog.reset();
  message m = bot.getUpdates();
  if (m.chat_id != 0) {
    Serial.println(m.text);
    bot.sendMessage(m.chat_id, m.text);
  } else { Serial.println("no new message"); }
}

Код

Полный скетч

(В оригинале раздел пуст — код собирается из примеров выше: CapacitiveSensor + TelegramBot + HeartBeat + WiFi + Watchdog)

Схемы

IoT-подушка «Любовь»: удаленные объятия с Arduino MKR и Telegram

Производственный процесс

  1. Мастерство ковки ножей: 9 экспертных шагов к созданию прочных лезвий
  2. Мастерство планирования BOM: пошаговое руководство по оптимизации затрат на продукт
  3. Выбор правильного места разработки: мейкерспейсы, акселераторы и производственные партнеры
  4. Основное руководство по маркировке деталей: 3 проверенных метода для качества и безопасности
  5. Микрометр: как читать и пользоваться инструментом точных измерений
  6. Незаменимые горизонтально-шлифовальные центры для высокоточного производства
  7. Преимущества механического металлопресса (Ironworker) для точной металлообработки
  8. Обзор лучших дебарринговых установок для любых производственных задач
  9. Белый чугун (White Cast Iron): свойства, применение и преимущества
  10. Освоение проникающего ЭРС: полное руководство по точной электроэрозионной обработке