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

Умная входная система в стиле Ситхов: Imperial March при входе в дом

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

Необходимые инструменты

Программное обеспечение и онлайн-сервисы

О проекте

Моя дочь — фанат «Звёздных войн» (даже не видела фильмов). Она заставляла меня играть «Имперский марш» (тема Дарт Вейдера) в её костюме, чтобы она могла в 들어오ть в комнату с пафосом. Так родилась идея: автоматически определять приход домой и включать Имперский марш перед входом в дом.

Проект простой — отлично для новичков. Интересен тем, что впервые использую паттерн publish/subscribe через облако и интегрирую разные микроконтроллеры в одном проекте. Photon прост для облачных решений, а Arduino предлагает огромный выбор периферии. Их легкое объединение позволило быстро реализовать идею.

Шаг 1: Сборка датчика (сенсора)

Время: 10 мин
Детали: Photon, резистор 220 Ом, светодиод, PIR-датчик, макетная плата, перемычки, USB Micro B кабель

Подключите светодиод к Photon (анод — D0, катод через резистор на GND). Светодиод опционален, но показывает состояние датчика.

Подключите PIR-датчик: GND → GND Photon, 5V → Vin Photon, сигнал → D7 Photon. Важно: проверьте даташит вашего датчика — порядок пинов может отличаться. Сигнальный пин должен выдавать 3.3V (совместимо с Photon).

Питание через USB. Загрузите код сенсора (ниже) через Particle IDE. При движении перед датчиком светодиод загорится, в консоли Particle Dashboard появится событие.

Шаг 2: Сборка триггера (приёмника)

Время: 10 мин
Детали: Photon, резистор 220 Ом, светодиод, макетная плата, перемычки male/female

Светодиод так же (D0). Подключите male-перемычки к Vin, GND и D7 Photon. D7 пойдёт на GPIO Music Maker Shield, Vin/GND — для питания Photon от Arduino.

Загрузите код триггера (ниже) через Particle IDE (выберите правильное устройство, так как теперь их два).

Шаг 3: Сборка Arduino с Music Maker Shield

Время: 20 мин
Детали: Arduino Uno, Adafruit Music Maker Shield, Photon, резистор 220 Ом, светодиод, мини-макетная плата, перемычки, USB кабель
Инструменты: паяльник

В шилт входят пинхейдеры — их нужно припаять. Я добавил male-хедеры сверху для GPIO и питания от Photon. (Female-хедеры были бы удобнее для male/male перемычек, но были только male).

Подключите: D7 Photon → GPIO7 шилда, Vin Photon → 5V шилда, GND Photon → GND шилда. Динамик клеммником к выходу шилда (я использовал один динамик из сломанной игрушки).

Подключите Arduino к ПК, загрузите скетч (ниже). Готово! Пройдите перед датчиком и ждите музыку.

О коде

Первый опыт с publish/subscribe на Photon. Очень просто.

В коде сенсора: при HIGH на пине PIR публикуется событие в Particle Cloud:

published = Particle.publish("motion-detected", NULL, 60, PRIVATE);

Изначально публиковал публично — получал ложные срабатывания от чужих устройств. Сделал приватным (PRIVATE) и в подписке указал MY_DEVICES:

Particle.subscribe("motion", soundAlarm, MY_DEVICES);

Код триггера просто обрабатывает событие: зажигает светодиод, поднимает HIGH на GPIO7 на 2 секунды.

Скетч Arduino ждёт HIGH на GPIO7, затем ждёт 60 секунд (время припарковаться, собрать вещи, войти в дом) и проигрывает MP3 (track001.mp3) с SD-карты.

Развёртывание проекта

Сенсор установлен в гараже на полке рядом с машиной. Триггер + Arduino + Music Maker + динамик — на кухонном столе (где обычно сидит дочь). Оба места с доступом к розеткам для питания.

Код

Код сенсора (C/C++)

// Пин светодиода D0
int led = D0;
// Пин PIR датчика D6
int pir = D6;
// Флаг успешной публикации
bool published;

void setup() {
  pinMode(led, OUTPUT);
  pinMode(pir, INPUT);
  digitalWrite(led, LOW);
}

void loop() {
  if (digitalRead(pir) == HIGH) {  // движение обнаружено
    digitalWrite(led, HIGH);
    published = Particle.publish("motion-detected", NULL, 60, PRIVATE);
    if (!published) {  // если публикация не удалась
      for (int i = 0; i < 10; i++) {  // мигание 10 раз
        digitalWrite(led, LOW); delay(500);
        digitalWrite(led, HIGH); delay(500);
      }
    }
  } else {
    digitalWrite(led, LOW);  // нет движения
  }
  delay(2000);  // пауза 2 сек перед следующим чтением
}

Код триггера (C/C++)

int led = D0;
int trigger = D7;

void soundAlarm(const char *event, const char *data) {
  digitalWrite(led, HIGH);
  digitalWrite(trigger, HIGH);
  delay(2000);
  digitalWrite(trigger, LOW);
  digitalWrite(led, LOW);
}

void setup() {
  Particle.subscribe("motion", soundAlarm, MY_DEVICES);
  pinMode(led, OUTPUT);
  pinMode(trigger, OUTPUT);
}

void loop() { }

Код Arduino + Music Maker Shield (Arduino)

/************************************************************
 * Проигрывание MP3 с SD-карты через Adafruit Music Maker Shield
 * по триггеру от Photon на GPIO пине шилда.
 * Библиотека и туториал Adafruit: 
 * https://learn.adafruit.com/adafruit-music-maker-shield-vs1053-mp3-wav-wave-ogg-vorbis-player/pinouts
 ************************************************************/
#include <SPI.h>
#include <Adafruit_VS1053.h>
#include <SD.h>

// Пины Music Maker Shield
#define SHIELD_RESET -1  // не используется
#define SHIELD_CS 7      // VS1053 chip select
#define SHIELD_DCS 6     // VS1053 data/command select
#define CARDCS 4         // SD card chip select
#define DREQ 3           // VS1053 data request (interrupt pin)

Adafruit_VS1053_FilePlayer musicPlayer = 
  Adafruit_VS1053_FilePlayer(SHIELD_RESET, SHIELD_CS, SHIELD_DCS, DREQ, CARDCS);

int photonPin = 7;  // GPIO пин, к которому подключён Photon

void setup() {
  musicPlayer.begin();
  SD.begin(CARDCS);
  musicPlayer.setVolume(1, 1);  // меньшие числа = громче
  // musicPlayer.useInterrupt(VS1053_FILEPLAYER_PIN_INT); // фоновое воспроизведение не используется
  musicPlayer.GPIO_pinMode(photonPin, INPUT);
}

void loop() {
  if (musicPlayer.GPIO_digitalRead(photonPin) == HIGH) {
    delay(60000);  // ждём 60 сек перед воспроизведением
    musicPlayer.playFullFile("track001.mp3");  // блокирующее воспроизведение
  }
  delay(500);
}

Схемы

Fritzing-файлы: sensor.fzz (сенсор), trigger.fzz (триггер).

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

  1. Основные компоненты станка с ЧПУ: подробное объяснение
  2. Ключевые элементы эффективного кризисного коммуникационного менеджмента
  3. Будущее производства: тренды, таланты и инновации
  4. Annoy-O-Bug: компактная звуко-световая шутка на ATtiny85
  5. Нанотехнологии: новый рубеж в безопасности IoT
  6. Ключевые компоненты надежной системы сжатого воздуха
  7. Как модернизация крана трансформирует ключевые компоненты для пиковой производительности
  8. Техник завтрашнего дня: навыки, инструменты и роли в цифровом заводе
  9. Ключевые компоненты двухколонных ленточных пилорам
  10. Мастерство проектирования механически обрабатываемых деталей: всеобъемлющее руководство