Отдали в ремонт Arduino Nano V3.0 с miniUSB разъемом на базе ATmega328 и конвертером USB - UART CH340G, со словами: перепутал полярность питания, теперь не работает.
При собственноручной проверке "мертвость" объекта подтвердилась.
Вооружившись схемой на плату, у меня в первую очередь вызвал подозрения диод D1 (после него не было напряжения). Замкнув пинцетом диод, светодиод питания загорелся.
Сбрасываем феном диод
Замыкаем площадки из под диода
Все заработало
В конечном итоге дополнительно проверил связь с ПК:
Безусловно вначале необходимо приобрести данные девайсы (ссылки выше) и конечно же проверить:
Начала работы
Для начала нам необходимо поставить соответствующее ПО (Arduino Software). Найти его можно здесь. Впоследствии, когда я делал библиотеку, я понял что Ардуино Software это полная лажа (слишком все урезано, очень много нужно совершать "телодвижений", где могла быть автоматизация) и перешел на Arduino IDE, на чем я собственно пока и остановился.
Собираем стенд для отладки
Схема без реле, ну там все просто, сами сообразите
Алгоритм
О причинах я рассказываю в видео.
Замеры выполняются на 5-минутных интервалах, по окончании 30-минутных "отрезков" времени алгоритм выносит решение о включении или выключении вентиляторов. Дабы избежать дребезга, порог для включения 29 градусов, для выключения 25.
Если вентиляторы включены и подошел к концу, то выполняется анализ тенденции изменения температуры:
если не меняется или растет, то нет смысла тратить энергию, вентиляторы выключаются и повторная попытка делается через час
если снижается, то выполняется анализ тенденции снижения (подробнее в видео)
Библиотеку для датчика DS18b20 я взял в интернете и "перепилил" ее почти полностью, выбросив все лишнее и оставив только нужное, для этой конкретной модели.
Проектирую элемент "умного дома". На данный момент из элементов: датчика освещения, который возвращает лишь логический "0" или "1" и датчика движения HC-SR501 базе Arduino Uno R3 MEGA328P. В предыдущем посте я разбирался с датчиком движения, сегодня мы составим алгоритм обработки данных с датчика освещенности.
Что такое Arduino
Прежде хочу рассказать что такое Arduino UNO, да и вообще что такое Arduino.
Arduino UNO это небольшая плата с процессором и памятью. Существует множество модификаций плат Ардуино, отличаются они количеством выводов, мощностью процессора, памятью, интерфесов и дополнительных фишек.
Приемуществом Arduino является предельная простота при проектировании своей системы. К системе Ардуино выпускается множество датчиков, переключателей и множество иных устройств.
Программы легки пишутся на "урезанном" C++ и довольно легки в освоении даже если вы с программированием не слишком знакомы.
Введение
Задача:
научиться работать с датчиком
построить оптимальный алгоритм для анализа данных с датчика.
Безусловно вначале необходимо приобрести данные девайсы (ссылки выше) и конечно же проверить:
Начало работы
Для начала нам необходимо поставить соответствующее ПО (Arduino Software). Найти его можно здесь. Впоследствии, когда я делал библиотеку, я понял что это полная лажа и перешел на Arduino IDE, на чем я собственно пока и остановился.
Собираем стенд для отладки
Алгоритм
Решение об уровне освещенности принимается на интервале 1 минута.
Минутный интервал разбит на 6 подинтервалов по 10 секунд.
На каждом подинтервале принимается решение об уровне освещенности, если уровень освещенности выше порога и по времени более 10%, то считается что «светло».
На 1 минутном интервале принимается решение только если 100% «темно» или «светло». Это сделано во избежание случайных засветок (мимо проезжающая машина, облака, засветка от термоядерного взрыва…).
Библиотека приложена.
Далее совмещаем работу с датчиком движения.
Логика работы следующая: если в помещении «светло», то выключаем датчик движения и доп. освещение. Если в помещении «темно» и отсутствует движение, то доп. освещение выключено и если движение есть, то включаем доп. освещение.
Есть минусы данного алгоритма и датчиков:
Датчики возвращают лишь логические «0» или «1», а значит количественно оценить данные с датчиков мы не можем
В случае ручного включения основного освещения, система не отличит увеличения уровня освещения от основного источника света или естественного от дополнительного.
Если во втором случае мы можем дополнительно ввести датчик тока в цепь основного освещения или организовать разовую команду от выключателя до Arduino, то в первом случае мне необходимо менять датчики: датчик движения дополню ультразвуковым, а датчик освещения заменю на цифровой, т.е. я буду получать данные в люксах и получать количественную характеристику.
Моя ошибка заключается в том, что алгоритм работы я разрабатывал уже после закупки комплектующих по ходу макетирования. Требования нужно было выставлять к железу после, как результат потеря времени, деньги я вряд ли потерял, датчикам найду другое применение.
Безусловно вначале необходимо приобрести данные девайсы (ссылки выше) и конечно же проверить:
Сенсор на дисплее не работал, но это другая история.
Начало работы
Для начала нам необходимо поставить соответствующее ПО (Arduino Software). Найти его можно здесь. Впоследствии, когда я делал библиотеку, я понял что это полная лажа и перешел на Arduino IDE, на чем я собственно пока и остановился.
Собираем стенд для отладки
Алгоритм
Особенностью датчика является то что он возвращает лишь значение есть движение или нет, т.е. если человек замрет в комнате (смотрит телевизор или книжку читает), то датчик может дать неверные данные. Поэтому алгоритм должен минимизировать данный вариант событий. Безусловно систему обнаружения человека в помещении я буду усиливать другими датчиками, но это в будущем.
Значит так: замеры движения выполняются на интервалах времени (15 сек, 30 сек, 1 мин, 5 мин).
Замер выполняется раз в пол секунды. Если за интервал времени интервал задетектированного движения больше 10%, считается что движение есть, следствии чего модуль ПО выдает TRUE.
Если за интервал времени детектируется движение, то следующий интервал инкриминируется.
В случае пропажи движения, модуль ПО выдает TRUE до окончания интервала + этот же интервал. В случае пропажи движения на последнем интервале, модуль ПО выдает TRUE до окончания текущего интервала + (интервал - 1).
П.С. выражать свои мысли текстом или языком я толком не умею, не учитель, так что если что не поняли, то вряд ли смогу объяснить (вторую попытку делаю в видео).