Датчик звука с ARDUINO NANO

san-kas
Offline
Зарегистрирован: 19.06.2017

Добрый день, я новичок в этом деле, прошу помощи. Хочу сделать управление светом по хлопку (вкл-выкл), сделал все как в этой статье http://voltom.ru/project/96-podklyuchenie-i-nastrojka-datchika-zvuka-ky-037. Только вместо светодиода поставил реле такого типа http://blog.rchip.ru/obzor-modulya-rele-1-o-kanalnyy/. Проблема в том что по хлопку в ладоши реле включается, но при этом (пока включено реле) светится индикатор срабатывания на датчике звука (это удалось рассмотреть когда в конце программы поставил задержку (delay) 3000 вместо 100. Если оставить программу как есть, то при хлопке реле включается и сразу выключается и остается в выключенном положении. Такое впечатление что при подаче сигнала Ардуино на контакт D2 на реле идет постоянный сигнал на D5 куда подключен датчик звука. Смена входа для датчика с D5 на D12 не дал результатов.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

1. Скетч в студию.

2 . Схему включения в студию.

(только не говорите, мол "всё есть по ссылке". Не работает-то у Вас, а не по ссылке. так что скетч прямым копипастом из Вашего IDE и схему Вашу. А лучше ещё и фото, на котором всё видно.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Для того, чтобы "вместо светодилорда поставить реле", нужны изменения в схеме. Вероятно, весьма существенные. Так что скорее всего проблема в схеме.

san-kas
Offline
Зарегистрирован: 19.06.2017

спасибочто отозвались, сделаю и скетч и фото

san-kas
Offline
Зарегистрирован: 19.06.2017
Вот мой скетч из программы:
 
const int sensorD0 = 12;  // Пин Arduino к которому подключен выход D0 датчика
const int diod = 2; // Пин Arduino к которому подключен светодиод
int diodState = LOW; // Статус светодиода "выключен"
 
void setup ()
{
pinMode(diod, OUTPUT); // устанавливаем цифровой пин 2 в режим выхода 
}
 
void loop ()
{
int sensorValue = digitalRead(sensorD0); // получаем сигнал с датчика
 
if (sensorValue == 1 && diodState == LOW) //если порог громкости достигнут и светодиод был ВЫКЛЮЧЕН
{
digitalWrite(diod, HIGH); // включаем светодиод
diodState = HIGH; // устанавливаем статус светодиода "включен"
delay(100); // небольшая задержка для фильтрации помех
}
else // иначе
{
if (sensorValue == 1 && diodState == HIGH) // если порог громкости достигнут и светодиод был ВКЛЮЧЕН
{
digitalWrite(diod, LOW); // выключаем светодиод
diodState = LOW; // устанавливаем статус светодиода "выключен"
delay(100); // небольшая задержка для фильтрации помех
}
}   
}
T.Rook
Offline
Зарегистрирован: 05.03.2016

Датчик звука вообще хоть когда нидь возвращает 0? Попадались очень чувствительные экземпляры, которые по шуму ноута всегда выдавали 1.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

san-kas пишет:

Вот мой скетч из программы:
 
 
Так не пойдёт, сделайте вот так
 
И про схему не забываем
ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

T.Rook пишет:

Датчик звука вообще хоть когда нидь возвращает 0? Попадались очень чувствительные экземпляры, которые по шуму ноута всегда выдавали 1.

Включите ему питание безо всякой ардуины и померьте что он там возвращает.

san-kas
Offline
Зарегистрирован: 19.06.2017

Вот набросал схему

или на сайте радикал: http://s019.radikal.ru/i632/1706/6d/eb344ebff1d2t.jpg

делаю фото и видео работы

san-kas
Offline
Зарегистрирован: 19.06.2017

T.Rook пишет:

Датчик звука вообще хоть когда нидь возвращает 0? Попадались очень чувствительные экземпляры, которые по шуму ноута всегда выдавали 1.

Пробовал в мониторе порта отследить работу датчика - при срабатывании (от стука например) выдает несколько единиц за раз, но четко - один стук - несколько единиц и т.д., а вот нолей чето не видно

san-kas
Offline
Зарегистрирован: 19.06.2017

[/quote]

Включите ему питание безо всякой ардуины и померьте что он там возвращает.

[/quote]

Извините я новичек с Ардуиной, питание от USB зарядки на телефон я так понимаю не подойдет? Может от USB ноута запитать напрямую тогда мимо Ардуины? ибо с батареями долго возиться, хотя есть POWER BANK, подойдет? Но это ладно разберусь, а вот померять возвращает или нет как - через тот же монитор порта в ардуино?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

san-kas пишет:

 а вот померять возвращает или нет как - через тот же монитор порта в ардуино?

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

san-kas
Offline
Зарегистрирован: 19.06.2017

[/quote]

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

[/quote]

Но у меня такового нету, а без него никак?

kalapanga
Offline
Зарегистрирован: 23.10.2016

san-kas пишет:

T.Rook пишет:

Датчик звука вообще хоть когда нидь возвращает 0? Попадались очень чувствительные экземпляры, которые по шуму ноута всегда выдавали 1.

Пробовал в мониторе порта отследить работу датчика - при срабатывании (от стука например) выдает несколько единиц за раз, но четко - один стук - несколько единиц и т.д., а вот нолей чето не видно

Ну раз несколько единиц за раз, значит пока на выходе датчика 1 ардуино успеет и включить реле и выключить.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

san-kas пишет:

Но у меня такового нету,

Наскребите где-нибудь 1 (одну) тысячу рублей и купите DSO138 (если считаете, что  профессиональный девайс Вам не нужен). Выручит не раз и не два. Без такого прибора Вы всегда будете как слепой котёнок.

san-kas
Offline
Зарегистрирован: 19.06.2017

[/quote]

Наскребите где-нибудь 1 (одну) тысячу рублей и купите DSO138 (если считаете, что  профессиональный девайс Вам не нужен). Выручит не раз и не два. Без такого прибора Вы всегда будете как слепой котёнок.

[/quote]

Полностью согласен, походу надо было мне найти готовое решение с датчиком хлопков, но так же не интерестно :), делаю фото и видео

san-kas
Offline
Зарегистрирован: 19.06.2017

[/quote]

 
Так не пойдёт, сделайте вот так
 
И про схему не забываем

[/quote]да извините, вот

const int sensorD0 = 12;  // Пин Arduino к которому подключен выход D0 датчика
const int diod = 2; // Пин Arduino к которому подключен светодиод
int diodState = LOW; // Статус светодиода "выключен"
 
void setup ()
{
pinMode(diod, OUTPUT); // устанавливаем цифровой пин 2 в режим выхода 
}
 
void loop ()
{
int sensorValue = digitalRead(sensorD0); // получаем сигнал с датчика
 
if (sensorValue == 1 && diodState == LOW) //если порог громкости достигнут и светодиод был ВЫКЛЮЧЕН
{
digitalWrite(diod, HIGH); // включаем светодиод
diodState = HIGH; // устанавливаем статус светодиода "включен"
delay(100); // небольшая задержка для фильтрации помех
}
else // иначе
{
if (sensorValue == 1 && diodState == HIGH) // если порог громкости достигнут и светодиод был ВКЛЮЧЕН
{
digitalWrite(diod, LOW); // выключаем светодиод
diodState = LOW; // устанавливаем статус светодиода "выключен"
delay(100); // небольшая задержка для фильтрации помех
}
}   
}

 

san-kas
Offline
Зарегистрирован: 19.06.2017

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

san-kas
Offline
Зарегистрирован: 19.06.2017

Вот фотографии, извините за качество, фотик жена взяла на работу, а на моем китай теле камера 0,3. Правда что с этих фото толку... Все по схеме.

 
 
 
 
san-kas
Offline
Зарегистрирован: 19.06.2017

Мужики, есть свет в конце тоннеля, походу дело в микрофоне, тоесть в том как он воспринимает шумы (звуки). Он может давать сигнал даже когда просто подносиш к нему руку, афигеть, как датчик движения, но это нам никак не нужно. Вобщем после того как я расположил микрофон подальше от реле и немного загрубил реостат на датчике звука реле стало включаться и выключаться по хлопку, правда только перед микрофоном почему-то.

san-kas
Offline
Зарегистрирован: 19.06.2017

вот видео этих глюков

http://radikal.ru/video/7yodMg0KBxn

san-kas
Offline
Зарегистрирован: 19.06.2017

Спасибо всем за советы, может кому пригодится данная тема, а может кто еще подсоветует

san-kas
Offline
Зарегистрирован: 19.06.2017

Думаю решено, всетаки дело в микрофоне, тот что был на датчике заводской не работал вообще, а взятый с караоке игрушки некачественный, но укоротив провода от него (микрофона) к датчику звука удалось добиться более-менее стабильного результата, естественно подстроечное сопротивление на датчике в помощь. Вот видео http://radikal.ru/video/f0F4EdmPO1z

T.Rook
Offline
Зарегистрирован: 05.03.2016

+ за написание резюме по решению :)