Как стать автором
Поиск
Написать публикацию
Обновить
517.1
Beget
Beget — международный облачный провайдер

Простой ультразвуковой отпугиватель собак

Время на прочтение8 мин
Количество просмотров10K

Сегодня пойдёт речь о такой специфической теме, которая хорошо знакома велосипедистам (но, полагаю, и всем остальным тоже): борьба с нападением собак на едущих велосипедистов.

Зачастую, конечно, это заканчивается обычным «обгавкиванием» :‑В

Но, я‑то не знаю, что у них на уме...

Поэтому, приходится «обгавкивать» их в ответ, иногда даже применяя человеческие непечатные выражения, а, для убедительности своих слов, — взяв в одну руку «оружие пролетариата» :‑)

Тем не менее, хотелось бы и дальше носить маску культурного человека, не снимая её даже в такие моменты и я тут подумал: а что, если возложить задачу конверсейшена с собаками — на электронику?

Но, для начала, давайте прикинем, а как мы можем наладить с ними дипломатические отношения? (желательно, «с позиции силы»:‑В).

Из более‑менее разумных вариантов — приходит в голову только ультразвук. Впрочем, вполне недурной вариант!

Забегая вперёд, скажу, что ниже будет рассказ о состоянии затеи на данный момент, но проект требует ещё своего внимания (так что, почему бы и вам не присоединиться к экспериментам?;‑), — на данный момент я нахожусь в отпуске, и «несколько ограничен в доступной аппаратной базе» — так скажем (несмотря на то, что я отношусь к людям, которые, похоже, «даже в туалет ходят с рюкзаком», в котором «есть всё», где под «всё» — я подразумеваю «ВООБЩЕ ВСЁ», что может понадобиться; но, ультразвукового излучателя в нём не оказалось, так что уж не обессудьте:‑) ).

Также хочу сказать, что в «собакоопасных» районах пока не был — поэтому протестировать аппарат не было возможности, тем не менее — как идея для самоделки, эта затея довольно любопытная (на мой взгляд).

Мне доводилось видеть ролики в интернете, где люди тестировали различные ультразвуковые излучатели, специально, проезжая по районам города, где водятся «самые недобрые собаки», и, включение такого излучателя всегда давало один и тот же результат: собаки резко впадали в оторопь, разбегались от велосипеда, и отставали.

Например, один из таких роликов можно увидеть ниже:

Как мы можем убедиться, хорошо работающий ультразвуковой излучатель, это достаточно неплохая сила!

Заводского изготовления, такие устройства обычно состоят из четырёх основных компонентов:

  • генератор сигнала: в качестве него, может выступать микроконтроллер, или специальная сборка;

  • усилитель мощности звуковой частоты;

  • пьезоизлучатель;

  • компактная батарея питания.

Устройство обычно позволяет излучать ультразвук в диапазоне от 20 до 30 кГц и, судя по имеющимся в интернете открытым источникам, с результатами применения подобных устройств, — они демонстрируют неоднозначный результат, а именно:

  • в целом, да, применение подобного устройства, (даже, как мы могли видеть в видео выше), в подавляющем большинстве случаев, приводит к отпугиванию как одиночных, так и стай собак;

  • однако, если устройство излучает монотонный тон, то, достаточно быстро, возникает привыкание к нему, и отпугивающий эффект теряется (поэтому, нужно чередовать тона, и применять иные способы, чтобы «разнообразить трек‑лист»);

  • люди отмечают, что эффективность применения подобных устройств зависит ещё и от возраста собак: к примеру, более старые, и глуховатые собаки, реагируют на звук не так остро, как молодые, с более чувствительным слухом;

  • несмотря на неприятные ощущения от воздействия звука, некоторые собаки, всё равно могут ринуться в атаку, особенно, если «клиенту» не повезло, и он столкнулся с доминантной особью.

Тем не менее, чего нельзя у них отнять, так это того, что звуковое воздействие является наименее травматичным, что уже само по себе плюс...

Заводской сборки устройства, позволяют воздействовать на собак, находящихся на расстоянии, приблизительно, вплоть до 10 м.

В теории, самодельное устройство может не уступить, а может даже и превзойти по эффективности, заводские устройства, так как, в рамках самодельного проекта у нас развязаны руки, и мы можем применять множество различных подходов, — как аппаратных, так и программных.

Например, мы можем практически протестировать ряд программных реализаций, и найти среди них те/ту — которые будут работать наилучшим образом.

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

Одним из путей достижения этого является использование широкополосных ультразвуковых излучателей (могут громко звучать в целом диапазоне частот).

В противовес широкополосным, есть резонансные излучатели (максимальная громкость достигается на частоте резонанса), одним из которых является Murata MA40.

При этом, здесь, на самом деле, возможен компромисс: можно использовать этот резонансный излучатель, а частоту излучения менять на небольшую величину, находясь поблизости от частоты резонанса излучателя. Да, громкость будет снижаться (всё‑таки, это компромисс), но, на небольшую величину.

В принципе, наверное, учитывая малую цену такого излучателя, вполне можно рассмотреть и такой вариант.

Ещё одним вариантом сделать почти невозможным привыкание является использование импульсного режима, с переменным количеством импульсов и переменными паузами между ними.

Как можно видеть, перечисленные выше подходы легко реализуются программно...

Ещё одним способом увеличения эффективности является концентрация звука — для этого, можно изготовить 3D печатный корпус, в котором расположить конус, в донышке которого и разместить излучатель звука — это позволит сделать звук более направленным и сконцентрированным, что, в результате (в теории), позволит ему распространяться на более дальние расстояния.

Итак, под рукой у меня было не так много, и я собрал это устройство из имеющихся с собой компонентов:

  • I2S усилителя звука цифрового MAX98 357;

  • микроконтроллера esp32 c3 supermini. Почему именно он: очень компактный, потребляет мало энергии; а учитывая его компактность — легко будет изготовить и корпус для всего устройства.

Звукового излучателя у меня не было, поэтому, пришлось выломать микродинамики из старого, вышедшего из строя монитора:

Общая схема подключения всей сборки получилась следующая:

Общий вид устройства получился такой:

Как легко можно увидеть, устройство вышло очень компактным, и, его компоненты вполне можно разместить в микрокорпусе, сходном по размерам с аккумулятором, форм‑фактора 18 650, таким образом, не трудно понять, что распечатать на 3D принтере корпус для такого устройства не будет представлять каких‑либо проблем.

Прошивку можно посмотреть здесь (КОД) 
/*Создано с использованием ИИ DeepSeek. 
Код выкладывается без любых гарантий его работы.*/

#include <driver/i2s.h>

// Конфигурация пинов I2S
#define I2S_BCLK_PIN   5
#define I2S_LRC_PIN    6  
#define I2S_DOUT_PIN   7

// Параметры аудио
const int SAMPLE_RATE = 44100;
const int BUFFER_SIZE = 512;  // Увеличенный буфер для стабильности
const float MAIN_VOLUME = 0.4f;

// Частотные параметры
const int BASE_FREQ = 22000;  // Основная частота (22 кГц)
const int MOD_FREQ = 18000;   // Дополнительная частота (18 кГц)
const float LFO_RATE = 0.5f;  // Скорость модуляции (Гц)

// Глобальные переменные
float lfoPhase = 0.0f;

void setupI2S() {
  i2s_config_t i2sConfig = {
    .mode = (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_TX),
    .sample_rate = SAMPLE_RATE,
    .bits_per_sample = I2S_BITS_PER_SAMPLE_16BIT,
    .channel_format = I2S_CHANNEL_FMT_ONLY_LEFT,
    .communication_format = (i2s_comm_format_t)(I2S_COMM_FORMAT_I2S | I2S_COMM_FORMAT_I2S_MSB),
    .intr_alloc_flags = ESP_INTR_FLAG_LEVEL1,
    .dma_buf_count = 8,
    .dma_buf_len = BUFFER_SIZE
  };

  i2s_pin_config_t pinConfig = {
    .bck_io_num = I2S_BCLK_PIN,
    .ws_io_num = I2S_LRC_PIN,
    .data_out_num = I2S_DOUT_PIN,
    .data_in_num = I2S_PIN_NO_CHANGE
  };

  i2s_driver_install(I2S_NUM_0, &i2sConfig, 0, NULL);
  i2s_set_pin(I2S_NUM_0, &pinConfig);
}

void generateOptimalTone(int16_t* buffer) {
  static float phase1 = 0.0f;  // Фаза основной частоты
  static float phase2 = 0.0f;  // Фаза дополнительной частоты
  
  // Генерация LFO для модуляции
  float lfo = sin(lfoPhase) * 0.3f;
  lfoPhase += 2 * PI * LFO_RATE / SAMPLE_RATE;
  if(lfoPhase >= 2 * PI) lfoPhase -= 2 * PI;

  for(int i = 0; i < BUFFER_SIZE; i++) {
    // Основной тон с модуляцией
    float mainTone = sin(2 * PI * phase1 * (1.0f + lfo));
    
    // Дополнительная частота
    float secondaryTone = sin(2 * PI * phase2 * 3.0f);
    
    // Смешение сигналов
    float mixedSignal = 0.7f * mainTone + 0.3f * secondaryTone;
    
    // Применение громкости с мягким ограничением
    buffer[i] = (int16_t)(32767 * MAIN_VOLUME * tanh(mixedSignal * 1.2f));
    
    // Обновление фаз
    phase1 += (float)BASE_FREQ / SAMPLE_RATE;
    phase2 += (float)MOD_FREQ / SAMPLE_RATE;
    
    if(phase1 >= 1.0f) phase1 -= 1.0f;
    if(phase2 >= 1.0f) phase2 -= 1.0f;
  }
}

void setup() {
  Serial.begin(115200);
  setupI2S();
  Serial.println("Ультразвуковой отпугиватель животных активирован");
  Serial.printf("Режим: комбинированные частоты %d Гц и %d Гц\n", BASE_FREQ, MOD_FREQ);
}

void loop() {
  int16_t audioBuffer[BUFFER_SIZE];
  size_t bytesWritten;

  generateOptimalTone(audioBuffer);
  
  esp_err_t err = i2s_write(I2S_NUM_0, audioBuffer, sizeof(audioBuffer), &bytesWritten, portMAX_DELAY);
  
  if(err != ESP_OK) {
    Serial.println("Ошибка передачи I2S!");
    
    delay(1000);
  }

  // Периодическое изменение параметров для предотвращения привыкания
  static uint32_t lastChange = 0;
  if(millis() - lastChange > 3000) {
    lastChange = millis();
    Serial.println("Автоматическая корректировка параметров...");
  }
}

В коде выше использованы две частоты, оптимизированные как раз для воздействия на собак:

BASE_FREQ = 22000

MOD_FREQ = 18000

Где BASE_FREQ для излучателя Murata MA40 — можно изменить на 25 000 (т.к. у него резонансная частота 25 кГц), а MOD_FREQ — оставить, как сейчас.

Код протестировал, работает — динамик издаёт довольно неприятный, пульсирующий звук (правда, довольно тихий для человеческого слуха, что, впрочем, нормально).

Тем не менее, нужно учитывать, что этот динамик (который был у меня) не предназначен для излучения ультразвука, поэтому, полноценный тест надо будет провести позже, когда доберусь до ультразвукового излучателя.

В порядке мысленного эксперимента: а ведь, ультразвуковые ванны — содержат довольно мощные излучатели...;‑)

Впрочем, эту мысль лучше отбросить — да, скорее всего, это будет «безумно эффективно», равно как и вредно (как минимум, для самого инициатора).

В будущем, есть мысль, связать отпугиватель со смартфоном, по Bluetooth BLE и управлять им со смартфона.

Зачем это надо: удобство использования — современный человек, зачастую, не выпускает из рук смартфон, а тут, останется только переключиться на другое приложение, и нажать на кнопку «Пуск». По‑моему, недурно!

Можно даже попробовать запилить голосовое управление, если во время езды на велосипеде, вы носите гарнитуру или наушники с микрофоном (тоже любопытная мысль!).

Это не единственно возможный вариант реализации затеи — в качестве альтернатив можно просто управлять с помощью ШИМ — транзистором, в режиме ключа, через который и подключен ультразвуковой излучатель.

Ещё одна альтернативная конструкция — взять драйвер двигателя (H‑мост) + микроконтроллер и так же — генерить ШИМ и управлять запуском излучателя.

Теперь у вас есть направление для осмысления, а также поле для самостоятельных экспериментов, конечно, если таковые вы сочтёте для себя нужными ;‑)


В любом случае, на мой взгляд — повозиться с электроникой, кодом, и собрать в итоге что‑то реально полезное, — даст для желающих некоторое количество интересно проведённых минут, а также (в теории) может позволить хоть немного да улучшить свою жизнь велосипедиста…

Теги:
Хабы:
+42
Комментарии83

Публикации

Информация

Сайт
beget.com
Дата регистрации
Дата основания
Численность
201–500 человек
Местоположение
Россия