Автор: smart_alex

В последнее время в мире DIY-электроники все чаще мелькают упоминания контроллера Teensy и невероятно сложных проектов на его базе. Сначала я не придавал этому значения, но чем глубже погружался в тему, тем больше поражался его возможностям.
Оказалось, что последняя версия, Teensy 4, построена на ядре ARM Cortex M7, работающем на частоте 600 МГц. Это очень продвинутое ядро, способное выполнять две инструкции за такт, использовать предсказание ветвлений и аппаратную обработку 64-битных чисел с плавающей запятой. Помимо вычислительной мощи, он обладает внушительным объемом встроенной и расширяемой памяти (RAM, Flash, PSRAM).
Этот контроллер открывает двери для создания проектов, которые раньше были невозможны на Arduino: профессиональная обработка звука, управление огромными светодиодными матрицами, вывод видео, создание цифровых музыкальных синтезаторов и многое другое.
Мой интерес перерос в действие, и я заказал на AliExpress комплект Teensy 4.1 с аудиоплатой и Ethernet-модулем. Эксперименты с этой платформой принесли массу удовольствия. В этой статье я поделюсь своим опытом, впечатлениями и результатами тестирования Teensy 4.1.
❯ Обзор линейки Teensy 4
Семейство Teensy 4 представлено двумя основными моделями: облегченной Teensy 4.0 и полнофункциональной Teensy 4.1. Упрощение младшей модели касается не производительности (ядро то же), а форм-фактора: плата Teensy 4.0 меньше, у нее меньше выводов, и на ней физически нет места для слотов карт памяти и Ethernet-чипа.

Экосистема Teensy построена по модульному принципу. Помимо самих контроллеров, существует множество плат расширения: аудиоплата, внешний Ethernet-разъем, USB-хост и другие. Это позволяет собирать именно ту конфигурацию, которая нужна для конкретного проекта, не переплачивая за ненужные компоненты.
❯ Сердце системы: Ядро Cortex M7
В основе Teensy 4 лежит микроконтроллер i.MX RT1060 от NXP с ядром Cortex M7. Его штатная частота — 600 МГц при потреблении около 100 мА. При необходимости частоту можно снизить для экономии энергии или, наоборот, разогнать вплоть до 1 ГГц для экстремальных задач.
Как уже отмечалось, архитектура ядра позволяет исполнять две инструкции за такт, используя предсказание ветвлений. Аппаратная поддержка операций с плавающей запятой (включая 64-битные) и наличие инструкций DSP для обработки сигналов делают его невероятно эффективным. Дополнительные «плюшки» — криптографические ускорители, генератор случайных чисел и многое другое.
Лучше всего производительность иллюстрирует тест CoreMark.

Цифры говорят сами за себя: Teensy 4 в 330 раз быстрее ATmega2560 (из Arduino Mega), в 24 раза быстрее Arduino Due и примерно в 6.5 раз быстрее популярного ESP32. При этом, в отличие от ESP32, Teensy предлагает полный набор периферии «из коробки».
❯ Возможности памяти
Базовая комплектация Teensy 4.1 включает 8 МБ флэш-памяти и 1 МБ оперативной памяти. Для микроконтроллера это огромные объемы, которых хватит для самых ресурсоемких задач: обработки аудио и видео, научных вычислений или управления масштабными светодиодными инсталляциями.
Но и этого создателю Teensy, Полу Стоффрегену, показалось мало. На плате предусмотрены площадки для пайки дополнительных микросхем памяти. Таким образом, возможны конфигурации:
• 8 МБ Flash + 1 МБ RAM + 8 МБ PSRAM + еще 8 МБ Flash
• 8 МБ Flash + 1 МБ RAM + 16 МБ PSRAM
Внутренняя оперативная память объемом 1 МБ разделена на два банка по 512 КБ. Первый (RAM1) подключен к процессору по быстрой 64/32-битной шине, второй (RAM2) оптимизирован для работы с прямым доступом к памяти (DMA, 32 канала).

Также имеется два кэша по 32 КБ для ускорения работы с внешней памятью. Для хранения настроек предусмотрена эмулируемая во Flash память EEPROM объемом 4284 байта.
❯ Ввод-вывод и периферия
Teensy 4.1 предлагает 55 линий GPIO, из которых 35 поддерживают ШИМ, а 18 могут работать как аналоговые входы (10/12 бит).
Все GPIO поддерживают прерывания и могут быть сконфигурированы с подтяжкой вверх/вниз или в режиме open-drain. Также доступны расширенные настройки, такие как регулируемая нагрузка и полоса пропускания. Лучший способ оценить размах возможностей — взглянуть на распиновку.

Перечислять все функции контроллера в одной статье — задача неблагодарная, всю детальную информацию можно найти в документации. Приведу краткий список ключевых возможностей:
Ядро ARM Cortex M7 с частотой 600 МГц
Аппаратный модуль операций с плавающей запятой (32- и 64-битный)
32 канала прямого доступа к памяти (DMA)
7936 КБ Flash, 1024 КБ RAM (2x512 КБ), 4 КБ EEPROM (эмуляция)
Слоты для расширения памяти QSPI (два чипа PSRAM/Flash)
55 линий GPIO (35 с ШИМ)
18 аналоговых входов
8 последовательных портов (UART), 3 интерфейса SPI, 3 интерфейса I2C
2 цифровых аудиопорта (I2S/TDM и S/PDIF)
3 интерфейса CAN (один с поддержкой CAN FD)
Встроенный 4-битный порт SDIO для работы с SD-картами
Контроллер Ethernet 10/100 Mbit (с PHY DP83825)
USB 2.0 (480 Мбит/с) в режимах устройства и хоста
Криптографические ускорители и генератор случайных чисел
Часы реального времени (RTC)
Графический конвейер
Гибкая система управления питанием
❯ Внешний вид и комплектация
Упаковка моего комплекта была очень скромной. Судя по всему, это не оригинальный продукт от PJRC, а китайский клон (что интересно, часто он стоит дороже). В комплекте не было даже инструкции с распиновкой.

В набор вошли: сам контроллер Teensy 4.1, аудиоплата, Ethernet-модуль с кабелем и USB-кабель для программирования.

Контакты и разъемы для пайки не входят в комплект, их нужно докупать отдельно. И здесь нас ждал первый сюрприз: геометрия плат, особенно аудиоплаты, оказалась весьма нестандартной, что создало некоторые сложности при сборке.
❯ Сборка и пайка
Плата Teensy 4.1 очень длинная и узкая. С одной стороны, это позволило разместить множество контактов, с другой — делает ее механически уязвимой. При неаккуратном извлечении с макетной платы есть риск сломать ее или повредить дорожки.

Если посмотреть на распиновку, видно, что Teensy 4.1 — это, по сути, удлиненная и дополненная версия Teensy 4.0 с полной обратной совместимостью по выводам. Это хорошо, так как позволяет использовать одни и те же платы расширения с обеими моделями.

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

Хотя мне дополнительная память пока не нужна, я решил оставить такую возможность на будущее. Поэтому часть боковых контактов я не стал паять. Их всегда можно добавить позже, и тогда установка дополнительных чипов памяти не составит труда.
❯ Аудиоплата: странный, но функциональный дизайн
Дизайн аудиоплаты вызывает вопросы. Разъем для подключения Teensy расположен прямо посередине, а остальные компоненты разбросаны по краям без видимой системы.

При сборке «сэндвича» с Teensy 4.1 получается громоздкая и не очень элегантная конструкция. Я долго думал, как ее собрать практично, и остановился на использовании длинных штырьков-переходников. Это позволяет установить аудиоплату на макетную плату, а сверху пристыковать Teensy.

Несмотря на странный дизайн, функциональность аудиоплаты на высоте. В ее основе — качественный аудиокодек SGTL5000. Она предоставляет два порта I2S/TDM, порт S/PDIF, вход для микрофона, слот для microSD карты и аудиовыходы. На этой связке энтузиасты создают потрясающие аудиопроекты.
❯ Сетевое подключение через Ethernet
В отличие от ESP32, Teensy не имеет встроенного Wi-Fi, а проводной Ethernet требует дополнительных компонентов. На самой плате Teensy 4.1 уже распаян физический уровень (PHY) DP83825, но для подключения кабеля нужен отдельный модуль с разъемом RJ45.

И снова разработчики столкнулись с проблемой места. На микромодуле разъема нет отверстий или креплений. Возникает вопрос: как надежно зафиксировать эту конструкцию, учитывая нагрузку при подключении/отключении сетевого кабеля?

❯ Программная экосистема
Любой, даже самый мощный контроллер, — всего лишь кусок кремния без качественного программного обеспечения. С Teensy в этом плане все отлично. Он поддерживается в самых популярных средах:
Arduino IDE с дополнением Teensyduino
Visual Studio Code с плагином PlatformIO
Среда разработки PlatformIO
CircuitPython
Командная строка с использованием Makefile
Независимо от вашего уровня и предпочтений в программировании, вы найдете удобный для себя способ работы с Teensy. Остается только придумать стоящий проект.
❯ Работа в среде Arduino
Расскажу вкратце об установке и использовании в привычной Arduino IDE. Здесь есть несколько особенностей.
Первым делом нужно установить саму Arduino IDE. Подойдет как обычная, так и портативная версия.
Обратите внимание: Где найти аккумулятор с увеличенной емкостью для телефона Самсунг.
В моем случае использовалась портативная Arduino 1.8.5.Затем с официального сайта загружается и устанавливается дополнение Teensyduino. Процесс инсталляции интуитивно понятен и занимает пару минут.

После этого в Arduino IDE появляется поддержка всех контроллеров Teensy, а также огромное количество совместимых библиотек и примеров. Все настройки сохраняются.
Хочу отдельно отметить невероятную стабильность и отладку программного обеспечения для Teensy. В отличие от моего опыта с некоторыми другими платами, здесь не было ни сбоев, ни ошибок компиляции — все работало идеально с первого раза.
В базовой поставке Teensyduino я насчитал 92 библиотеки! И что удивительно, все протестированные мной библиотеки работали безупречно.
❯ Процесс компиляции и загрузки
В Teensy 4, помимо основного процессора M7, используется вспомогательный микроконтроллер MKL02Z32 (архитектура Cortex-M0). Именно он отвечает за загрузку прошивки в основную память. Поэтому процедура немного отличается от стандартной Arduino.
При первой загрузке скетча после установки Teensyduino нужно нажать маленькую кнопку на плате контроллера.

После этого система распознает плату, и в дальнейшем процесс загрузки будет происходить автоматически. Вся коммуникация между IDE и загрузчиком Teensy происходит «за кулисами», не требуя от пользователя лишних действий.
❯ Аудиообработка — одна из сильных сторон
Teensy 4.1 особенно популярен в сообществе аудиоэнтузиастов. Это огромная отдельная тема, отмечу лишь ключевые моменты.

На Teensy создают цифровые синтезаторы, эффект-процессоры, микшеры и другое аудиооборудование. Прелесть в том, что устройство, аналогичное коммерческому продукту за тысячи долларов, можно собрать на Teensy за сотни. В сети множество открытых проектов.
В составе Teensyduino есть специальные инструменты для программирования аудио, которые можно использовать как обычные функции Arduino. Более того, существует уникальный визуальный редактор аудиомаршрутизации.

В нем можно, как в конструкторе, соединять входы и выходы стандартных аудиоблоков (генераторы, фильтры, микшеры). После нажатия кнопки «Export» редактор автоматически сгенерирует готовый код на C++ для Arduino IDE.
❯ Практическое тестирование в сложном проекте
Простые примеры — это хорошо, но мне хотелось проверить Teensy в более серьезных условиях. В качестве теста я попытался портировать на Teensy 4.1 одну из моих внутренних разработок — систему AMS.
Этот тест комплексный: он проверяет вычислительную мощность ядра, работу с Ethernet (чип DP83825), сетевое взаимодействие, одновременную работу с файловой системой на SD-карте и другими ресурсами. Успех означает, что и железо, и программные драйверы работают корректно.
Примечание: тестирование проводилось на внутренней, экспериментальной сборке AMS для Teensy 4.1. Ее публичный релиз пока не планируется, но может быть осуществлен в будущем.
Я был приятно удивлен. Teensy и сетевой стек работали безупречно. Никаких сбоев или нестабильности.

Система загрузилась, все сервисы запустились, оборудование определилось корректно. Время успешно синхронизировалось по NTP. Тестовый сервер работал стабильно.

Для наглядности — сравнение объема оперативной памяти. Слева — Arduino Mega (8 КБ RAM), справа — Teensy 4.1 (1024 КБ RAM). Разница в 128 раз!

Как говорится, почувствуйте разницу. На таком объеме памяти при должной сноровке можно реализовать очень сложные системы, почти мини-ОС.
❯ Примеры реальных проектов на Teensy
Сообщество создало на базе Teensy 4 невероятное количество проектов: роботы, дроны, синтезаторы, системы умного освещения, видеоэкспандеры для светодиодных матриц, анализаторы спектра и многое другое.
В качестве впечатляющего примера можно посмотреть видео работы светодиодного куба 16x16x16 на адресных светодиодах WS2812. Все 4096 светодиодов управляются одним Teensy 4.
Помимо DIY-проектов, существуют и коммерческие продукты, построенные на Teensy: от модульных синтезаторов до целых контроллеров для световых инсталляций.

❯ О чем пришлось умолчать
Очень о многом. Teensy 4.1 — настолько обширная платформа, что охватить все в одной статье невозможно. За кадром остались: детальный обзор криптографических ускорителей, работа в качестве USB-хоста или устройства, использование часов реального времени (RTC), тонкое управление энергопотреблением, программирование DMA для оффлоадной работы с периферией, работа с таймерами и многое другое.
❯ Проблемы и недостатки
Серьезных проблем я не обнаружил. Единственный субъективный минус — довольно долгое время компиляции проектов. На процессоре Intel Core i5 комфортно работать можно, но для серьезной разработки я бы рекомендовал более мощную машину.
Еще один странный момент — на плате Teensy 4.1 нет физической кнопки сброса (Reset). В руководстве предлагается перезагружать контроллер программно. Не самое очевидное решение.
❯ Выводы
Teensy 4.1 — это выдающаяся платформа с феноменальными аппаратными возможностями и качественной, стабильной программной поддержкой. За все время тестирования не было ни одного сбоя — все работало идеально.
Для инженеров, исследователей и энтузиастов это прекрасный инструмент для обучения, прототипирования и реализации самых смелых и сложных проектов, которые просто невозможны на классических Arduino.
Свои проекты и данные я храню на облачном хостинге Timeweb Cloud. Поэтому могу с чистой совестью рекомендовать то, чем пользуюсь сам.
Если вы автор или блогер и у вас есть интересные материалы для публикации в нашем блоге, пожалуйста, напишите нам.
[My] IT Electronic Time Network Technology Длинная статья ArduinoDIY Умный дом Видео YouTube 112Больше интересных статей здесь: Гаджеты.
Источник статьи: Teensy 4: Arduino на скорости 600 МГц (почувствуй себя властелином вселенной).