Идеи для Arduino

 
1 2 3
RU Balancer #18.07.2012 14:50  @Balancer#12.03.2012 20:37
+
-
edit
 

Balancer

администратор
★★★★★
Balancer> Что, если попробовать придумать датчик, который будет такое фиксировать и что-то предпринимать... Ну, например, освежителем из баллончика отпугивать :)

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

На базовый вариант ушло минут 20 возни и экспериментов. Интереса ради, записывал процесс на видео, потом, будет время, нарежу, сделаю небольшой урок по Ардуино, м.б. кому-то полезно будет.

Насколько эффективна будет конструкция — не знаю. Больно близко кошке подходить нужно. С другой стороны, девайс получается активный, м.б. бояться его станет самого по себе :) А то страшных девайсов, но без присутствия людей не боится. Хоть на пылесосе может спать, хоть об баллончик освежителя тереться. Пока в руки их не возьмёшь :)
 
RU Balancer #18.07.2012 15:03  @Balancer#18.07.2012 14:50
+
-
edit
 

Balancer

администратор
★★★★★
Программка совсем примитивная, написалась и заработала с первого раза. Кстати, мой первый код на Processing.

code c
  1. /**
  2.   Управление разбрызгивателем.
  3. */
  4.  
  5. #define PIN_SNS 7  // Входной пин сенсора присутствия
  6. #define PIN_DIR 12 // Направление вращения
  7. #define PIN_CTR 13 // Управление двигателем
  8.  
  9. void setup() {
  10.     pinMode(PIN_SNS, INPUT);  // Контакт сенсора работает на вход
  11.     pinMode(PIN_DIR, OUTPUT); // А эти два — на выход
  12.     pinMode(PIN_CTR, OUTPUT);
  13. }
  14.  
  15. void loop() {
  16.     int state = !digitalRead(PIN_SNS); // Наш сенсор выдаст 0, если что-то обнаружит
  17.     if(state)
  18.         spray();
  19.     delay(500); // Чтобы не работать непрерывно, небольшая задержка в цикле.
  20. }
  21.  
  22. void spray() {
  23.     start_motor(); // Включаем мотор на разбрызгивание
  24.     delay(500);    // ждём 0.5 сек
  25.     stop_motor();  // Останавливаем мотор
  26.     delay(5000);   // Ждём 5 секунд и выходим
  27. }
  28.  
  29. void start_motor() {
  30.   digitalWrite(PIN_DIR, LOW);  // Низкий уровень указывает на прямое вращение
  31.   digitalWrite(PIN_CTR, HIGH); // Включаем мотор
  32. }
  33.  
  34. void stop_motor() {
  35.   digitalWrite(PIN_CTR, LOW); // Выключаем мотор
  36. }


Использовался вот такой датчик, E18-D50NK:

Это цифровой ключ на три ноги. Земля, питание, сигнал. Сигнал — цифровой, «0» при наличии препятствия.

Ну и, соответственно, уже упомянутый спрей AirWick Fresh Matic

У последнего, как я писал раньше, я спалил датчик нажатия, но и без него оказалось отлично. Просто врубаешь на 0.5 сек. моторчик и хватает. Даже назад потом откручивать не надо, хватает отталкивания головкой баллона. Сперва сделал вариант с откруткой, так он всё время вхолостую срабатывал, проскакивали шестерёнки, встав на упор. Так что программка совсем простая вышла.

Для управления двигателем — моторшилд на L298P

 
RU Balancer #18.07.2012 15:07  @Balancer#18.07.2012 15:03
+
-
edit
 

Balancer

администратор
★★★★★
В процессе отладки комната страшно провоняла освежителем :D Открытое настежь окно едва помогает :D
 
+
-
edit
 

Floyd

аксакал

А motorShield по SPI подключается ?
 13.0.113.0.1
+
-
edit
 

Balancer

администратор
★★★★★
Floyd> А motorShield по SPI подключается ?

Не-не... Там просто (на каждый из двух каналов) два бинарных выхода: включение двигателя и направление вращения (EA/IA и EB/IB). Вешаем их на два цифровых выхода и вращаем как захотим. Это на конкретно этом шилде, т.к. есть ещё всякие хитрые, для управления шаговыми движками и т.п.
 
RU Balancer #19.07.2012 01:35  @Balancer#18.07.2012 14:50
+
-
edit
 

Balancer

администратор
★★★★★
Balancer> С другой стороны, девайс получается активный, м.б. бояться его станет самого по себе :)

Тварь. Она запомнила максимальную дистанцию сенсора. И сходила за его пределами :D А увеличивать дистанцию нельзя, так как начнёт срабатывать на открывающуюся дверь. Поединок разумов продолжается...
 
RU Клапауций #19.07.2012 09:51  @Balancer#19.07.2012 01:35
+
+1
-
edit
 

Клапауций

координатор
★★☆
Balancer> Поединок разумов продолжается...

:lol::lol::lol:

Ставлю на "тварь". Она вас всех выдрессирует под свои вкусы, и технику тоже :)
В тот день, когда ты решишь, что ты лишен недостатков , попробуй прогуляться по воде  

AXT

инженер вольнодумец
★☆
Balancer> А увеличивать дистанцию нельзя ...

А угол от оси сенсора до объекта получить можно?
... так пускай наступает на нас холодным рассветом новый день ...  
+
-
edit
 

Balancer

администратор
★★★★★
AXT> А угол от оси сенсора до объекта получить можно?

Нет, он тупой. Светит (относительно узким лучом) ИК-светодиодом и ловит отражение на ИК-фотодиод.

Переставил ближе, теперь срабатывает при открытии двери настежь, будем считать, что это такая автоматизация :) В смысле — автоматическое освежение воздуха при выходе и выходе. Зато прошли сутки и в «охраняемой» стороне туалета — чисто :) Кошка, похоже, решила больше не экспериментировать.

...

Правда, собака, конструкция в целом жрёт много. 90 мА в режиме ожидания от 12В. Судя по ТТХ, это сенсор основной потребитель. Аккумулятор шустро выедается. А питание в туалет провести сложно, не электрифицирован. Надо, наверное, взять ещё небольшой свинцовый аккумулятор на 2..4Ач :)
 
+
-
edit
 

Balancer

администратор
★★★★★

Оригинальный замок для двери на основе Arduino и ёмкостного датчика

Rob Hemsley из Массачусетского технологического института сделал оригинальный замок для двери на основе Arduino и ёмкостного датчика. Это второй вариант замка,...

// habrahabr.ru
 

 14.0.114.0.1
+
-
edit
 

go6pbiu

новичок
добрый человек, подскажи, пожалуйста, как правильно этот датчик подключать к ардуине (который жёлтенький) - я себе всю голову поломал, не работает он у меня и всё тут. Красный провод к плюсу сую, черный к минусу, а с желтого сигнал снимаю - если цифровой снимаю, то там всегда 1, если аналоговый, тоже 1020 - 1022. Что я не так делаю?
 11.0.696.7711.0.696.77
+
-
edit
 

Balancer

администратор
★★★★★
go6pbiu> Красный провод к плюсу сую, черный к минусу, а с желтого сигнал снимаю

Угу, именно так.
紅 — красный (по схеме — VCC, питание)
綠 — зелёный (у меня, по схеме — земля)
黃 — жёлтый (по схеме — сигнальный выход)

go6pbiu> если цифровой снимаю, то там всегда 1, если аналоговый, тоже 1020 - 1022. Что я не так делаю?

Вот это странно. Сигнал там цифровой, при срабатывании — ноль, при отсутствии контакта — единица (в аналоговом, соответственно, около 1000).

Попробуй на него через фотоаппарат цифровой посмотреть, там, вообще, ИК-светодиод светится? (ИК через цифровые аппараты выглядит фиолетовым). Может, сгорел? А винт регулировки чувствительности сзади крутил? У меня он мало на что влияет, но мало ли…
 
+
-
edit
 

go6pbiu

новичок
Смотрел через фотоаппарат - светится, зараза. Винт крутил, но на показаниях никак это не отражается. Если будет желание, то вот здесь пытаемся сообща сообразить, что это могло быть.
 11.0.696.7711.0.696.77

  • Balancer [19.06.2013 12:25]: Перенос в новую тему Arduino
  • Balancer [19.06.2013 12:43]: Перенос сообщений в Arduino
Последние действия над темой
1 2 3

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru