Подсветим темные углы - инфракрасный датчик движения (HC-SR501) с доработкой, часть 2


Я уже писал про плавное включение подсветки. Описанное в том обзоре решение хорошо себя зарекомендовало, и я решил его доработать и заказать платы в Китае. Что из этого вышло — под катом. Приглашаю самоделкиных, любителей попаять и всех кто хочет сделать среду своего обитания более комфортной.

Про данный датчик движения было немало обзоров, в том числе и мой. Поэтому очень кратко:
— максимальная дальность обнаружения движения под прямым углом к сенсору составила 6,7 метров;
— под углом в 160 градусов — 5 метров;
— крутилка Sx — меняет расстояние обнаружения под прямым углом с 2,8 до 6.7 метров;
— крутилка Tx — меняет время удержания 1 на выходе OUT c 6 до 290 секунд.
Обозначения крутилок есть не на всех платах поэтому вот они:

Перейдем к применению. Схему из прошлого обзора доработал до более функциональной:

Теперь на ней есть поддержка выключателя и датчика освещенности. Да, фоторезистор можно припаять непосредственно к самому исходному датчику, но: нужен будет подстроечный резистор, висящий в виде сопли и компактность будет под вопросом, к тому же, мне проще чувствительность настроить программно в широком диапазоне. Поэтому я не стал так делать, а подключил его к контроллеру. Второй момент, относительно прошлого варианта — возможность подключить выключатель. Иногда датчик считает что свет включать еще рано, но пользователю уже сейчас хочется больше света без его автоматического отключения — именно в этом случае поможет такое решение. Благодаря подключению выключателя к контроллеру, по проводу к выключателю текут очень малые токи, что повышает безопасность итогового решения.

Керамический конденсатор С1 гасит высокочастотные импульсные помехи во входном питании. Линейный стабилизатор ams1117-5 позволяет получить 5 вольт из исходных 12. Из-за малых токов, потребляемых устройством я решил использовать линейный преобразователь, на выходе которого также стоит керамический конденсатор и электролит. К PIR датчику подключается земля, питание и вход контроллера PB4. В качестве контроллера можно использовать ATTiny85, ATTiny45 или ATTiny13, программа не сложная и все они справятся. В качестве ключевого элемента для плавного включения света используется n-канальный полевой транзистор (MOSFET). Так как затвор, фактически, является конденсатором, то в моменты переключения транзистора через него текут большие токи (кратковременно). Для того чтобы ограничить эти токи в затвор ставиться ограничивающий резистор R3. Транзистор управляется малыми токами и если выход микроконтроллера, к которому подключен затвор, окажется в высокоимпедансном Z-состоянии полевик начнет открываться-закрываться непредсказуемо, вылавливая помехи. Для устранения такого поведения ножку микроконтроллера нужно «прижать» к земле резистором R2. Ключевой элемент подключен к выходу контроллера PB0. Ко входу контроллера PB1 подключен выключатель, который в включенном состоянии соединяет этот вход с питанием. Для избегания неопределенных состояний PB1 подтянут резистором R4 к земле. Ко входу PB2 (A1) подключен фоторезистор, позволяющий определить текущую освещенность. Этот вход также подтянут к земле резистором R5, который гарантирует присутствие нуля в темноте. Вход контроллера PB5, являющийся одновременно входом сброса контроллера в исходное состояние (RESET) подтянут к питанию резистором R1.

Изначально печатную плату я изготовил методом «лазерного утюга» (ЛУТ), но поняв что таких устройств требуется много и не только мне (многие обратились с просьбой изготовить такое для них), разработал плату под заводское производство в программе SprintLayout:


Такая конструкция без проблем позволяет подключать нагрузку порядка 5А (60 Вт).

Посмотрим на устройство, мне показалось удобнее всего видеть модель на сайте mayhewlabs.com/3dpcb:


Для программирования через Arduino, с предварительно прошитой программой ArduinoISP и подключенным электролитическим конденсатором между выводами RST и GND (емкость 10-100 мкФ):

Следует использовать такое подключение (10, 11, 12 и 13 — пины arduino):

В рабочем режиме нужно установить перемычки (указаны желтым) и, при необходимости, подключить фоторезистор и выключатель, черным показаны пины земли, а красным питания:

Такие платы были заказаны в Китае, на известном многим сайте dirtypcbs.com. Никаких проблем с платами на этот раз не было. Как видно, я использовал панелизацию для оптимального использования пространства.

Элементы я припаивал без разделения плат, так удобнее:

Флюс на картинке еще не смыт. Далее прямо к этой плате припаивается PIR-датчик.

Так выглядит готовое устройство:



Для программирования ATTiny85 в среде arduino рекомендую воспользоваться этой статьей. Если же у вас ATTiny13 то этой.

Далее зашиваем нехитрый код в контроллер:

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// yurok (last change 25.09.2016)
// PIR - control (draft)
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include <util/delay.h>

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// PIN configuration
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#define PIR_PIN PB4
#define LED_PIN PB0
#define BUTTON_PIN PB1
#define LIGHT_PIN A1

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Set constants and global variables
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 0-255
#define LIGHT_BARRIER 200
#define SPEED_ON 12
#define SPEED_OFF 24
// for PIR sensor
#define TIMEOUT_LED 30000UL
// for button
#define TIMEOUT_DEBOUNCE 70

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Timers
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
unsigned long CurrentTime = 0;
unsigned long AutoTimeOn = 0;
unsigned long ButtonTimerDebounce = 0;

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// FLAGS
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 0 - auto on
// 1 - manual on
// 2 - auto mode
#define AUTO_ON_F 0
#define MANUAL_ON_F 1
#define AUTO_MODE_F 2
uint8_t FLAGS=0b00000100;

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// init
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void setup() {
  // pin 0 - is output, others is input
  DDRB  = 0b00000001;
  PORTB = 0b00000000;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// main loop
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void loop() {

   CurrentTime = millis();
   
   //////////////////////////////////////////////////////////////////////////    
   // BUTTON CONTROL
   //////////////////////////////////////////////////////////////////////////
   if((PINB & _BV(BUTTON_PIN)) && !(FLAGS & _BV(MANUAL_ON_F))){
      if(ButtonTimerDebounce==0) ButtonTimerDebounce=CurrentTime;
      if((unsigned long)(ButtonTimerDebounce + TIMEOUT_DEBOUNCE) < CurrentTime){
        if(!(FLAGS & _BV(AUTO_ON_F))) on();
        FLAGS=0b00000010; // set manual on
        ButtonTimerDebounce = 0;
     }
   }else if(!(PINB & _BV(BUTTON_PIN)) && (FLAGS & _BV(MANUAL_ON_F))){
     if(ButtonTimerDebounce==0) ButtonTimerDebounce=CurrentTime;
     if((unsigned long)(ButtonTimerDebounce + TIMEOUT_DEBOUNCE) < CurrentTime){     
        off();
        FLAGS=0b00000100; // set auto mode on
        ButtonTimerDebounce = 0;
     }
   }else{
     ButtonTimerDebounce = 0;
   }
   
  //////////////////////////////////////////////////////////////////////////
  // PIR sensor
  //////////////////////////////////////////////////////////////////////////
  if(FLAGS & _BV(AUTO_MODE_F)){
    if(PINB & _BV(PIR_PIN)){    
      if(!(FLAGS & _BV(AUTO_ON_F)) && analogRead(LIGHT_PIN) <= LIGHT_BARRIER){
        on();
        FLAGS |= _BV(AUTO_ON_F);
      }
      AutoTimeOn = CurrentTime;
    }else if (!(PINB & _BV(PIR_PIN)) && (FLAGS & _BV(AUTO_ON_F)) && 
                  ((unsigned long)(AutoTimeOn + TIMEOUT_LED)) < CurrentTime){ 
      off();
      FLAGS &= ~_BV(AUTO_ON_F);
    }
  }
  

}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// on led
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void on(){
  uint8_t i = 0;
  do{
    analogWrite(LED_PIN, i);
    _delay_ms(SPEED_ON);                            
  }while (++i);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// off led
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void off(){
  uint8_t i = 255;
  do{
    analogWrite(LED_PIN, i);
    _delay_ms(SPEED_ON);                            
  }while (i--);
}


Я оптимизировал код для возможности загрузки в ATTiny13. Краткие пояснения:
Наши используемые выводы контроллера (A1 — это вывод контроллера PB2):

#define PIR_PIN PB4
#define LED_PIN PB0
#define BUTTON_PIN PB1
#define LIGHT_PIN A1


LIGHT_BARRIER — порог освещенности, ниже которого при наличии сигнала датчика PIR включится свет (0-255 — диапазон значений).
SPEED_ON и SPEED_OFF — задают временной интервал между переходами к следующей градации при включении и выключении (в мс).
TIMEOUT_LED — интервал, в течении которого свет будет включен после последнего срабатывания детектора движения, задается в мс. Данное значение следует прибавлять ко времени выставляемом потенциометром на датчике.
TIMEOUT_DEBOUNCE — защитный интервал в мс, позволяет избежать дребезга контакта выключателя, если взять небольшое значение, то переходные процессы могут сказаться на включении и выключении, большое значение приведет к «тормозности» выключателя.

CurrentTime — значение текущего времени, позволяет избежать множественных запросов времени.
AutoTimeOn — время последней активности, обнаруженной PIR датчиком.
ButtonTimerDebounce — время изменения положения выключателя, для избегания дребезга контактов.

Для экономии памяти я использовал один байт для хранения всех признаков в программе — FLAGS, под каждый используемый признак задействован один бит, в частности: AUTO_ON_F (0) — бит, показывающий было ли автоматическое включение, MANUAL_ON_F (1) — бит, показывающий было ли ручное включение, AUTO_MODE_F (2) — бит, определяющий включен ли автоматический режим — сбрасывается при нажатии выключателя. Таким образом, для хранения признаков я задействовал 3 бита. По умолчанию: автоматический режим включен, остальные признаки не установлены.

При запуске программы производится инициализация портов: DDRB = 0b00000001 — означает, что все порты кроме нулевого используются как входы. PORTB = 0b00000000 — сбрасываем значение всех пинов.

Функция on() производит плавное включение нагрузки. Для того, чтобы перебрать 255 значений и в качестве переменной цикла использовать один байт, я использовал цикл do… while. Функция off() производит плавное выключение нагрузки. Я использовал analogWrite для выдачи нужного значения в порт управления, предварительно посмотрев ее реализацию — не увидев там особо лишнего кода, при желании можно оптимизировать, но для текущей программы памяти ATTiny13 вполне хватает.

В основном цикле (функция loop() ) вначале в переменную CurrentTime считывается текущее время, так как оно много где используется.

Далее обрабатывается код выключателя с защитой от дребезга контактов. Конструкция вида PINB & _BV(BUTTON_PIN) позволяет проверить текущее значение пина BUTTON_PIN на установленный высокий уровень более экономно по памяти, по сравнению с DigitalRead, принятой в среде arduino. Аналогично, FLAGS & _BV(MANUAL_ON_F) — позволяет проверить установлен ли нужный признак в переменной флага. Я реализовал программу так, что при включенном выключателе свет непрерывно горит и обработка сенсоров выключена, при выключенном — включается обработка сенсоров.

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

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

Использованные детальки:
PIR-датчик HC-SR501 10 — US $8.63
Контроллер attiny85 10 —US $7.70 либо attiny13 10 — US $3.00
Клеммная Колодка 20 — US $3.76
Полевой транзистор AOD472 D472 (MOSFET) 10 — US $8.51
Линейный стабилизатор ams1117-5 10 — US $2.63
Фоторезистор 20 — US $0.70
пины 10 — US $2.83
Резисторы и конденсаторы smd1206, а также электролит на 47 мкФ.
Плата изготовленная в домашних условиях или заказанная на заводе, у меня остались платы от заказа, при необходимости, могу выслать готовую или заготовку, пишите в личку.

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

Видео работы из прошлого обзора (там есть монтаж в конкретных условиях прошлой версии):



Спасибо всем, кто дочитал этот обзор до конца, надеюсь кому-то данная информация окажется полезной. всем света и добра!
+
avatar
  • falkon27
  • 08 октября 2016, 01:02
+3
Очень долго втыкал на заглавную фотку. Думал автомобильная магнитола
+
avatar
  • yurok
  • 08 октября 2016, 01:50
+3
никак не смог увидеть там магнитолу :)
+
avatar
  • falkon27
  • 08 октября 2016, 01:50
+8
потому что вы знаете что там на фото
простой тест. что вы видите на листочке бумаги? Те кто знает этот тест, не пишите
+
avatar
  • nevsky
  • 08 октября 2016, 02:49
+2
Не могу заснуть…
Что на листочке бумаги???
+
avatar
+12
Не вижу смысла постить загадки, на которые не приведены отгадки.
Отгадка. Спойлер!!!
+
avatar
  • falkon27
  • 08 октября 2016, 02:55
0
Не вижу смысла постить загадки, на которые не приведены отгадки
Блин ну я бы написал позже. мне интересно было что увидит автор
И потом ну любой человек может кликнуть правой кнопкой на картинке и нажать строчку Найти картинку. Там и ответ будет
Но как только вы узнаете ответ. ты уже ничего другого на этом фото и не видите
+
avatar
  • Glory
  • 08 октября 2016, 12:05
0


Нажал. Ничего подобного не увидел. ЧЯДНТ?

P.S. На самом деле я понял, ЧТО Вы имеете в виду. Просто НЕ ВСЕ пользуются Google Chrom'ом. В Мозилле (он же FireFox, он же Огнелис) ничего подобного (скриншот прилагается). Так что НЕ ЛЮБОЙ и НЕ В ЛЮБОМ брауззеое.
+
avatar
  • falkon27
  • 08 октября 2016, 17:48
-13
+
avatar
+7
Скорее, от этого у меня только меньше проблем.
+
avatar
  • sweetest
  • 08 октября 2016, 21:57
0
на данный момент времени полностью согласен и поддерживаю
+
avatar
  • Glory
  • 09 октября 2016, 20:08
+2
Вы мне еще Амиго с Internet Explorer'ом предложите…
Хром есть. И мне им иногда ПРИХОДИТСЯ пользоваться.
Но предпочитаю Мозиллу. На всех устройствах (синхронизация включена).

P.S. Ладно, не будем разводить холивар. Каким браузером пользоваться — дело вкуса и привычки.
+
avatar
  • falkon27
  • 10 октября 2016, 19:53
+3
В Мозилле (он же FireFox, он же Огнелис) ничего подобного (скриншот прилагается).
Есть просто в отличие ог хрома там это надстройка, называется Google Image Search. И если вы не знаете как ее активировать то… Тык Она добавляет в меню похожий пункт как и в хроме. Так что минусаторам в конце всего зачтется.
+
avatar
  • Glory
  • 11 октября 2016, 06:55
+1
Вы прекрасно поняли, за что Вас минусуют. За хамство. Хамство здесь не приветствуется. Оно нигде не приветствуется.
+
avatar
  • falkon27
  • 13 октября 2016, 14:12
0
За хамство. Хамство здесь не приветствуется.
Мне до ваших минусов далеко как до Китая. Вы прекрасно первый раз поняли что я хотел сказать про правую кнопку мыши. А если не поняли, то поздравляю Вы единственный и уникальный. Но вам же как троллю этого мало вам же надо больше еды. Вы же хотите потроллить человека по полной, чтобы он вышел из себя. Так ВОТ Вам это не удалось
Поверьте мне я еще даже и не начинал «хамить» как вы выразились.
+
avatar
  • Glory
  • 13 октября 2016, 14:32
+1
А вот за наводку на надстройку для Мозиллы Вам ПЛЮС.
+
avatar
  • falkon27
  • 13 октября 2016, 14:56
+1
А вот за наводку на надстройку для Мозиллы Вам ПЛЮС
Ну хоть в чем то плюс.
Хотя я живу по принципу что два минуса это уже плюс
+
avatar
  • nevsky
  • 08 октября 2016, 03:38
0
Спасибо, теперь как ни кручу картинку — вижу отгадку!..
… пошёл я спать.
+
avatar
  • abyrwalg
  • 08 октября 2016, 18:30
+1
У вашей «коровы» на самом деле:) на носу сидит толстый кот, свесив хвост
+
avatar
  • Z2K
  • 08 октября 2016, 03:24
0
Сразу понял что животное. Питон — ежу понятно. :)
+
avatar
  • falkon27
  • 08 октября 2016, 04:01
0
Сразу понял что животное. Питон — ежу понятно. :
ну посмотрите ответ выше
+
avatar
  • Z2K
  • 08 октября 2016, 05:09
0
Поздно. Я уже увидел питона и теперь вижу только его. :))) (шутка)
+
avatar
  • NordWind
  • 08 октября 2016, 10:36
+10

Костерок только не удачный выбрал, ну да ладно.
+
avatar
  • loole
  • 08 октября 2016, 11:19
0
Какой модели монитор под картинкой? Вот настоящая загадка!
+
avatar
  • archer
  • 08 октября 2016, 03:08
+1
Просто светлый PIR-датчик сливается с фоном… Стоило фон поконтрастней взять… Кстати — для того чтобы подчеркнуть размеры можно на клетчатом антипрорезном коврике сфоткать или рядом с коробком :)

P.S. Хороший обзор — спасибо за труд.
+
avatar
  • yurok
  • 08 октября 2016, 04:34
0
заменил фото )
+
avatar
  • sweetest
  • 08 октября 2016, 08:44
0
аж интрига взяла, что там было первично))
+
avatar
  • yurok
  • 08 октября 2016, 08:46
0
необрезанная фотка осталась в обзоре, а было это

вот я ничего другого там увидеть не смог :)
+
avatar
  • sweetest
  • 08 октября 2016, 08:56
0
ну хз… разве что портативный DVD или ноутбук))
но мы действительно знаем чего ожидать в обзоре))
+
avatar
  • Demz
  • 08 октября 2016, 11:02
+1
и хрен дождались.
Котэ нет.
+
avatar
  • Glory
  • 08 октября 2016, 12:09
0
del
+
avatar
  • peetbull
  • 08 октября 2016, 01:05
+1
вот это обзор!
хотелось бы увидеть реализацию на esp8266.
для большего круга читателей без травления плат… исключительно на готовых изделих
+
avatar
  • yurok
  • 08 октября 2016, 01:11
+2
на esp дорого получается для автономного решения, а из готовых изделий — вполне можно взять, например, digispark , коммутировать вот таким модулем, Фоторезистор, например, такой, а стабилизатор такой, и соединить все по приведенной схеме проводами — только компактности не будет. Программа из обзора будет работать и там.
+
avatar
  • nevsky
  • 08 октября 2016, 02:17
0
Всё же, как прикрутить на уже имеющийся witty cloud?
п.с. опыта нет — начинающий…
+
avatar
  • yurok
  • 08 октября 2016, 04:56
+1
yoursunny.com/t/2016/WittyCloud-first/
вот пример его использования, если нужно поделку как в обзоре, то ключ нужен — примерно как в прошлом сообщении
+
avatar
  • nevsky
  • 08 октября 2016, 15:39
0
Я так понимаю, что там управление встроенным RGB светодиодом от фоторезистора на самом модуле.
У меня вопрос, как правильно подключить обозреваемый датчик?
п.с. обозреваемые датчики скоро должны прибыть ко мне, и пока обзор «горячий», спрашиваю… Заинтересовало плавное включение. В моём случае, управлять нужно светодиодными потолочными панелями с подержкой dimmer.
+
avatar
  • Gdemon
  • 08 октября 2016, 05:51
0
ESP8266 плюс это PIR-модуль дают большое количество ложных срабатываний. И большую часть времени разработки придется потратить на борьбу с ними. И я пока не натыкался на 100% работающее решение.

В случае подсветки — да и фиг с ним. А если где-то в сигнализации?
+
avatar
0
я бы с вами поспорил ;) вот на есп www.youtube.com/watch?v=Cj_aLenDB9A а вот на тиньке с рф модулем на 433 мгц www.youtube.com/watch?v=EYOUDXhQgGE
+
avatar
  • Gdemon
  • 08 октября 2016, 08:44
0
Валяйте, спорьте. Только вот ролики тут при чем? На них нет схем подключения, да и датчик там другой. Я говорил о именно тех датчиках, что в обзоре.
+
avatar
0
датчик почти такой только мини и гораздо стабильнее:) а схема она просто элементарная;) плюс минус и сигнал:) просто мини работает на 3.3 вольтах(не нужно выпаивать кренку в модуле) вот он и был. выбран вот вся схема vk.com/id17088767?z=photo17088767_433718971%2Fphotos17088767
+
avatar
  • abyrwalg
  • 08 октября 2016, 16:18
0
ESP8266 плюс это PIR-модуль дают большое количество ложных срабатываний || я бы с вами поспорил ;) вот...
Дело в том, что для esp единственно важной задачей является обслуживание WiFi, любой другой код останавливается в любом месте и усё:) Поэтому простенькой программкой уже не обойдёшься, а потратив много своего времени, уже не так хочется бескорыстно делиться результатом (да ещё и отвечать потом годами на разные вопросы:). А свой сонофф тоже мало кто может открыть. Вот всё и пропадает(пока?), в отличие от сообщества ардуино
+
avatar
  • sweetest
  • 08 октября 2016, 08:16
-1
для сигнализации других типов датчиков мало, чтобы ещё PIR туда лепить?)
+
avatar
  • Gdemon
  • 08 октября 2016, 08:46
+1
А что, есть противопоказания по использованию пироэлектрических датчиков в сигнализациях?
+
avatar
  • sweetest
  • 08 октября 2016, 08:54
0
хз, у меня просто даже мыслей не возникало данный PIR туда применять при таком разнообразии датчиков))
тем более «микроволновый» стоит копейки)
+
avatar
  • Waver
  • 10 октября 2016, 11:30
0
А не подскажите, в сторону каких микроволновых смотреть?
+
avatar
  • sweetest
  • 08 октября 2016, 08:13
+1
хотелось бы увидеть реализацию на esp8266
непонятно только зачем…
+
avatar
  • peetbull
  • 08 октября 2016, 08:48
0
WiFi
+
avatar
  • sweetest
  • 08 октября 2016, 08:53
+1
допустим)) а зачем он в данным случае?)
+
avatar
  • peetbull
  • 08 октября 2016, 09:23
-2
а почему нет?))
+
avatar
  • sweetest
  • 08 октября 2016, 09:42
+2
блин, так я конкретно спрашиваю))
для управления включением света по WiFi?
+
avatar
  • peetbull
  • 08 октября 2016, 11:56
-2
я тоже спрашиваю)
+
avatar
  • sweetest
  • 08 октября 2016, 11:58
+2
во первых — я первый спросил…
во вторых — от этого ответа будет зависеть дальнейшая цепочка развития))
+
avatar
  • peetbull
  • 08 октября 2016, 12:31
-1
для управления и… допустим сбора статистики)
подключения других датчиков.
а минус зачем?
+
avatar
  • sweetest
  • 08 октября 2016, 12:56
+1
и не надо на меня негатив нагонять, если что))
я кроме плюсов за избранные мне интересом обзоры вообще никакие оценки никому не ставлю ;)
возможно за бесполезность девайса или изворотливость в ответов…
+
avatar
  • peetbull
  • 08 октября 2016, 13:06
0
Я Одессит) это у нас в крови)
+
avatar
  • abyrwalg
  • 08 октября 2016, 16:35
0
опустим)) а зачем он в данным случае?)
Дело в том, что на есп можно (с большими оговорками, см. выше) создать из двух копеечных железок — другого класса устройство, универсальный датчик, готовый элемент сигнализации/умного дома/ и пр.
Базовый функционал обойдётся дорого°, а вот всякие алгоритмические «плюшки» к нему потом прикручиваются относительно легко

_____
° времени — на — разработку
+
avatar
  • sweetest
  • 08 октября 2016, 22:01
0
там с таким же успехом и за те же копейки можно оформить всё на ардуине)
Wemos полноразмерный стоит дороже UNO, а даже если обойтись только модулем и будет разница в пару долларов экономии, то не копеечная ли это разница для оформления одного — тройки устройств?))
+
avatar
  • spectral
  • 08 октября 2016, 01:41
+5
Хорошее детальное описание процесса. Будет полезно как новичкам для пошаговой инструкции, так и остальным что-то почерпнуть для себя. Код прокомментирован, линки на детали есть. +1
+
avatar
0
мне показалось удобнее всего видеть модель на сайте mayhewlabs.com/3dpcb:
Чего-то я не понял, чем не устраивает просмотр в спринте? Нельзя вертеть в 3d?
+
avatar
  • yurok
  • 08 октября 2016, 02:59
0
нельзя посмотреть другую сторону с правильными надписями например и еще ряд моментов
+
avatar
+1
Вообще то можно смотреть обе стороны с правильными надписями.
Обратите внимание на режим «Фотовид» и в нём переключатель сторон.
+
avatar
  • yurok
  • 08 октября 2016, 11:20
0
На модели удобнее
+
avatar
0
Удобнее на готовом решении уже, но это же лишние шаги.
+
avatar
-1
… Для экономии памяти я использовал один байт для хранения всех [трех] признаков в программе…
… не люблю оптимизаций ради оптимизаций…
)) два байта экономия, а

if(FLAGS & _BV(AUTO_MODE_F)){


стало бы

if(AutoMode){
+
avatar
  • yurok
  • 08 октября 2016, 03:05
+1
и не вошло бы… я не зря это делал — при тиньке13 это критично
+
avatar
0
странно, 64 байта там памяти, я 25 насчитал в переменных и в циклах ещё +2 байта местами счетчики, где остальное
+
avatar
  • yurok
  • 08 октября 2016, 03:22
+1
+
avatar
+1
аа, код не влазит, так без сдвигов if() мне кажется меньше занял бы места, две инструкции вместо трех (загрузить, сдвинуть, перейти если ноль против загрузить, перейти если ноль)
+
avatar
  • yurok
  • 08 октября 2016, 03:29
0
пробуйте :)
+
avatar
+1
А точно не меньше становится, оба варианта по 8 байт команд
в avr studio по крайней мере… неожиданно)

if(!(FLAGS & _BV(MANUAL_ON_F))){
0000001C 80.91.61.00          LDS R24,0x0061		Load direct from data space 
0000001E 81.fd                SBRC R24,1		Skip if bit in register cleared 
0000001F 01.c0                RJMP PC+0x0002		Relative jump 
		asm("nop");
00000020 00.00                NOP 		No operation 
	if(!ManualOnF) {
00000021 80.91.60.00          LDS R24,0x0060		Load direct from data space 
00000023 81.11                CPSE R24,R1		Compare, skip if equal 
00000024 01.c0                RJMP PC+0x0002		Relative jump 
		asm("nop");
00000025 00.00                NOP 		No operation
+
avatar
  • cofein
  • 08 октября 2016, 04:49
0
А есть что ни будь для программирования ATTiny13А в стиле «вставил в usb и запустил программу?
Я покупал вот это aliexpress.com/item/1pcs-New-USBASP-USBISP-AVR-Programmer-USB-ISP-USB-ASP-ATMEGA8-ATMEGA128-Support-Win7-64K/32653187143.html
и прищепку. Но у прищепки 10 контактов, а этой штуки 8 и 8 у ATTiny13А. Пробовал использовать даташит от ATTiny13А и подключать по отдельности каждый провод. Но у програматора оказалось 3 или 4 GND а у ATTiny13 всего 1 и я даже не смог считать содержимое микросхемы…

Цель такая, есть плата на которой установлена ATTiny13А, нужно с неё считать прошивку ( или что там залито ) и когда она „наё“ перепрошивать или перепаивать с предварительно заливкой копии прошивки.

Почти всё что нашел в нете — это работа с arduino, и мне кажется там очень сложно. Или тоже софт в стиле „считать/записать“? Именно софт вызывает вопросы.
+
avatar
  • Gdemon
  • 08 октября 2016, 05:40
+1
Мне в свое время очень помогло вот это подробное пошаговое руководство с кучей картинок: flashlightwiki.com/AVR_Drivers
Все заработало с первого раза.

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

Еще одно руководство: budgetlightforum.com/node/36216
Если нужно на русском, то вот: forum.fonarevka.ru/showthread.php?t=4671 Но тут все размазано тоооонким слоем на десятки страниц.

Софт в стиле «считать/записать» — это avrdude, больше ничего не нужно. Но можно и Atmel Studio поставить, если привыкли к IDE.

P.S. Прищепка с 10 контактами? Хм… Сточить лишние не получится? А то могут мешать при присоединении при плотном монтаже.
+
avatar
  • cofein
  • 08 октября 2016, 05:54
0
Спасибо, буду читать и заказывать ардуино. Даже попросил у китайца выслать мне микросхемку в подарок )) если всё получится, запилю обзор для таких же «немощных» как я. А то судя по интернету — эта деталь часто выходит из строя, а нова 1500…
Прищепку я уже раздербанил, там распиновка была в другом порядке.
+
avatar
  • Gdemon
  • 08 октября 2016, 06:01
0
Да, в прищепках по дефолту другая распиновка, из коробки они не работают.
+
avatar
  • cofein
  • 08 октября 2016, 06:04
0
Обманул. Прищепка на 8, а программатор на 10 оказался. А так как прищепка под другие микросхемки — то и распиновка в другом порядке была
aliexpress.com/item/Free-Shipping-New-1Pcs-SOIC8-SOP8-Flash-Chip-IC-Test-Clips-Socket-Adpter-BIOS-24-25/1844300545.html
+
avatar
  • retronik
  • 08 октября 2016, 04:58
0
Автор, почему у Вас 5А это 60Вт?
+
avatar
  • yurok
  • 08 октября 2016, 05:02
+1
потому что 12 вольт
+
avatar
+1
Yurok, а вот такой пробовал?
aliexpress.com/item/5-8GHZ-Microwave-Radar-Module-Smart-Sensoring-Switch-6-9M-Home-Control/32602485648.html
+
avatar
  • yurok
  • 08 октября 2016, 05:21
+1
неа, не пробовал
в описании
мощность передатчика: < 2 МВт;
у меня на даче боюсь мощности не хватит :)
Очень неоднозначное впечатление от товара. Вроде работает, но не так как хотелось бы. Ощущение гиперчуствительности у радара. От видит движение 90% времени, даже когда я ничего не вижу. Может комаров считает, но работать с ним не получилось ....
— это в отзывах
+
avatar
  • cofein
  • 08 октября 2016, 06:01
0
а что, подстанция далеко от дачи?
придётся дачу продавать для оплаты энергии.
+
avatar
  • Sanja
  • 08 октября 2016, 11:02
+2
Я пробовал, датчик офигенен. Дальнобойность — метров пять-восемь максимум. «Гиперчувствительность» появляется, когда датчику недостаёт напряжения. Регулировка обеспечивается парой переменных резисторов, которые совершенно несложно напаять. Направленность обеспечивается листком кухонной фольги.

На PIR-датчики теперь даже не смотрю.
+
avatar
  • sweetest
  • 08 октября 2016, 11:20
0
если под охрану объекта — то в PIR как исполнителях смысла особого и не видел, если под применение в бытовухе для баловства с включением нагрузок / потребителей — то он там нафиг не нужен, так как «PIR» и «UWD» с головой хватает везде и для всего…
+
avatar
  • peetbull
  • 08 октября 2016, 11:58
0
Направленность обеспечивается листком кухонной фольги.
а шапочку из фольги делать надо?)
+
avatar
  • Sanja
  • 08 октября 2016, 12:32
0
Сначала оберните фольгой антенну WiFi. Там те же частоты почти, только вот у датчика по паспорту менее 2mW, а для WiFi 5ГГц разрешено до 800mW
+
avatar
  • peetbull
  • 08 октября 2016, 12:40
+1
а шутки тут не понимают)
+
avatar
  • gulin176
  • 08 октября 2016, 06:44
0
пришлось убрать подобный датчик с кухни. всё прекрасно пока на кухне есть движение. стоит сесть и чистить картошку(например) и всё датчик бесполезен и выключает свет. это датчик движения а хотелось бы датчик присутствия
+
avatar
  • yurok
  • 08 октября 2016, 07:38
0
для этого тут есть две вещи:
— настраиваемое время программно (маловероятно, что за 15 минут вы не пошевелитись) — штатное время меня не устроило
— возможность подключения выключателя — включли в тяжелых случаях и все
+
avatar
  • gulin176
  • 08 октября 2016, 08:03
+1
что простите а зачем тогда вся эта автоматика и кибернетика если зашел на кухню вышел и 15!!! минут потом свет на кухне горит. я же правильно понял что надо таймер срабатывания ставить 15 минут?
а про выключатель!!! я буду придумывать скетчи мучать на форумах сообщество чтобы получить не рабочую хрень и поставить в обход выключатель-браво умный дом российского разлива. я думаю сделать вместо датчика движения датчик расстояния в проёме двери. но тут проблема если более 1 человека. возможно датчик должен быть направлен по направлению от кухни. и тогда заходящего в кухню можно определить по приближению к датчику, а выходящий с кухни будет появляться в датчике внезапно. и на основании этого завязать алгоритм программы
+
avatar
  • yurok
  • 08 октября 2016, 08:09
0
1- Время ставится по вкусу от ситуации (я не вижу проблемы от свечения 15 минут светодиодного светильника)
2 — Какую хрень (рабочую или нет) сделаете — такая и будет, эта штука работает — мне удобно вот и поделился

пункт 2 вы скорее всего получите считая людей на входе :)
+
avatar
  • gulin176
  • 08 октября 2016, 08:16
0
нельзя время привязать к ситуации есть 1 вариант зашёл ночью стакон воды выпить- это 15 секунд. а 2 варинт когда вся семья на кухне сидит вечер смотрит телевизор. и без разницы светодиодное освещение или лампочка илича. мы делаем автоматизацию
+
avatar
  • yurok
  • 08 октября 2016, 08:20
0
я про усредненные значение 15 мин вполне норм в этой ситуации или 10
+
avatar
  • gulin176
  • 08 октября 2016, 08:30
+1
а в чём прикол ардуино не пойму продаются же в магазинах электротоваров готовые устройства где выставляются 3 параметра: таймер, освещённость, расстояние срабатывания
+
avatar
  • chvv2007
  • 09 октября 2016, 09:50
0
Еще нужно плавное включение
+
avatar
  • sweetest
  • 08 октября 2016, 08:29
0
для второго варика есть как раз включатель форсмажора))
+
avatar
  • sweetest
  • 08 октября 2016, 08:31
0
вообще, развивайте эту тему, мне тоже интересно такое под данную ситуацию, хотя не особо мне понятно как можно так спокойно картошку чистить)) у меня в коридоре оно срабатывает на минимальное движение ;)
+
avatar
  • sim31r
  • 09 октября 2016, 11:31
0
Для кухни, согласен, не удобно. Удобно в коридоре или кладовке какой-то, и то, для дежурного освещения, чтобы большой выключатель найти. У меня домашние и гости потом вообще свет перестают выключать везде. Думаю для дома лучше обычные выключатели, но чтобы через час было автовыключение, так как часто всеже забывают выключать. На кухне у меня 200 Вт лампа накаливания и 6*50Вт галлогенки в подсветке, могут на пару часов забыть выключить. Или в подвале 100Вт лампочку могут на несколько дней забыть выключить.
+
avatar
  • sweetest
  • 08 октября 2016, 08:28
0
1) аналогично, так как дежурный свет кухни вообще горит с вечера до 2 утра
2) «лазерные указки» тогда Вам в помощь))
+
avatar
  • Sanja
  • 08 октября 2016, 11:06
+2
я постараюсь скоро описать применение микроволнового датчика в связке с ардуиной/esp и твердотельным реле. Как раз прикручиваю такой в сортире к свету и вытяжке. Устал бороться со склерозом домочадцев, но и сидеть на унитазе и махать постоянно ладошкой PIR-датчику не желаю.
+
avatar
  • sweetest
  • 08 октября 2016, 11:18
0
всё это хорошо, только вроде как немного вредно и тоже ведь придётся махать, так как принцип тот же самый на выходе))
+
avatar
  • gulin176
  • 08 октября 2016, 11:27
+1
что махать? ультразвуковой датчик меряет расстояние перед собой. если оно меняется фиксируем, опять меняется опять фиксируем. а махать смотря как программа составится, либо вообще не будет реагировать на махание, либо от каждого взмаха будет менять состояние на входе реле
+
avatar
  • sweetest
  • 08 октября 2016, 12:02
0
вообще-то это два разных датчика…
выше я уже упоминал «UWD», и наоборот считаю делать такое логичнее всего именно на нём…
+
avatar
  • Sanja
  • 08 октября 2016, 12:36
0
у датчика по паспорту мощность излучения менее 2mW, а для WiFi 5ГГц разрешено до 800mW, так что ничего страшного. У датчика можно выкрутить чувствительность в максимум и нацелить фольгой диаграмму направленности на унитаз. Тогда датчик будет срабатывать даже на потуги клиента на унитазе и на появление испарины на лбу ;)
+
avatar
  • sweetest
  • 08 октября 2016, 12:53
0
возможно)) у меня их нет и опыта нет))
у меня в авто стоит версия PIT на сигналке, так вот она от пота на лбу не срабатывает, исходя из неё я выводы и делал ;)
сам хочу HB100 взять на пробу в ещё два авто)
WiFi — кстати тоже принципиально не юзаю :))
+
avatar
  • gulin176
  • 08 октября 2016, 11:21
+1
интересует у «микроволнового» датчика частоты правда в ультразвуке. как животные отнесутся к этому. что если кот перестанет ходить в туалет, это будет проблема. да и в туалет поставить это совсем не проблема, не будут же в туалет заходить и выходить несколько человек. тут проще некуда в проёме ставите датчик. зашёл зарегистрировало и сменило состояние выхода. вышел, опять фиксация и изменение состояния на выходе. а вот когда зашло двое а вышел один как контроллеру разобраться
+
avatar
  • Sanja
  • 08 октября 2016, 12:39
0
к электромагнитному излучению частот выше 5ГГц животные не относятся никак. На муравьёв влияет, на млекопитающих, особенно такая мизерная мощность — никак.

Через щель дверцы микроволновки утекает при использовании больше.
+
avatar
  • sim31r
  • 09 октября 2016, 11:38
-1
Микроволновка работает 3 минуты в день, датчик работает круглосуточно 1440 минут в день, интегральный эффект от датчика может быть больше на порядок, излучает понемногу, но постоянно, а жить то с ним многие годы…
WiFi тоже работает кратковременно, максимальная мощность 800 мВт, но средняя намного меньше, у меня он нагружен на 0.01% от максимальной способности (раз в несколько дней фильм через него смотрим), и мощность в настройках выставил 10%, для дома хватает.
Опять же постоянные 2 мВт от радиодатчика могут дать больше в общем в доме, чем WiFi, который почти всегда «молчит».
+
avatar
  • bazis13
  • 08 октября 2016, 14:31
0
аж 15 минут! У меня 8 минут таймаут, больше не выкручивается. Это ж сделано не столько, чтобы свет экономить, а чтобы не отвлекаться на ручные выключатели.
Я вижу только 2 варианта — либо я включаю свет 1 раз и он там потом горит круглосуточно, либо он включается сам когда нужно и выключается, когда получится.
Второй вариант более экономичный и при этом не доставляет никаких неудобств.
+
avatar
  • gulin176
  • 08 октября 2016, 14:42
0
а какие неудобства у датчика который включает свет когда вы внутри и выключает когда вы вышли. мы тут говорим про автоматизацию и назвать автоматизацией то что вы написали нельзя
+
avatar
  • bazis13
  • 08 октября 2016, 14:53
0
Система, которая будет работать идеально никогда себя не окупит.
У меня светильники по 70 Ватт стоят, лишние несколько минут никого не разорят.
Очень даже автоматизация, потому что в прихожке, ванне и кухне выключателей вообще нет.
+
avatar
  • gulin176
  • 08 октября 2016, 15:11
0
причём тут не окупит. дело в том что датчик движения это универсальное средство. если же ставить датчик растояния то это всегда индивидуально. сделать чтобы датчик мониторил объём кухни на присутствие, возможно надо пару датчиков чтобы перекрыть объём. либо как я уже писал считать зашедших и вышедших с кухни. датчик типа aliexpress.com/item/hc-sr04-ultrasonic-ranging-module-smart-car-ultrasonic-sensor-module/32531458441.html,searchweb201602_1,searchweb201603_6&btsid=891b5d1d-6e79-42d3-ad8e-e16f3f4b4562 стоит меньше доллара сложно окупить такую цену
+
avatar
  • sweetest
  • 08 октября 2016, 15:22
0
ну так развивайте данное направление, я вижу плюсы в Ваших мыслях, но не вижу проблемы с PIR при моём использовании…
это разве что, если в ванной заснуть часа на пол — оно конечно вырубится… а так на кухне / коридоре / ванной совсем без движений за 5 минут как-то не обходится…
+
avatar
  • gulin176
  • 08 октября 2016, 15:40
0
вы наверно не представляете алгоритм датчика движения. он не 5 минут по вашему смотрит, двигается кто или нет. алгоритм такой: датчик заметил движение включил реле и таймер. в это время он ничего не проверяет можно хоть уплясаться или стоять как столб. после того как таймер отсчитал время, датчик смотрит наличие движения и если его именно в этот момент нет то реле выключится. из этого следует что двигаться надо только когда датчик отсчитал таймер
+
avatar
  • sweetest
  • 08 октября 2016, 15:58
0
вообще-то у меня такие PIR сейчас висят в коридоре и в ванной на соплях где-то с квартал уже на стадии тестирования, отстроены по 50 сек выдержки и даже этого хватает для использования)) чего бы я их в примере комнат просто так ставил)) там вообще есть оба режима и они переключаются «джампером», будете теперь ознакомлены и Вы ;)
+
avatar
  • Z2K
  • 08 октября 2016, 19:58
0
там вообще есть оба режима и они переключаются «джампером»,
— во втором режиме таймер перезапускается постоянно после каждого детектирования движения.
+
avatar
  • sweetest
  • 08 октября 2016, 22:06
0
я не совсем понял суть работы из Вашего ответа, но у меня она горит по 10 минут(пока я вело в коридоре вытираю), при отстройке в 50сек ;)
Вы вдвоём меня очень удивили)
видео заснять что-ли?))
+
avatar
  • bazis13
  • 08 октября 2016, 15:23
0
Сколько стоит датчик объема? Кто его будет перенастраивать, если мебель подвинется?
Ультразвуковой если и заработает — потребует десятков часов программирования. Но у меня ощущение, что баги будут все равно. Если вы знаете как сделать точно и дешево — продайте магазинам, они будут считать покупателей на входе.
+
avatar
  • sweetest
  • 08 октября 2016, 15:31
0
MRS HB100 — 2 доллара стоит, но работать оно будет аналогично PIR и не чего не изменит, других типов датчиков объёма я не знаю)
с UWD будет возня по прошивке + нужна ардуина, но это не так всё дорого и долго, если есть нужда / стремление — то почему бы и нет…
при этом мне не известно, какой обхват у HС-SR04, если их там придётся цеплять на несчастную кухню в 4ре угла, так это вообще убого как-то выйдет результатом))
+
avatar
  • dop2000
  • 08 октября 2016, 06:48
0
А бывают у китайцев готовые модули для плавного включения/выключения нагрузки?
+
avatar
  • sav13
  • 08 октября 2016, 07:43
0
Какой нагрузки?
+
avatar
  • yurok
  • 08 октября 2016, 07:50
0
подобного я не нашел и сделал свое
диммер позволяет плавно включить руками нагрузку
+
avatar
  • dop2000
  • 08 октября 2016, 08:23
0
Ну я не настолько силен в электронике, чтобы повторить ваше решение.
Хотелось бы какой-нибудь готовый модуль, скажем, чтобы вот такой светильник ночью плавно включал свет, а не бил по глазам.
+
avatar
  • sweetest
  • 08 октября 2016, 08:33
0
и чем питается данный светильник?
+
avatar
  • dop2000
  • 08 октября 2016, 08:41
0
Конкретно этот от 2хАА. Есть еще похожий на литиевой батарейке.
+
avatar
  • sweetest
  • 08 октября 2016, 08:52
0
может проще его перевесить в другое место?))
+
avatar
  • vot
  • 08 октября 2016, 09:04
0
Конкретно этот от 2хАА
Хм… у меня от одной
+
avatar
  • vot
  • 08 октября 2016, 18:22
0
Есть еще похожий на литиевой батарейке
ссылку
+
avatar
  • dop2000
  • 08 октября 2016, 18:37
0
Наврал я про литий. Точнее, у меня есть другой светильник в туалете, я его давно переделал на литий. И так привык к этому, что уже забыл, что он изначально работал от 3хААА.
+
avatar
  • vot
  • 08 октября 2016, 18:54
-1
Наврал я про литий.
я знаю
+
avatar
  • vot
  • 08 октября 2016, 19:13
0
Наврал. Разговор был об этом устройстве img.mysku.me/uploads/images/04/15/38/2016/10/08/a9533e.jpg
Там одна батарея АА:)
+
avatar
  • sweetest
  • 08 октября 2016, 22:09
+2
поговорили :))
похожий на литиевой батарейке
если разобраться, то он и не конкретизировался конкретно на этом светильнике))
при большом желании и ради спора, можно туда повесить литий через гасящий резистор и всё будет нормально работать ;)
+
avatar
  • dop2000
  • 09 октября 2016, 04:34
+1
Я написал «похожий» — в другом корпусе, с другой начинкой, но имеющий тот же функционал.
Зачем придираться по мелочам?
+
avatar
  • vot
  • 08 октября 2016, 18:25
0
Хотелось бы какой-нибудь готовый модуль, скажем, чтобы вот такой светильник ночью плавно включал свет, а не бил по глазам.
Лучше- чтобы он днем не включался, а только ночью
+
avatar
  • dop2000
  • 08 октября 2016, 18:31
0
Он и так днем не включается.
+
avatar
  • vot
  • 08 октября 2016, 19:09
0
Немного не так выразился. Чутье фотодатчика хреновое и еще вниз направлен. Днем включается постоянно. Десять девайсов от разных продавцов. Если светить в морду- не включается.
А вот этот
работает без замечаний
+
avatar
  • sweetest
  • 08 октября 2016, 09:13
0
хз как его правильно задать в поиск под Ваши нужды((
15 минут потратил толку никакого блин((
+
avatar
  • sweetest
  • 08 октября 2016, 09:15
+1
разве что: раз / два
+
avatar
  • dop2000
  • 08 октября 2016, 11:42
+1
Ну это да, но хотелось бы, чтобы кто-то другой это все спаял и продал мне за 99 центов :)
+
avatar
  • sweetest
  • 08 октября 2016, 11:57
0
я как бы согласен, но Вам один фиг придётся впаиваться в схему, а по данным описаниям деталей на пальцах посчитать, что собирается банально навесным монтажем)
+
avatar
  • sim31r
  • 09 октября 2016, 11:42
0
Кстати, люминесцентные лампы плавно разгораются, даже энергосберегайки, хоть кажется что включаются мгновенно, по люксметру видно, что разгораются на полную около минуты.
+
avatar
  • sav13
  • 08 октября 2016, 07:47
+4
Делал на заказ подобную штуку, только с токовым драйвером PT4115.
Там придумана такая логика.
Сигнал с датчика движения — плавно зажигается свет
Больше какого то времени нет сигнала с датчика движения — свет тухнет на половину
И только после следующего таймаута свет плавно гаснет до конца.
Этот период, когда свет притух наполовину нужен чтобы пошевелиться и дать сигнал датчику.движения

На мой взгляд, вполне себе нормальная логика для дежурного света. В полной темноте не остаешься. Раз уж в управлении микроконтроллер, то можно и не такое придумать
+
avatar
  • yurok
  • 08 октября 2016, 07:52
0
такое легко добавить программно — я предпочитаю выставить такое время — чтобы не было необходимости в таком — минут 15 например
+
avatar
  • sav13
  • 08 октября 2016, 08:09
0
Тогда особого смысла в микроконтроллере нет. На выход датчика реле 5В или MOSFET
+
avatar
  • yurok
  • 08 октября 2016, 08:13
0
1 — мне нужно регулируемое в широком диапазоне время
2 — датчик освещенности с легкой сменой чувствительности в заданном диапазоне
3 — плавное включение и выключение
4 — ручной выключатель
вот для этого и сделал
+
avatar
  • sav13
  • 08 октября 2016, 08:28
+1
Хорошее устройство.

Я добавил две функции в подобное
1. Логарифмическую зависимость регулировки ШИМ в связи с нашим устройством глаза.
2. Еще одну кнопочку на плате (нога свободная есть у тиньки), через которую можно задавать параметры (время нарастания и убывания ШИМ, время горения). По принципу настройки машинной сигнализации с брелка. Можно использовать прибор более универсально и не нужно постоянно программатором лазить на плату
+
avatar
  • yurok
  • 08 октября 2016, 09:28
0
Спасибо
Логарифмическую зависимость вполне можно, позже, пока результат устраивает

Кому как. Я не люблю однокнопочный интерфейс, мне проще выставить программатором
+
avatar
  • chvv2007
  • 08 октября 2016, 10:28
+1
Сомневаюсь, что attiny13 хватит памяти для этого. Тем более, что результат настроек надо где-то сохранять, это еще плюс 2 вывода на i2c для пзу.
Правда можно задавать параметры подстроечными или переменными резисторами, как здесь:
+
avatar
  • sav13
  • 08 октября 2016, 21:01
+2
А EEPROM вас чем не устраивает?
64 байт у 13-й тиньки вполне хватит сохранить конфигурацию.
+
avatar
  • chvv2007
  • 09 октября 2016, 10:44
0
Погуглил. Действительно в тиньки есть встоенный EEPROM. Честно, не знал…
+ за подсказку.
+
avatar
  • ksiman
  • 08 октября 2016, 08:04
0
R3 — маловат, больше 40мА нельзя грузить, меняйте на 100-150 Ом
+
avatar
  • sav13
  • 08 октября 2016, 08:12
0
R3 же только защитные функции выполняет в случае пробоя транзистора?
Я обычно тоже 100Ом ставлю, хотя наверное можно и 10К.
+
avatar
  • ksiman
  • 08 октября 2016, 08:13
0
Он ограничивает импульсные токи перезаряда ёмкости транзистора
+
avatar
  • yurok
  • 08 октября 2016, 08:16
0
mySKU.me/blog/aliexpress/43357.html#comment1535403
мегаэксперт считает что там вообще не нужно резисторов :)

схемка из обзора трудится исправно
+
avatar
  • ksiman
  • 08 октября 2016, 08:29
0
Она и без резисторов будет работать, но это неправильно
+
avatar
  • sav13
  • 08 октября 2016, 08:16
0
Скажите, а зачем на RESET ардуины кондер стоит?
У меня без него любая тинька и мега шьется
+
avatar
  • yurok
  • 08 октября 2016, 08:22
0
через раз без него выходит, перезагружается ардуинка
+
avatar
  • sweetest
  • 08 октября 2016, 08:39
0
за обзор плюс, спасибо за подобные обзоры для развития / пользования общественности ;)
+
avatar
  • chvv2007
  • 08 октября 2016, 09:30
0
Спасибо за обзор. Нравятся мне подобные темы на муське.
У меня похожая схема более года работает на кухне.
Чтобы схема, при необходимости работала в светлое время суток, выключатель датчика освещенности поставил в разрыв фоторезистора, сэкономив при этом вывод микроконтроллера.
Тоже хочу переделать ее на 13-ю тиньку. Программу переделал, на монтажной плате все работает, но никак руки не дойдут сделать печатную плату.
+
avatar
  • yurok
  • 08 октября 2016, 10:20
0
Спасибо
Выключатель в разрыв фоторезистора будет его отключать, но не включать свет, если вас такая логика устраивает, норм. В данном случае, выключатель независим от пир, можно включить и не двигаться пару часов, свет будет гореть. Совсем другая логика. Ну и экономить пины в данном случае смысла не вижу, а у вас вообще целая ардуино — зачем экономить там, даже не знаю
+
avatar
  • chvv2007
  • 08 октября 2016, 11:05
0
Да, все верно. Обрыв фоторезистора для схемы обозначает «вечную ночь». Т.е. свет включается по движению вне зависимости от внешнего освещения.
По поводу экономии вывода — я имел ввиду Вашу тиньку.
+
avatar
  • yurok
  • 08 октября 2016, 11:09
0
Да и в моем случае тоже, у меня один свободный остался

Ну и мне не нужна вечная ночь — мне нужен выключатель
+
avatar
  • Nestor
  • 08 октября 2016, 11:37
0
хороший обзор. качественно и интересно.
хотя конечно повторить обозреваемое не взялся бы,
я готовенькое больше практикую :-)
+
avatar
  • SterX
  • 08 октября 2016, 12:00
0
Собрал подобную схему по мотивам каммента mySKU.me/blog/aliexpress/43007.html#comment1520352 и статьи geektimes.ru/post/276198/
Первая поделка на ардуино. И заработала, блин с первого раза!
+
avatar
  • wojda
  • 08 октября 2016, 22:26
0
Спасибо за Ваш комент, я задумался)
+
avatar
  • SterX
  • 09 октября 2016, 09:55
+1
Чего тут думать. делать надо!
добрался до домашнего ноута. опишу свою поделку. На полноценный обзор вряд ли потянет, поэтому скромно в камментах.

Схема подключения накидана в каменте
Датчик — сабжевый
Мосфет, понижайка, ардуино нано, первые попавшиеся фоторезисторы. 12В питальник из запасов от мертвого роутера.

Скетч (из статьи на гиктаймс. Убрал лишь обработку фоторезистора. Он замечательно обрабатывается самим датчиком. куда припаять — ниже на картинке видно):
int ledPin = 5;            //Светодиодная лента
int motionSensorPin = A0;  //Датчик движения
int val = 0;               //Яркость ленты
int light = 0;             //Освещенность
int motion = 0;            //Движение
int timerCounter = 0;      //Считалка времени
int timerEnable = false;   //Начало цикла включения
int timeOn = 8;            //Время включения в секундах
int faderEnable = false;   //Разрешает погаснуть

void setup()
{
    pinMode(ledPin, OUTPUT);      
    Serial.begin(9600);
}
 
void loop()
{
  analogWrite(ledPin, val);
  motion = analogRead(motionSensorPin);
  if (motion > 150) {
    timerEnable = true;
    faderEnable = false;
  }
  if (timerEnable){
    timerCounter ++;    
    val = val + 1;
    if (val > 254) val = 254;
    if (timerCounter > timeOn * 50){
      if (motion < 150){
        timerCounter = 0;
        timerEnable = false;
        faderEnable = true;
      }
      else {
        timerCounter = 0;
      }
    }
  }
  if (faderEnable){
    val = val - 2;
    if (val < 0){
      faderEnable = false;  
      val = 0;
    }
  }  
    delay(20);
}
+
avatar
  • yurok
  • 09 октября 2016, 12:20
0
очень странный код :)
ну и тут все таки иное устройство чем в обзоре
+
avatar
  • SterX
  • 09 октября 2016, 22:29
0
Без обид. Даже и не думал шатать пальму первенства одного из местных гуру.
Повторюсь, это моя первая поделка на Ардуино. Устройство категорически иное, но выполняет аналогичные вещи.
Я и многие здесь вряд ли когда-нибудь хотя бы попытаются воспроизвести Ваши изделия. Как бы ни хотелось, но подготовка не та.
С мая месяца (дата публикации вышеупомянутой статьи на ГТ) вынашивал идею автоматический подсветки плинтуса. Но даже там все было сложно для меня. Более того, критика в камментах навела меня на поиски альтернативного безардуинового решения. Я донимал знакомых хоть как-то связанных со схемотехникой, понакупил радиодеталек, но в итоге собрал-таки схему на ардуино, ибо так проще. Код не мой. Я вообще в сях как свинья в апельсинах — это же С язык, верно? Я когда-то в универе на паскале кодил… Разобраться в готвом коде с ГТ было не сложно, но сам бы я вряд ли его написал. Я просто выбросил обработку фоторезистора, ибо впаял его в датчик.
В итоге я получил то, что хотел. И если кто-то ищет аналогичное решение, но не готов травить плату и делать Ваш вариант устройства, но справится с моим — я только за.
+
avatar
  • yurok
  • 09 октября 2016, 22:48
0
я только за любое творчество!
хорошо получилось
просто странно выглядит код, когда с цифрового датчика с помощью ацп читают данные
motion = analogRead(motionSensorPin);
и еще ряд моментов
Впрочем — работает, разработчика устраивает — и хорошо
впайка в пир фоторезистора ограничивает возможности настройки порогов… хорошо если они у вас удачно совпали с требуемыми
+
avatar
  • wojda
  • 22 ноября 2016, 17:29
0
Добрый день!
Можете просмотреть переписку ниже мою с «SterX», может подскажите или дополните если я ерунду говорю.
Спасибо!
+
avatar
  • wojda
  • 20 ноября 2016, 16:32
0
Добрый день! Вроде все заказал, но вот для залития этого кода нужно специально ПО и девайс?
Вот все что есть на руках:
+
avatar
  • SterX
  • 20 ноября 2016, 19:51
0
Хм. Я не спец в таких делах (у меня лишь один проект на ардуино и он в камментах выше), но, сдается мне, что на фото Arduino Pro Mini, у которой вроде как нет своего USB порта для прошивки и шить ее надо через UART. Еще у нее есть два варианта: один питается от 3.3 вольта, второй — от 5. Обязательно нужно уточнить этот ньюанс.
В первом случае пригодится одна из двух одинаковых AMS1117 для ее питания.
Во втором же они лишние и питаться она будет от LM2596, что выше на фото. Обязательно прежде, чем подавать питание, настроить напряжение на ней!
И не вижу фоторезистора. Без него схема будет работать при любом освещении. С резистором — только в темноте.

Итак, резюмируя:
1. Ищем UART
2. Разбираемся с напряжением питания ардуины
3. Думаем, нужен ли фоторезистор.
4. Источник питания 12В и светодиодная лента уже есть?
+
avatar
  • wojda
  • 20 ноября 2016, 21:06
0
дубль
+
avatar
  • wojda
  • 20 ноября 2016, 21:18
0
я блин нуб в этом( прочитал Ваши коменты и загорелся)
Читаю, что можно и запитать от 12В через «RAW» arduino.ua/ru/hardware/ProMini
Сейчас буду заказывать уарт для прошивки «CP2102 Module».
А ленты и блоков питания хватает… этого добра набрался) 5630, 5730, 3014, 3528…
А насчет фоторезистора, то решил без него. Это коридор, пускай всегда вкл при наличии движения.

ПС. Смущает лишь одно. Блок 12В всегда включен( на долго ли его хватит…
+
avatar
  • SterX
  • 20 ноября 2016, 22:55
0
Я тоже нуб. Но гуру тоже с чего-то начинали, верно? :)
Может быть, стоит потренироваться на ардуино нано? Она попроще — прошиваеться по USB безо всяких UART…
Насчет 12 В питания — не знаю. надо пробовать или гуглить.
Запилил видео и схему набросал, чтобы тебе проще было.
Отладку кода — плавность включения/выключения и задержку буду делать когда соберу уже по месту. Пока ждал запчасти — решил переехать в частный дом. Вот там и развернемся :)
+
avatar
  • wojda
  • 20 ноября 2016, 23:23
0
заказал, жду уарт.
Плавность чуть отредактировать, а то быстро вкл/выкл)
Спасибо за потраченное на меня время)
+
avatar
  • SterX
  • 20 ноября 2016, 23:33
0
Та на разных лентах по-разному будет работать. Есть мысль подстроечник поставить, но что-то лениво
+
avatar
  • wojda
  • 22 ноября 2016, 17:25
0
блин, я чета смысл потерял всей этой поделки. Я это все хочу сделать ради плавности. Вкл за 3 сек, а выключение за 10, например.
Просто вкл и выкл по датчику свети и движение делается с помощью одного девайса да 3 дол и там паяльник и комп не нужен…
Верно ведь? Или у Вас другие цели?
+
avatar
  • yurok
  • 22 ноября 2016, 21:41
0
Похоже что верно
+
avatar
  • Jury_78
  • 08 октября 2016, 13:39
0
фоторезистор можно припаять непосредственно к самому исходному датчику
Если не секрет — куда?
+
avatar
  • skif31
  • 08 октября 2016, 16:33
0
вверх
+
avatar
  • SterX
  • 08 октября 2016, 20:55
+1


И он работает. днем датчик молчит, в темноте — работает
+
avatar
  • Jury_78
  • 08 октября 2016, 21:15
0
Спасибо!
+
avatar
  • Um-ka
  • 10 октября 2016, 09:00
0
Хороший обзор и хорошая реализация.

Пара вопросов: как панелизацию в Спринте сделал и как функции On-Off работают, переполнения со сбросом в do не происходит? Ну видимо нет раз работает.

Совет: делал проект другой на Attiny с компактным кодом. Один и тот же скетч скомпилированный в Arduino IDE под Linux в виде готового .hex весил на 500 байт меньше, чем скетч, скомпилировааный в Винде. Наверное сам компилятор по другому работает в никсах.
+
avatar
  • yurok
  • 10 октября 2016, 13:27
0
Спасибо
так при переполнении 0 будет, про линукс гляну — когда раньше смотрел одинаково было
+
avatar
  • since88
  • 11 октября 2016, 14:07
0
Подскажет кто, что подключить к выходу готовому датчику движения на 220в, для плавного розжига светодиодных спотов для подсветки пола. Желательно какой нибудь готовый модуль или подскажите какие компоненты использовать. Спасибо
+
avatar
  • yurok
  • 11 октября 2016, 14:46
0
Никак, это разные задачи
Датчик включит блок питания, а по светодиодам уже отдельно надо думать, по схеме включения и прочему, то есть датчик тут не причем
+
avatar
  • MySky
  • 15 октября 2016, 21:37
0
Мне тоже захотелось облагородить мойку на кухне, там лампа дневного света. Заказал вот это. (пока едет). Может есть какой-нибудь переходник на Т5, чтобы штекер, идущий в лампу не уродовать?
+
avatar
  • vsnet
  • 20 октября 2016, 19:09
0
Вопрос где взять библиотеку (util/delay.h) которую вы подключаете в коде???
+
avatar
  • yurok
  • 20 октября 2016, 20:05
0
с ардуино идет
+
avatar
  • vsnet
  • 21 октября 2016, 08:27
0
спасибо