В ходе создания робота-официанта, робота телеприсутствия, селфибота появились некоторые разработки, которыми грех не поделиться с сообществом, то есть сделать open-source. Одной из рабочих версий стала электронная плата под кодовым названием SB version 4.0, использующая недорогую и сравнительно малофункциональную Arduino, а именно, Nano 3.0. Плата SB 4.0 достаточно проста и понятна, чтобы в процессе её сборки закрепить свои знания электроники и навыки пайки, достаточно функциональна, чтобы сделать собственные практичные проекты (например, включить лампочку по сигналам с датчика движения и датчика освещенности или по вашей команде по Bluetooth), а себестоимость комплектующих с доставкой при заказе у наших китайских друзей с таобао составила около $55 (включая сами датчики).

Основное назначение платы 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)


  1. Go_eZ
    09.09.2016 11:54
    +3

    Так и не понял для чего это всё создавалось (Вы случайно не с БГУИР ?). В тегах висит печатная плата — так её не увидел. Вся статья похожа на сборную солянку из курсовой, мыслей автора, описания характеристик взятых у китайцев на небезызвестном сайте. Не статья, а каша. Есть «принципиальная схема» — но нарисована она уж простите похабно. Вы говорите, что проект открытый, так где ссылка на код?


    1. kgbplus
      09.09.2016 11:58

      Да, у меня такое же мнение. Все что понял, что товарищ взял ардуину, припаял к ней светодиод, и разъемы для датчиков. Получилась опенсорсная плата. Такими платами весь ebay завален


    1. SME
      09.09.2016 11:59
      +1

      Первые версии этой платы изначально создавались для робота телеприсутствия SelfieBot (SB), поэтому к ней по умолчанию подключены два сервопривода (вращение в 2х осях), датчики освещения и движения, чтобы реагировать на людей, подходящих к роботу. (у нас в команде нет людей с БГУИР. Если интересно, можете погуглить инфо о нас Endurance Robots)
      Согласен, тег «печатная плата» не соответствует статье, т.к. пока всё в проводах. Я убрал тег.
      Извините за создание ощущения солянки с курсовой. SB 4.0 — рабочая версия, она находится в стадии оформления документации. Как только всё красиво оформлю, выложу на гитхаб. Пока же готов предоставлять материал в неоформленном виде.


      1. lohmatiyy
        10.09.2016 23:19

        Минутка снобизма.
        Если ваш сайт — этот, то как-то обидно выкладывать на Хабр статьи типа этой, как по мне :) ИМХО, тянет даже не на курсовой, а на пару лабораторок, для курсача слабовато будет. Зачем было выкладывать — непонятно, я штуки такого плана строил в начале первого курса, но желания поделиться не вызывало, вокруг меня толпа народа занималась тем же самым.
        Городить здесь целую схему питания, кстати, особого смысла не было, 5В 900мА спокойно выдаёт USB 3.0, целый ампер — пара USB 2.0, если разъём на материнке помечен как подходящий для заряда устройств — и того больше.


        1. kgbplus
          13.09.2016 16:19

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


  1. vvmk
    09.09.2016 13:58

    А для чего нужна опторазвязка?
    Лишняя она тут, это бессмысленное усложнение схемы.
    Управление P-Channel MOSFET реализуется или одним полевиком с N каналом, или npn биполярником с резистором в базовой цепи.


    1. slog2
      09.09.2016 17:53

      Плюс оптрон дороже раз в 10-20 чем транзистор и потребляет лишних 5-10 мА.


    1. SME
      10.09.2016 12:35

      согласен, вместо оптопары можно поставить транзистор. Но мы давно накупили оптопар по 2-3 рубля :) себестоимость пока не вылизываем, поэтому одинаково — что оптопара стоит, что биполярник.


  1. madf
    09.09.2016 14:14
    +1

    Обычный, очередной пример непонятно для чего.)


  1. CFox
    09.09.2016 17:53

    А можно поподробнее о контроллере питания и вообще в целом о питании устройства?


    1. SME
      10.09.2016 12:37

      очень широкий вопрос, тянущий на отдельную статью! Мой коллега планирует до конца месяца написать статью о плате питания и выложить здесь. Разжуёт как и что и почему)


      1. CFox
        11.09.2016 13:04

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


        1. SME
          15.09.2016 15:37

          Коллега выложил статью, где можно вычленить полезную информацию о контроллере питания в контексте сборки управляемого шасси. Этот же коллега собирал плату питания для SB 4.0.
          https://geektimes.ru/post/280414/ — разделы «Двигатели и питание» и «Электроника шасси»