Как достать соседа с перфоратором

  • Платформы: Iskra JS
  • Языки программирования: JavaScript
  • Тэги: перфоратор, сосед, батарея, молоток

Что это?

Достал сосед с перфоратором? Соберите автоматизированное устройство, которое заставит задуматься шумного умельца: «А не мешаю ли я жить другим?».

Что нам понадобится?

Как собрать?

  1. Расширьте одно из отверстий в центре панели структора «крепление Arduino 7×8 шипов», проденьте в него болт и зафиксируйте снизу гайкой. Диаметр болта зависит от выбранного хомута для крепления корпуса к трубе.
  2. Закрепите платформу Iskra JS на панели #структора «крепление Arduino 7×8 шипов» с помощью акриловых стоек. Стойки закрепите на панели винтами, сверху установите платформу и зафиксируйте гайками.
  3. Установите Troyka Shield на плату Iskra JS.
  4. Закрепите модуль сенсора вибрации с помощью саморезов на панели #структора «3×3 шипа».
  5. Подключите сенсор вибрации к аналоговому пину A5 Troyka Shield.
  6. Подключите сервопривод через 3-х проводной шлейф к 8 пину Troyka Shield. В итоге должна получиться следующая схема:
  7. Прикрепите боковые панели («пластины 7×6 шипов») к основанию корпуса устройства («крепление Arduino 7×8 шипов») и на одной из них закрепите панельку #структора с датчиком вибрации.
  8. Используя «лицевую панель Arduino c microUSB-интерфейсом 4×6 шипов» и рейки #структора соберите лицевую часть корпуса.
  9. Прикрепите заднюю панель («пластина 6×6 шипов») к основанию корпуса. Установите верхнюю панель («пластина 7×8 шипов»), прикрепив её к передней, задней и боковым стенкам корпуса.
  10. Прикрутите хомут для крепления труб к основанию собранного корпуса.
  11. Возьмите железную пластину и согните её с двух сторон под 90 градусов в разных направлениях.
  12. Закрепите два хомута на нижнем основанию железной пластины с помощью болтов.
  13. Установите сервопривод через соединительную скобу на верхней части пластины.
  14. C помощью дрели или шуруповёрта просверлите 3 отверстия в молотке и через втулку прикрепите молоток к сервоприводу.
  15. Должна получится такая конструкция
  16. Прошейте Iskra JS программой приведённой ниже.

Теперь с помощью хомутов крепите устройство к батареи и пусть молот судьбы восстановит справедливость.

Алгоритм

  • После подключения питания считываем данные с сенсора
    • если значение превысило порог, стучим молотком по батарее
  • повторяем цикл снова и снова

Исходный код

radiatorbang.js
// подключаем модуль сервопривода к пину 8
var servo = require('@amperka/servo').connect(P8);
 
// задаем количество и длительность каждого стука молотка (нот мелодии)
var massMelody =[400, 400, 400, 150, 150, 400, 150, 150, 150, 400, 150];
 
// объявляем вспомогательные переменные
var len = massMelody.length;
var servoWork = false;
var count = 0;
 
// читаем значения с сенсора вибрации каждые 10 миллисекунд
setInterval(function() {
  // создаём переменную и записываем в неё текущее значения сенсора вибрации
  var sensorVal = analogRead(A5);
  // если значение сенсора вибрации превысило допустимый порог
  if (sensorVal > 0.01) {
    // вызываем функцию стука молотком по батареи
    servoBang();
  }
}, 10);
 
function servoBang() {
  // если сервопривод еще не отбил предыдущий запрос (стук), выходим из функции
  if (servoWork === true) {
    return;
  }
  // переходим в рабочий режим молотка
  servoWork = true;
  // проверяем все ли ноты мы отыграли
  if (count < len) {
    setTimeout(function() {
      // в зависимости от длительности текущей ноты опускаем молоток вниз
      servo.write(60);
      print('DOWN');
      // по истечении 150 миллисекунд поднимаем молоток вверх
      setTimeout(function() {
        servo.write(30);
        print('UP');
        // увеличиваем счётчик нот на единицу
        count++;
        print(count);
        // переходим в режим ожидания молотка новой команды
        servoWork = false;
        // вызываем функцию следующего стука
        servoBang();
        // если вся мелодия отыграла по батареи
        if (count === len) {
          // через 300 миллисекунд переходим в режим ожидания новой команды
          setTimeout(function() {
            servoWork = false;
            count = 0;
            print('End');
          }, 300);
        }
      }, 150);
    }, massMelody[count]);
  }
}

Демонстрация работы устройства

Что дальше?

Время проведения ремонтных работ строго регламентировано. Оптимизируйте автоответчик, добавив в него часы реального времени (Troyka-модуль), задайте график «тихих часов» и наслаждайтесь законной тишиной.

Ваш сосед не фанат перфоратора, а любитель шумных тусовок? Добавив в устройство датчик шума (Troyka-модуль), вы сможете передать привет по батарее и ему.