Хабрахабр

«Раз, два, три – ёлочка гори!» или мой первый взгляд на контроллер CANNY 3 tiny

«Новый год» это мандарины, оливье, выходные и конечно же подарки.

Правда я особо DIY электроникой не увлекаюсь и последний раз сам пытался что-то подключить к контроллеру почти семь лет назад, когда делал подсветку для петрушки с помощью клона Arduino. Как вы, уже наверняка догадались я неожиданно стал обладателем микроконтроллера CANNY 3 Tiny. Надо-таки посмотреть, что же это за зверь такой. Но не пропадать же добру?

При этом основная особенность их контроллеров в том, что для программирования не придется написать ни одной строчки кода. Итак, если верить сайту разработчиков – их продукция широко применяется и даже устанавливается в КАМАЗы, участвующие в ралли «Дакар». Как человек далекий от мира DIY я был весьма заинтригован. Вся программа разрабатывается в виде блок схемы.

Я в прошлом году честно хотел прикупить себе пару «Дакаровских» КАМАЗов, но не успел взять их со скидкой в «Черную пятницу». И всё бы хорошо, но есть одна загвоздка. Так что нам придется как-то просто и элегантно выкручиваться из этой ситуации.

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

Тогда милости прошу под кат. Хотите присоединится к моему безудержному новогоднему веселью?

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

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

Вот о чем пойдет в статье речь:

Часть I: Распаковка и знакомство
Часть II: Подключение схемы
Часть III: Программирование
Часть IV: Заключение

Часть I: Распаковка и знакомство

Для начала, необходимо сказать хотя бы пару слов о нашем герое статьи. Контроллер CANNY 3 tiny является самым бюджетным в семействе контроллеров CANNY. Старшие братья CANNY 3 tiny – контроллеры серий CANNY 7 и CANNY 5 умеют работать с шиной CAN автомобиля. Наш младший брат, также как и мой старенький автомобиль марки «Жигули», знать не знает ничего о шине CAN и спокойно себе живет.

Еще у разработчиков есть раздел на форуме, благодаря которому я в итоге разобрался, как настраивать регистры контроллера на вход и выход. Более подробно информация о контроллере представлена в соответствующем разделе Wiki.

Давайте наконец, посмотрим, на нежданный подарок. Но к вопросам программирования мы вернемся, позже.

Контроллер реально маленький. Открыв коробку, я испытал короткое чувство умиления. Да простят мне фанаты неуместное сравнение, но он — почти как «малыш Йода».

Учитывая мою криворукость в плане «припаять что-нибудь» я очень рад тому, что мне досталась версия с клеммной колодкой и жгутом. Если верить интернет-магазинам у контроллера есть два варианта комплектации: без клеммной колодки и жгута, а также с ними.

Еще несколько фотографий контроллера и жгута спрячу под спойлером.

Больше фотографий


Часть II: Подключение схемы

Как я уже сказал, мы будем подключать к контроллеру светодиод (в нашем случае «пиранью»), но можно любой (просто у меня не было другого). Управлять светодиодом мы будем при помощи кнопки. Алгоритм работы такой: один раз нажал на кнопку и светодиод – горит, еще раз нажал – не горит.

Давайте кратко опишем особенности контроллера важные дня нашего случая:

  1. Питать контроллер будем от microUSB зарядника (в моем случае 5В, 1 А);
  2. У контроллера есть 6 программируемых выводов, а также выводы «+» и «-»;
  3. Программируемые выводы могут быть настроены как в качестве «входа», так и в качестве выхода;
  4. Максимальный ток на выходе управляемых выводов – 100 мА;
  5. У выводов есть разные режимы, включая ШИМ, но мы сегодня так глубоко вдаваться не будем.

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

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

0-180 и светодиод похожий на BL-FL7600UEC, но на самом деле вы можете их заменить на то, что будет у вас под рукой. Как вы надеюсь поняли из схем, в нашем проекте мы будем использовать: сам контроллер, макетную плату, токоограничивающий резистор на 80 Ом, кнопку похожую на KLS7-TS6601-5.

Логика подключения такая:

  1. Выход «-» контроллера соединяем с шиной минус;
  2. Выход «2» будет служить нам «плюсом», подключим его к соответствующей шине на макетной плате;
  3. Вывод «1» Будет работать на вход и получать сигнал в случае, если кнопка замкнет цепь (при нажатии);
  4. Выход «4» будет питать наш светодиод, для удобства я его подключил к другой шине «+» на макетной плате, но это делать не обязательно.
  5. Ёлочка является атрибутом нового года и всячески оправдывает название данной статьи.

Часть III: Программирование

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

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

В моем случае на Windows 10 никаких драйверов вроде отдельно ставить не пришлось. Подключаем контроллер через microUSB кабель к компьютеру.

Убеждаемся, что контроллер подключен, если нет жмем на кнопку «Подключить» (выглядит как два звена цепочки)

На всякий случай ниже оставлю скриншот. Далее надо вызвать диалог по адресу «Устройство -> Системное ПО -> Записать» и выбрать подходящий файл (в моем случае «c3tinyv00108.ccx»).

Теперь можно формировать программу.

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

Для того, чтобы поморгать встроенным светодиодом в режиме ШИМ нам понадобится 3 константы, блок генератор сигнала ШИМ и регистр записи.

Соединяем все как на картинке.

Значения константам и регистрам можно задать если сделать по ним двойной клик ЛКМ.
Что же это за загадочные значения констант?

  • «3000» – период в 3 секунды;
  • «1500» – говорит нам что наш светодиод из трех секунд будет светиться лишь полторы;
  • «1» – просто запускает генератор.

Чтобы долго не искать нужное значение регистра введите в окошке «Фильтр», строку «светодиод»

Запишем программу в память контроллера.

Далее отсоединим контроллер от компьютера и переключим провод в USB зарядку.

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

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

Перейдем к программе для схемы.

Соберите диаграмму как на картинке.

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

Кратко объясню блоки.

«Плюс / подтянут к минусу» - Рег конфиг. вых. потенциалов канал 2»

Настраивает нам выход 2 на подачу +5В, аналогично и для четвёртого канала

Поскольку канал 2 фактически используется как «+ 5 В» мы просто запишем в него константу «1» (думаю можно любое число больше нуля).

Примечание: Напряжение на выходах контроллера зависит от питающего напряжения и может измениться в зависимости от того, как вы его запитаете

А вот канал 4 у нас то дает +5В, то не дает, в зависимости от нажатия на кнопку.

Канал 1 по умолчанию настроен на вход и ничего не надо настраивать отдельно, берем его входное значение с помощью блока:

«Рег вх. знач. канал 1»

И передаем на блок логического отрицания («Не»).

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

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

Если ему на вход «Т» подать единицу, а на вход «С» подавать единичный импульс с выхода детектора, то наш триггер будет на выходе чередовать состояние «0» и состояние «1». Для сохранения текущего состояния используются «Т» триггер. Как раз именно то, что нам нужно.

Далее сигнал с выхода триггера идет на регистр выхода канала 4, который в свою очередь питает светодиод.

Обе диаграммы можно скачать с GitHub.

Часть IV: Заключение

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

Я попробовал записать код в контроллер запустив среду разработки в Linux через Wine. «А что у нас с кроссплатформенностью?» – спросите вы. Так, что пока нельзя говорить о кроссплатформенности решения «из коробки». В итоге среда разработки запустилась, но компьютер сам контроллер не видит (возможно нужно «поколдовать» с Wine).

Контроллер приятно держать в руках, да и упаковано все в коробочке было очень аккуратно. Еще одним из минусов контроллера можно назвать высокую стоимость по сравнению с некоторыми «Китайскими» подделками под Arduino, однако это отчасти компенсируется качеством. Контроллер у меня даже один раз упал, но пока все работает.

Просто мне приятно, что изделие отечественное и что разработчики пусть хоть чуть-чуть, но причастны к победам КАМАЗов на ралли «Дакар». Правда в оценках контроллера я, наверное, слегка субъективен.

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

Я думаю, что ссылку на скачивание среды разработки CannyLab, и «пруфы» про КАМАЗ вы легко найдете самостоятельно. UPD: Друзья, я немного отстал от жизни и слегка нарушил правила «Хабра», поэтому я удалил прямые ссылки на сайт разработчиков контроллера, чтобы статья не выглядела рекламной и соответствовала правилам.

Показать больше

Похожие публикации

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»