Русский
Русский
English
Статистика
Реклама

Ардуино

Электроэнцефалограф на Arduino

09.01.2021 12:13:57 | Автор: admin

Здравствуйте дорогие читатели моего блога. Данная статья относится к разделу робототехники.

Я представлю вам инструкцию создания электроэнцефалографа на базе образовательной платы Arduino.

Для реализации задуманного, необходимо приобрести
плату Arduino (любой вариант; в статье представлена Arduino uno)

усилитель сигнала, например, микросхема KIA324P Датащит по микросхеме.

два резистора рассчитанные на кОм, но имеющие разницу в 10 20 раз (например, 10кОм и 100кОм)

соединительные штекеры

соединительные провода

Ниже представлена схема устройства. Это упрощённый вариант без добавления конденсаторов в цепь, которые нужны для устранения помех и сглаживанию графиков показаний. Я их не стал использовать в схеме дабы не запутывать.


Здесь представлен любительский аппарат, который может собрать даже ребёнок.

Схема устройства

Загрузим программу на плату Arduino

Программа, как видите, простая и заключается в выводе значений через аналоговый пин A0.

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

Откроем его при включёном устройстве:

Показания сенсора, когда нет контактов с кожей человека.

Показания сенсора при касании контактов лобной части головы.

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

Всем удачной научной работы

Подробные этапы сборки и источники информации на основе которых создавался данный проект представлены ЗДЕСЬ

Подробнее..

Перевод Шарманка на Ардуино

16.07.2020 18:14:38 | Автор: admin

Эта публикация является переводом моей инструкции размещенной на сайте instructables.com. Проект занял первое место в DIY Arduino contest 2020 от Instructables



Привет! Это статья о том, как я делал шарманку на Arduino.


Демо



Немного истории


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



С середины XVIII века и до изобретения граммофона существовали различные автоматические инструменты. В основном это были пианолы и ручные уличные шарманки. Эти инструменты были автоматизированы механикой и пневматикой.



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


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



Считывание нот


Сперва нужно определить нажата клавиша пианино или нет.


Старинные музыкальные инструменты используют довольно сложные механизмы. Я же могу использовать Arduino и электронные датчики, чтобы определить нажата клавиша или нет. Например, используя ИК-сенсор или датчик линии. Эти датчики широко используются в мире Arduino для гонок по линии. Они позволяют определить белый или черный цвет поверхности под ними.



Идея следующая. Пусть один ИК-датчик представляет собой одну ноту и клавишу пианино. Имеется несколько датчиков. Под датчик помещается лист бумаги, разделенный на параллельные дорожки. Дорожки состоят из черных и белых областей. Лист начинает движение относительно датчиков. Если на дорожке под датчиком находится черная область, то клавиша нажата. Если белая область клавиша отжата. В момент, когда клавиша переходит из освобожденного состояния в нажатое нота начинает звучать. Звук удерживается, пока область под датчиком остается черной.


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


Я сделал клавиатуру, состоящую из 40 клавиш. Для этого я использовал пять модулей Octoliner. Модуль Octoliner это восьмиканальный датчик линии. Каждый модуль имеет восемь оптопар TCRT5000 и может быть использован для 8 различных клавиш пианино. Модуль управляется по шине I2C, и его легко связать с Arduino.


Я разместил пять модулей последовательно, чтобы создать единую обширную линейную матрицу из 40 (5x8) датчиков. Вы можете сделать клавиатуру из меньшего количества клавиш, или сделать полноразмерную клавиатуру пианино с 88 клавишами. Я выбрал 40, потому что это примерно половина всех клавиш на реальном инструменте.


Ардуино как миди устройство


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



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


Arduino способна переводить данные о нажатых клавишах в MIDI-сообщения. Я выбрал плату Arduino, которая способна эмулировать USB HID-устройство. Передавая MIDI-сообщения через USB-порт, Arduino превращается в настоящую электронную клавиатуру пианино. С USB MIDI устройством, я смогу извлечь звук используя синтезатор просто подключив Arduino к USB-порту компьютера.


Выбор пал на плату Arduino MKR ZERO. Она способна эмулировать USB HID из коробки. Плата очень производительная, а ее большой объем флэша идеально подойдет для хранения пресетов кучи музыкальных композиций. Также я использовал обычную тактовую кнопку для переключения пресетов и знакогенерирующий I2C LCD дисплей 16x2 для отображения текущего пресета.


Конструкция шарманки


Я не буду описывать всю конструкцию подробно. Шарманка делалась с первого раза и наугад. Только ради эксперимента. Здесь довольно много деталей, проще взглянуть на 3D-модель и спецификацию. Для изготовления деталей я использовал оргстекло, лазерную резку, 3D-печать, а также материалы и механику, которые у меня были дома.




Условно я разделил конструкцию на две основные части и назвал их "выпрямитель" и "съемник". Обе части крепятся к опорной плите. Выпрямитель крепится к основанию с помощью стоек M3 длиной 65мм, а съемник с помощью напечатанных на принтере уголков. Крепеж не показан на сборках, но есть в спецификации.


Сборка выпрямителя



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


Выпрямитель собран из нескольких пластин. Бумажный лист зажат между основанием и крышкой. Между крышкой и листом сделан небольшой зазор в 1-2 мм, чтобы лист не закусывало при движении. По бокам установлены две направляющие пластины. Пять модулей датчиков линии установлены на пластине на определенной высоте над листом и крепятся к основанию четырьмя стойками 6мм.


Сборка съемника



Эта часть предназначена для подачи листа. Она тянет лист из выпрямителя.


На валах установлены четыре колеса с резиновыми кольцами. Они плотно зажимают нотный лист. Вращаясь, эти колеса вытягивают считанный лист из выпрямителя. Съемник фиксируется на опорной плите уголками. Съемник состоит из трех пластин оргстекла и трех 6мм валов между ними. Валы закреплены в пластинах фланцевыми подшипниками F626ZZ. Подшипники зафиксированы с помощью напечатанных крышек.


Валы вращаются маховиком через ременную передачу. Я использовал 2GT ремень без натяжения. Замкнутый ремень шириной 6мм с 250 зубьями. Такие ремни и шкивы для них распространены в хобби-станках с ЧПУ и 3D-принтерах, поэтому их легко найти и купить. Малый шкив купленный GT2 20 6 B6.



Больший шкив самодельный, изготовлен лазерной резкой из оргстекла. Он состоит из 4 пластин толщиной 2 и 4 мм и алюминиевого фланца на вал 6мм.



Маховик состоит из пластины оргстекла, подшипника F625ZZ, фланца на вал 6мм и напечатанной рукоятки. Подшипник запрессован на рукоятке и зафиксирован в пластине напечатанной крышкой.



Колеса, тянущие лист, тоже сборные. Каждое колесо состоит из 4 пластин, толщиной 3 и 2мм, и фланца на вал 6мм. На пластины натянуто резиновое уплотнительное кольцо. Я использовал обычное уплотнительное кольцо ГОСТ 9833 050-060-58.


Экранирование оптопар



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



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


Перевод нотного листа


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


Итак, один датчик линии имеет 8 каналов, отвечающих за считывание 8 нот. Длина датчика составляет 80мм. Поместив 5 модулей рядом, я получаю общую длину в 400мм. Добавлю еще 5мм свободного места по краям. Таким образом, общая ширина нотного листа равна 410 мм.


Ширина одной нотной дорожки равна ширине одной оптопары и составляет 5,8мм. Расстояние между оптронами на датчике 4,2 мм. Такое же расстояние между нотными дорожками на листе.



Ноты делятся по длительности, где длительность это доля такта. Нота может быть целой, половиной, четвертой, восьмой, шестнадцатой итд. За основу я беру длительность шестнадцатой ноты, и назначаю ей высоту 10мм на листе. Теперь весь лист может быть разлинован горизонтальными линиями с интервалом 10мм, так как это минимальный шаг. Черный прямоугольник размером 10х5,8мм на дорожке даст звук длительностью шестнадцатой ноты. Прямоугольник высотой 20мм это восьмая, 40мм четвертая, 80мм половина, 160мм целая.


В формате MIDI каждая нота фортепианной клавиатуры имеет свой уникальный номер. Эти номера будет присвоены каналам датчиков линии. При транскрипции для себя я сформировал несколько шагов, чтобы не запутаться. Покажу на примере простой мелодии "дождь дождь уходи" (с) www.teaching-children-music.com.



  1. Смотрим на все ноты, которые используются в музыкальном произведении, и записываем их MIDI номера в порядке возрастания. Эта мелодия использует только три ноты первой октавы: E, G и A. Нота E первой октавы имеет MIDI-номер 64, G имеет номер 67, а A имеет номер 69.
  2. Присваиваем MIDI-номера каналам датчика линии. Например, я назначаю на первый канал номер 64, второй канал номер 67 и на третий номер 69.
  3. Смотрим на размер произведения. Эта мелодия имеет размер 2/4. Это означает, что длина от одного такта до другого равна двум нотам с четвертой длительностью. Таким образом, высота одного такта на листе равна 40мм (2*80 мм). Полная мелодия имеет 4 такта, и я могу разместить все тактовые линии.
  4. Переводим произведение. Закрашиваем прямоугольные черные области на листе в соответствии с длительностью нот.
  5. Правим нотный лист и удаляем помарки. Например, эта мелодия имеет две одинаковые восьмые ноты, которые звучат последовательно во втором, третьем и четвертом тактах. На переведенном фрагменте эти две восьмые ноты слились в единую четвертую ноту. Их необходимо разделить, слегка укоротив длительность первой ноты. Для этого уменьшаем высоту первого прямоугольника, обеспечив пустой белый зазор.

Переведенная музыка


Вся нотная запись получилась слишком длинной, чтобы физически поместиться на одном бумажном листе. Чтобы уместить все ноты, я распечатал их частями на нескольких листах А1. Затем обрезал края листов до нужной ширины и последовательно склеивал их в один большой рулон. Всего я попробовал перевести три музыкальных отрывка.


  1. "Hedwig's Theme" из Гарри Поттера а аранжировке Patrick Piesman.
    Используемые MIDI ноты:
    41, 42, 43, 45, 48, 49, 50, 52
    54, 55, 56, 58, 59, 60, 61, 62
    63, 64, 65, 66, 67, 68, 69, 70
    71, 72, 73, 74, 75, 76, 77, 78
    79, 80, 81, 82, 83, 84, 85, 86
  2. "The Black Pearl" из Пиратов карибского моря в аранжировке Klaus Badelt.
    Используемые MIDI ноты:
    31, 33, 34, 36, 38, 40, 41, 43
    45, 46, 48, 50, 52, 53, 55, 57
    58, 59, 60, 61, 62, 63, 64, 65
    66, 67, 68, 69, 70, 71, 72, 73
    74, 76, 77, 79, 81, 82, 85, 86
  3. Оригинальная первая часть "The Entertainer" Джоплина.
    Используемые MIDI ноты:
    43, 44, 45, 47, 48, 50, 51, 52
    53, 54, 55, 56, 57, 58, 59, 60
    62, 63, 64, 65, 67, 69, 71, 72
    74, 76, 77, 78, 79, 81, 83, 84
    86, 87, 88

Прикладываю ссылки на оригинальные фортепианные ноты, на мои переведенные ноты для шарманки и пустой линованный CAD-лист формата А1, который может пригодиться для ваших переводов.



XOD и библиотеки


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


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



Это крутые пользовательские библиотеки XOD позволяющие работать с MIDI-форматом. Библиотека e/midi используется для создания MIDI-сообщений. С помощью библиотек e/serial-midi/ и e/usb-midi/ можно обмениваться MIDI-сообщениями через последовательный интерфейс или USB-порт Arduino.


Главный патч проекта находится в библиотеке gabbapeople/barrel-organ/


Патч проекта



Патч шарманки начинается с инициализации датчиков. Для инициализации устройств датчиков используются quickstart ноды octoliner из библиотеки amperka/octoliner. Каждое устройство имеет свой адрес I2C. Адрес датчика линии можно изменить, используя пример в библиотеке amperka/octoliner. Для каждого датчика нода set-brightness устанавливает значение яркости ИК-излучателей равное 1. Затем нодой set-sensitivity устанавливается чувствительность ИК-приемников равная 0,9. Для пяти устройств выведены отдельные шины DEV1, DEV2, DEV3, DEV4, DEV5. Нода usb-midi-device создает и хранит экземпляр пользовательского типа MIDI, используемого для генерации и отправки MIDI-сообщений. При подаче питания происходит задержка в 1 секунду. После инициализации параметров всех сенсоров нода gateначинает пропускать через себя непрерывные импульсы.


В программе есть счетчик пресетов. Каждый пресет соответствует определенному набору MIDI нот назначенных на каналы датчиков линий. Пресеты переключаются с кнопкой и нодой track-charger. На дисплее text-lcd-i2c-16x2 отображается, какой пресет активен в данный момент.


Далее идет нода keyboard. Эта нода принимает в себя шины всех датчиков, шину `midi, а также текущее значение счетчика пресетов.


Нода клавиатуры



Нода keyboard составная и очень большая, это сердце устройства. Структура ноды начинается с шин сенсоров и значения текущего пресета.


Затем следуют пять нод octoliner-read-channels. Одна такая нода считывает восемь аналоговых сигналов от восьми оптронов на датчике. Сигналы считываются последовательно и оцифровываются по простой формуле. Если сигнал >= 0,7, то клавиша нажата; если нет, то она отпущена. Суммарно нодыoctoliner-read-channels имеют 40 выходных пинов пронумерованных от CH0 до CH7 и выводят в них 40 булевых значений.


Далее следует выбор MIDI номера ноты исходя из пресета. Один канал может соответствовать разным нотам. Выбор ноты для конкретного канала зависит от текущего пресета. Нода note-switcher выбирает нужный MIDI-номер в зависимости от номера пресета. За каждой нотой закреплена шина с уникальным именем, например 48_1, где первое значение это номер MIDI, а второе значение номер пресета. Логические ноды xor отсекают неиспользуемые шины.


Отсортированные шины MIDI номеров поступают в ноды octave. Всего я сделал шесть "октавных" нод от 1 до 6. Эти ноды соответствуют шести октавам настоящего фортепиано. Каждая нода octave состоит из двенадцати входных булевых пинов для двенадцати MIDI номеров нот. Например, для четвертой октавы входными пинами будут MIDI номера 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71. При изменении значения на любом из входных пинов, нода octave генерирует и отправляет MIDI-сообщение через USB-порт.


Вывод звука



Шарманку можно подключить к любому синтезатору с USB. Например, можно подключить её к компьютеру c ОС Windows и использовать Synthesia. Или подключите её к малине и использовать QjackCtl & Qsynth.

Подробнее..

Точечная сварка под микроскопом

01.08.2020 22:22:07 | Автор: admin
Хомяки приветствуют вас друзья!

Сегодняшний пост будет посвящен аппарату для точечной контактной сварки аккумуляторов типа 18650 и прочих. В ходе соберем такое устройство, разберем основные принципы его работы и детально изучим сваренные места под микроскопом. Аккумуляторам сегодня придётся нелегко. Казалось бы сварочный аппарат, который в буквальном смысле состоит из одного трансформатора и контроллера, что тут может пойти не так?!



Представьте себе, что одним прекрасным утром у вас сдох шуруповёрт. Крутить шурупы отверткой не царское дело, потому нужно решать проблему. Виновниками этого происшествия стали никелевые аккумуляторы, которые преждевременно отправились в Вальхаллу пить вино и сражаться на мечах. На смену им пришли компактные, высокотоковые литий-ионные аккумуляторы, которые по характеристикам в разы превосходят своих предшественников.

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



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



На самом деле тут все оказалось довольно просто. Сердцем устройства выступает трансформатор от микроволновки с перемотанной вторичной обмоткой, и контроллер который обеспечивает подключение первичной обмотки МОТ-а к питающему напряжению сети на необходимое время для формирования сварочного импульса. Так же нам понадобиться блок питания для контроллера, пару медных кабельных наконечников, сетевой провод сечением в 1.5 кв. мм. и корпус, в котором разместиться все электроника. У меня давно валялся 700 Вт МОТ с отрезанной вторичной обмоткой, как раз появился повод куда-то его пристроить.



Извлекаем магнитные шунты и аккуратно зачищаем отверстия куда будет вставляться толстый провод. Особое внимание уделяем краям, они довольно острые и легко могут повредить изоляцию кабеля.

Что касательно самого кабеля, тот тут лучше не экономить и взять вот этого товарища. РКГМ сечением 25 кв. мм. Производство Россия Рыбинсккабель. Это хитрый многожильный провод с изоляцией из кремний-органической резины повышенной твердости, в оплетке из стекловолокна пропитанного эмалью или теплостойким лаком. Он очень тонкий и гибкий. Изоляция провода абсолютно равнодушна к повышенным температурам, пламя зажигалки едва способно вызвать хоть какое-то тление. Длинна термостойкого змея 2.2 метра.

Внутренние отверстия магнитопровода смажем вазелином. Ту же процедуру проводим с кабелем. Несмотря на то, что кабель достаточно тонкий по сравнению со своими более дешевыми собратьями, в трансформатор нужно попытаться вместить 4-5 витка. Но вот незадача. 700 Вт МОТ позволяет вместить в себя только 3 витка. Не беда! На помощь приходит система рычагов и отвёрток. В общем, включив смекалку и мотаем 4 витка в такой небольшой трансформатор.



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

Теперь их необходимо соединить к медным шинам на ручке для контактной сварки. Болт тут диаметром 8 мм и длинной 20 мм. Обязательно устанавливаем шайбу Гровера, она обеспечит надежный прижим, если соединительный узел ослабиться в процессе работы.



Самую простую ручку для контактной сварки можно заказать на алиэкспресс. Но мне приглянулся более продвинутый вариант созданный одним народным умельцем. Зовут его Генадий Збукер. Он сам собирает сварочные аппараты, дополняет их ручками которые сам проектирует и печатает на 3D принтере. Называется такая конструкция держатель электродов точечной сварки ZBU 5.1 с кнопкой и пружинами. 3D модели ранних версий, таких ручек, можно найти на сайте Thingiverse, автор позаботился чтобы при желании каждый мог собственноручно сделать подобный держатель для электродов. Это заслуживает уважения! Так же у него на сайте можно заказать расходные материалы (не реклама, а рекомендация).

Что касаемо ручки для контактной сварки. Выполнена она довольно качественно. Печать корпуса тут осуществляется ABS пластиком. Особенность версии 5.1 в том, что на борту есть два вентилятора, которые способны охлаждать медные шины в процессе непрерывной работы. Питаются они от 5 вольт через разъем micro USB. Ток потребления не более 300 мА.

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



Электроды выполнены из жаропрочной хромовой бронзы БрХЦр. Поскольку электроды при сварке быстро изнашиваются, к ним предъявляются требования по стойкости сохранения формы при нагреве до 600 градусов и ударных усилиях сжатия до 5 кг на квадратный миллиметр. В процессе работы такие электроды особо не прилипают и не обгорают. Импульс тока сварки аккумуляторов должен быть очень коротким, иначе есть шанс прожечь дыру в корпусе, что приведет к выходу его из строя.



Задача по управлению длительности импульса лежит на довольно простом контроллере, который был взят с одного сайта. Устройство собрано на базе Arduino NANO, с применением жидкокристаллического дисплея для вывода полезной информации. Управление по меню осуществляется с помощью энкодера. Элементарно и просто подумал я, и начал собирать устройство из имеющихся в хозяйстве модулей.

Функционал контроллера довольно простой. Он выдает два последовательных импульса с паузой между ними. Первый импульс называется присадочным, а второй основным. Он приваривает метал друг к другу. Все переменные времени импульса регулируются с помощью энкодера, включая паузу между ними. Управление силовым трансформатором осуществляется c помощью довольно мощного симистора на 40 А. Он устанавливается по входу первичной обмотки. Маркировка BTA41-600.

Для удобства пользования контроллером, все его модули можно разместить на одной плате. Это позволит не путаться в куче проводов идущих от ардуины. Травим плату и смотрим как все функционирует. Лампочка мигает, значит схема собрана правильно. Вид самодельных плат на сегодняшний день постепенно уходит в закат, потому что их производство выгодней заказывать в Китае. Цена правда от размеров во многом зависит, но это уже другой вопрос.



Размещаем модули контроллера для контактной сварки согласно своим указанным местам. Вы уже наверное обратили внимание, что контакты на плате позолоченные. Интересно было посмотреть как они себя покажут в процессе пайки. Особенность позолоченных контактов заключается в том, что они не подвержены различным видам окисления на поверхности металла, что позволяет хранить платы довольно длительное время. Это актуально для больших производств. Также припой растекается по таким контактам как масло по сковороде.

После сборки устройства на плату ардуины нужно загрузить скетч. Делаем это через программу FL Prog буквально в несколько кликов. Программа за пару секунд заливается в мозг и на экране высвечивается все нужные настройки для дальнейшей сварки.



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

Размещаем внутри корпуса МОТ, импульсный блок питания на 12 вольт и запихиваем внутрь сетевой провод. Длинна его полтора метра. Распределяем все необходим провода по своим разъемам, и в принципе все. С электроникой разобрались.



В результате всех манипуляций у нас получился довольно красивый контроллер для точечной сварки. Силовые провода выводятся через отверстия в верхней крышке корпуса. Тут же разместился разъем для подключения кнопки концевика. Все эстетично и просто. Вроде как показалось мне. Все подписчики канала знают, что ничего просто так не бывает. Что-то, да должно пойти не так. И это один из тех случаев! Пора проверить аппарат в деле.



Для сварки возьмем старый аккумулятор и никелевую ленту толщиной 0.15 мм. Установим время сварки 20 мс для каждого импульса. Это соответствует одному периоду переменного напряжения из сети. Если там 50 Гц, то это одна пятидесятая. В результате испытаний оказалось, что на самых коротких выдержках времени, ленту не то чтобы варит, а прожигает насквозь. Теперь это не аккумулятор, а сплошная вентиляция

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



Причиной прожига аккумуляторов стало время работы силового трансформатора, которое не соответствует установленным значениям. Проблема тут явно программная, так как скечт разработчика неоднократно загружался на другую ардуинку, но результата это не дало. Сейчас по нашим установленным параметрам сигнал на оптопаре должен быть 10 и 60 мс. А по факту это время в несколько раз затянуто, 80 и 125 мс. Естественно этого времени хватает чтобы перегреть никелевую пластину между электродами и в некоторых аккумуляторах прожечь дно.

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



В Китае есть готовые контроллеры для точечной сварки, заказываю и жду. Это одна из самых продвинутых версий плат. Модель NY-DO2X. Кроме того что она дает двойной импульс с паузой, так еще тут есть возможность регулировать мощность. Симистор тут установлен BTA100 рассчитанный на ток в 100 ампер. Рабочее напряжение 1200 В.

Размечаем и выпиливаем отверстия под новую панель управления. На этом этапе не торопимся чтобы не отрезать чего нибудь криво. На плате видим несколько разъемов. На первый слева подается переменное напряжение номиналом в 9 вольт. На второй подключается кнопка от держателя электродов или внешняя педаль. Второй вариант хороший, если у вас ручка без кнопки, или же вам просто нравится работать с педалями. Трансформатор для питания платы можно выковырять из какого-нибудь старого блока питания от домашнего телефона. Тока в 300 мА хватит с головой.

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



Слева направо трансформаторы: 700 Вт, 800 Вт и 900 Вт. Чем больше магнитопровод, тем больше мощность. Тут видно на сколько 900 Вт вариант больше своего предшественника. Размеры: длинна 106 мм, высота 89 мм, ширина 66 мм.

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

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



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



Краткое руководство по использованию китайского контроллера. Зажимаем и держим красную кнопку примерно 4 секунды. Устройство при этом зайдет в режим калибровки сетевого напряжения. Его нужно выставить согласно реальным показаниям мультиметра вставленного в розетку. Зачем нужна эта функция, непонятно, но установленные цифры будут меняться пропорционально напряжению в сети.

Что означают лампочки над цифрами? Первый светодиод говорит о наличии питания. Второй светодиод горит когда нажата кнопка на ручке. Третий загорается только в момент наличия импульса. В общем первые три красные светодиода чисто информационные. Четвертая зеленая лампочка это счетчик наработки, суммирует каждое нажатие на педаль или концевик внутри сварочной кучки. Сбрасывается счетчик двойным нажатием на красную кнопку. Дальше оранжевый светодиод. Первый устанавливает длительность первого импульса. Выбирается он в периодах. Установим один что будет ровняться 20 мс. Второй светодиод задает мощность импульса. Поставим скажем 35 процентов. Минимум 30 максимум 99.9%. Зеленый светодиод между оранжевыми определяет паузу между импульсами. Так же в периодах. Поставим 2. Последние два оранжевые светодиода так же определяют длительность и мощность, но уже второго импульса. Поставим 2 периода и мощность выкрутим на 100 процентов. Собственно все, теперь можно потыкать в какую-нибудь ленту и посмотреть как происходит сварка, изучить точки, подобрать режимы на контроллере и прочее.



Краткие характеристики получившегося аппарата для точечной сварки. Вес готового устройства вышел 5.7 кг. Переменное напряжение на вторичной обмотке МОТ-а составило 3.8 вольта. Максимальный ток зафиксированный при сварке показал 450 ампер. С этим связан один интересный эффект во время работы аппарата. Магнитное поле у проводов выходит настолько большим, что их разбрасывает друг от друга сантиметров на 20. Магнитопровод при этом довольно сильно притягивает любой рядом лежащий металл, потому тут не рекомендую использовать железный корпус для устройства, при сварке он будет издавать неприятные звуки.

Если накоротко закоротить вторичную обмотку, то даже 700 Вт МОТ способен нагрузить сеть до значений свыше 4 кВт. На сколько больше мне не известно, так как ваттметр уходит в защиту при достижении такой нагрузки. Ток вторичной обмотки при этом зашкаливает за 600 А, свыше предела измерения мультиметра. На входе первичной обмотки максимальный ток зафиксирован 21 ампер, при этом напряжение в сети проседает с 230 до 217 вольт.

При непрерывной работе сердечник у МОТ-а будет нагреваться, за 4 минуты его температура достигнет примерно 52 градуса. И это на холостом ходу без нагрузки. На практике при повышении температуры трансформатор начинает сильней варить, это может привести к прожигу аккумулятора. В этом случае справедливо обдувать трансформатор с помощью вентиляторов.



Переходим исключительно к сварке. Для начала посмотрим как должен выглядеть сигнал на осциллографе. Настройки: первый импульс один период 30 процентов, 2 периода отдыхаем, второй импульс два периода, мощность на всю катушку. Делаем сварную точку и записываем сигнал. Видим каким обрезанным выглядит период мощностью в 30 процентов. После него идет металл два периода отдыха, а затем идет мощный импульс с длительностью два периода и мощностью в сто процентов.

Контроллер благодаря отслеживанию перехода фазы через ноль, открывает симистор на 100 процентах практически в нуле роста амплитуды напряжения. При этом видно что напряжение и ток идут с небольшой задержкой относительно друг друга. При 50 процентах контролер открывает симистор только на половине полупериодов сетевого напряжения. Этот метод аналогичен с Широтно-импульсной модуляцией. Такой режим используется в регуляторах освещенности диммерах. Яркость свечения лампы накаливания будет напрямую зависеть от площади обрезанной синусоидой. В нашем случае это нужно для всяких деликатных сварок.



Теперь наша задача довольно проста. Нужно приварить ленту для точечной сварки к аккумулятору. Но тут возникает пару вопросов. Какую ленту будем варить и к какому аккумулятору? Помните момент когда у нас сварочник с 700 Вт трансформатором отказывался приваривать никелевую ленту? Идентичная ситуация происходит с новым 900 Вт МОТ-ом.

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

Решение проблемы сменить никелевую ленту на стальную. Она сверху тоже вроде как никелированная, но дальше будем ее называть просто стальной. Сварка на тех же установках что и раньше, приварила стальную ленту просто на ура. Отодрать ее кусачками без разрушений не выходит. Собранный аппарат полностью удовлетворил поставленные задачи.



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

Подводные камни. Их очень много, в первую очередь тут нужно понимать физику протекания тока в металле. Металл в месте соприкосновения с электродами представляет току наибольшее сопротивление и потому место будет сильно нагреваться. Наша задача разогреть металл до такой степени, чтобы создалось так называемое сварочное ядро. Нагрев в этом процессе должен происходить не под самими электродами, а между листами металла. Сварные ядра при этом необходимо делать как можно быстрей, очень мощным и коротким импульсом. Если греть место сварки медленно, тепло будет разбегаться по аккумулятору кто куда, без достижения нужного результата.



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

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

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

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

В общем настройки длительности и мощности импульсов решают все. У меня получалось приваривать 0.2 мм. ленту с такими прочностными характеристиками, что она отрывалась вместе с фрагментами корпуса аккумулятора. Все батареи в фильме были разряжены если что.

Рекомендации при выборе настроек сварки. В этом деле много факторов влияющих на конечный результат. К примеру: вы подобрали режим, который хорошо работает с одной и той же лентой и аккумуляторами. Но, если что-то одно поменяете, настройки тоже возможно придется менять. А теперь представьте что у вас кучка разношерстных аккумуляторов, как будете варить? Мощность и время сварки нужно настраивать от меньшего к большему. Поставили точку, лента оторвалась, ничего страшного, поднимаем мощность и смотрим. Теперь лента отрывается с потрохами. То что нужно. Ну что, вы все поняли?



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

Электропроводка в квартире. Специально для фильма был сделан удлинитель с сечением провода в 2.5 квадрата. Даже смотря на это, слабенький 700 Вт МОТ умудрялся просаживать сеть под нагрузкой.

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

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

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

Собранный аппарат для контактной сварки получился довольно компактным и универсальным. Он собирался только ради того, чтобы сварить аккумуляторы для шуруповёрта и паяльника с Китая, которому нужно питание 24 вольта. Часто при ремонтах не хватает портативного инструмента. Конструктор в виде ячеек под аккумуляторы 18650 мы печатали на 3D принтере, они упрощают задачу при формирования сборок с разными напряжениями и ёмкостями, позволяя складывать элементы в любой последовательности. Сборки соединяются между собой специальными пазами. Теперь самостоятельно перепаковать свой старый самокат не составит никакого труда.



Для справки. Съемка этого выпуска заняла чуть больше 2-х месяцев. Когда брался за изучение данной темы, даже подумать не мог что тут окажется так много нюансов. По стоимости бюджет фильма перевалил за предполагаемые границы, так как покупать запчастей пришлось практически на 2 сварочных аппарата. В общей сложности было израсходовано 3 метра никелевой ленты и испорчено 2 хороших аккумулятора. Пущено в расход два десятка плохих.
Ну все, видео озвучил, теперь можно идти бухать и готовится к следующему выпуску.
Как сказал Мастер Йода:
Тебя послушать так сложно все. Слышишь, что сказал я?
Ты должен чувствовать силу, она между тобой, мной и камнем, везде
Да нооо нет



Полное видео проекта на YouTube
Архив с полезностями
Наш Instagram
Подробнее..

Начать заниматься роботами должно быть просто

09.11.2020 08:05:16 | Автор: admin

Введение


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

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



Интересно? Тогда начнём.


Возраст


Изначальная предполагаемая целевая аудитория дети примерно 7-10 лет, но уверен, что это может быть интересно и детям в возрасте до 99 лет и старше.

От себя лично могу добавить, что при определённой помощи данный процесс удалось успешно донести и повторить в классе из десяти детей в возрасте примерно 5-6 лет, пусть и с некоторыми упрощениями и абстракциями. Детям понравилось и это главное.

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

Полностью с нуля со всеми деталями можно собрать это примерно за 2-3 часа. Или чуть дольше если торопиться и что-то пойдёт не так.

Идея


Для первого материала был выбран простой вариант двух-колёсного робота, который должен передвигаться по линии. Сенсорами будут два инфракрасных датчика, которые будут отслеживать траекторию.
Все детали должны быть доступны для покупки онлайн с возможностью подобрать альтернативные варианты.
Пайка нужна только один раз что бы припаять провода к моторам (два мотора по два провода на каждый = четыре точки для пайки).

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

Теория


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

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

Sense-Plan-Act
Sense-Plan-Act является уже устаревшей формулировкой, но в данном упрощённом варианте она вполне неплохо объясняет эти простые принципы.


Если это перевести на нашего робота, то получится такое:
Глаза робота это сенсоры, которые видят происходящее перед роботом. В нашем случае глаза смотрят на дорогу.
Мозг робота это маленький компьютер, которые получает информацию от глаз, решает как на неё реагировать и отдаёт команды мышцам.
Мышцы робота это драйвер моторов, который получает и усиляет сигнал от мозга и крутит колёса в нужном направлении.
Ноги робота это как раз наши колёса, которые везут робота навстречу новым приключениям.
Так как сигналы мозга слабы, что бы дать команду нашим ногам, у нас есть мышцы, которые принимают сигналы от мозга, усиляют их, а потом передают движение ногам.
В нашем случае Исполнители это мышцы+ноги.

Упрощённо полный путь сигнала можно представить в виде: глаза -> мозг -> мышцы -> ноги.

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

Реализация


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

Программная часть:


Алгоритм


Алгоритм до безобразия прост:
У робота впереди стоят два сенсора, которые смотрят на дорогу. Сенсоры могут различать светлое и тёмное по тому как отражается свет от поверхности.
Дорога выполнена в виде тёмной полосы, по которой робот едет.
Если оба сенсора видят светлое значит, мы идём по дороге, так как наша тёмная дорога проходит ровно между сенсорами.
Когда один сенсор видит тёмное, то дорога ушла вбок и мы делаем поворот колесо со стороны этого сенсора замедляется.
В случае когда оба сенсора видят тёмное, то это сигнал остановки.

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

Сам код можно посмотреть на github.com/nochkin/esp-line-follower.

Закачивание программы в мозг


Когда я вёл класс с 5-6-летками, то на все мозги предварительно была загружена нужная программа, что бы не тратить на это время во время класса.
Сам процесс закачивания программы в микроконтроллер не отличается от других Arduino-совместимых плат: установить плагин для ESP8266 (если ещё не установлен), подключить ESP8266 модуль по USB, открыть или скопировать скетч (файл .ino) и нажать Upload.
Тут есть более подробная инструкция установки поддержки ESP8266 в Arduino для тех, кто с этим пока не знаком:
github.com/esp8266/Arduino#installing-with-boards-manager

Железная часть:


Как основа для шасси, использована двух-колёсная платформа. Она легко доступна, у неё простая конструкция и с ней легко работать.
Центром управления был выбран популярный микроконтроллер Espressif ESP8266, реализованный в виде модуля NodeMCU.
Так же для этой платы есть удобный модуль для драйверов двигателя на L293DD. Как раз достаточно для раскачивания двух небольших моторов. Только благодаря наличию этого модуля для моторов количество соединительных проводов заметно снижается.

Схема соединений


Примерная схема соединений получается такой:


Список основных компонентов:


  1. ESP8266 NodeMCU v2
  2. Motor Shield для NodeMCU v2
  3. Пара инфра-красных сенсоров
  4. Двух-колёсное шасси с моторами и колёсами
  5. Соединительные провода (Dupont wires) для сенсоров
  6. Дополнительные винты/гайки/крепления для установки сенсоров и контроллера на шасси
  7. Чёрная изолента для дороги (если поверхность достаточно светлая, то можно и синюю)

Общая стоимость всех деталей обычно не превышает $20.

Немного подробнее о компонентах:
  1. ESP8266 NodeMCU v2:

    Существует несколько вариантов ESP8266 NodeMCU модулей. Они не все совместимы друг с другом как электрически, так и механически.
    В данном проекте используется ESP8266 NodeMCU v2. Самый простой признак этот модуль использует CP2102 для USB интерфейса. Вариант NodeMCU на базе CH340G обычно шире физически и поэтому не подойдёт для драйвера моторов.
  2. Motor Shield для NodeMCU v2:

    Прелесть этого модуля тем, что NodeMCU плата вставляется в него и поэтому количество проводов в проекте сильно уменьшается.
    Существует только один вариант этого модуля на базе L293DD. Этой микросхемы достаточно как раз что бы раскачать двигатели на нашем шасси.
  3. Инфракрасные сенсоры:

    Данные модули представляют из себя светодиод (излучатель) и фотодиод (приёмник). По отражению робот может определить что он видит перед собой тёмную полосу или светлый пол.
    Я советую брать модули с подстройкой, что бы можно было отрегулировать чувствительность и уменьшить ложные срабатывания при определении светлого и тёмного.
    Советую заказать больше двух стоят они не много, но у них есть высокий риск сломаться при неосторожном обращении.
  4. Для шасси был выбран один из самых популярных и доступных вариантов на интернет просторах.
    В этом комплекте уже есть моторы со встроенными редукторами, колёса, держатель для трёх AA элементов и минимальный набор винтов и гаек что бы это всё собрать вместе.
    Как альтернативный вариант для питания, можно заменить держатель 3 * AA на держатель для одного литий-йоного элемента в формате 18650.
  5. Dupont провода.
    Провода надо с разъёмами мама-мама (female-female). Оптимальная длина примерно 20 см. Желательно что бы провода были разных цветов во избежании путаницы при подключении.
  6. Дорога

    Это обычная тканевая клейкая лента. Клеится еле-еле, но это как раз хорошо, так как она не оставляет следа и легко изменять дорогу если нужны корректировки.


Сборка


В классе с 5-6-летками пункты 1-5 были выполнены предварительно для того, что бы детям надо было только разобраться с подключением проводов для соединения ключевых органов робота друг с другом.
То есть, они как раз собирают эту соединительную сигнальную нервную систему сами. Тут по ходу можно ещё раз показать где тут глаза, мозг, мышцы, ноги и как они все взаимодействуют друг с другом.

  1. Небольшая подготовительная операция.
    a) Часто провода идут не припаянными к моторам. В этом случае надо их припаять. Это единственный момент где нужна пайка. Если нет вариантов, то можно кого-то заранее попросить припаять или попробовать самому прикрутить провода, но в случае прикручивания сложно сделать хороший контакт. Надо иметь это в виду.
    b) Модули драйвера двигателей могут идти с джампером на гребёнке с питанием (VIN-VM-NC) или без оного. В последнее время джампер не ставят, но сама гребёнка есть.
    Если есть джампер в закромах, то надо его поставить в позицию VIN-VM. У меня не было такого количества джамперов для всего класса и я просто припаял перемычку снизу платы.
    Конфигурация VIN-VM позволяет использовать один и тот же источник питания для моторов и для мозгов.

  2. Начнём со сборки самой платформы.
    Перед установкой компонентов я советую установить шестигранные крепления для модуля драйвера двигателей и инфракрасных сенсоров.

    Теперь установим держатели для моторов и сами моторы. Колёса лучше ставить в самом конце.
    Потом надо установить держатель для AA элементов. Провода пока соединять не надо. Выключатель я не устанавливал, так как на модуле драйвера двигателя уже есть выключатель.
    Часто в комплекте есть энкодеры (круглые диски с поперечными отверстиями по кругу), но в данном проекте они не используются, поэтому устанавливать не обязательно.
  3. Вставляем мозг робота на мышцы, то есть ставим модуль микроконтроллера на модуль драйвера двигателей.
    Важно соблюдать правильное направление, иначе будет взрыв мозга в виде белого дыма, на котором работает вся электроника в мире. Антенна на модуле микроконтроллера должна совпадать с нарисованной антенной на модуле драйвера.
  4. Привинчиваем бутерброд с мозгами и мышцами на шасси.


  5. Устанавливаем два инфракрасных сенсора так, что бы передатчик-приёмник смотрели вниз.
    Можно либо установить сами модули вертикально (но я не придумал как это сделать легко), либо подогнуть передатчик-приёмник на 90 градусов. Подгинать надо не спеша, что бы не отломать их случайно. Если есть время, то может быть проще просто перепаять как надо без риска отломать.

  6. Соединяем провода.
    На модуле драйвера есть восемь синих клемм. Достаточно ослабить их отвёрткой, что бы внутрь пролез провод и потом закрутить винт, что бы провод не выпадал и имел хороший контакт.
    Подключим питание на VIN и GND (VIN-красный, GND-чёрный). Важно соблюдать полярность и не перепутать плюс и минус.
    Подсоединим оба мотора на A-/A+ для левого и b+/B+ для правого. Тут тоже надо соблюдать полярность, но при ошибке мотор будет крутиться в другую сторону и в этом случае достаточно провода поменять местами в клеммах.
    Теперь соединим глаза. Тут я использую Dupont wire для удобства. Пожалуй, для детей (да и для некоторых взрослых) это самый сложный шаг. У каждого модуля сенсора есть три контакта плюс (VCC), минус (GND) и сигнал (OUT). Сложность в том, что на модуле драйвера эти сигналы стоят в другом порядке и важно проверить правильное соединение.
    Левый глаз робота идёт на группу 5, а правый глаз идёт на группу 6 (группы заданы в программе робота).


Первый пуск


Ставим наше творение на относительно светлый пол (главное, не на стол или куда-то ещё откуда он может упасть) и включаем кнопкой на модуле драйвера. Кнопка находится ближе к синим клеммам и рядом с VIN-VM-NC джампером.
На пустом относительно светлом полу робот должен ехать вперёд. Он может немного заворачивать вбок из-за асимметричности моторов или сборки, но это не так важно.
Если робот крутиться на месте как кот, играющийся со своим хвостом, то это означает то, что один из моторов с перевёрнутой полярностью. Провода этого мотора надо поменять местами на синих клеммах.
На случай если робот едет назад, то полярность надо поменять на двух моторах.
Бывает что один из моторов не крутиться вообще, обычно достаточно проверить соединение, так как бывает что провод слишком глубоко закручен в синюю клемму и прижим приходится на изоляцию от провода, а не на сам провод.

Проверка зрения


Для проверки сенсоров достаточно приклеить полоску чёрной изоленты перпендикулярно движению так, что бы оба сенсора на неё попали. Если робот остановился на полоске, то сенсоры работают и настроены правильно.
Бывает, что при слишком тонкой полоске робот может проскочить её из-за своей инерционности. В этом случае достаточно сделать полоску пошире.

Дорога


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

Итог


Он видит. Он едет. Сам.

Это результат одного из проведённых классов по сборке с пяти-летними студентами:


А тут самое интересное запуск и проверка:




Небольшие потери
Конечно, не обошлось и без небольших потерь когда кто-то случайно наступил на соседнего робота во время восторга:


Подробнее..

Открываем дверь при помощи голосового ассистента

18.12.2020 18:13:39 | Автор: admin


Всем привет!
Сегодня у меня статья про то, как при помощи Яндекс-колонки Алиса и Ардуино, можно открыть дверь, подключенную к домофону. Если Вам это интересно, то прошу под кат.

Часто бывает так, что кто-то звонит в домофон, а ты в этот момент чем-то занят или просто лень подходить для того, чтобы открыть дверь. Знакомая ситуация, не правда ли?
А мой домофон так вообще без поднятия трубки не открывает дверь и если в течении 30 секунд после вызова не поднять трубку, то кнопка открывания двери перестанет быть активной до того момента, пока не поступит новый вызов. Так как домофон не из дешёвых (на тот момент) меня жаба душила менять его на другой. И я решил с этим бороться.

Первая идея упростить себе жизнь появилась 10 лет назад, я решил сделать адаптер домофон-телефон, чтобы звонок с домофона дублировался на домашний телефон. Нарисовал схему, собрал прототип на макетной плате. Все заработало, но дальше этого прототипа я так и не продвинулся. Всё так и валяется по сей день в хламе.

Второй проект был реализован на роутере TL-MR3020 с прошивкой CyberWRT и программным СИП телефоном BareSIP. При нажатии на кнопку вызывной панели, роутер параллельно с вызовом интеркома звонил на мобильный телефон и можно было даже находясь в другом городе разговаривать с человеком, стоящим около двери твоей квартиры, но программный телефон или сам роутер, работали крайне нестабильно и пришлось от него отказаться.
Но тут к моему счастью в прошлом году на день рождения мне подарили голосового ассистента Алису и у меня появилась новая идея отрывать дверь голосом, через Яндекс колонку.
И сегодня настал тот день, когда я взялся реализовать свою задумку.

Немного о том, как работает вызывная панель видео-домофона.


Вызывная панель соединена с монитором домофона при помощи 4-х проводов GND, +12 В, аудио и видео.
Если на вызывной панели, провод Audio замкнуть через резистор 100 Ом на GND, то раздастся сигнал вызова. А если на провод Audio подать напряжение +12 В, то сработает реле открытия электромагнитного замка.

На изображении ниже показана схема соединения вызывной панели с домофоном.



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

GND экранирующая оплетка
+12 В красный провод
Аудио синий провод
Видео центральная жила коаксиального кабеля



Схема


Из схемы видно, что для подключения устройства на Ардуино к домофону, потребуется подсоединить всего 2 провода. Для коммутации этих проводов я использовал то, что у меня было под рукой. Вместо реле можно использовать ключ на N-P-N транзисторе или оптроне PC817.

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


Используемые компоненты


Ардуино Нано
Модуль реле
ИК приемник 38 кГц
Провода Dupont

Вместо Arduino nano можно применить любой другой микроконтроллер из линейки ардуино. Я же использовал Ардуино нано потому, что у меня их достаточно много.

Исходник для Arduino


Код достаточно простой и понятный.
Для получения и сохранения кода нажатой кнопки, нужно перевести контроллер Ардуино в режим добавления кнопки пульта. Потребуется установить перемычку на выводы D2 и GND и нажать кнопку сброса на Arduino, после чего на плате контроллера засветится системный светодиод и контроллер будет ожидать нажатия кнопки на пульте.

Рекомендую использовать пульт от телевизора, чтобы кроме голосового управления можно было открыть дверь с ПДУ, не вставая с дивана. На пульте лучше всего выбрать кнопку, которой редко пользуетесь, как правило это четыре цветных кнопки, предназначенные для телетекста. После получения кодовой посылки Ардуино весело подмигнет светодиодом и снова перейдет в режим ожидания.

Можно нажимать кнопки сколько угодно, но Arduino запомнит только последнее нажатие. Чтобы выйти из режима запоминания кода, достаточно удалить перемычку и нажать на микроконтроллере кнопку Reset.

Код для Ардуино
#include <IRremote.h>
#include <EEPROM.h>

//#define TOLERANCE 35 // процент допустимого отклонения принимаемого сигнала
#define IR_RECEIVE_PIN 11 // Вход для подключения ИК приемника
#define RELAY_PIN 12 // Выход для управления реле
#define SET_PIN 2 // Вход для перевода в режим программирования пульта

IRrecv irrecv(IR_RECEIVE_PIN);
decode_results results;

void setup()
{
irrecv.enableIRIn(); //запустить ожидание нажатия кнопки на пульте
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, LOW);
pinMode(SET_PIN, INPUT_PULLUP); //D10 конфигурируем на вход, для режима запоминания кода
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, LOW);
// Serial.begin(115200);

while(!digitalRead(SET_PIN)) //если пины D2 и GND замкнуты то заходим в режим запоминания ИК кода
{
set_command();
}
}

void loop()
{
if (irrecv.decode(&results)) //если был принят код с пульта
{
if(LoadEEPROM()==results.value) //если код совпадает с сохраненным (ir_command==results.value)LoadEEPROM();
{
digitalWrite(RELAY_PIN, HIGH); //включить реле
digitalWrite(LED_BUILTIN, HIGH);
delay(500);
digitalWrite(LED_BUILTIN, LOW);
digitalWrite(RELAY_PIN, LOW); //Выключить реле
}
irrecv.resume(); //запустить ожидание нажатия кнопки на пульте
}
}

void set_command() //режим запоминания кода пульта ДУ
{
digitalWrite(LED_BUILTIN, HIGH);
if (irrecv.decode(&results))
{
digitalWrite(LED_BUILTIN, LOW);
SaveEEPROM(results.value); //сохраняем полученый код кнопки ПДУ в EEPROM
irrecv.resume(); //запустить ожидание нажатия с пульта
}
delay(100);
}

void SaveEEPROM(unsigned long ir_code) // записываем полученый код кнопки ПДУ в EEPROM
{
EEPROM.write(0, ir_code & 0xFF);
EEPROM.write(1, (ir_code & 0xFF00) >> 8);
EEPROM.write(2, (ir_code & 0xFF0000) >> 16);
EEPROM.write(3, (ir_code & 0xFF000000) >> 24);
}

unsigned long LoadEEPROM() // считываем код кнопки ПДУ из EEPROM
{
byte val = EEPROM.read(3);
unsigned long ir_code=val;
val = EEPROM.read(2);
ir_code= (ir_code << 8) | val;
val = EEPROM.read(1);
ir_code= (ir_code << 8) | val;
val = EEPROM.read(0);
ir_code= (ir_code << 8) | val;
return ir_code;
}

При публичном размещении, выложенного мной выше кода указывайте, пожалуйста, ссылку на первоисточник.

Подключение к Яндекс.Станции Алиса


Для подключения к умной колонке понадобится Умный пульт Яндекс.

Не обязательно его покупать у Российского поисковика и партнеров, пульт можно купить на Алиэкспресс немного дешевле. Но разница не настолько большая, чтобы играть в лотерею, покупая пульт у китайцев. Рассказывать, как подключить пульт к станции, я не буду, так как в интернете очень много подробных инструкций на эту тему, Вы без труда сможете их найти у того же Яндекса. Я только расскажу как настроить взаимодействие Яндекс.Станции с Ардуино открывалкой.
Для этого нужно зайти приложение Яндекс.Браузер Все сервисы Устройства Управление устройствами Пульт Добавить устройство Настроить вручную вводим название Дверь Добавить команду вводим название голосовой команды Открой берем пульт от любой бытовой техники, направляем его на Яндекс.пульт и нажимаем требуемую кнопку. После того, как синий светодиод на Я.пульте погас колонка готова к выполнению этой команды. Теперь можно проверять, произносим фразу Алиса открой дверь, она, немного подумав, выполнит Ваш приказ.

Заключение


Использование Яндекс пульта в умном доме позволит Вам управлять любой бытовой техникой, в состав которой входит ПДУ. А так же достаточно легко, собрав простейшую схему на Arduino интегрировать управление любыми другими устройствами, не имеющих ПДУ. Это просто, надежно и не требует подключения этих устройств к интернету.

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

Если у Вас есть вопросы, то можете их задать в комментариях.
Подробнее..

Перчатка Mark gauntlet v4.2

06.01.2021 00:04:36 | Автор: admin

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

Начало

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

Самый первый прототип робота был сделан в один из вечеров лета 2018 года. Это был четвероногий робот, состоящий из 8 сервоприводов SG90(обычных синих) и кусков гвоздей. Соединялось всё это термоклеем и не имело ни единого шанса на нормальную работу ввиду очень неудачного распределения массы. Но я этого не знал и в тот же вечер заставил его шагать по прямой, а ещё через минут 15 после этого плата, через которую шло питание, задымилась и на столе оказался отпаявшийся линейный стабилизатор (к слову я так и не понял что там произошло).

Починить эту горку термоклея гвоздей и изоленты я так и не смог. В своё оправдание могу сказать, что в тот момент я не умел паять, из электроники понимал только что нельзя замыкать + и -, а о существовании 3D печати и не слышал.

В конце лета заказал себе первый принтер - Anet A8.

Обычный принтер для ознакомления с технологией: рама из акрила, кинематика с "дрыгостолом" и шумные моторы (скорее их драйвера)

Почти сразу после его покупки я освоил tinkercad, где и воссоздал того робота на 4 ногах уже с заменой гвоздей на пластик и добавлением поворотного сервопривода.

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

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

С последней и предпоследней версией я победил на 2 мероприятиях и решил расширять серию Mark. Именно так на скорую руку я записал относительно нереальные планы на роботов, включая большие металлические базы для роботов. Но затем я всё же переосмыслил идею серии - можно же сделать реально интересную систему марсоходов, которая может себя показать и на Земле.

Собственно вот как я пока что это позиционирую:

Система роботовMark- это исследовательский комплекс дляавтономногоисследования местности, в частности - поверхностиМарса.

Mark6 - основная база, предназначен для защиты остальныхроботовот неблагоприятных условий.

Mark3 - основной разведчик, благодаря ногам может взбираться науступы,также имеет 4 колеса.

Mark4 -шнекоход, также выполняет роль спасательного аппарата.

Mark5 -инсектоидс крыльями и 6 ногами. Может использоваться дляизученияочень узких проходов.

Mark7 -робозмея, также как иMark5 может исследовать узкиепроходы иотверстия.

Markgauntlet перчатка для ручного управления всеми роботами.

Из представленных роботов у меня есть почти готовые Mark 6, Mark 4, ну и собственно Mark 3 и Mark gauntlet.

Из интересного по ним пока есть только основа Mark 6 и его шасси, которые пока печатаются

Разработка перчатки: версия 1

Первая версия перчатки была сделана весной 2020 года и сразу заработала с тестовым стендом, но там мало что могло не сработать: я использовал обычный радиомодуль на 433 МГц с антенной из куска провода. Более подробно там есть в видео (моё первое видео, так что там всё очень посредственно) https://youtu.be/eEAHhr9Suug?t=194

Разработка перчатки: версия 2

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

Тут уже был радиомодуль nrf24l01, несколько режимов работы и выбор канала передачи. На работу перчатки можно глянуть в видео https://youtu.be/P_fq7KkfJrI

Кроме того я решил пойти с этой версией на фестиваль Rukami. С этого момента перчатка уже стала основным направлением работ на 2-3 месяца, что выдало в итоге неплохой результат.

Разработка перчатки: версии 3 и 4

Обе имеют схожий функционал и были сделаны каждая за пару дней.

3 версия:

Функционал:

  • WiFi модуль esp8266

  • Радиомодуль NRF24l01+

  • Мини радиомодуль на 433 МГц

  • Bluetooth модуль

  • Акселерометр + гироскоп на перчатке

  • Панель управления с OLED дисплеем

В целом получилась нормальная версия, но её было бы сложно повторять из-за пайки навесом прямо на корпусе. Вот подобие описания этой версии https://youtu.be/52WvejA6dyk .

4 версия:

Тут уже я взял всё что подходило под концепцию и добавил к этому контроллер Atmega2560

Видео с процессом её создания:

Функционал:

  • WiFi модуль

  • Радиомодуль NRF24L01+

  • Радиомодуль LoRa

  • MP3 плеер и динамик к нему

  • ИК- светодиод (для простейшей связи)

  • Мощные адресные светодиоды сбоку

  • Акселерометр+гироскоп

  • Датчик цвета + жестов

  • Панель управления с OLED дисплеем

На этом можно было бы и остановиться, но я решил пойти дальше и сделать версию 4.2

Версия 4.2 или завершающий штрих перчатки

Про уже спроектированные части я расскажу подробно, но платы пока ещё не пришли, так что сборку и результат уже покажу в следующей статье

Основа возвращается с первой версии из-за подходящей геометрии

Перчатка скорее всего останется с версии 4

Для питания будут использоваться 3 аккумулятора 18650 на 3.4 А*ч каждый, что обеспечит достаточно большую автономность. Крепиться это будет на плечо.

Почти вся электроника будет распаяна на 2 печатные платы, которые соединятся вместе

Ну и первоначальный код, который будет использоваться для теста на работоспособность. В нём я не использовал пока только LoRa модуль. Ссылка на гитхаб: https://github.com/Madjogger1202/Mark_GauntletV4.2/blob/main/src/main.cpp

Дальнейшее создание этой версии будет уже в ближайшее время.

/*  Hi stranger, this is main code file for this project  I'm not a 100% programmer, but i can make electronics work,  so i will be grateful if you add any features  it is fully opensource project, so anyone can build stuff based on this code   have a great time reading this badly written working code (^_^) */#include <Arduino.h>      // why not...#include <Wire.h>#include <SPI.h>// i have to make all modules work, so i will use some libraris to make life easier//1) Display.      im using 0.96 oled from china, it is not standart at dimentions, bt i like how it looks in final designs :)#include <Adafruit_GFX.h>#include <Adafruit_SSD1306.h> // Adafruit librari works 50/50, it depends on display driver (yes, they can hava same names, bt diffrent drivers)//2) RGB Led panel.       LEDs 2812 (8-bit panel) #include <microLED.h>//3) NRF24L01+ #include <nRF24L01.h>#include <RF24.h>//4)APDC9960 usefull sensor#include "Adafruit_APDS9960.h"//5) LoRa radio sx1278#include <RH_RF95.h>//6) MPU6050 gyro + acsel#include <Adafruit_Sensor.h>#include <Adafruit_MPU6050.h>//7) MP3 module#include <DFPlayer_Mini_Mp3.h>// first switches connectionint8_t first_sw[8] = { A14, A13, A12, A11, A10, A9, A8, A7 };// second switches connectionint8_t second_sw[8] = { 38, 37, 36, 35, 34, A6, 32, A15 };// buttons connectionint8_t buttons[4] = { A3, A1, A0, A2 };#define LED1 10#define LED2 11#define JOY_X A6#define JOY_Y A5#define POT A4#define LORA_D0 42#define LORA_NSS 43#define LORA_RST 44#define NRF_CSN 40#define NRF_CE 41#define IR_LED 7#define R_LED 4#define G_LED 5#define B_LED 6#define WS_LED 45LEDdata leds[8];microLED strip(leds, 8, WS_LED); #define ORDER_GRB RF24 radio(NRF_CE, NRF_CSN);Adafruit_MPU6050 mpu;Adafruit_SSD1306 display(128, 32, &Wire, -1);Adafruit_APDS9960 apds;volatile bool irqMPU;volatile bool irqAPDC;struct allData{  volatile boolean irqMPU;  volatile boolean irqAPDC;  bool stable;  int8_t x_acs;  int8_t y_acs;  int8_t z_acs;  uint8_t mode;  uint8_t channel;  uint16_t button;    uint16_t potData;  uint16_t joyX;  uint16_t joyY;  uint8_t led1Mode;  uint8_t led2Mode;  uint8_t redLedMode;  uint8_t blueLedMode;  uint8_t greenLedMode;  uint8_t wsLedMode;  }mainData;struct radioData{  bool stable;  int8_t x_acs;  int8_t y_acs;  int8_t z_acs;  uint8_t mode;  uint8_t channel;  uint16_t button;    uint16_t potData;  uint16_t joyX;  uint16_t joyY;} telemetriData;void readMode();void readCh();void readAcs();void readJoy();void readPot();void readButtons();void sendNRF();void sendBL();void sendLoRa();   // will reliase it soonvoid displayInfo();// at all it is possible to create up to 256 diffrent modes,// but if you need more - connect mode counter with channel counter (maybe partly)void n1Mode();void n2Mode();void n3Mode();void n4Mode();void n5Mode();void n6Mode();void n7Mode();void n8Mode();void n9Mode();void n10Mode();void n11Mode();void n12Mode();void acsel(){  mainData.irqMPU=true;}void gesture(){  mainData.irqAPDC=true;}void setup() {  for(int i=0;i<8;i++)    pinMode(first_sw[i], INPUT_PULLUP);  for(int i=0;i<8;i++)    pinMode(second_sw[i], INPUT_PULLUP);  for(int i=0;i<4;i++)    pinMode(buttons[i], INPUT_PULLUP);  pinMode(LED1, OUTPUT);  pinMode(LED2, OUTPUT);  analogWrite(LED1, 10);  analogWrite(LED2, 100);    pinMode(JOY_X, INPUT);  pinMode(JOY_Y, INPUT);  pinMode(POT, INPUT_PULLUP);    pinMode(LORA_D0, OUTPUT);  pinMode(LORA_NSS, OUTPUT);  pinMode(LORA_RST, OUTPUT);    pinMode(NRF_CSN, OUTPUT);  pinMode(NRF_CE, OUTPUT);    pinMode(IR_LED, OUTPUT);  pinMode(R_LED, OUTPUT);  pinMode(G_LED, OUTPUT);  pinMode(B_LED, OUTPUT);    pinMode(WS_LED, OUTPUT);  strip.setBrightness(130);    strip.clear();  strip.show();   strip.fill(mCOLOR(YELLOW));  strip.show();  Serial.begin(115200);  Serial2.begin(9600);  mp3_set_serial(Serial2);  mp3_set_volume(30);  mp3_play (1);  if (!mpu.begin())    Serial.println("Sensor init failed");  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3C for 128x32    Serial.println(F("SSD1306 allocation failed"));    for(;;); // Don't proceed, loop forever  }  display.display();  display.clearDisplay();    display.display();  if(!apds.begin())    Serial.println("failed to initialize device! Please check your wiring.");  apds.enableProximity(true);  apds.enableGesture(true);  radio.begin();                                        radio.setChannel(100);                                 radio.setDataRate     (RF24_1MBPS);                     radio.setPALevel      (RF24_PA_HIGH);                   radio.openWritingPipe (0x1234567899LL);                 radio.setAutoAck(false);  attachInterrupt(0, acsel, RISING);  attachInterrupt(1, gesture, RISING);  Serial1.begin(9600);         // bluetooth module connected to Serial1   delay(5000);  mp3_stop ();    }void loop(){ readMode(); readCh(); readAcs(); readJoy(); readPot(); readButtons(); Serial.println(digitalRead(A14)); Serial.println(digitalRead(A13)); Serial.println(digitalRead(A12)); Serial.println(digitalRead(A11)); Serial.println(digitalRead(A10)); Serial.println(digitalRead(A9)); Serial.println(digitalRead(A8)); Serial.println(digitalRead(A7)); Serial.println(); Serial.println();   displayInfo();  switch (mainData.mode)  {  case 0:    n1Mode();    break;  case 2:    n2Mode();    break;  case 3:    n3Mode();    break;  case 4:    n4Mode();    break;    }}void readAcs()      // reading acseleration values from sensor directly to main struct{  sensors_event_t a, g, temp;  mpu.getEvent(&a, &g, &temp);  mainData.x_acs = a.acceleration.x;  mainData.y_acs = a.acceleration.y;  mainData.z_acs = a.acceleration.z;  return;}void readJoy()     // i am filering analog values for better perfomance {  mainData.joyX = (analogRead(JOY_X)+analogRead(JOY_X)+analogRead(JOY_X)+analogRead(JOY_X))/4;  mainData.joyY = (analogRead(JOY_Y)+analogRead(JOY_Y)+analogRead(JOY_Y)+analogRead(JOY_Y))/4;  return;}void readPot(){  mainData.potData = analogRead(POT);  return;}void readButtons()   // buttons : 1) 1; 2)0; 3)1; 4)1;   and mainData.button == 1011 {  mainData.button = !digitalRead(A1)*1000+!digitalRead(A2)*100+!digitalRead(A3)*10+!digitalRead(A0);  return;}void sendNRF(){  // i am writing telemetri struct only when sending data  // in this case i can track how relevant telemetri data is  telemetriData.stable = mainData.stable;  telemetriData.x_acs = mainData.x_acs;  telemetriData.y_acs = mainData.y_acs;  telemetriData.z_acs = mainData.z_acs;  telemetriData.mode = mainData.mode;  telemetriData.channel = mainData.channel;  telemetriData.button = mainData.button;    telemetriData.potData = mainData.potData;  telemetriData.joyX = mainData.joyX;  telemetriData.joyY = mainData.joyY;  radio.write(&telemetriData, sizeof(telemetriData));}void sendBL(String inp){  Serial1.print(inp);  return;}// void sendLoRa();void displayInfo(){  display.clearDisplay();  display.setTextSize(1);               display.setTextColor(WHITE);         display.setCursor(0, 0);              display.print(mainData.channel);      display.print("  ");            display.print(mainData.mode);  display.print("  ");  display.println(mainData.z_acs);        display.print(mainData.button);  display.print("  ");  display.print(mainData.joyX);  display.print("  ");  display.print(mainData.joyX);  display.print("  ");  display.println(mainData.potData);  display.display();}void readMode(){  bitWrite(mainData.mode, 0, (!digitalRead(A14)));  bitWrite(mainData.mode, 1, (!digitalRead(A13)));  bitWrite(mainData.mode, 2, (!digitalRead(A12)));  bitWrite(mainData.mode, 3, (!digitalRead(A11)));  bitWrite(mainData.mode, 4, (!digitalRead(A10)));  bitWrite(mainData.mode, 5, (!digitalRead(A9)));  bitWrite(mainData.mode, 6, (!digitalRead(A8)));  bitWrite(mainData.mode, 7, (!digitalRead(A7)));  return;}void readCh(){  bitWrite(mainData.channel, 0, digitalRead(second_sw[0]));  bitWrite(mainData.channel, 1, digitalRead(second_sw[1]));  bitWrite(mainData.channel, 2, digitalRead(second_sw[2]));  bitWrite(mainData.channel, 3, digitalRead(second_sw[3]));  bitWrite(mainData.channel, 4, digitalRead(second_sw[4]));  bitWrite(mainData.channel, 5, digitalRead(second_sw[5]));  bitWrite(mainData.channel, 6, digitalRead(second_sw[6]));  bitWrite(mainData.channel, 7, digitalRead(second_sw[7]));  return;}void n1Mode(){  sendNRF();  digitalWrite(LED1, !digitalRead(LED1)); // just blink to understand, that it is working}void n2Mode(){}void n3Mode(){}void n4Mode(){}void n5Mode(){}void n6Mode(){}void n7Mode(){}void n8Mode(){}void n9Mode(){}void n10Mode(){}void n11Mode(){}void n12Mode(){}
Подробнее..

Бесконтактный, оптический выключатель созвуковым эффектом наArduino

07.01.2021 20:09:56 | Автор: admin


Всем привет!
Сегодня статья про бесконтактный выключатель с звуковым эффектом, который был сделан мной 9 лет назад, а если быть точным то в январе 2012 года.
С тех пор выключатель трудится у меня круглыми сутками на протяжении 9 лет. Что самое интересное, за все это время, он не вышел из строя и даже ни разу не подвис, а также у него никогда не было ложных срабатываний. Вообщем он хорошо себя зарекомендовал и я с уверенностью могу его Вам рекомендовать, для самостоятельной сборки.
Если Вам интересны подробности, то прошу под кат.

У меня в коридоре смонтировано 7 светильников.


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


Саму плату я спрятал в пространстве между гипсокартоном и потолком, благо места там больше чем достаточно.


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


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


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


Запитал я эту плату обычным зарядным устройством от телефона.


Основой всего устройства является контроллер arduino Nano V.3, но можно так же использовать любые другие платы, с микроконтроллером Atmega328.


ИК светодиод с фототранзистором можно взять от датчика препятствий, но не обязательно их выпаивать, достаточно перерезать лишние дорожки и припаять к ним 3 провода. Если у Вас уже есть где-то ранее выпаянные эти детали, то перед использованием, лучше сначала проверить их на работоспособность. Инфракрасный светодиод нужно подключить к напряжению 5 В, через токоограничивающий резистор 120 Ом и посмотреть на него через камеру телефона, он должен светиться фиолетовым светом. Для проверки фототранзистора понадобится любой тестер с функцией прозвонки проводников. Переводим тестер в режим прозвонки, а выводы фототранзистора подключаем к щупам тестера. После чего нужно к нему в плотную поднести любой пульт от бытовой техники и нажать любую кнопку. В ответ раздастся прерывистый пищащий звук.


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


Работает выключатель следующим образом

Arduino с выхода D5 постоянно выдает ШИМ сигнал с частотой примерно 977 Гц. К этому выходу через токоограничивающий резистор 82 Ом подключен светодиод, излучающий сигнал в инфракрасном диапазоне. Фототранзистор подключенный к входу D2 детектирует отраженный от руки ИК сигнал и проверяет его на достоверность и если сигнал из 20-ти или больше идущих подряд периодов соответствует частоте 977 Гц, то тогда контроллер включает по очереди все 7 светильников и начинает воспроизводить звуковой эффект через ШИМ выход D11. Все тоже самое происходит и при выключении.


Воспроизведение звуков


Для воспроизведения звуковых эффектов используется формат WAVE без сжатия, с частотой 16000 Гц и глубиной 8 бит, но при воспроизведении данного формата с использованием ШИМ, в аудио тракте наблюдается неприятный свист и шипение. По этому для для улучшения качества воспроизведения, я в коде использовал линейную интерполяцию. При которой, выборка семплов происходит на частоте 62.5 кГц и между оригинальными выборками вставляются еще 3 дополнительных семпла, рассчитанных методом линейной интерполяции. Таким образом на выходе снижается шум квантования, пропадает свист, улучшается качество звука и для воспроизведения не обязательно использовать дополнительные RC фильтры.


Вместо динамика я использовал старую, маленькую компьютерную колонку без встроенного усилителя.


Для конвертирования Wave файлов в Си код, можно воспользоваться онлайн конвертером

Схема


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


Компоненты для сборки


1 Arduino Nano V.3
2 Датчик препятствий
3 8-ми канальный модуль реле
4 Резисторы 82 Ом и 1 кОм
5 Динамик 0,5 3 Вт
6 Любой N-P-N транзистор с допустимым током не менее 500 мА

Код для Arduino


Скачать все файлы одним архивом
В этот раз я решил добавить все используемые библиотеки в папку со скетчем, а в самом скетче прописал их локальное использование. Теперь надеюсь у новичков будет меньше ко мне вопросов, по поводу ошибок возникающих у них при компилировании.
В коде вынесены несколько констант, которые можно изменить перед прошивкой.
Константа power_ir отвечает за дистанцию срабатывания выключателя, может принимать значения от минимума 20 и до максимума 200. Требуемое Вам значение можно определить экспериментальным путем.
lamp_num определяет количество используемых Вами ламп. Минимальное число лампочек не может быть меньше 1, а максимальное не более 7. Если подправить код то можно увеличить до 15.
lamp_delay это задержка между последовательными включениями ламп, которая выражена в миллисекундах и может начинаться от 0 и до 4 294 967 295 мс. Хотя я не думаю, что такие огромные задержки кому то понадобятся.

Видео




Заключение


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

Спасибо, что дочитали до конца!
Если Вам понравилась моя статья то поддержите ее лайком и подпиской
Если у Вас есть вопросы, то можете их задать в комментариях.
Подробнее..

Железяка 1 робот из обычного металлического конструктора

12.04.2021 22:14:50 | Автор: admin

Небольшой дисклеймер. Эта статья нашлась в моих старых "запасах", и она написана несколько лет назад. Но на фоне новости, что компания, которая производит "донора" для робота решила выпустить набор на Arduino, решил показать, что можно сделать похожее самостоятельно. Благо информация до сих пор не устарела, и никто вам не мешает заменить микроконтроллер на что-то другое.



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


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

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

Также из электронно-китайских запасов были взяты мотор-редукторы с колесами и дисками с прорезями для энкодера 2 щт, самый дешевый драйвер двигателя 1 шт, блютус-адаптер HC-06 1 шт, энкодеры 2 шт, макетная плата 17x10 1 шт, провода для макетной платы, перемычки, а также плата Arduino Leonardo.

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

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

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

Собираем основание тележки с мотор-редукторами и энкодерами.

Основание тележки мы собираем из двух симметричных половинок. Я буду использовать терминологию для деталей из официальной инструкции набора. Сначала прикрепляем к большой панели пластик 50x20 двумя винтами. Это будет изолирующее основание для энкодеров. Вы можете их не ставить для управления по блютус или базовых задач по робототехнике они не обязательны.

К боковой стороне прикручиваете две детали планку сегментную 2 и планку с тремя отверстиями.

Далее устанавливаете скобу I и уголок I как показано на фото. Энкодеры прикручиваете винтами с гайками М3 (у меня под рукой были только M3x15). Скобы чуть отгибаете. Наклон будет нужен для размещения мотор-редуктора в правильном положении.

Устанавливаете мотор-редуктор с припаянными проводами и заизолированной зоной пайки, так чтобы он попал выступом в паз на сегментной планке и закрепляете на ней же винтом с гайкой M3. У меня не было длинного винта M3 длиной 25-30 мм, поэтому я использовал просто винт M3x15, который вставил в отверстие мотор-редуктора. Обращаем внимание на энкодеры, если вы их поставили.

Фиксируем мотор уголком I и зеркально собираем вторую половину основания и скрепляем их между собой.

Колеса

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

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

Для сборки одной оси нам понадобятся шпилька L=75M4, колесо большое, уголок I, диск большой и винты с гайками. Главная задача при сборке ось должна быть закреплена неподвижно и законтрена вторыми гайками, а колесо, наоборот, должно вращаться свободно с небольшим люфтом.

Электроника

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

Из Панели, 4-х Уголков I, пластика 50x20, Скобы большой и 6 стоек под плату 10x3 (можно использовать три стойки и три винта M3x5) сооружаем каркас для установки макетной платы и платы Arduino.

Далее закрепляем на двусторонний скотч макетную плату 10x17 со сдвигом, так как нам надо будет разместить драйвер двигателя. Если у вас драйвер двигателя с прямыми ножками подключения, вы можете не делать такой сдвиг главное, чтобы после установки платы Ардуино у вас было место для установки остальных плат. Прикручиваем плату Arduino (я использовал опять же стойки, так как у меня их был избыток, а гаек M3 недостаток.

Устанавливаем на макетную плату Bluetooth модуль, плату драйвера и подключаем все провода к макетной плате и плате Arduino по схеме. Энкодеры можно подключить к питанию и Arduino, но я пока их не использовал.

После решил защитить провода и зафиксировать блютус модуль от разбалтывания, поэтому собрал вот такую защиту для передней части нашего робота (у нас передние колеса ведущие). Для этого использовали детали: Скоба II 2 шт, Планка с 10 отв. 2 шт., Пластик 75x100.

Программное обеспечение

На деле это самая простая часть в Интернет полно примеров, как заставить такую тележку бегать управляя ей со смартфона или другим способом. Для этого используется передача через Serial порт команды в виде буквы и ее последующая обработка. Используя данные производителя платы драйвера двигателей по разводке и таблицу истинности легко задать скетч для Arduino. Конечно, легко на словах я потратил 4 часа, пытаясь найти проблему работы скетча. Как оказалось для Arduino Leonardo (что кстати написано в документации на сайте) надо использовать Serial1, вместо простого Serial. Поэтому если у вас плата, отличная от Leonardo, используйте нужную подпрограмму для вашей платы (для UNO, к примеру замените все Serial1 на Serial в тексте). Сам код можно найти по ссылке.

Посмотрев код видно, что мы используем стандартную раскладку WASD для движения и T для остановки.

После того как зальете программу в плату, проверьте что моторы подключены правильно и крутятся в нужную сторону, открыв терминал в Arduino IDE и передавая символы команд. Также можете поэкспериментировать со значением PWM.

Теперь приложение для Android. Тут тоже все достаточно просто: мы воспользуемся конструктором приложений MIT AppInventor 2 и создадим вот такую программу. В ней мы используем события TouchUp и TouchDown к элементам управления, передавая символ движения при его касании и остановки при отпускании.

Вы можете установить на смартфон специальное приложение для отладки или сформировать пакет для установки на Android смартфон, подключить к тележке батарею (я использовал внешний аккумулятор для смартфона), подключить bluetooth устройство (HC-06 в моем случае) и наслаждаться тем, что вы сами создали радиоуправляемую тележку.

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


Подробнее..

Как быстро обойти неизменяемость адреса у датчика HTU21 без стрельбы в ногу

07.06.2021 00:10:32 | Автор: admin

Привет дорогие Хабровчане, ну вот и я теперь помогаю Вам.

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

В комментариях умные люди предлагали разные способы и о да, самый простой, дешевый способ оказался с применением аналогового мультиплексора cd4051be. Цитирую комментарий:

"Да проще же. И ног меньше, и I2C аппаратный (мы же тут не про контроллеры, у которых SCL можно на любую ногу вывести?) ставится аналоговый мультиплексор типа хоть доисторического CD4051, SDA напрямую на все чипы, SCL через мультиплексор. Три дополнительные ноги, 8 дополнительных каналов. Подтяжку SCL к питанию не забыть поставить после мультиплексора, а не до. "

Подключал по схеме отсюда, только выход мульплексора не к А0, а к А5. 3 датчика SCL подключены к ноге 15, 13 и 1, SDA общий.

Код простейший индийский, основан на таблице состояний

адресные шины включаются через digitalWrite() (пожалуйста не бейте, я не шарю)

int temp1;int hum1;int temp2;int hum2;int temp3;int hum3;#include <HTU21D.h>HTU21D myHTU21D(HTU21D_RES_RH12_TEMP14);void setup() {  pinMode(8,  OUTPUT);  // CD4051 pin 11 (A)  pinMode(9,  OUTPUT);  // CD4051 pin 10 (B)  pinMode(10, OUTPUT);  // CD4051 pin 9  (C)  Serial.begin(9600);  while (myHTU21D.begin() != true)  {    Serial.println(F("Sensor is faild or not connected")); //(F()) saves string to flash & keeps dynamic memory free    delay (200);    // Инициируем передачу данных по последовательному порту на скорости 9600 бот.  }}void loop() {  digitalWrite(8, LOW);  digitalWrite(9, LOW);  digitalWrite(10, LOW);  myHTU21D.begin();  delay (150);  temp1 = myHTU21D.readTemperature();  hum1 = myHTU21D.readCompensatedHumidity();  digitalWrite(8, LOW);  digitalWrite(9, LOW);  digitalWrite(10, HIGH);  myHTU21D.begin();  delay (150);  temp2 = myHTU21D.readTemperature();  hum2 = myHTU21D.readCompensatedHumidity();  digitalWrite(8, LOW);  digitalWrite(9, HIGH);    digitalWrite(10, LOW);  myHTU21D.begin();  delay (150);  temp3 = myHTU21D.readTemperature();  hum3 = myHTU21D.readCompensatedHumidity();  Serial.print(" T1: "); Serial.print(temp1 );  Serial.print(" H1: "); Serial.print(hum1 );  Serial.print(" T2: "); Serial.print(temp2 );  Serial.print(" Н2: "); Serial.print(hum2 );  Serial.print(" Т3: "); Serial.print(temp3 );  Serial.print(" Н3: "); Serial.print(hum3 );
Подробнее..

Говорящая открытка, с возможностью записи своего поздравления

22.11.2020 14:12:21 | Автор: admin
Хоть я давно уже не проникаюсь ни каким новогодним настроением, но я все таки решил создать это устройство. Суть его проста: при открывание открытки
из динамика начинает играть поздравление и на елке начинают зажигаться диодики. Срабатывание происходит за счет отпускание кнопки, которая находится в левом нижнем углу открытки. Голосовое сообщение можно записать на любом устройстве, а потом подключить открытку к компьютеру и перекинуть поздравление на определившийся юсби диск. Время непрерывной работы от аккумулятора около 20 минут.
Все устройство сделано на atmega328p. Запись включаются с плеера, который управляется по уарту. Динамик 1 Вт. Подключается через разъем мини юсби.
Максимальная мощность звука 1 Вт
Напряжение питания 5 В
Всех с наступающим.
Подробнее..

Умная теплица на базе arduino из подручного материала с регулятором температуры

10.01.2021 20:13:06 | Автор: admin

Дорогие читатели представляю вашему вниманию детский проект под моим руководством "Smart greenhouse".

Данному проекту уже три года, но он полностью функционирует и до сих пор даёт урожай в домашних условиях.

Техническая структура теплицы

1. Материал картон, пластик прозрачный и не прозрачный, пищевая плёнка, удобрение.

2. Электронная начинка Arduino Uno, DC двигатель (водяная помпа), , светодиоды, двухканальный модуль реле 5В, керамический нагреватель, кулер, блок питания на 12 В и 60 Вт, датчик влажности почвы, датчик температуры и влажности воздуха.

Как показало время - выбранный материал оправдал все идеи.
В качестве ёмкостей для выращивания урожая использовали коробки из под обуви (мужская детская обувь).
Коробки были покрыты изнутри акриловой краской, которую часто используют в декоративных целях. После высыхания краски, каждая коробка было покрыта изнутри и снаружи пищевой плёнкой. Коробки прикручены к фанере, которая является соединительной опорой двух коробок. Для прочности конструкции, фасад теплицы был обклеен пластиковыми футлярами из под CD дисков (набралось огромное количество не нужного софта, музыки и фильмов). Клей использовали двух видом - клей момент кристалл для крепления к коробкам термоклей для заливки места стыков пластика.

Для того, чтобы было освещение в любую погоду построили рамку, где закрепили светодиоды (лучше ультрафиолетовые) - расстояние между ними не более 5 см на высоте не менее 25 см. Рамка создана из пластиковых уголков, которых полно в строительных магазинах.

К данной рамке закрепили пластиковую трубку диаметром 1,5 см (дети принесли, от какой то конструкции), где просверлили множество отверстий (до 3мм в диаметре) с одной стороны трубки, расстояние между отверстиями не менее 3 см.

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

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

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

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

Теперь настало время проектировки электроники в теплицу.

Задачи

1. Разработка структуры Умной теплицы

2. Разработка ПО по ручному управлению и автономной работе проекта, отвечающего поставленным задачам.

3. Электромонтаж проекта Умная теплица - автономное и автоматическое отслеживание состояния влажности почвы и воздуха, температуры воздуха в теплице, автоматический полив (увлажнение) почвы и нагрев воздуха до комфортной, растениям, температуры, автоматическое освещение.

4. Разработка модели с возможностью реализации её любому человеку и для любых природных условиях по выращиванию растений любого вида.

Возможности модели

  1. Автоматическое управление освещением

  2. Автоматическое управление поливом.

  3. Автоматическое регулировка температуры и влажности воздуха и почвы.

Описание принципа работы

Датчики влажности почвы и датчик температуры и влажности воздуха каждую секунду отслеживают показания. Данные показания обрабатываются в плате Arduino Uno и выдаются команды согласно загруженной в неё программе.

Программа содержит два условия и бесконечный цикл. Если температура воздуха меньше 20 градусов по Цельсию, то подаётся команда на включение через электромагнитное реле керамического нагревателя и кулера. Под действием конвекции воздух начинает равномерно прогреваться, когда воздух прогреется до 21 градуса по Цельсию, то подаётся команда на отключения нагревателя через реле.

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

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

На видео показана работа теплицы

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

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

Больше интересных проектов можно посмотреть здесь

Подробнее..

Arduino и китайские датчики метеостанций

13.01.2021 18:13:38 | Автор: admin

Как известно, что на Arduino ни делай - получится метеостанция.

Вроде бросил я заниматься поделками на Ардуино, но с давних времен были у меня не побежденные датчики от китайской метеостанции. Датчики не совсем обычные. Обычные - работают на частоте 433МГц, и шлют данные в модуляции OOK (http://personeltest.ru/aways/habr.com/ru/post/426235/).

А эти - работают на частоте 868МГц и как оказалось - модуляция FSK.

Полоса 868 вроде как меньше загажена, и фазовая модуляция вроде как меньше чувствительна к помехам. Датчики лежали без дела, и сам факт того что у меня не получилось их понять меня несколько раздражал. И на новогодних карантинных каникулах я решил их понять.

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

Для приема сигнала метеодатчика я использовал трансмиттер cc1101, хотя можно обойтись его аналогом - только приемником cc113L.

Сложно описать все мои попытки поймать сигнал этого метеодатчика. Буквально пару недель назад я вообще мало понимал отличия модуляций радиосигналов вообще и цифровых в частности.

Но я победил!

В итоге мой "Шлюз для метеодатчиков 433мГц в MQTT/UDP" был переименован в "Шлюз для метеодатчиков в MQTT/UDP" и стал поддерживать в том числе и эти датчики. Вот такой девайс получился:

По характеристикам эти метеодатчики - самые лучшие из имеющихся у меня (см. http://personeltest.ru/aways/habr.com/ru/post/426235/ ).

Преимущества:

  • Частота 868МГц

  • Модуляция FSK

  • Длительность сигнала - два пакета менее чем по 10мс каждый. При столь быстрой передаче влияние помех уменьшается.

  • Постоянный (не меняющийся при смене батарейки) ID устройства

  • Есть преамбула и CRC

В итоге при получении данных с этих метеодатчиков данные приходят практически всегда (при нормальной дальности). При не нормальной еще не испытывал.

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

Халява, сэр! https://github.com/valerivp/wth-mqtt-udp-gate

Подробнее..

Управление системой NooLite через голосового помощника Алиса с помощью умного пульта Яндекса

21.04.2021 12:06:56 | Автор: admin

Я хочу рассказать о одном из способов управлять беспроводной электрикой NooLite с помощью голосового помощника и смартфона (плюс как бонус с компьютера или любого ИК-пульта без Интернет-шлюза).

Вся электрика в квартире и на даче у меня построена на системе NooLite. Почему именно NooLite? Начну издалека. С продукцией фирмы "Ноотехника" я познакомился еще в прошлом веке. Это были блоки защиты галогенных ламп. Они мне очень понравились - свет включался плавно и лампы служили намного дольше. Но вскоре на смену галогенным лампам пришли люминисцентные и блоки защиты стали неактуальны. Потом в квартире был ремонт, стоивший мне немало седых волос и когда через некоторое время возникла необходимость перенести и добавить выключатели, одна мысль о штроблении стен, пыли, грязи и переклейке обоев просто ввергала меня в ужас. Именно тогда я и познакомился с системой беспроводного управления освещением от NooLite. В то время еще не было Xiaomi, Sonoff, Tuya и других недорогих альтернативных решений. Были системы умного дома от европейских серьезных производителей, но там цена вопроса была просто неадекватной. Я решил все свои проблемы с переносом выключателей, разбиением освещения на зоны, сценариями освещения, проходными выключателями, включением-выключением вентиляции и удаленным управлением светом в сараях и гараже на даче с помощью самых первых NooLite, без шифрования и обратной связи.

Все что я сделал много лет назад работает до сих пор, батарейки в пультах менял 1 или 2 раза, в зависимости от интенсивности пользования. Потом добавился беспроводной датчик движения на двери в туалете, позволяющий маленькому ребенку без страха ходить туда (свет включается уже при начале открывания двери) и автоматически выключающий свет и таймеры в туалете и ванной, включающие вытяжку через заданное время после зажигания света и поддерживающие ее включенной некоторое время после выключения. Одно время я крепко задумался о настоящем "умном доме", купил несколько силовых блоков, пультов, датчики температуры и влажности, продумывал структуру. Но потом передумал, так как понял что в не такой уж большой двухкомнатной квартире мне это не нужно. Я так и остался верен системе NooLite, хотя сейчас хватает альтернатив и некоторые из них дешевле и выглядят, возможно, современнее чем изделия Ноотехники. Но тут у меня есть определенные условия. Во-первых, управление моим освещением и электронными устройствами не должно зависеть от китайского облака и вообще от наличия/отсутствия Интернет, тем более что в последние месяцы у нас в городе практикуется периодическое его отключение или замедление (Интернет и wi-fi только как бонус в управлении). Во-вторых, я не хочу держать постоянно включенными узкоспециализированные шлюзы и компьютеры, и так хватает устройств, которые включены постоянно. В-третьих, для меня очень важны надежность и гарантия, больше чем цена. У меня сами по себе перестали функционировать две розетки SmartPlug от Хiaomi и я не смог их починить. Пришлось выбросить. Вышедшие из строя силовой блок и таймер для санузлов в Ноотехнике мне просто поменяли на новые, не уточняя кончилась ли гарантия и не спрашивая при каких условиях они перестали работать (при проведении экспериментов бывает всякое). Это Lifetime warranty в том виде, в котором она мне нравится. Ну и в-четвертых, дополнять уже работающую и хорошо зарекомендовавшую себя систему, проще и легче чем городить что-то другое.

Сейчас уже вовсю используется новое поколение NooLiteF с обратной связью и шифрованием, но для пользователя мало что поменялось, монтаж, привязка и отвязка такие же простые, надежность тоже вроде на высоте. А обратная связь, прошивка "по воздуху" и возможность считать состояние устройства это бонус, кому-то нужный, кому-то нет.

Вроде все хорошо, но сейчас мне уже хочется, как дополнительную опцию, иметь иногда возможность управления NooLite через Интернет. Такая опция у Ноотехники есть. И даже существуют приложения для смартфонов под Android и iOS. Но для этого нужно докупать Интернет-шлюз PRF-64 или контроллер PR-1132, которые стоят больше $100 и должны быть все время включены. Это еще одно постоянно включенное в розетку устройство с весьма узкими возможностями. А с появлением дома умной колонки с голосовым помощником Алиса, захотелось "подружить" Алису с NooLite.

Раз хочется сделаем. Для начала я забил в поиск Гугла " NooLite и Алиса". Зачем изобретать велосипед, вдруг уже давно все решено? И да, мне выдало несколько уже готовых решений, но все они показались мне излишне сложными. Вот например:

На Хабре есть статья "Обход noolite роутера через mtrf64+esp8266+MQTT Buddy Android app".

Там сказано что модуль mtrf64 подключен по UART к esp8266, которая в свою очередь выходит в интернет через ваш роутер и подключается к MQTT бесплатному брокеру. Вы, как пользователь, через мобильное приложение так же подключаетесь к этому облачному брокеру и начинаете посылать команды в MQTT каналы, которые в свою очередь разбираются на лету и в зависимости от команды передаются по UART MTRF64 модулю. Проблему управления через Интернет без дорогостоящего и узкоспециализированного интернет-шлюза от Ноотехники это решает. Но "бесплатный облачный брокер" в связке с ESP8266 почему-то не вселяет в меня уверенности в надежности. Да и голосовое управление прицепить будет непросто (или невозможно?). А значит мне не подходит.

Второе решение реализовано через цепочку навык "Домовенок Кузя"-IFTTT-IHC-шлюз Broadlink (то есть все равно покупка шлюза)-NooLite.

Перспектива регистрации на всех этих сайтах и прописывания настроек меня как-то не воодушевила. Надежность работы такой дли-и-и-нной цепочки тоже не внушает мне доверия. Да и задержка исполнения 3 сек. и более напрягает. Хочется более простого и изящного решения без такой длинной цепочки.

Я начал думать и ставить себе задачу. Покупать какие-то шлюзы без уверенности что это мне нужно и я буду этим пользоваться не хочется. Значит нужно делать из того что есть в наличии. А что у меня есть?

  1. Колонка IRBIS с голосовым помощником Алиса.

  2. Несколько силовых блоков первой серии без обратной связи.

  3. Модули MT1132 и MTRF-64 для управления NooLite и NooLite-F c помощью контроллеров.

  4. Несколько плат Arduino.

Не густо. Логическая цепочка не просматривалась до тех пор пока мне на глаза не попал умный пульт Яндекса. И сразу все встало на свои места. Яндекс напрямую работает со своим пультом, а тот умеет записывать любой ИК-сигнал и передавать его по команде. К Arduino подключены ИК-приемник и модуль управления системой NooLite. По-моему, гениально проще некуда. Умный пульт от Яндекса стоит меньше чем $20 и это устройство универсальное, может использоваться для управления другой техникой (кондиционер, телевизор, ресивер и т.п.), а значит покупка его не бессмысленна. Вероятно, точно также будет работать и универсальный пульт от Tuya, который стоит еще дешевле, но после знакомства с умной колонкой IRBIS (звук и микрофоны у нее довольно посредственные а часть сервисов Яндекса не работает) я убедился что лучше заплатить дороже но взять оригинал, есть вероятность что будет выше качество и меньше глюков. Поэтому пульт выбрал оригинальный от Яндекс, не хочется взять стороннее решение, сэкономить пару долларов и узнать что снова часть функций не работает.

Теперь о модулях управления NooLite. У меня в наличии есть несколько вариантов модулей, которые можно подключить к контроллеру (Arduino).

О модулях MTRF-64 и MTRF-64-USB

По сути MTRF-64 и MTRF-64-USB это одно и то же. Просто у MTRF-64 незапаяна часть деталей и отсутствует корпус и USB разъем, но присутствуют пины.

Модуль MTRF-64, как видно из названия, 64 канальный, может отправлять команды старой системе без обратной связи и отправлять команды и принимать ответ новой системе с шифрованием и обратной связью.

MTRF-64MTRF-64

Технически сделано так, что именно с Arduino MTRF-64 использовать неудобно. Arduino запитывается напряжением 5В а MTRF-64 - 3,3В. Потребуется отдельное питание (на плате не запаян стабилизатор питания 3,3В, хотя место под него есть), отстутствует согласование уровней UART (это ведь не сложно предусмотреть и пара транзисторов практически не увеличила бы цену модуля).

MTRF-64-USB то же самое с запаянной на плате микросхемой переходника USB-UART и еще кое-какими деталями.

MTRF-64-USBMTRF-64-USB

Смысл существования данного контроллера мне вообще малопонятен. Я слабо себе представляю как его реально можно использовать.

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

Теперь про саму программу. Я не знаю кто ее написал, но она ужасна. Внешний вид и цветовые решения наверняка вызовут у больного эпилепсией приступ. Внутри - куча несуразностей. Такое чувство что просто взяли сервисную программу, которой пользовались разработчики и сообщения которой нужны и понятны только им и прилепили сверху малоинформативную и путаную часть для обычных пользователей. Может поэтому нумерация каналов в "лоховской" части начинается с единицы а в сервисной "профи" с нуля? Да, программой можно кое-как пользоваться приловчившись, но если вы думаете что она поможет вам при написании своей программы, подскажет код отправки контроллеру и посчитает контрольную сумму, то нет.

Документирована возможность отправки команд через API программы из командной строки. Но... при этом программа должна быть уже запущена и, да, из командной строки команды отправляются. Но когда я попробовал записать последовательность команд (или одну команду) в BAT-файл у меня ничего не получилось. Может быть это я такой криворукий...

Про программу nooLite_ONE и ее недостатки можно написать много, но лучше от этого она не станет и смысла в ее существовании не прибавится, поэтому не буду больше тратить на это время.

Мысли вслух и хотелки...

Мне вообще непонятен смысл существования двух недомодулей MTRF-64 и MTRF-64-USB. Зачем плодить сущности? Гораздо больше смысла было бы производить и продавать одну полную версию со всеми запаянными деталями и USB-разъемом, пинами и корпусом в комплекте и любой человек, приобретя его, смог бы использовать его по своему усмотрению без "допиливания".

Помечтаем:

Хорохо было бы, если бы существовала внятная инструкция как настроить терминал для отправки команды на блок управления без спецсофта, если это вообще возможно...

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

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

Теперь про более старые версии контроллеров (уже сняты с производства).

О модулях MТ1132 и МР1132

MТ1132 - 32 канальный, может только отправлять команды системе без обратной связи.

MT-1132MT-1132

Питание 3 ... 5В, к Arduino подключается напрямую, ничего согласовывать не нужно. Управление модулем осуществляется через стандартный интерфейс UART. Скорость передачи данных - 9600 бит/сек., 8 бит данных, 1 стартовый бит, 1 столовый бит, бит четности - отсутствует. Передача от младшего к старшему биту. Для управления модулем необходимо передать через UART пакет из 12 байт. Описание отправляемых данных есть в техдокументации (не идеальной, но какая есть) к модулю.

МR-1132 - 32 канальный, может только принимать данные от датчиков NooLite.

MR-1132MR-1132

Чтение документации на модуль MTRF-64 и готовых библиотек навеяло на меня печаль. 64 канала для эксперимента мне не нужны, шифрование и обратная связь тоже, так как силовых блоков NooLiteF у меня нет, буду использовать те что были куплены ранее, без обратной связи, в частности SU-111-200. Поэтому выбор был сделан в пользу MT1132, пусть он уже снят с производства, но он у меня-то он есть в наличии. На том же принципе совсем несложно сделать и управление с шифрованием и обратной связью, было бы желание (просто вместо 12 байт, как для MT1132, отправлять 17 байт на MTRF-64).

Наверно основным плюсом для меня было то что на GitHub обнаружилась библиотека ardunoo для управления MT1132 с помощью Arduino от zhum (Сергей Жуматий), за что ему огромное спасибо! Эта библиотека сводит написание программы управления к нескольким строкам. А умеет библиотека все немало: привязывать и отвязывать силовые блоки, включать и выключать свет, записывать и исполнять сценарии, плавно менять яркость источника света.

В комплекте с библиотекой есть пример скетча с комментариями, который при запуске позволяет выполнять все эти действия вводя буквы в штатный Serial Monitor среды Arduino.

О грустном...

Вот если бы Ноотехника ВСЕ свои изделия сопровождала понятной документацией, примерами и библиотеками, как это сделал для них Сергей Жуматий...

Мало сделать отличное "железо", это "железо" нужно продать, убедив покупателя что купив NooLite он не встретит трудностей с внедрением и настройкой! Чтение документации на MTRF-64 и знакомство с программой nooLite_ONE меня в этом не убедили.

Что ж, определились, будем использовать модуль MT1132. Подключаем Arduino к модулю в соответствии со схемой из документации.

Я использовал контактную макетную плату с набором проводов, это очень ускоряет монтаж. TX модуля подключаем к 10 пину а RX к 11 пину Arduino. Для первых экспериментов взял свой "боевой" китайский клон UNO, уже паленый, с усиленным стабилизатором питания (от него же будет питаться и MT1132), когда все заработало заменил UNO на NANO, его удобно разместить прямо на макетной плате. Для приема команд нам понадобится IR приемник. У меня нашелся TSOP2836, если не ошибаюсь (пробовал и другие, разницы в работе особо не заметил, важно только соблюдать распиновку). Подключаем его в соответствии со схемой включения Vcc к 5В, GND к общему проводу а OUT к 2 пину Arduino.

Берем пример скетча из библиотеки ardunoo и исправляем в ней строку с выбором канала на котором будем работать с силовым блоком, выбираем 8-й канал.

 noo.channel(8);     // Let's command 2-th channel

Запускаем скетч, открываем Serial Monitor и введя в него букву "b" привязываем силовой блок. Теперь можно поиграться, вводя "n" зажигаем свет, "f" - гасим, "x"- меняем состояние и т.п. Убедились что все работет? Идем дальше.

Теперь нам понадобится стандартная библиотека IRremote. которая предназначена для упрощения работы с приёмом и передачей ИК сигналов. С помощью этой библиотеки будем принимать команды с пульта, и выводить их в окно Serial Monitor среды Arduino.

Берем любой IR-пульт (я взял от автомобильного трансмиттера).

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

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

Вписываем коды выбранных кнопок для вызова функций noo.on(), noo.off() и noo.onoff(). При желании можно дописать другие функции и коды.

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

Теперь переходим к управлению с помощью голосового помощника Алиса. Запускаем Яндекс, переходим в раздел устройства.

и выбираем Умный пульт Яндекс (его я установил раньше и планирую использовать и с другими устройствами, имеющими IR-порт). Нажимаем кнопку "Добавить устройство". Выбираем "Настроить вручную".

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

Дальше производим обучение пульта. Нажимаем "Добавить команду".

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

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

Так последовательно записываем все команды для выбранных кнопок.

Теперь среди устройств появилось "На полке"

и пульт управления к нему из созданных команд.

Также есть вкладка "Голосовые команды" с подсказками.

Проверяем. Подаем команду из подсказки. Работает, задержки почти нет.

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

Но при желании Arduino и модуль МТ1132 можно разместить в пластиковый корпус, прозрачный для инфракрасных лучей. IR-приемник очень чувствительный а Яндекс-пульт посылает мощный сигнал, поэтому располагать пульт и приемник соосно в прямой видимости не понадобится. При необходимости можно будет добавить еще один или несколько IR-приемников подключив их или паралельно или каждый к отдельному пину Arduino. Но пока и так все работает отлично.

Подведу итог: идея работает, все просто и наглядно. Освещением (или любой другой нагрузкой) можно управлять помощью:

  1. компьютера через Serial Monitor;

  2. пульта от любой бытовой техники;

  3. пульта умного дома Яндекс;

  4. голосового помощника Алиса на смартфоне, компьютере или колонке.

Исходники

Ссылка на библиотеку ardunoo

Библиотека IRemote

Программа от zhum c моей вставкой:

/*Let you connect MT1132 to your arduino like this:+---------+               +------------+| MT1132  +-(RX)-----(11)-+ Tx Arduino ||         +-(TX)-----(10)-+ Rx         ||         |               |            |*/#include <SoftwareSerial.h>#include <ardunoo.h>#include <IRremote.h>#define RXpin 10#define TXpin 11IRrecv irrecv(2); // указываем вывод, к которому подключен приемникdecode_results results;ArduNoo noo(RXpin,TXpin);void setup(){  Serial.begin(9600);  irrecv.enableIRIn(); // запускаем прием  noo.channel(8);     // Let's command 8-th channel    // ...}void loop(){  int r;  r=Serial.read();  if(r<='9' && r>='0'){ // change channel    noo.channel(r-'0');    return;  }  switch(r){  case 'n': //on    noo.on();    break;  case 'f': //off    noo.off();    break;  case 'x': // toggle    noo.onoff();    break;  case 'c': //print current channel    Serial.print(noo.channel());    break;  case 'b': //bind    noo.bind();    break;  case 'u': //unbind    noo.unbind();    break;  case '+':    noo.slow_on();    break;  case '-':    noo.slow_off();    break;  case '!':    noo.slow_onoff();    break;  case 'r': // record scene!    noo.record_scene();    break;  case 'R': // run scene!    noo.run_scene();    break;  case 's': // toggle 3-rd channel    noo.onoff();    break;  }    if ( irrecv.decode( &results )) { // если данные пришли    Serial.println( results.value ); // печатаем данные в Serial Monitor    if (results.value == 16753245)  //код кнопки, выбранной для выключения   {           noo.off();    //выключаем свет        }    if (results.value == 16769565)  //код кнопки, выбранной для включения   {      noo.on(); //включаем свет           }   if (results.value == 16736925)  //код кнопки, выбранной для изменения состояния      {           noo.onoff();   //меняем текущее состояние света         }    irrecv.resume(); // принимаем следующую команду  }}

Если кому-нибудь понравится - пользуйтесь.

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru