Как я сделал электронную плату для телеметрии датчиков и для управления периферией

в 18:02, , рубрики: arduino, diy или сделай сам, open source, датчик движения, датчик освещенности, печатная плата, пользовательская кнопка, телеметрия датчиков

В ходе создания робота-официанта, робота телеприсутствия, селфибота появились некоторые разработки, которыми грех не поделиться с сообществом, то есть сделать 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 состоит из двух плат: управления + питания. Это будет видно на фотографиях и видео.

Фотография обеих плат, датчика движения, АКБ:

Как я сделал электронную плату для телеметрии датчиков и для управления периферией - 1

Программирование

Для программирования микроконтроллера как всегда используем C/C++. Разработку ведём в среде Arduino IDE.

На скриншоте представлен интерфейс программы Selfiebot Control Panel, где наглядно отображаются телеметрические показания с датчиков и источника питания, состояние кнопок и сервоприводов, можно отправлять команды на микроконтроллер.

Скриншот части интерфейса:

Как я сделал электронную плату для телеметрии датчиков и для управления периферией - 2

Производительность

SB 4.0 использует одну из самых недорогих платформ Arduino Nano 3.0 с 8-битным микроконтроллером ATmega328. Этого достаточно для обработки кода и решения задач: управление роботами, системой умного дома и др.

Как я сделал электронную плату для телеметрии датчиков и для управления периферией - 3

Совместимость

Логическое напряжение — 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 шт.
  • Оптопары и резисторы.

Как я сделал электронную плату для телеметрии датчиков и для управления периферией - 4

Коммуникация

Микроконтроллер 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 шт.

Как я сделал электронную плату для телеметрии датчиков и для управления периферией - 5

Практическое использование

Варианты практического использования:

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, реле срабатывает, замыкая цепь, и лампочка загорается.

Таким образом, если человек проходит мимо датчика движения, то лампочка включается.

Автор: SME

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js