Основное назначение платы SB 4.0 — аппаратный интерфейс. Собрав, вы можете использовать её для получения и обработки данных от нескольких предустановленных датчиков и дальнейшего принятия решения и исполнения алгоритмов. Для удобства отладки создан интерфейс в OS Windows, в котором наглядно отображаются телеметрические показания с датчиков и источника питания, состояние кнопок и сервоприводов, можно отправлять команды на микроконтроллер.
В этой публикации я опишу характеристики платы и один из примеров её применения. Повторюсь, всё это open-source, под лицензией CC Attribution Non-Commercial Share Alike.
Да, уже есть подобные платы управления и KITы с датчиками (более дорогие платы Ардуино с шилдами, у Raspberry Pi, у амперки йодо), но SB 4.0 отличается от них наличием платы питания и удобной программы контроля, написанной с помощью среды разработки LabView. То есть SB 4.0 состоит из двух плат: управления + питания. Это будет видно на фотографиях и видео.
Фотография обеих плат, датчика движения, АКБ:
Программирование
Для программирования микроконтроллера как всегда используем C/C++. Разработку ведём в среде Arduino IDE.
На скриншоте представлен интерфейс программы Selfiebot Control Panel, где наглядно отображаются телеметрические показания с датчиков и источника питания, состояние кнопок и сервоприводов, можно отправлять команды на микроконтроллер.
Скриншот части интерфейса:
Производительность
SB 4.0 использует одну из самых недорогих платформ Arduino Nano 3.0 с 8-битным микроконтроллером ATmega328. Этого достаточно для обработки кода и решения задач: управление роботами, системой умного дома и др.
Совместимость
Логическое напряжение — 5 В, что обеспечивает электрическую совместимость с Arduino-периферией.
Порты ввода-вывода
Доступны управляющие пины микроконтроллера. В скобках указал предустановленные элементы, с которыми плата уже умеет работать.
- 2 пина, которые могут конфигурироваться как цифровой вход/выход и выход ШИМ (для двух цифровых сервоприводов);
- 1 пин, цифровой вход/выход (для датчика движения);
- 3 пина, цифровой вход/выход (для RGB-светодиода);
- 1 пин, цифровой вход/выход (для концевого датчика, кнопки);
- 1 пин, цифровой выход +5В/0В (для управления внешней нагрузкой).
Шина I2C и порт UART задействованы соответственно для платы расширителя портов и модуля Bluetooth.
Предусмотрена универсальность платы SB 4.0. Согласуйте уровни питания, сигнальные уровни, тип входа/выхода! Замените предустановленные датчики на свои датчики:
- температуры
- уровня шума
- влажности
- давления и др.
Входной пин работает по принципу замкнут / разомкнут. Т.е. на пине, идущему к МК или +5В, или 0. Эти значения входят в телеметрические данные, которые отправляются на ПО Selfiebot Control Panel.
Выходной пин либо выдаёт 5В с нагрузочной способностью 1А, либо отключен — 0В. Подавать напряжение или нет на этот разъём – возможно только по внешней команде или по команде алгоритма прошивки.
Не имеет смысла подключать аналоговые датчики к цифровым пинам.
Питание
Питание подается через гнездо питания 2,1 мм, либо с Li-Ion аккумуляторов с контроллером заряда. Источник определяется автоматически.
В случае питания через гнездо, рекомендуемое входное напряжение — 12-12.6 В. Преобразователи напряжения DC-DC выдают на сервоприводы – 7 В, на USB1, USB2 и остальные нагрузки – 5 В. В качестве источника питания можно использовать сетевой адаптер или аккумуляторы.
Для питания периферии используйте пины 5В. При использовании внешнего источника питания, с пина 5В можно суммарно получить до 1А.
Набор для силового электропитания включает в себя:
- Батарейный блок 3х18650, 1 шт.
- Аккумулятор 18650, 3.7 В, от 2200 мАч, 3 шт.
- Контроллер заряда, 1 шт.
- Разъем питания, 1 шт.
- DC-DC преобразователи, 4 шт.
- Датчик Холла, 1 шт.
- Транзисторы, 3 шт.
- Оптопары и резисторы.
Коммуникация
Микроконтроллер Arduino Nano программируется по USB стандартным бесплатным программным обеспечением с сайта производителя МК. Для передачи данных между SB 4.0 и компьютером я как всегда выбрал недорогой распространенный модуль Bluetooth HC-06, скорость передачи данных 9600 Кб/с. По этому беспроводному каналу идут телеметрические данные и команды управления.
Габариты
У меня получились размеры электронной платы силового питания — 100?70?40 мм. Размеры электронной платы управления — 90?70?45 мм. Но уверен, можно ещё пошаманить и уменьшить габариты.
Расстояние между контактами составляет 0,1? (2,54 мм).
Характеристики микроконтроллера
- Микроконтроллер: 8-битный ATmega328.
- Тактовая частота: 16 МГц.
- Флеш-память: 32 кБ (2Кб используются для загрузчика, 30Кб — для хранения кода Вашей программы).
- ОЗУ 2 КБ.
- EEPROM 1 Кб.
- Номинальное рабочее напряжение: 5 В
Характеристики электронной платы SB 4.0
- Номинальное рабочее напряжение: 12,6 В
- Рекомендуемое входное напряжение: 12–12.6 В.
- Максимальный ток с шины 5 В: 1000 мА
- Портов ввода-вывода общего назначения: 2
- Портов с поддержкой ШИМ: 2
Плата управления включает в себя следующие элементы:
- Bluetooth модуль HC-06, 1 шт.
- Электронная плата расширителя портов микроконтроллера, 1 шт.
- Микроконтроллер Arduino Nano 3.0, 1шт.
- Электронная плата уровня освещенности, 1 шт.
- Сервоприводы TowerPro MG966R, 2 шт.
- Фоторезистор, 1 шт.
- Датчик движения, 1 шт.
- Светодиод RGB, 1 шт.
- Кнопка, 1 шт.
- Предохранитель, 1 шт.
- Джампер, 1 шт.
- Транзистор, 1 шт.
- Конденсатор, 1 шт.
Практическое использование
Варианты практического использования:
1. Открывать / закрывать окна при изменении температуры.
2. Включение / выключение вентилятора при изменении влажности в помещении.
3. Включение / выключение света при наличии движения в темное время суток.
4. Включение / выключение водоснабжения при изменении влажности почвы.
5. Включение ИК подсветки, в темное время суток.
6. Передача любых телеметрических данных на сервер через интернет соединение.
Пример применения платы SB 4.0
Цель: при условии нажатой кнопки, включать свет при обнаружении движения.
Для этого нам дополнительно понадобятся модуль реле, лампочка (220 ADC или до 12 VDC).
1. Чаще всего мы встречаем реле 12VDC и 05VDC. Число означает, какое значение постоянного напряжения необходимо подать на вход реле.
2. Рассмотрим работу распространенного для Ардуино реле SRD-05VDC от компании Songle.
3. При подаче питания на пин Vcc и замыкании с «землей» пина Gnd, загорается зеленый светодиод.
4. Т.к. у нас одноканальный модуль, то на плате вы увидите всего один сигнальный пин In1. Если на In1 установить уровень напряжения LOW, то красный светодиод на модуле реле загорается и реле срабатывает с характерным щелчком. На Ардуино за установку уровня напряжения на пине отвечает команда digitalWrite(pin, LOW); Чтобы вернуть реле в предыдущее состояние, используйте команду digitalWrite(pin, HIGH);
5. Подключим модуль реле к плате SB 4.0, у которой предустановлен датчик движения и пользовательская кнопка.
5.1. Сигнальный пин In1 модуля реле подключим к пину 13.
5.2. В программном коде Arduino Nano находим:
***********************************
// работа с датчиком движения - если движение было, то запоминаем этот факт в течение timeout_SnSM
if (var_Tlm_SnSM == 1) { time_Move_detect = millis(); }
if (millis() - time_Move_detect < timeout_Move_detect) { Move_detect = 1; } else { Move_detect = 0; }
***********************************
Ниже этих строк добавляем:
***********************************
// если пользовательская кнопка нажата (== 0), то при фиксации движения (== 1) подаем сигнал на пин 13 (== LOW), на время timeout_SnSM
if (var_Tlm_BUT == 0) {
if (Move_detect == 1) { digitalWrite(PIN_D13, LOW); } else { digitalWrite(PIN_D13, HIGH); }
} else {
digitalWrite(PIN_D13, HIGH);
}
***********************************
5.3. Загружаем новую прошивку и включаем питание платы.
Если датчик движения обнаружил движение, то благодаря нашему алгоритму на пине питания внешней нагрузки появляется уровень LOW, реле срабатывает, замыкая цепь, и лампочка загорается.
Таким образом, если человек проходит мимо датчика движения, то лампочка включается.
Комментарии (13)
vvmk
09.09.2016 13:58А для чего нужна опторазвязка?
Лишняя она тут, это бессмысленное усложнение схемы.
Управление P-Channel MOSFET реализуется или одним полевиком с N каналом, или npn биполярником с резистором в базовой цепи.SME
10.09.2016 12:35согласен, вместо оптопары можно поставить транзистор. Но мы давно накупили оптопар по 2-3 рубля :) себестоимость пока не вылизываем, поэтому одинаково — что оптопара стоит, что биполярник.
CFox
09.09.2016 17:53А можно поподробнее о контроллере питания и вообще в целом о питании устройства?
SME
10.09.2016 12:37очень широкий вопрос, тянущий на отдельную статью! Мой коллега планирует до конца месяца написать статью о плате питания и выложить здесь. Разжуёт как и что и почему)
CFox
11.09.2016 13:04Желательно о автономных источниках питания, их контроле и заряде. Надоело всякую чушь самому делать, Может есть что то адекватное. Если можно разумеется
SME
15.09.2016 15:37Коллега выложил статью, где можно вычленить полезную информацию о контроллере питания в контексте сборки управляемого шасси. Этот же коллега собирал плату питания для SB 4.0.
https://geektimes.ru/post/280414/ — разделы «Двигатели и питание» и «Электроника шасси»
Go_eZ
Так и не понял для чего это всё создавалось (Вы случайно не с БГУИР ?). В тегах висит печатная плата — так её не увидел. Вся статья похожа на сборную солянку из курсовой, мыслей автора, описания характеристик взятых у китайцев на небезызвестном сайте. Не статья, а каша. Есть «принципиальная схема» — но нарисована она уж простите похабно. Вы говорите, что проект открытый, так где ссылка на код?
kgbplus
Да, у меня такое же мнение. Все что понял, что товарищ взял ардуину, припаял к ней светодиод, и разъемы для датчиков. Получилась опенсорсная плата. Такими платами весь ebay завален
SME
Первые версии этой платы изначально создавались для робота телеприсутствия SelfieBot (SB), поэтому к ней по умолчанию подключены два сервопривода (вращение в 2х осях), датчики освещения и движения, чтобы реагировать на людей, подходящих к роботу. (у нас в команде нет людей с БГУИР. Если интересно, можете погуглить инфо о нас Endurance Robots)
Согласен, тег «печатная плата» не соответствует статье, т.к. пока всё в проводах. Я убрал тег.
Извините за создание ощущения солянки с курсовой. SB 4.0 — рабочая версия, она находится в стадии оформления документации. Как только всё красиво оформлю, выложу на гитхаб. Пока же готов предоставлять материал в неоформленном виде.
lohmatiyy
Минутка снобизма.
Если ваш сайт — этот, то как-то обидно выкладывать на Хабр статьи типа этой, как по мне :) ИМХО, тянет даже не на курсовой, а на пару лабораторок, для курсача слабовато будет. Зачем было выкладывать — непонятно, я штуки такого плана строил в начале первого курса, но желания поделиться не вызывало, вокруг меня толпа народа занималась тем же самым.
Городить здесь целую схему питания, кстати, особого смысла не было, 5В 900мА спокойно выдаёт USB 3.0, целый ампер — пара USB 2.0, если разъём на материнке помечен как подходящий для заряда устройств — и того больше.
kgbplus
Посмотрел сайт — насколько люди занимаются интересными проектами и хорошо рассказывают о них на сайте, настолько скомкано и непонятно написано здесь. Теперь буду только ждать, что исправятся )