Обзор 105_Bender

Устройство ZiChip №105 Bender создано для AVR микроконтроллера ATmega328 и с расчетом применения Arduino (Uno, Nano, Pro mini) — это если у Вас нет желания травить и паять свою плату. В этом случае все необходимые цепи обвязки и связи с ПК уже присутствуют в конструкции (необходимо лишь добавить защитные резисторы). Кроме того, запись прошивки в микроконтроллер значительно упрощается.

Устройство №105 ZiChip создавалось с целью «оживить» мой старый проект «Робот Бендер», поэтому и периферия подобрана таким образом, чтобы можно было управлять всеми модулями робота (и даже немного больше). Но в тоже время устройство способно управлять и другими вариантами подвижных тележек (с одним приводным двигателем и подвижными рулевыми колесами, 2-мя, 4-мя приводными колёсами или даже гусеничной тележкой).

Устройство имеет набор входных и выходных линий. Каждая конкретная линия связана со своей периферией. Переназначить линии нельзя (но зачастую можно использовать линию по двойному назначению, например, линия АЦП0 используется и как аналоговый вход и как вход BlueTooth).

Алгоритм устройства (сценарий поведения) строится посредством элементарных элементов формирующих логические цепочки Событие-Действие. Для этого необходима программа ZiChip Tuner.

Периферия устройства,

Входа:
— ИК приемник (TSOP)
— 3 аналоговых входа для бамперов (в качестве бампера можно применять различные как цифровые, так и аналоговые датчики)
— 5 аналоговых входов общего назначения (можно использовать как аналоговые, так и цифровые датчики)
— вход  BlueTooth (UART)

Выхода:
— сервопривод
— два двигателя (необходим драйвер)
— динамик
— 5 ШИМ-выхода
— выход BlueTooth (UART)

с привязкой к точкам доступа (вход / выход / системная ), выводам Arduino и портам микроконтроллера:
point.1 = Вход — ИК-пульт (D2 — PD2)
point.2 = Вход — Дискретные линии (A0-A7 — PC0-PC7)

point.3 = Сист — Входной буфер BlueTooth
point.4 = Сист — Выходной буфер BlueTooth

point.6 = Сист — Параметры сервы (Servo_Center, Servo_Max_L, Servo_Max_R, Servo_Accel)
point.7 = Сист — Параметры мотора (Motor_speed, Motor_accel, Motor_max_speed)
point.8 = Сист — Параметры поворота (Turn_L_speed, Turn_R_speed, Turn_accel, Turn_max_speed)
point.9 = Сист — Параметры коррекции движения (Cor_L_motor, Cor_L_motor)

point.10 = Вход — Аналоговая линия 0 (A0 — PC0) + BT-выход
point.11 = Вход — Аналоговая линия 1 (A1 — PC1)
point.12 = Вход — Аналоговая линия 2 (A2 — PC2)
point.13 = Вход — Бампер левый (A3 — PC3)
point.14 = Вход — Бампер центральный (A4 — PC4)
point.15 = Вход — Бампер правый (A5 — PC5)
point.16 = Вход — Аналоговая линия 6 (A6 — PC6)
point.17 = Вход — Аналоговая линия 7 (A7 — PC7)

point.18 = — общего назначения
point.19 = — общего назначения

point.20 = Выход — Мотор левый база (D5 — PD5)
point.21 = Выход — Мотор левый управление (D6 — PD6)
point.22 = Выход — Мотор правый база (D7 — PD7)
point.23 = Выход — Мотор правый управление (D8 — PB0)
point.24 = Выход — MLED0 (D9 — PB1)
point.25 = Выход — MLED1 (D10 — PB2)
point.26 = Выход — MLED2 (D11 — PB3)
point.27 = Выход — ELED (D12 — PB4)
point.28 = Выход — ALED (D13 — PB5) — индикатор Arduino

point.29 = — общего назначения

point.30 = Выход — Сервопривод (D3 — PD3)
point.31 = Выход — Зуммер (D4 — PD4)

point.32 = — точки 32-46 общего назначения

point.47 = Сист — Зеркало 1WIR-сети (системная точка)
point.48 = Сист — ИК-код последней нажатой кнопки пульта (системная точка)
point.49 = Сист — Флаги устройства (системная точка)
point.50 = Сист — Время «жизни» устройства (системная точка)
point.51 = Сист — Случайное число (системная точка)

Параметры устройства:
— 51 точка доступа
— 512 байт EEPROM и 768 байт RAM для сценария поведения
— поддержка 16 кнопок ИК-пульта (с возможностью изучения любого пульта)
— 24 ячейки памяти EEPROM для хранения точек.

 

Для построения алгоритма работы устройства используется набор элементов:

0 Разделитель
Элемент не выполняет никаких действий, не использует ресурсов устройства. Используется лишь для визуально разделения блоков сценария.

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

  2 Начало микропрограммы
Элемент является указателем начала микропрограммы.

  3 Конец микропрограммы
Любая микропрограмма должна завершаться этим элементом.

  4 Инициализирующая микропрограмма
Элемент является аналогом элемента «Начало микропрограммы», но начатая с такого элемента микропрограмма выполнится только один раз при запуске (или сбросе) устройства. Применяется для инициализирующих действий в сценарии.

  5 Запрет микропрограммы
В случае, если нужно временно исключить микропрограмму из сценария (не удаляя цепочки элементов и их настройки), применяется данный элемент (вместо «Начало микропрограммы»).

  7 Изменение события
Элемент изменяет тип предыдущего события, позволяя организовывать более гибкие варианты реагирования на события.

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

  9 Комментарий
Элемент не выполняет никаких действий, не использует ресурсов устройства. Используется лишь для ставки комментария в сценарий.

  50 Событие от пульта
Элемент формирует событие по факту нажатия кнопки пульта.

  51 Событие от BlueTooth
Элемент формирует событие по факту приема заданного символа по BlueTooth (UART).

  52 Передача по BlueTooth
Элемент передает символ по BlueTooth (UART).

  75 Настройка BlueTooth
Элемент настраивает модуль BlueTooth.

  53 Событие от левого бампера
Элемент формирует событие по заданным параметрам изменения сигнала с бампера.

  54 Событие от центрального бампера
Элемент формирует событие по заданным параметрам изменения сигнала с бампера.

  55 Событие от правого бампера
Элемент формирует событие по заданным параметрам изменения сигнала с бампера.

  56 Событие от АЦП
Элемент формирует событие по заданным параметрам изменения сигнала с заданного АЦП.

  60 Стоп
Элемент останавливает движение тележки, ее поворот или разворот.

  61 Вперед
Элемент увеличивает скорость движения тележки вперед (или замедляет движение, если она до этого двигалась назад).

  62 Назад
Элемент увеличивает скорость движения тележки назад (или замедляет движение, если она до этого двигалась вперед).

  63 Поворот налево
Элемент во время движения поворачивает тележку налево.

  64 Поворот направо
Элемент во время движения поворачивает тележку направо.

  65 Разворот влево
Элемент разворачивает тележку на месте через левую сторону.

  66 Разворот вправо
Элемент разворачивает тележку на месте через правую сторону.

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

  68 Серва влево
Элемент поворачивает сервопривод влево.

  69 Серва вправо
Элемент поворачивает сервопривод вправо.

  70 Параметры сервы
Элемент задает параметры сервопривода, используемые элементами сервы по умолчанию.

  71 Индикация ALED (антенна)
Элемент управляет светодиодом ALED (установленным в антенну), воспроизводя на нем заданные эффекты.

  72 Индикация MLED (рот)
Элемент управляет светодиодами MLED0, MLED1, MLED2  (имитирующих рот робота), воспроизводя на них заданные эффекты.

  73 Индикация ELED (глаза)
Элемент управляет светодиодом ELED (установленным в глаза), воспроизводя на нем заданные эффекты.

  77 Индикация простая (digital)
Элемент дискретно (без ШИМ) управляет заданными индикаторными светодиодами.

  74 Настройка индикации
Элемент управляет режимами работы выходных индикаторных линий.

  76 Звук
Элемент проигрывает на динамику (или пьезоизлучателе) предустановленный однобитный звук. Элемент служит для несложной озвуки действий.

  17 Событие от флага
Элемент формирует событие по факту установки заданного флага устройства.

  48 Изменение от флага
Элемент изменяет заданный флаг устройства.

 

Дополнительный набор элементов (для формирования более сложной логики):

  10 Событие от изменения точки
Элемент формирует событие, в случае если произошло изменение значения заданной точки доступа.

  11 Событие по условию
Элемент формирует событие по заданному условию изменения значения в заданной точке доступа.

  13 Событие от ИК-пульта
Элемент формирует событие по факту нажатия кнопок на ИК-пульту.

  14 Событие по таймеру
Элемент формирует событие по таймеру с заданным количеством повторов.

  15 Событие от АЦП
Элемент формирует событие по изменению значения АЦП

  16 Событие случайное
Элемент формирует случайное событие с заданной вероятностью его возникновения.

  19 Событие от сателлита
Элемент формирует событие по факту приема нужного сообщения от IR-сателлита

  30 Действие со светодиодом
Элемент выполняет дискретные действия (включить, выключить, переключить) со светодиодом, подключенным к ШИМ-выходу.

  31 Действие с ШИМ-выходом
Элемент изменяет скважность (уровень сигнала) на ШИМ-выходе.

  32 Действие с зуммером
Элемент формирует звуковые сигналы на зуммере устройства.

  33 Действие с мотором
Элемент управляет скоростью и направлением вращения двигателей устройства.

  34 Действие с сервоприводом
Элемент управляет поворотами сервопривода устройства.

  36 Возврат значения точки
Элемент запоминает и возвращает значение выбранной точки после «ухода» события (возврат к исходному значению).

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

  41 Отправка значения точки
Элемент отправляет значение точки другой сетевой точке.

  42 Запрос значения точки
Элемент формирует запрос значения точки другого сетевого устройства (другое устройство в автоматическом режиме отправит значение запрашиваемой точки назад).

  43 Арифметические действия
Элемент выполняет различные арифметические действия над точками

  44 Формирование случайного числа
Элемент формирует случайное число для заданной точки.

  45 Битовая сборка
Элемент «сбивает» заданные биты точки источника и помещает их в точку приемник.

  46 Сохранение значения точки
Элемент сохраняет значение точки в ячейке памяти EEPROM.

  47 Восстановление значения точки
Элемент извлекает значение из ячейки памяти EEPROM и помещает его в заданную точку.